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 bd1a0cd595a39982341af91a338a2dfe2eb18ed1
parent fe344c808d02ff4df5a96fec379f1b4dd41cbb05
Author: Jean-Yves Lefort <jylefort@brutele.be>
Date:   Tue, 28 Nov 2006 07:11:10 +1000

mail-notification-4.0-rc1

* Core changes:
        * The mail summary popup has been replaced by
          libnotify message popups. These new message popups
          also provide actions such as "Open" and "Mark as Spam"
        * Mozilla products (Mozilla, SeaMonkey, Thunderbird, ...)
          mailboxes are now supported
        * The mailbox properties dialog has been redesigned
        * A new click action has been added: open the latest
          message
        * A MN icon set has been designed by Josef Vybíral
          (#18198)
        * A --print-summary command line argument has been
          added, allowing to access message data from an
          external program
        * A mail-changed GConf command setting has been added
          (it is executed when new mail is received or when a
          message is read)
        * Handling of the GNOME mail reader command: instead
          of stripping %s, the first word of the command is
          now used; moreover, mozilla and evolution are now
          handled specially (#18257)
        * The /desktop/gnome/url-handlers/mailto/needs_terminal
          GConf key is now respected
        * Could no longer close the about dialog with recent
          GTK+ versions: fixed (#18252)

* POP3 changes:
        * Messages kept on the server but marked as read are
          now discarded. Note that this only works with
          servers which send Status headers; most don't
          (#18164).

* Evolution changes:
        * All mailboxes now share the same CORBA connection to
          Evolution (reduces resource usage)
        * A mailbox properties dialog crash has been fixed
          (#18228)
        * Some memory leaks have been fixed
        * Support for the Evolution 2.9/2.10 branch has been
          added
        * The Evolution 2.2 branch is no longer supported

* Updated translations:
        * French
        * Serbian (Filip Miletic)

* New translations:
        * Catalan (Topi)

Diffstat:
MAUTHORS | 5++++-
MCOPYING | 29++++++++++++++---------------
MINSTALL | 47++++++++++++++++-------------------------------
MMakefile.in | 14+++++++++-----
MNEWS | 51+++++++++++++++++++++++++++++++++++++++++++++++++++
MREADME | 11+++++++----
Macinclude.m4 | 9+++++----
Maclocal.m4 | 397++++++++++++++++++++++++++++++++++++++++---------------------------------------
Aart/16x16/apps/mail-notification.png | 0
Aart/22x22/apps/mail-notification.png | 0
Aart/24x24/apps/mail-notification.png | 0
Aart/32x32/apps/mail-notification.png | 0
Aart/48x48/apps/mail-notification.png | 0
Mart/Makefile.am | 13+++++++++++--
Mart/Makefile.in | 84+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Dart/mail-notification.png | 0
Aart/scalable/apps/mail-notification.svg | 374+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mconfig.h.in | 6+++---
Mconfigure | 391++++++++++++++++++++++++++++++++-----------------------------------------------
Mconfigure.ac | 38+++++++++++++++++++-------------------
Mdata/Makefile.am | 8++++++--
Mdata/Makefile.in | 22+++++++++++++++-------
Mdata/mail-notification-properties.desktop.in | 2+-
Mdata/mail-notification.desktop.in | 2+-
Ddata/mail-notification.schemas.in | 266-------------------------------------------------------------------------------
Adata/mail-notification.schemas.in.in | 222+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mhelp/C/Makefile.in | 14+++++++++-----
Mhelp/C/mail-notification-C.omf | 4++--
Mhelp/C/mail-notification.xml | 1079+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Mhelp/Makefile.in | 14+++++++++-----
Mintltool-extract.in | 2+-
Mintltool-merge.in | 4++--
Mintltool-update.in | 48++++++++++++++++++++++++++++++++++++------------
Mm4/Makefile.in | 14+++++++++-----
Mm4/evolution-plugin.m4 | 36+-----------------------------------
Mm4/intltool.m4 | 9++++++---
Mpo/Makefile.in.in | 121++++++++++++++++++++++++++++++++-----------------------------------------------
Mpo/POTFILES.in | 8+++++---
Mpo/POTFILES.skip | 5+++--
Apo/ca.po | 1624+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpo/fr.po | 1195++++++++++++++++++++++++++++++++++++++++---------------------------------------
Mpo/sr.po | 1819++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mpo/sr@Latn.po | 1819++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Msrc/GNOME_MailNotification.idl | 11++++++-----
Msrc/GNOME_MailNotification_Evolution.idl | 19+++++++++++++++----
Msrc/Makefile.am | 70++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Msrc/Makefile.in | 637++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
Msrc/mn-about-dialog.c | 33+++++++++++++++------------------
Msrc/mn-about-dialog.gob | 22++++++++++------------
Msrc/mn-auth-combo-box.c | 75+++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-auth-combo-box.gob | 20++++++++------------
Msrc/mn-authenticated-mailbox-private.h | 2+-
Msrc/mn-authenticated-mailbox-properties.c | 71++++++++++++++++++++++++++++++++++++++---------------------------------
Msrc/mn-authenticated-mailbox-properties.gob | 15+++++++++++----
Msrc/mn-authenticated-mailbox-properties.h | 1+
Msrc/mn-authenticated-mailbox.c | 34+++++++++++++++++-----------------
Msrc/mn-authenticated-mailbox.gob | 9+++++----
Msrc/mn-autodetect-mailbox-properties-private.h | 4++--
Msrc/mn-autodetect-mailbox-properties.c | 81+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Msrc/mn-autodetect-mailbox-properties.gob | 22+++++++++++++---------
Msrc/mn-automation.c | 102+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/mn-automation.gob | 31++++++++++++++++++++-----------
Asrc/mn-base-mbox-mailbox-backend-private.h | 30++++++++++++++++++++++++++++++
Asrc/mn-base-mbox-mailbox-backend.c | 596+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-base-mbox-mailbox-backend.gob | 401+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/mn-corba-object.gob.stamp -> src/mn-base-mbox-mailbox-backend.gob.stamp | 0
Asrc/mn-base-mbox-mailbox-backend.h | 65+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-blinking-image-private.h | 12++++++------
Msrc/mn-blinking-image.c | 52++++++++++++++++++++++++++--------------------------
Msrc/mn-blinking-image.gob | 9+++++----
Asrc/mn-bonobo-unknown-private.h | 32++++++++++++++++++++++++++++++++
Asrc/mn-bonobo-unknown.c | 421+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-bonobo-unknown.gob | 118+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/mn-mail-summary-popup.gob.stamp -> src/mn-bonobo-unknown.gob.stamp | 0
Asrc/mn-bonobo-unknown.h | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-client-session.c | 77+++++++++++++++++++++++++++++++++++++++--------------------------------------
Msrc/mn-client-session.h | 13+++++++------
Msrc/mn-compact-message-view.c | 46+++++++++++++++++++++++-----------------------
Msrc/mn-compact-message-view.gob | 11++++++-----
Msrc/mn-conf.c | 269++++++++++++++++++++++++-------------------------------------------------------
Msrc/mn-conf.h | 83++++++++++++++++++++++++++++++++-----------------------------------------------
Dsrc/mn-corba-object-private.h | 32--------------------------------
Dsrc/mn-corba-object.c | 403-------------------------------------------------------------------------------
Dsrc/mn-corba-object.gob | 123-------------------------------------------------------------------------------
Dsrc/mn-corba-object.h | 82-------------------------------------------------------------------------------
Msrc/mn-custom-vfs-mailbox.c | 30+++++++++++++++---------------
Msrc/mn-custom-vfs-mailbox.gob | 9+++++----
Msrc/mn-dialog.c | 4++--
Msrc/mn-dialog.gob | 9+++++----
Asrc/mn-evolution-folder-tree-control-private.h | 24++++++++++++++++++++++++
Msrc/mn-evolution-folder-tree-control.c | 471+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Asrc/mn-evolution-folder-tree-control.gob | 190+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/mn-corba-object.gob.stamp -> src/mn-evolution-folder-tree-control.gob.stamp | 0
Msrc/mn-evolution-folder-tree-control.h | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Asrc/mn-evolution-glue-client.c | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-evolution-glue-client.h | 28++++++++++++++++++++++++++++
Msrc/mn-evolution-glue.c | 227+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Msrc/mn-evolution-glue.gob | 135++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------
Msrc/mn-evolution-glue.h | 10+++++++++-
Msrc/mn-evolution-mailbox-private.h | 15+++++++--------
Msrc/mn-evolution-mailbox-properties-private.h | 32++++++++++++++++++--------------
Msrc/mn-evolution-mailbox-properties.c | 318++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
Msrc/mn-evolution-mailbox-properties.gob | 140+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Msrc/mn-evolution-mailbox.c | 148+++++++++++++++++++++++++++++++++++++------------------------------------------
Msrc/mn-evolution-mailbox.gob | 60++++++++++++++++++++++++++++++++++--------------------------
Msrc/mn-evolution-mailbox.h | 1+
Asrc/mn-evolution-message-private.h | 22++++++++++++++++++++++
Asrc/mn-evolution-message.c | 392+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-evolution-message.gob | 126+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/mn-corba-object.gob.stamp -> src/mn-evolution-message.gob.stamp | 0
Asrc/mn-evolution-message.h | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-evolution-plugin.c | 94++++++++++++++++++++++++++-----------------------------------------------------
Msrc/mn-evolution.h | 21+++++++++++++--------
Msrc/mn-gmail-mailbox-private.h | 4++--
Msrc/mn-gmail-mailbox-properties-private.h | 2+-
Msrc/mn-gmail-mailbox-properties.c | 30+++++++++++++++---------------
Msrc/mn-gmail-mailbox-properties.gob | 13+++++++------
Msrc/mn-gmail-mailbox.c | 101++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Msrc/mn-gmail-mailbox.gob | 23+++++++++++++++++------
Msrc/mn-gmime-stream-vfs-private.h | 6+++---
Msrc/mn-gmime-stream-vfs.c | 72++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/mn-gmime-stream-vfs.gob | 9+++++----
Msrc/mn-imap-mailbox-private.h | 8++++----
Msrc/mn-imap-mailbox-properties-private.h | 10+++++-----
Msrc/mn-imap-mailbox-properties.c | 144+++++++++++++++++++++++++++++++++++--------------------------------------------
Msrc/mn-imap-mailbox-properties.gob | 86++++++++++++++++++++++++++++++++-----------------------------------------------
Msrc/mn-imap-mailbox.c | 296++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-imap-mailbox.gob | 17+++++++++--------
Msrc/mn-imap-mailbox.h | 2+-
Msrc/mn-locked-callback.c | 9+++++----
Msrc/mn-locked-callback.h | 9+++++----
Msrc/mn-mail-icon-private.h | 8++++----
Msrc/mn-mail-icon.c | 231+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Msrc/mn-mail-icon.gob | 13++++++++++---
Msrc/mn-mail-icon.h | 8++++++++
Dsrc/mn-mail-summary-popup-private.h | 42------------------------------------------
Dsrc/mn-mail-summary-popup.c | 786-------------------------------------------------------------------------------
Dsrc/mn-mail-summary-popup.gob | 437-------------------------------------------------------------------------------
Dsrc/mn-mail-summary-popup.h | 74--------------------------------------------------------------------------
Msrc/mn-mailbox-private.h | 29++++++++++++++++-------------
Msrc/mn-mailbox-properties-dialog-private.h | 59++++++++++++++++++++++++++++++++---------------------------
Msrc/mn-mailbox-properties-dialog.c | 461+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Msrc/mn-mailbox-properties-dialog.gob | 145+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
Msrc/mn-mailbox-properties-dialog.h | 2++
Msrc/mn-mailbox-properties-private.h | 6++++++
Msrc/mn-mailbox-properties.c | 331++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
Msrc/mn-mailbox-properties.gob | 68++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------
Msrc/mn-mailbox-properties.h | 19+++++++++++++++----
Msrc/mn-mailbox-view-private.h | 14+++++++-------
Msrc/mn-mailbox-view.c | 479++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-mailbox-view.gob | 36+++++++++++++++++++-----------------
Msrc/mn-mailbox.c | 931++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-mailbox.gob | 268+++++++++++++++++++++++++++++--------------------------------------------------
Msrc/mn-mailbox.h | 20++++++++++++++++++++
Msrc/mn-mailboxes-private.h | 8++++----
Msrc/mn-mailboxes.c | 451++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Msrc/mn-mailboxes.gob | 22+++++++++++++++++-----
Msrc/mn-mailboxes.h | 2++
Msrc/mn-maildir-mailbox-backend.c | 194+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
Msrc/mn-maildir-mailbox-backend.gob | 95+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
Msrc/mn-main.c | 138++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Msrc/mn-mbox-mailbox-backend-private.h | 13-------------
Msrc/mn-mbox-mailbox-backend.c | 441++++++++-----------------------------------------------------------------------
Msrc/mn-mbox-mailbox-backend.gob | 313+++----------------------------------------------------------------------------
Msrc/mn-mbox-mailbox-backend.h | 27+++++++++++----------------
Msrc/mn-md5.c | 32++++++++++++++++----------------
Msrc/mn-md5.h | 6+++---
Msrc/mn-message-mime.c | 101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Msrc/mn-message-mime.h | 28++++++++++++++++++++++++----
Msrc/mn-message-private.h | 12++++++++++++
Msrc/mn-message-view-private.h | 4++--
Msrc/mn-message-view.c | 64++++++++++++++++++++++++++++++++--------------------------------
Msrc/mn-message-view.gob | 9+++++----
Msrc/mn-message.c | 875+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------
Msrc/mn-message.gob | 368++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
Msrc/mn-message.h | 43++++++++++++++++++++++++++++++++++---------
Msrc/mn-mh-mailbox-backend.c | 32++++++++++++++++----------------
Msrc/mn-mh-mailbox-backend.gob | 13++++++++-----
Asrc/mn-mozilla-mailbox-backend-private.h | 17+++++++++++++++++
Asrc/mn-mozilla-mailbox-backend.c | 197+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-mozilla-mailbox-backend.gob | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/mn-corba-object.gob.stamp -> src/mn-mozilla-mailbox-backend.gob.stamp | 0
Asrc/mn-mozilla-mailbox-backend.h | 57+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-pi-mailbox-private.h | 6+++---
Msrc/mn-pi-mailbox-properties-private.h | 2+-
Msrc/mn-pi-mailbox-properties.c | 334+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/mn-pi-mailbox-properties.gob | 162+++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-pi-mailbox-properties.h | 6+++---
Msrc/mn-pi-mailbox.c | 166++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-pi-mailbox.gob | 10++++++----
Msrc/mn-pop3-mailbox-private.h | 4++--
Msrc/mn-pop3-mailbox-properties.c | 26+++++++++++++-------------
Msrc/mn-pop3-mailbox-properties.gob | 21+++++++++++----------
Msrc/mn-pop3-mailbox.c | 242++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-pop3-mailbox.gob | 39+++++++++++++++++++++++----------------
Msrc/mn-pop3-mailbox.h | 2+-
Asrc/mn-popup-private.h | 22++++++++++++++++++++++
Asrc/mn-popup.c | 554+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-popup.gob | 242+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/mn-corba-object.gob.stamp -> src/mn-popup.gob.stamp | 0
Asrc/mn-popup.h | 80+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-popups-private.h | 22++++++++++++++++++++++
Asrc/mn-popups.c | 293+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-popups.gob | 139+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/mn-corba-object.gob.stamp -> src/mn-popups.gob.stamp | 0
Asrc/mn-popups.h | 59+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-properties-dialog-private.h | 114+++++++++++++++++++++++++++++++------------------------------------------------
Msrc/mn-properties-dialog.c | 515+++++++++++++++++++++++++++++--------------------------------------------------
Msrc/mn-properties-dialog.gob | 366++++++++++++++++++++++++++-----------------------------------------------------
Msrc/mn-properties-dialog.h | 1-
Msrc/mn-reentrant-mailbox-private.h | 10+++++-----
Msrc/mn-reentrant-mailbox.c | 80++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-reentrant-mailbox.gob | 9+++++----
Msrc/mn-sasl.c | 9+++++----
Msrc/mn-sasl.h | 9+++++----
Msrc/mn-shell-private.h | 22++++------------------
Msrc/mn-shell.c | 708++++++++++++++++++++++++++++++++++++-------------------------------------------
Msrc/mn-shell.gob | 288+++++++++++++++++++++++++++++++++----------------------------------------------
Msrc/mn-shell.h | 36++++++++++++++++++++----------------
Msrc/mn-ssl.c | 9+++++----
Msrc/mn-ssl.h | 9+++++----
Msrc/mn-standard-message-view.c | 48++++++++++++++++++++++++------------------------
Msrc/mn-standard-message-view.gob | 11++++++-----
Msrc/mn-stock.c | 17+++++++++--------
Msrc/mn-stock.h | 13+++++++------
Msrc/mn-sylpheed-mailbox-backend-private.h | 6+++---
Msrc/mn-sylpheed-mailbox-backend.c | 345+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
Msrc/mn-sylpheed-mailbox-backend.gob | 156++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------
Msrc/mn-system-vfs-mailbox-properties.c | 29+++++++++++++++++------------
Msrc/mn-system-vfs-mailbox-properties.gob | 18++++++++++++------
Msrc/mn-system-vfs-mailbox.c | 30+++++++++++++++---------------
Msrc/mn-system-vfs-mailbox.gob | 11++++++-----
Asrc/mn-test-mailbox-private.h | 17+++++++++++++++++
Asrc/mn-test-mailbox.c | 191+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-test-mailbox.gob | 83+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/mn-corba-object.gob.stamp -> src/mn-test-mailbox.gob.stamp | 0
Asrc/mn-test-mailbox.h | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-text-table-private.h | 14+++++++-------
Msrc/mn-text-table.c | 148++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-text-table.gob | 9+++++----
Msrc/mn-tooltips-private.h | 16++++++++--------
Msrc/mn-tooltips.c | 212++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-tooltips.gob | 13++++++++-----
Msrc/mn-util.c | 357++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------
Msrc/mn-util.h | 41++++++++++++++++++++++++++++++++++++-----
Msrc/mn-vfs-mailbox-backend.c | 111+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Msrc/mn-vfs-mailbox-backend.gob | 22++++++++++++++--------
Msrc/mn-vfs-mailbox-backend.h | 8+++++++-
Msrc/mn-vfs-mailbox-private.h | 8++++----
Msrc/mn-vfs-mailbox.c | 164+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Msrc/mn-vfs-mailbox.gob | 25++++++++++++++++---------
Msrc/mn-vfs-mailbox.h | 2+-
Asrc/mn-vfs-message-private.h | 17+++++++++++++++++
Asrc/mn-vfs-message.c | 199+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-vfs-message.gob | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Rsrc/mn-corba-object.gob.stamp -> src/mn-vfs-message.gob.stamp | 0
Asrc/mn-vfs-message.h | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-vfs.c | 145++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Msrc/mn-vfs.h | 22++++++++++++++++++----
Asrc/mn-xml.c | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-xml.h | 40++++++++++++++++++++++++++++++++++++++++
Mtests/Makefile.in | 14+++++++++-----
Mtests/test-vfs-read-line.c | 9+++++----
Mui/Makefile.am | 2--
Mui/Makefile.in | 16+++++++++-------
Dui/mail-summary-popup.glade | 109-------------------------------------------------------------------------------
Dui/mail-summary-popup.gladep | 14--------------
Mui/mailbox-properties-dialog.glade | 772++++++++++++++++++++++++++++---------------------------------------------------
Mui/properties-dialog.glade | 2786++++++++++++++++++++++++-------------------------------------------------------
269 files changed, 21721 insertions(+), 15190 deletions(-)
diff --git a/AUTHORS b/AUTHORS
@@ -21,10 +21,13 @@ Translators:
 	  Maurycy Pawłowski-Wieroński <maurycy@abstrakcja.pl> (Polish)
 	* Marcel J. Zwiebel <mj.zwiebel@nonux.nl> (Dutch)
 
+Artists:
+	* Josef Vybíral <cornelius@vybiral.info>
+	  (art/*/apps/mail-notification.*)
+
 External code sources:
 	* libegg (src/egg*)
 	* Nautilus (src/nautilus*)
 
 External art sources (images taken as-is or slightly modified):
 	* Google (gmail.png)
-	* Evolution (mail-notification.png)
diff --git a/COPYING b/COPYING
@@ -1,8 +1,8 @@
 		    GNU GENERAL PUBLIC LICENSE
 		       Version 2, June 1991
 
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-                       59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
 
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users.  This
 General Public License applies to most of the Free Software
 Foundation's software and to any other program whose authors commit to
 using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
+the GNU Lesser General Public License instead.)  You can apply it to
 your programs, too.
 
   When we speak of free software, we are referring to freedom, not
@@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all.
 
   The precise terms and conditions for copying, distribution and
 modification follow.
-
+
 		    GNU GENERAL PUBLIC LICENSE
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
 
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
     License.  (Exception: if the Program itself is interactive but
     does not normally print such an announcement, your work based on
     the Program is not required to print an announcement.)
-
+
 These requirements apply to the modified work as a whole.  If
 identifiable sections of that work are not derived from the Program,
 and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
 access to copy the source code from the same place counts as
 distribution of the source code, even though third parties are not
 compelled to copy the source along with the object code.
-
+
   4. You may not copy, modify, sublicense, or distribute the Program
 except as expressly provided under this License.  Any attempt
 otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@ impose that choice.
 
 This section is intended to make thoroughly clear what is believed to
 be a consequence of the rest of this License.
-
+
   8. If the distribution and/or use of the Program is restricted in
 certain countries either by patents or by copyrighted interfaces, the
 original copyright holder who places the Program under this License
@@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGES.
 
 		     END OF TERMS AND CONDITIONS
-
+
 	    How to Apply These Terms to Your New Programs
 
   If you develop a new program, and you want it to be of the greatest
@@ -291,7 +291,7 @@ convey the exclusion of warranty; and each file should have at least
 the "copyright" line and a pointer to where the full notice is found.
 
     <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) 19yy  <name of author>
+    Copyright (C) <year>  <name of author>
 
     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
@@ -303,17 +303,16 @@ the "copyright" line and a pointer to where the full notice is found.
     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
-
+    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.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 
 Also add information on how to contact you by electronic and paper mail.
 
 If the program is interactive, make it output a short notice like this
 when it starts in an interactive mode:
 
-    Gnomovision version 69, Copyright (C) 19yy name of author
+    Gnomovision version 69, Copyright (C) year name of author
     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
     This is free software, and you are welcome to redistribute it
     under certain conditions; type `show c' for details.
@@ -336,5 +335,5 @@ necessary.  Here is a sample; alter the names:
 This General Public License does not permit incorporating your program into
 proprietary programs.  If your program is a subroutine library, you may
 consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
+library.  If this is what you want to do, use the GNU Lesser General
 Public License instead of this License.
diff --git a/INSTALL b/INSTALL
@@ -11,7 +11,7 @@ Index
 
 0. About this document
 
-	$Id: INSTALL,v 1.19 2006/05/15 04:31:14 jylefort Exp $
+	$Id: INSTALL,v 1.20 2006/11/22 17:53:22 jylefort Exp $
 
 	Copyright (C) 2003-2006 Jean-Yves Lefort.
 
@@ -22,15 +22,20 @@ Index
 
 	Mandatory:
 
-		* GTK+ (version 2.6.0 or superior)
-		  http://www.gtk.org/
+		* GNOME
+
+		  required:	version 2.8.0 or superior
+		  recommended:	version 2.14.0 or superior
 
-		* GNOME (version 2.6.0 or superior)
 		  http://www.gnome.org/
 
+		* libnotify (version 0.3.0 or superior)
+		  http://www.galago-project.org/
+
 	Optional:
 
-		* for mbox, MH, Maildir, POP3, IMAP and Sylpheed support:
+		* for mbox, MH, Maildir, POP3, IMAP, Mozilla and
+		  Sylpheed support:
 
 		  GMime (version 2.1.0 or superior)
 		  http://spruce.sourceforge.net/gmime/
@@ -47,7 +52,7 @@ Index
 
 		* for Evolution support:
 
-		  Evolution (version 2.2 or superior)
+		  Evolution (version 2.4 or superior)
 		  http://www.gnome.org/projects/evolution/
 
 2. Instructions
@@ -67,15 +72,6 @@ Index
 		  your session must be restarted after installing Mail
 		  Notification.
 
-		* Evolution 2.2.x only: for building Evolution
-		  support, you must specify the path to the Evolution
-		  source directory, for instance:
-
-			$ ./configure \
-			    --with-evolution-source-dir=$HOME/evolution-2.2.3
-
-		  This is not necessary with Evolution >= 2.3.
-
 	The configure script options which are specific to Mail
 	Notification are documented below.
 
@@ -139,25 +135,14 @@ Index
 
 		Enable Evolution mailbox support.
 
-		Requirements: Evolution version 2.2 or superior.
-
-		With Evolution 2.2.x, you must also specify the path
-		to the Evolution source directory, for instance:
+		Requirements: Evolution version 2.4 or superior.
 
-			$ ./configure \
-			    --with-evolution-source-dir=$HOME/evolution-2.2.3
+	--enable-mozilla (default: yes)
 
-	--with-evolution-source-dir=DIR (default: no)
+		Enable Mozilla products (Mozilla, SeaMonkey,
+		Thunderbird, ...) mailbox support.
 
-		Specify the path to the Evolution source directory,
-		which is required for building Evolution mailbox
-		support (Evolution 2.2.x only, not necessary with
-		Evolution >= 2.3).
-
-		Requirements: the source directory corresponding to
-			      the version of Evolution 2.2.x installed
-			      on your system.
-		Applies to: Evolution.
+		Requirements: GMime version 2.1.0 or superior.
 
 	--enable-sylpheed (default: yes)
 
diff --git a/Makefile.in b/Makefile.in
@@ -80,6 +80,7 @@ GZIP_ENV = --best
 distuninstallcheck_listfiles = find . -type f -print
 distcleancheck_listfiles = find . -type f -print
 ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AML = @AML@
@@ -209,15 +210,19 @@ WITH_IMAP_TRUE = @WITH_IMAP_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_FALSE = @WITH_MBOX_OR_MOZILLA_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_TRUE = @WITH_MBOX_OR_MOZILLA_TRUE@
 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_MOZILLA_FALSE = @WITH_MOZILLA_FALSE@
+WITH_MOZILLA_TRUE = @WITH_MOZILLA_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
@@ -258,7 +263,6 @@ build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
 evolution_plugindir = @evolution_plugindir@
-evolution_source_dir = @evolution_source_dir@
 exec_prefix = @exec_prefix@
 gnome_cappletdir = @gnome_cappletdir@
 gnome_prefix = @gnome_prefix@
diff --git a/NEWS b/NEWS
@@ -1,3 +1,54 @@
+4.0 Release Candidate 1			November 27, 2006
+
+	* Core changes:
+		* The mail summary popup has been replaced by
+		  libnotify message popups. These new message popups
+		  also provide actions such as "Open" and "Mark as Spam"
+		* Mozilla products (Mozilla, SeaMonkey, Thunderbird, ...)
+		  mailboxes are now supported
+		* The mailbox properties dialog has been redesigned
+		* A new click action has been added: open the latest
+		  message
+		* A MN icon set has been designed by Josef Vybíral
+		  (#18198)
+		* A --print-summary command line argument has been
+		  added, allowing to access message data from an
+		  external program
+		* A mail-changed GConf command setting has been added
+		  (it is executed when new mail is received or when a
+		  message is read)
+		* Handling of the GNOME mail reader command: instead
+		  of stripping %s, the first word of the command is
+		  now used; moreover, mozilla and evolution are now
+		  handled specially (#18257)
+		* The /desktop/gnome/url-handlers/mailto/needs_terminal
+		  GConf key is now respected
+		* Could no longer close the about dialog with recent
+		  GTK+ versions: fixed (#18252)
+
+	* POP3 changes:
+		* Messages kept on the server but marked as read are
+		  now discarded. Note that this only works with
+		  servers which send Status headers; most don't
+		  (#18164).
+
+	* Evolution changes:
+		* All mailboxes now share the same CORBA connection to
+		  Evolution (reduces resource usage)
+		* A mailbox properties dialog crash has been fixed
+		  (#18228)
+		* Some memory leaks have been fixed
+		* Support for the Evolution 2.9/2.10 branch has been
+		  added
+		* The Evolution 2.2 branch is no longer supported
+
+	* Updated translations:
+		* French
+		* Serbian (Filip Miletic)
+
+	* New translations:
+		* Catalan (Topi)
+
 3.0					June 14, 2006
 
 	* Updated translations:
diff --git a/README b/README
@@ -11,7 +11,7 @@ Index
 
 0. About this document
 
-	$Id: README,v 1.32 2006/05/15 04:32:34 jylefort Exp $
+	$Id: README,v 1.34 2006/11/22 17:56:46 jylefort Exp $
 
 	Copyright (C) 2003-2006 Jean-Yves Lefort.
 
@@ -31,8 +31,9 @@ Index
 	Mail Notification features include:
 
 		* multiple mailbox support
-		* mbox, MH, Maildir, POP3, IMAP, Gmail, Evolution and
-		  Sylpheed support
+		* mbox, MH, Maildir, POP3, IMAP, Gmail, Evolution,
+		  Mozilla products (Mozilla, SeaMonkey, Thunderbird,
+		  ...) and Sylpheed support
 		* SASL authentication support
 		* APOP authentication support
 		* SSL/TLS support
@@ -40,7 +41,7 @@ Index
 		* immediate notification (the status icon is updated
 		  immediately or within seconds after a mailbox
 		  changes)
-		* a mail summary
+		* message popups
 		* HIG 2.0 compliance
 
 2. Issues in third-party software affecting Mail Notification
@@ -90,6 +91,7 @@ Index
 	  http://bugzilla.gnome.org/show_bug.cgi?id=315650
 	  fixed:
 		- FreeBSD port devel/libbonobo >= 2.10.1_1
+		- libbonobo >= 2.15.3
 
 	* An infinite loop in GnomeVFS may affect mailboxes which use
 	  the GnomeVFS bzip2 method.
@@ -115,6 +117,7 @@ Index
 	  http://bugzilla.gnome.org/show_bug.cgi?id=341585
 	  fixed:
 		- FreeBSD port devel/gnomevfs2 >= 2.14.1_2
+		- GnomeVFS >= 2.15.90
 
 3. Installation instructions
 
diff --git a/acinclude.m4 b/acinclude.m4
@@ -91,16 +91,17 @@ fi
 
 AC_SUBST(WARN_CFLAGS)])
 
-dnl MN_ARG_DEBUG
+dnl MN_ARG_DEBUG([DEFAULT])
 dnl
 AC_DEFUN([MN_ARG_DEBUG],
 [AC_ARG_ENABLE(debug,
-AS_HELP_STRING([--enable-debug],
-[enable assertions and cast checks]),
+ifelse([$1], yes,
+[AS_HELP_STRING([--disable-debug], [disable assertions and cast checks])],
+[AS_HELP_STRING([--enable-debug], [enable assertions and cast checks])]),
 [case "$enableval" in
 	yes|no) enable_debug=$enableval ;;
 	*) AC_MSG_ERROR([bad value $enableval for --enable-debug]) ;;
-esac], [enable_debug=no])
+esac], [enable_debug=ifelse([$1],, no, [$1])])
 
 if test $enable_debug = no; then
 	DEBUG_CFLAGS="-DG_DISABLE_ASSERT -DG_DISABLE_CHECKS -DG_DISABLE_CAST_CHECKS"
diff --git a/aclocal.m4 b/aclocal.m4
@@ -51,203 +51,6 @@ AC_DEFUN([AM_GCONF_SOURCE_2],
   AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
 ])
 
-# 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,2004 Red Hat, Inc.
 #
@@ -647,6 +450,203 @@ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
 AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
 ])dnl
 
+# 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
+])
+
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 
 # serial 48 AC_PROG_LIBTOOL
@@ -7162,7 +7162,8 @@ installed software in a non-standard prefix.
 
 _PKG_TEXT
 ])],
-		[$4])
+		[AC_MSG_RESULT([no])
+                $4])
 elif test $pkg_failed = untried; then
 	ifelse([$4], , [AC_MSG_FAILURE(dnl
 [The pkg-config script could not be found or is too old.  Make sure it
diff --git a/art/16x16/apps/mail-notification.png b/art/16x16/apps/mail-notification.png
Binary files differ.
diff --git a/art/22x22/apps/mail-notification.png b/art/22x22/apps/mail-notification.png
Binary files differ.
diff --git a/art/24x24/apps/mail-notification.png b/art/24x24/apps/mail-notification.png
Binary files differ.
diff --git a/art/32x32/apps/mail-notification.png b/art/32x32/apps/mail-notification.png
Binary files differ.
diff --git a/art/48x48/apps/mail-notification.png b/art/48x48/apps/mail-notification.png
Binary files differ.
diff --git a/art/Makefile.am b/art/Makefile.am
@@ -1,5 +1,11 @@
-gnome_pixmapsdir = $(datadir)/pixmaps
-dist_gnome_pixmaps_DATA = mail-notification.png
+iconsdir = $(datadir)/icons/hicolor
+nobase_dist_icons_DATA = \
+	16x16/apps/mail-notification.png \
+	22x22/apps/mail-notification.png \
+	24x24/apps/mail-notification.png \
+	32x32/apps/mail-notification.png \
+	48x48/apps/mail-notification.png \
+	scalable/apps/mail-notification.svg
 
 app_pixmapsdir = $(pkgdatadir)/ui
 dist_app_pixmaps_DATA = logo.png
@@ -7,3 +13,6 @@ dist_app_pixmaps_DATA = logo.png
 if WITH_GMAIL
 dist_app_pixmaps_DATA += gmail.png
 endif
+
+install-data-hook:
+	-gtk-update-icon-cache -f -t $(iconsdir)
diff --git a/art/Makefile.in b/art/Makefile.in
@@ -40,7 +40,7 @@ target_triplet = @target@
 @WITH_GMAIL_TRUE@am__append_1 = gmail.png
 subdir = art
 DIST_COMMON = $(am__dist_app_pixmaps_DATA_DIST) \
-	$(dist_gnome_pixmaps_DATA) $(srcdir)/Makefile.am \
+	$(nobase_dist_icons_DATA) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
@@ -64,12 +64,13 @@ am__vpath_adj = case $$p in \
   esac;
 am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
 am__installdirs = "$(DESTDIR)$(app_pixmapsdir)" \
-	"$(DESTDIR)$(gnome_pixmapsdir)"
+	"$(DESTDIR)$(iconsdir)"
 dist_app_pixmapsDATA_INSTALL = $(INSTALL_DATA)
-dist_gnome_pixmapsDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(dist_app_pixmaps_DATA) $(dist_gnome_pixmaps_DATA)
+nobase_dist_iconsDATA_INSTALL = $(install_sh_DATA)
+DATA = $(dist_app_pixmaps_DATA) $(nobase_dist_icons_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AML = @AML@
@@ -199,15 +200,19 @@ WITH_IMAP_TRUE = @WITH_IMAP_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_FALSE = @WITH_MBOX_OR_MOZILLA_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_TRUE = @WITH_MBOX_OR_MOZILLA_TRUE@
 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_MOZILLA_FALSE = @WITH_MOZILLA_FALSE@
+WITH_MOZILLA_TRUE = @WITH_MOZILLA_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
@@ -248,7 +253,6 @@ build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
 evolution_plugindir = @evolution_plugindir@
-evolution_source_dir = @evolution_source_dir@
 exec_prefix = @exec_prefix@
 gnome_cappletdir = @gnome_cappletdir@
 gnome_prefix = @gnome_prefix@
@@ -276,8 +280,15 @@ target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
-gnome_pixmapsdir = $(datadir)/pixmaps
-dist_gnome_pixmaps_DATA = mail-notification.png
+iconsdir = $(datadir)/icons/hicolor
+nobase_dist_icons_DATA = \
+	16x16/apps/mail-notification.png \
+	22x22/apps/mail-notification.png \
+	24x24/apps/mail-notification.png \
+	32x32/apps/mail-notification.png \
+	48x48/apps/mail-notification.png \
+	scalable/apps/mail-notification.svg
+
 app_pixmapsdir = $(pkgdatadir)/ui
 dist_app_pixmaps_DATA = logo.png $(am__append_1)
 all: all-am
@@ -339,22 +350,24 @@ uninstall-dist_app_pixmapsDATA:
 	  echo " rm -f '$(DESTDIR)$(app_pixmapsdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(app_pixmapsdir)/$$f"; \
 	done
-install-dist_gnome_pixmapsDATA: $(dist_gnome_pixmaps_DATA)
+install-nobase_dist_iconsDATA: $(nobase_dist_icons_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(gnome_pixmapsdir)" || $(mkdir_p) "$(DESTDIR)$(gnome_pixmapsdir)"
-	@list='$(dist_gnome_pixmaps_DATA)'; for p in $$list; do \
+	test -z "$(iconsdir)" || $(mkdir_p) "$(DESTDIR)$(iconsdir)"
+	@$(am__vpath_adj_setup) \
+	list='$(nobase_dist_icons_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(dist_gnome_pixmapsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(gnome_pixmapsdir)/$$f'"; \
-	  $(dist_gnome_pixmapsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(gnome_pixmapsdir)/$$f"; \
+	  $(am__vpath_adj) \
+	  echo " $(nobase_dist_iconsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(iconsdir)/$$f'"; \
+	  $(nobase_dist_iconsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(iconsdir)/$$f"; \
 	done
 
-uninstall-dist_gnome_pixmapsDATA:
+uninstall-nobase_dist_iconsDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(dist_gnome_pixmaps_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(gnome_pixmapsdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(gnome_pixmapsdir)/$$f"; \
+	@$(am__vpath_adj_setup) \
+	list='$(nobase_dist_icons_DATA)'; for p in $$list; do \
+	  $(am__vpath_adj) \
+	  echo " rm -f '$(DESTDIR)$(iconsdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(iconsdir)/$$f"; \
 	done
 tags: TAGS
 TAGS:
@@ -364,6 +377,7 @@ CTAGS:
 
 
 distdir: $(DISTFILES)
+	$(mkdir_p) $(distdir)/16x16/apps $(distdir)/22x22/apps $(distdir)/24x24/apps $(distdir)/32x32/apps $(distdir)/48x48/apps $(distdir)/scalable/apps
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
 	list='$(DISTFILES)'; for file in $$list; do \
@@ -394,7 +408,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(app_pixmapsdir)" "$(DESTDIR)$(gnome_pixmapsdir)"; do \
+	for dir in "$(DESTDIR)$(app_pixmapsdir)" "$(DESTDIR)$(iconsdir)"; do \
 	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
 	done
 install: install-am
@@ -440,7 +454,9 @@ info: info-am
 info-am:
 
 install-data-am: install-dist_app_pixmapsDATA \
-	install-dist_gnome_pixmapsDATA
+	install-nobase_dist_iconsDATA
+	@$(NORMAL_INSTALL)
+	$(MAKE) $(AM_MAKEFLAGS) install-data-hook
 
 install-exec-am:
 
@@ -466,21 +482,25 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-dist_app_pixmapsDATA \
-	uninstall-dist_gnome_pixmapsDATA uninstall-info-am
+uninstall-am: uninstall-dist_app_pixmapsDATA uninstall-info-am \
+	uninstall-nobase_dist_iconsDATA
 
 .PHONY: all all-am check check-am clean clean-generic clean-libtool \
 	distclean distclean-generic distclean-libtool distdir dvi \
 	dvi-am html html-am info info-am install install-am \
-	install-data install-data-am install-dist_app_pixmapsDATA \
-	install-dist_gnome_pixmapsDATA install-exec install-exec-am \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
+	install-data install-data-am install-data-hook \
+	install-dist_app_pixmapsDATA install-exec install-exec-am \
+	install-info install-info-am install-man \
+	install-nobase_dist_iconsDATA install-strip installcheck \
+	installcheck-am installdirs maintainer-clean \
 	maintainer-clean-generic mostlyclean mostlyclean-generic \
 	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
-	uninstall-dist_app_pixmapsDATA \
-	uninstall-dist_gnome_pixmapsDATA uninstall-info-am
+	uninstall-dist_app_pixmapsDATA uninstall-info-am \
+	uninstall-nobase_dist_iconsDATA
+
 
+install-data-hook:
+	-gtk-update-icon-cache -f -t $(iconsdir)
 # 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/art/mail-notification.png b/art/mail-notification.png
Binary files differ.
diff --git a/art/scalable/apps/mail-notification.svg b/art/scalable/apps/mail-notification.svg
@@ -0,0 +1,374 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="48px"
+   height="48px"
+   id="svg2159"
+   sodipodi:version="0.32"
+   inkscape:version="0.44+devel"
+   sodipodi:docbase="/home/cornelius/packages/mail-notification/scalable"
+   sodipodi:docname="mail-notification.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   inkscape:export-filename="/home/cornelius/GFX/ikony/Tango/apps/48x48/mail-notification.png"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   sodipodi:modified="true">
+  <defs
+     id="defs2161">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3805">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop3807" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop3809" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient3259"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-2.74682,0,0,1.900281,602.2346,-828.6181)"
+       cx="605.71429"
+       cy="486.64789"
+       fx="605.71429"
+       fy="486.64789"
+       r="117.14286" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient5060">
+      <stop
+         style="stop-color:black;stop-opacity:1;"
+         offset="0"
+         id="stop5062" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5064" />
+    </linearGradient>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5060"
+       id="radialGradient3257"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(2.746819,0,0,1.900281,-941.7278,-828.6181)"
+       cx="602.65948"
+       cy="488.07959"
+       fx="602.65948"
+       fy="488.07959"
+       r="117.14286" />
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="0"
+         id="stop5050" />
+      <stop
+         id="stop5056"
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;" />
+      <stop
+         style="stop-color:black;stop-opacity:0;"
+         offset="1"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5048"
+       id="linearGradient3255"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(3.659125,0,0,1.892176,-1492.258,-825.6305)"
+       x1="512.28497"
+       y1="365.21631"
+       x2="512.28497"
+       y2="609.5199" />
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3167">
+      <stop
+         style="stop-color:white;stop-opacity:1;"
+         offset="0"
+         id="stop3169" />
+      <stop
+         style="stop-color:white;stop-opacity:0;"
+         offset="1"
+         id="stop3171" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3136">
+      <stop
+         style="stop-color:#ef2929;stop-opacity:1"
+         offset="0"
+         id="stop3138" />
+      <stop
+         style="stop-color:#ba0000;stop-opacity:1"
+         offset="1"
+         id="stop3140" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3124"
+       inkscape:collect="always">
+      <stop
+         id="stop3126"
+         offset="0"
+         style="stop-color:#fafaf9;stop-opacity:1;" />
+      <stop
+         id="stop3128"
+         offset="1"
+         style="stop-color:#d7d7d7;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient3058">
+      <stop
+         style="stop-color:#fafaf9;stop-opacity:1;"
+         offset="0"
+         id="stop3060" />
+      <stop
+         style="stop-color:#ececec;stop-opacity:1"
+         offset="1"
+         id="stop3062" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3058"
+       id="linearGradient3093"
+       gradientUnits="userSpaceOnUse"
+       x1="19.293913"
+       y1="14.866997"
+       x2="19.293913"
+       y2="38.184418"
+       gradientTransform="matrix(0.876811,0,0,0.937062,2.431162,6.381118)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3058"
+       id="linearGradient3095"
+       gradientUnits="userSpaceOnUse"
+       x1="19.293913"
+       y1="14.866997"
+       x2="19.293913"
+       y2="38.184418"
+       gradientTransform="matrix(0.876811,0,0,0.884616,2.431162,6.557698)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3124"
+       id="linearGradient3122"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1,0,0,1.019549,-31.40102,-3.714102)"
+       x1="19.293913"
+       y1="14.866997"
+       x2="19.293913"
+       y2="38.184418" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3136"
+       id="linearGradient3142"
+       x1="11.313708"
+       y1="10.041267"
+       x2="11.313708"
+       y2="15.460861"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3167"
+       id="linearGradient3173"
+       x1="15.5"
+       y1="0.10591315"
+       x2="15.5"
+       y2="13.072449"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3805"
+       id="linearGradient3811"
+       x1="8.8586321"
+       y1="24.999996"
+       x2="10.000471"
+       y2="24.999996"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="9.8994949"
+     inkscape:cx="34.338507"
+     inkscape:cy="23.619043"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="true"
+     inkscape:document-units="px"
+     inkscape:window-width="959"
+     inkscape:window-height="783"
+     inkscape:window-x="112"
+     inkscape:window-y="57" />
+  <metadata
+     id="metadata2164">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>Mail Notification</dc:title>
+        <dc:date>3.11.2006</dc:date>
+        <dc:creator>
+          <cc:Agent>
+            <dc:title>Josef Vybíral</dc:title>
+          </cc:Agent>
+        </dc:creator>
+        <dc:rights>
+          <cc:Agent>
+            <dc:title></dc:title>
+          </cc:Agent>
+        </dc:rights>
+        <dc:source>http://blog.vybiral.info</dc:source>
+        <dc:relation>http://blog.vybiral.info/2006/11/04/tango-friday-november-3rd/</dc:relation>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>mail notification</rdf:li>
+            <rdf:li>notification</rdf:li>
+            <rdf:li>e-mail</rdf:li>
+            <rdf:li>mailbox</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <cc:license
+           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+      </cc:Work>
+      <cc:License
+         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Reproduction" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/Distribution" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/Notice" />
+        <cc:permits
+           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/ShareAlike" />
+        <cc:requires
+           rdf:resource="http://web.resource.org/cc/SourceCode" />
+      </cc:License>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="layer1"
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer">
+    <g
+       style="opacity:0.558952;display:inline"
+       transform="matrix(1.754551e-2,0,0,1.733565e-2,26.47832,39.28602)"
+       id="g3197">
+      <rect
+         style="opacity:0.40206185;color:black;fill:url(#linearGradient3255);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         id="rect3199"
+         width="1766.8337"
+         height="459.52847"
+         x="-1053.1652"
+         y="-131.86813" />
+      <path
+         style="opacity:0.40200004;color:black;fill:url(#radialGradient3257);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
+         d="M 713.66862,-131.86814 C 713.66862,-131.86814 713.66862,329.60325 713.66862,329.60325 C 855.12298,330.47196 1055.6366,226.21092 1055.6365,98.837854 C 1055.6365,-28.535234 897.78402,-131.86813 713.66862,-131.86814 z "
+         id="path3201"
+         sodipodi:nodetypes="cccc" />
+      <path
+         sodipodi:nodetypes="cccc"
+         id="path3203"
+         d="M -1053.1653,-131.86814 C -1053.1653,-131.86814 -1053.1653,329.60325 -1053.1653,329.60325 C -1194.6198,330.47196 -1395.1333,226.21093 -1395.1333,98.837855 C -1395.1333,-28.535231 -1237.2808,-131.86812 -1053.1653,-131.86814 z "
+         style="opacity:0.40200004;color:black;fill:url(#radialGradient3259);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:round;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
+    </g>
+    <rect
+       style="opacity:1;color:black;fill:url(#linearGradient3095);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00000024px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect3056"
+       width="35.949223"
+       height="22.999994"
+       x="5.5"
+       y="18.500002"
+       rx="2.0101535"
+       ry="2.0101528" />
+    <path
+       sodipodi:nodetypes="ccc"
+       id="path3090"
+       d="M 5.9384061,40.500015 L 23.069419,27.322619 L 40.959671,40.312354"
+       style="fill:none;fill-rule:evenodd;stroke:#888a85;stroke-width:1.00000083px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0.4054054" />
+    <path
+       style="opacity:1;color:black;fill:url(#linearGradient3093);fill-opacity:1;fill-rule:evenodd;stroke:#888a85;stroke-width:0.99999964px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 5.9384061,19.499997 L 22.090606,33.146213 C 22.656423,33.546486 23.278523,33.684233 24.045447,33.146453 L 40.959671,19.707768"
+       id="path3066"
+       sodipodi:nodetypes="cccc" />
+    <rect
+       ry="0.9877466"
+       rx="0.9877466"
+       y="19.499983"
+       x="6.5000038"
+       height="20.999998"
+       width="34.000004"
+       id="rect3086"
+       style="opacity:1;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    <path
+       sodipodi:nodetypes="cccc"
+       id="path3790"
+       d="M 7.5000013,19.382261 L 22.258757,32.168538 C 22.77576,32.543587 23.344192,32.672654 24.044954,32.168762 L 39.499993,19.576939"
+       style="opacity:1;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    <path
+       style="opacity:1;color:black;fill:url(#linearGradient3122);fill-opacity:1;fill-rule:evenodd;stroke:#555753;stroke-width:0.99999976px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 8.5,10.5 L 8.5,35 C 7.888138,35.455853 7.5,36.178899 7.5,37 C 7.5,38.380001 8.619999,39.500001 10,39.5 C 11.380001,39.5 12.500001,38.38 12.5,37 C 12.5,36.2203 12.04656,35.521092 11.486607,35.0625 L 11.486607,10.5 L 8.5,10.5 z "
+       id="rect3097"
+       sodipodi:nodetypes="ccsssccc" />
+    <path
+       sodipodi:nodetypes="ccsssccc"
+       id="path3794"
+       d="M 9.5040642,11.499996 L 9.5040642,35.60076 C 9.1988945,35.643743 8.5000024,36.081111 8.5000024,37.172412 C 8.5000024,38.45724 9.6768322,38.499997 10.000005,38.499997 C 10.310562,38.499997 11.45693,38.431263 11.500007,37.147158 C 11.526268,36.364332 10.993156,35.72126 10.500537,35.633697 L 10.500537,11.499996 L 9.5040642,11.499996 z "
+       style="opacity:1;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient3811);stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    <rect
+       style="opacity:1;color:black;fill:url(#linearGradient3142);fill-opacity:1.0;fill-rule:evenodd;stroke:#a40000;stroke-width:0.99999982px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="rect3101"
+       width="15.999992"
+       height="10.000005"
+       x="8.4999962"
+       y="5.5000024"
+       rx="2.0101516"
+       ry="2.0101531" />
+    <path
+       sodipodi:type="arc"
+       style="opacity:1;color:black;fill:#555753;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.78535485px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       id="path3120"
+       sodipodi:cx="17.035715"
+       sodipodi:cy="34.94643"
+       sodipodi:rx="0.875"
+       sodipodi:ry="0.91071427"
+       d="M 17.910715 34.94643 A 0.875 0.91071427 0 1 1  16.160715,34.94643 A 0.875 0.91071427 0 1 1  17.910715 34.94643 z"
+       transform="matrix(1.142854,0,0,1.098043,-9.46935,-1.372688)" />
+    <rect
+       ry="0.93872303"
+       rx="0.93872303"
+       y="6.500001"
+       x="9.4999971"
+       height="8.0000048"
+       width="14.000003"
+       id="rect3156"
+       style="opacity:0.41484716;color:black;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:white;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+    <path
+       style="opacity:0.6419214;color:black;fill:url(#linearGradient3173);fill-opacity:1.0;fill-rule:evenodd;stroke:none;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+       d="M 10.5625,6 C 9.5184775,6 9,6.6455364 9,7.6584947 L 9,9.6384181 C 10.765933,10.48709 13.399152,11.03125 16.324218,11.03125 C 19.472334,11.03125 22.243329,10.402389 24,9.4394421 L 24,7.6674233 C 24,6.6544652 23.445807,6 22.401786,6 L 10.5625,6 z "
+       id="path3162"
+       sodipodi:nodetypes="cccscccc" />
+  </g>
+</svg>
diff --git a/config.h.in b/config.h.in
@@ -15,9 +15,6 @@
 /* Define to 1 if you have the <dlfcn.h> header file. */
 #undef HAVE_DLFCN_H
 
-/* Define to 1 if the Evolution branch is 2.2 */
-#undef HAVE_EVOLUTION_2_2
-
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
 
@@ -111,6 +108,9 @@
 /* Define to 1 if mime is enabled, 0 otherwise */
 #undef WITH_MIME
 
+/* Define to 1 if mozilla is enabled, 0 otherwise */
+#undef WITH_MOZILLA
+
 /* Define to 1 if pop3 is enabled, 0 otherwise */
 #undef WITH_POP3
 
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 3.0.
+# Generated by GNU Autoconf 2.59 for Mail Notification 4.0-rc1.
 #
 # Report bugs to <jylefort@brutele.be>.
 #
@@ -423,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='Mail Notification'
 PACKAGE_TARNAME='mail-notification'
-PACKAGE_VERSION='3.0'
-PACKAGE_STRING='Mail Notification 3.0'
+PACKAGE_VERSION='4.0-rc1'
+PACKAGE_STRING='Mail Notification 4.0-rc1'
 PACKAGE_BUGREPORT='jylefort@brutele.be'
 
 ac_unique_file="src/mn-main.c"
@@ -465,7 +465,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 ac_prefix_program WARN_CFLAGS DEBUG_CFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT 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 EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL GETTEXT_PACKAGE 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_XML_NOMERGE_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_SERVICE_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL INTLTOOL_ICONV INTLTOOL_MSGFMT INTLTOOL_MSGMERGE INTLTOOL_XGETTEXT PKG_CONFIG GTK_CFLAGS GTK_LIBS ac_pt_PKG_CONFIG GNOME_CFLAGS GNOME_LIBS GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE gnome_prefix gnome_cappletdir GCONFTOOL ORBIT_IDL BONOBO_IDLFLAGS AML GOB2 GMIME_CFLAGS GMIME_LIBS OPENSSL_CFLAGS OPENSSL_LIBS SASL_CFLAGS SASL_LIBS EVOLUTION_PLUGIN_CFLAGS EVOLUTION_PLUGIN_LIBS evolution_plugindir evolution_source_dir WITH_MBOX_TRUE WITH_MBOX_FALSE WITH_MH_TRUE WITH_MH_FALSE WITH_MAILDIR_TRUE WITH_MAILDIR_FALSE WITH_POP3_TRUE WITH_POP3_FALSE WITH_IMAP_TRUE WITH_IMAP_FALSE WITH_POP3_OR_IMAP_TRUE WITH_POP3_OR_IMAP_FALSE WITH_POP3_OR_IMAP_OR_GMAIL_TRUE WITH_POP3_OR_IMAP_OR_GMAIL_FALSE WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE WITH_SSL_TRUE WITH_SSL_FALSE WITH_SASL_TRUE WITH_SASL_FALSE WITH_GMAIL_TRUE WITH_GMAIL_FALSE WITH_EVOLUTION_TRUE WITH_EVOLUTION_FALSE WITH_SYLPHEED_TRUE WITH_SYLPHEED_FALSE WITH_MIME_TRUE WITH_MIME_FALSE WITH_REGRESSION_TESTS_TRUE WITH_REGRESSION_TESTS_FALSE LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS ac_prefix_program WARN_CFLAGS DEBUG_CFLAGS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT 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 EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL GETTEXT_PACKAGE 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_XML_NOMERGE_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_SERVICE_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL INTLTOOL_ICONV INTLTOOL_MSGFMT INTLTOOL_MSGMERGE INTLTOOL_XGETTEXT ALL_LINGUAS PKG_CONFIG GTK_CFLAGS GTK_LIBS ac_pt_PKG_CONFIG GNOME_CFLAGS GNOME_LIBS GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE gnome_prefix gnome_cappletdir GCONFTOOL ORBIT_IDL BONOBO_IDLFLAGS AML GOB2 GMIME_CFLAGS GMIME_LIBS OPENSSL_CFLAGS OPENSSL_LIBS SASL_CFLAGS SASL_LIBS EVOLUTION_PLUGIN_CFLAGS EVOLUTION_PLUGIN_LIBS evolution_plugindir WITH_MBOX_TRUE WITH_MBOX_FALSE WITH_MOZILLA_TRUE WITH_MOZILLA_FALSE WITH_MBOX_OR_MOZILLA_TRUE WITH_MBOX_OR_MOZILLA_FALSE WITH_MH_TRUE WITH_MH_FALSE WITH_MAILDIR_TRUE WITH_MAILDIR_FALSE WITH_POP3_TRUE WITH_POP3_FALSE WITH_IMAP_TRUE WITH_IMAP_FALSE WITH_POP3_OR_IMAP_TRUE WITH_POP3_OR_IMAP_FALSE WITH_POP3_OR_IMAP_OR_GMAIL_TRUE WITH_POP3_OR_IMAP_OR_GMAIL_FALSE WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE WITH_SSL_TRUE WITH_SSL_FALSE WITH_SASL_TRUE WITH_SASL_FALSE WITH_GMAIL_TRUE WITH_GMAIL_FALSE WITH_EVOLUTION_TRUE WITH_EVOLUTION_FALSE WITH_SYLPHEED_TRUE WITH_SYLPHEED_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.
@@ -982,7 +982,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 3.0 to adapt to many kinds of systems.
+\`configure' configures Mail Notification 4.0-rc1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1049,7 +1049,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of Mail Notification 3.0:";;
+     short | recursive ) echo "Configuration of Mail Notification 4.0-rc1:";;
    esac
   cat <<\_ACEOF
 
@@ -1066,12 +1066,13 @@ Optional Features:
   --disable-ipv6          disable IPv6 support
   --disable-gmail         disable Gmail support
   --disable-evolution     disable Evolution support
+  --disable-mozilla       disable Mozilla products support
   --disable-sylpheed      disable Sylpheed support
   --enable-sylpheed-locking
                           enable .sylpheed_mark locking
   --enable-compile-warnings=no|yes|error
                           enable compiler warnings [no]
-  --enable-debug          enable assertions and cast checks
+  --disable-debug         disable assertions and cast checks
   --enable-regression-tests
                           build and run regression tests
   --enable-maintainer-mode  enable make rules and dependencies not useful
@@ -1102,8 +1103,6 @@ Optional Packages:
                           [autodetect]
   --with-gconf-source=sourceaddress      Config database for installing schema files.
   --with-gconf-schema-file-dir=dir        Directory for installing schema files.
-  --with-evolution-source-dir=DIR
-                          path to the Evolution source tree
 
 Some influential environment variables:
   CC          C compiler command
@@ -1229,7 +1228,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-Mail Notification configure 3.0
+Mail Notification configure 4.0-rc1
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1243,7 +1242,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 3.0, which was
+It was created by Mail Notification $as_me 4.0-rc1, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1776,6 +1775,18 @@ esac
 else
   enable_evolution=yes
 fi;
+# Check whether --enable-mozilla or --disable-mozilla was given.
+if test "${enable_mozilla+set}" = set; then
+  enableval="$enable_mozilla"
+  case "$enableval" in
+	yes|no) enable_mozilla=$enableval ;;
+	*) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-mozilla" >&5
+echo "$as_me: error: bad value $enableval for --enable-mozilla" >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  enable_mozilla=yes
+fi;
 # Check whether --enable-sylpheed or --disable-sylpheed was given.
 if test "${enable_sylpheed+set}" = set; then
   enableval="$enable_sylpheed"
@@ -1848,7 +1859,7 @@ echo "$as_me: error: bad value $enableval for --enable-debug" >&2;}
    { (exit 1); exit 1; }; } ;;
 esac
 else
-  enable_debug=no
+  enable_debug=yes
 fi;
 
 if test $enable_debug = no; then
@@ -2264,7 +2275,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='mail-notification'
- VERSION='3.0'
+ VERSION='4.0-rc1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4090,7 +4101,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4093 "configure"' > conftest.$ac_ext
+  echo '#line 4104 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -5689,7 +5700,7 @@ fi
 
 
 # Provide some information about the compiler.
-echo "$as_me:5692:" \
+echo "$as_me:5703:" \
      "checking for Fortran 77 compiler version" >&5
 ac_compiler=`set X $ac_compile; echo $2`
 { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -6752,11 +6763,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6755: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6766: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:6759: \$? = $ac_status" >&5
+   echo "$as_me:6770: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7020,11 +7031,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7023: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7034: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:7027: \$? = $ac_status" >&5
+   echo "$as_me:7038: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -7124,11 +7135,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:7127: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7138: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7131: \$? = $ac_status" >&5
+   echo "$as_me:7142: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -9469,7 +9480,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9472 "configure"
+#line 9483 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -9569,7 +9580,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9572 "configure"
+#line 9583 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11909,11 +11920,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11912: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11923: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:11916: \$? = $ac_status" >&5
+   echo "$as_me:11927: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -12013,11 +12024,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:12016: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:12027: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:12020: \$? = $ac_status" >&5
+   echo "$as_me:12031: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -13583,11 +13594,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13586: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13597: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13590: \$? = $ac_status" >&5
+   echo "$as_me:13601: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -13687,11 +13698,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13690: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13701: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13694: \$? = $ac_status" >&5
+   echo "$as_me:13705: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -15890,11 +15901,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15893: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15904: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15897: \$? = $ac_status" >&5
+   echo "$as_me:15908: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -16158,11 +16169,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16161: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16172: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16165: \$? = $ac_status" >&5
+   echo "$as_me:16176: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -16262,11 +16273,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:16265: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16276: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:16269: \$? = $ac_status" >&5
+   echo "$as_me:16280: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -18940,7 +18951,7 @@ _ACEOF
 
 
 
-ALL_LINGUAS="bg cs de fr ja nl pl pt pt_BR ru sr sr@Latn sv"
+ALL_LINGUAS="bg ca cs de fr ja nl pl pt pt_BR ru sr sr@Latn sv"
 
 
 for ac_header in locale.h
@@ -20525,9 +20536,9 @@ if test -n ""; then
     echo "$as_me:$LINENO: checking for intltool >= " >&5
 echo $ECHO_N "checking for intltool >= ... $ECHO_C" >&6
 
-    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo  | awk -F. '{ print $ 1 * 100 + $ 2; }'`
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo  | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
     INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in`
-    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 100 + VERSION[2];}' ${ac_aux_dir}/intltool-update.in`
+    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 1000 + VERSION[2] * 100 + VERSION[3];}' ${ac_aux_dir}/intltool-update.in`
 
     echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5
 echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found" >&6
@@ -20806,6 +20817,9 @@ echo "${ECHO_T}no" >&6
 fi
 
 
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
+
+
 
 
 
@@ -22837,12 +22851,12 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_GNOME_CFLAGS="$GNOME_CFLAGS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"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 libxml-2.0\"") >&5
-  ($PKG_CONFIG --exists --print-errors "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 libxml-2.0") 2>&5
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 >= 2.8.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0 libxml-2.0 libnotify\"") >&5
+  ($PKG_CONFIG --exists --print-errors "gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 >= 2.8.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0 libxml-2.0 libnotify") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-  pkg_cv_GNOME_CFLAGS=`$PKG_CONFIG --cflags "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 libxml-2.0" 2>/dev/null`
+  pkg_cv_GNOME_CFLAGS=`$PKG_CONFIG --cflags "gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 >= 2.8.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0 libxml-2.0 libnotify" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -22855,12 +22869,12 @@ if test -n "$PKG_CONFIG"; then
         pkg_cv_GNOME_LIBS="$GNOME_LIBS"
     else
         if test -n "$PKG_CONFIG" && \
-    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"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 libxml-2.0\"") >&5
-  ($PKG_CONFIG --exists --print-errors "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 libxml-2.0") 2>&5
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 >= 2.8.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0 libxml-2.0 libnotify\"") >&5
+  ($PKG_CONFIG --exists --print-errors "gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 >= 2.8.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0 libxml-2.0 libnotify") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-  pkg_cv_GNOME_LIBS=`$PKG_CONFIG --libs "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 libxml-2.0" 2>/dev/null`
+  pkg_cv_GNOME_LIBS=`$PKG_CONFIG --libs "gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 >= 2.8.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0 libxml-2.0 libnotify" 2>/dev/null`
 else
   pkg_failed=yes
 fi
@@ -22879,14 +22893,16 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-	        GNOME_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "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 libxml-2.0"`
+	        GNOME_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 >= 2.8.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0 libxml-2.0 libnotify"`
         else
-	        GNOME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "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 libxml-2.0"`
+	        GNOME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 >= 2.8.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0 libxml-2.0 libnotify"`
         fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$GNOME_PKG_ERRORS" >&5
 
-	{ { echo "$as_me:$LINENO: error: unable to find the GNOME libraries" >&5
+	echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+                { { echo "$as_me:$LINENO: error: unable to find the GNOME libraries" >&5
 echo "$as_me: error: unable to find the GNOME libraries" >&2;}
    { (exit 1); exit 1; }; }
 elif test $pkg_failed = untried; then
@@ -23186,6 +23202,7 @@ if test $enable_mbox = yes ||
    test $enable_maildir = yes ||
    test $enable_pop3 = yes ||
    test $enable_imap = yes ||
+   test $enable_mozilla = yes ||
    test $enable_sylpheed = yes; then
 
 pkg_failed=no
@@ -23246,7 +23263,9 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$GMIME_PKG_ERRORS" >&5
 
-	:
+	echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+                :
 elif test $pkg_failed = untried; then
 	:
 else
@@ -23287,6 +23306,12 @@ echo "$as_me: GMime not found: forcing --disable-imap" >&6;}
 enable_imap=no
 disable_imap_reason="(GMime not found)"
 		fi
+		if test $enable_mozilla = yes; then
+			{ echo "$as_me:$LINENO: GMime not found: forcing --disable-mozilla" >&5
+echo "$as_me: GMime not found: forcing --disable-mozilla" >&6;}
+enable_mozilla=no
+disable_mozilla_reason="(GMime not found)"
+		fi
 		if test $enable_sylpheed = yes; then
 			{ echo "$as_me:$LINENO: GMime not found: forcing --disable-sylpheed" >&5
 echo "$as_me: GMime not found: forcing --disable-sylpheed" >&6;}
@@ -23490,7 +23515,7 @@ if test $enable_evolution = yes; then
 	evolution=no
 
 
-evolution_branch=2.8
+evolution_branch=2.10
 evolution_plugin_min_version=
 
 
@@ -23552,7 +23577,9 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EVOLUTION_PLUGIN_PKG_ERRORS" >&5
 
-	found=no
+	echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+                found=no
 elif test $pkg_failed = untried; then
 	found=no
 else
@@ -23588,7 +23615,7 @@ fi
 	if test $evolution = no; then
 
 
-evolution_branch=2.6
+evolution_branch=2.8
 evolution_plugin_min_version=
 
 
@@ -23650,7 +23677,9 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EVOLUTION_PLUGIN_PKG_ERRORS" >&5
 
-	found=no
+	echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+                found=no
 elif test $pkg_failed = untried; then
 	found=no
 else
@@ -23687,7 +23716,7 @@ fi
 	if test $evolution = no; then
 
 
-evolution_branch=2.4
+evolution_branch=2.6
 evolution_plugin_min_version=
 
 
@@ -23749,7 +23778,9 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EVOLUTION_PLUGIN_PKG_ERRORS" >&5
 
-	found=no
+	echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+                found=no
 elif test $pkg_failed = untried; then
 	found=no
 else
@@ -23786,7 +23817,7 @@ fi
 	if test $evolution = no; then
 
 
-evolution_branch=2.2
+evolution_branch=2.4
 evolution_plugin_min_version=
 
 
@@ -23848,7 +23879,9 @@ fi
 	# Put the nasty error message in config.log where it belongs
 	echo "$EVOLUTION_PLUGIN_PKG_ERRORS" >&5
 
-	found=no
+	echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+                found=no
 elif test $pkg_failed = untried; then
 	found=no
 else
@@ -23881,157 +23914,6 @@ else
 fi
 
 
-		if test $evolution = yes; then
-
-# Check whether --with-evolution-source-dir or --without-evolution-source-dir was given.
-if test "${with_evolution_source_dir+set}" = set; then
-  withval="$with_evolution_source_dir"
-  evolution_source_dir="$withval"
-else
-  evolution_source_dir=""
-fi;
-
-found=no
-
-echo "$as_me:$LINENO: checking for the Evolution source tree directory" >&5
-echo $ECHO_N "checking for the Evolution source tree directory... $ECHO_C" >&6
-if test -z "$evolution_source_dir"; then
-	echo "$as_me:$LINENO: result: not given, use --with-evolution-source-dir=DIR" >&5
-echo "${ECHO_T}not given, use --with-evolution-source-dir=DIR" >&6
-else
-	echo "$as_me:$LINENO: result: $evolution_source_dir" >&5
-echo "${ECHO_T}$evolution_source_dir" >&6
-	if test "x$evolution_source_dir" != "xno"; then
-		found=yes
-
-if test $found = yes; then
-	as_ac_File=`echo "ac_cv_file_$evolution_source_dir/mail/em-event.h" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $evolution_source_dir/mail/em-event.h" >&5
-echo $ECHO_N "checking for $evolution_source_dir/mail/em-event.h... $ECHO_C" >&6
-if eval "test \"\${$as_ac_File+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  test "$cross_compiling" = yes &&
-  { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-   { (exit 1); exit 1; }; }
-if test -r "$evolution_source_dir/mail/em-event.h"; then
-  eval "$as_ac_File=yes"
-else
-  eval "$as_ac_File=no"
-fi
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6
-if test `eval echo '${'$as_ac_File'}'` = yes; then
-  found=yes
-else
-  found=no
-fi
-
-fi
-
-if test $found = yes; then
-	as_ac_File=`echo "ac_cv_file_$evolution_source_dir/mail/em-folder-tree.h" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $evolution_source_dir/mail/em-folder-tree.h" >&5
-echo $ECHO_N "checking for $evolution_source_dir/mail/em-folder-tree.h... $ECHO_C" >&6
-if eval "test \"\${$as_ac_File+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  test "$cross_compiling" = yes &&
-  { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-   { (exit 1); exit 1; }; }
-if test -r "$evolution_source_dir/mail/em-folder-tree.h"; then
-  eval "$as_ac_File=yes"
-else
-  eval "$as_ac_File=no"
-fi
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6
-if test `eval echo '${'$as_ac_File'}'` = yes; then
-  found=yes
-else
-  found=no
-fi
-
-fi
-
-if test $found = yes; then
-	as_ac_File=`echo "ac_cv_file_$evolution_source_dir/mail/mail-component.h" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $evolution_source_dir/mail/mail-component.h" >&5
-echo $ECHO_N "checking for $evolution_source_dir/mail/mail-component.h... $ECHO_C" >&6
-if eval "test \"\${$as_ac_File+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  test "$cross_compiling" = yes &&
-  { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-   { (exit 1); exit 1; }; }
-if test -r "$evolution_source_dir/mail/mail-component.h"; then
-  eval "$as_ac_File=yes"
-else
-  eval "$as_ac_File=no"
-fi
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6
-if test `eval echo '${'$as_ac_File'}'` = yes; then
-  found=yes
-else
-  found=no
-fi
-
-fi
-
-if test $found = yes; then
-	as_ac_File=`echo "ac_cv_file_$evolution_source_dir/mail/mail-tools.h" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $evolution_source_dir/mail/mail-tools.h" >&5
-echo $ECHO_N "checking for $evolution_source_dir/mail/mail-tools.h... $ECHO_C" >&6
-if eval "test \"\${$as_ac_File+set}\" = set"; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  test "$cross_compiling" = yes &&
-  { { echo "$as_me:$LINENO: error: cannot check for file existence when cross compiling" >&5
-echo "$as_me: error: cannot check for file existence when cross compiling" >&2;}
-   { (exit 1); exit 1; }; }
-if test -r "$evolution_source_dir/mail/mail-tools.h"; then
-  eval "$as_ac_File=yes"
-else
-  eval "$as_ac_File=no"
-fi
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_File'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_File'}'`" >&6
-if test `eval echo '${'$as_ac_File'}'` = yes; then
-  found=yes
-else
-  found=no
-fi
-
-fi
-
-	fi
-fi
-
-if test $found = yes; then
-	:
-else
-	evolution_source_dir=""
-	evolution=no
-fi
-
-
-		fi
-		if test $evolution = yes; then
-			EVOLUTION_PLUGIN_CFLAGS="$EVOLUTION_PLUGIN_CFLAGS -I$evolution_source_dir"
-
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_EVOLUTION_2_2 1
-_ACEOF
-
-		fi
 	fi
 	if test $evolution = no; then
 		{ echo "$as_me:$LINENO: Evolution not found: forcing --disable-evolution" >&5
@@ -24055,6 +23937,26 @@ fi
 
 
 
+if test $enable_mozilla = yes; then
+  WITH_MOZILLA_TRUE=
+  WITH_MOZILLA_FALSE='#'
+else
+  WITH_MOZILLA_TRUE='#'
+  WITH_MOZILLA_FALSE=
+fi
+
+
+
+if test $enable_mbox = yes || test $enable_mozilla = yes; then
+  WITH_MBOX_OR_MOZILLA_TRUE=
+  WITH_MBOX_OR_MOZILLA_FALSE='#'
+else
+  WITH_MBOX_OR_MOZILLA_TRUE='#'
+  WITH_MBOX_OR_MOZILLA_FALSE=
+fi
+
+
+
 if test $enable_mh = yes; then
   WITH_MH_TRUE=
   WITH_MH_FALSE='#'
@@ -24115,22 +24017,22 @@ fi
 
 
 
-if test $enable_mbox = yes || test $enable_mh = yes || test $enable_maildir = yes || test $enable_sylpheed = yes; then
-  WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE=
-  WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE='#'
+if test $enable_mbox = yes || test $enable_mozilla = yes || test $enable_mh = yes || test $enable_maildir = yes || test $enable_sylpheed = yes; then
+  WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE=
+  WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE='#'
 else
-  WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE='#'
-  WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE=
+  WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE='#'
+  WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE=
 fi
 
 
 
-if test $enable_mbox = yes || test $enable_mh = yes || test $enable_maildir = yes || test $enable_sylpheed = yes || test $enable_evolution = yes; then
-  WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE=
-  WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE='#'
+if test $enable_mbox = yes || test $enable_mozilla = yes || test $enable_mh = yes || test $enable_maildir = yes || test $enable_sylpheed = yes || test $enable_evolution = yes; then
+  WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE=
+  WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE='#'
 else
-  WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE='#'
-  WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE=
+  WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE='#'
+  WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE=
 fi
 
 
@@ -24266,6 +24168,12 @@ cat >>confdefs.h <<_ACEOF
 #define WITH_EVOLUTION $_value
 _ACEOF
 
+if test $enable_mozilla = yes; then _value=1; else _value=0; fi
+
+cat >>confdefs.h <<_ACEOF
+#define WITH_MOZILLA $_value
+_ACEOF
+
 if test $enable_sylpheed = yes; then _value=1; else _value=0; fi
 
 cat >>confdefs.h <<_ACEOF
@@ -24434,6 +24342,20 @@ echo "$as_me: error: conditional \"WITH_MBOX\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${WITH_MOZILLA_TRUE}" && test -z "${WITH_MOZILLA_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_MOZILLA\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_MOZILLA\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${WITH_MBOX_OR_MOZILLA_TRUE}" && test -z "${WITH_MBOX_OR_MOZILLA_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_MBOX_OR_MOZILLA\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_MBOX_OR_MOZILLA\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 if test -z "${WITH_MH_TRUE}" && test -z "${WITH_MH_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"WITH_MH\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -24476,17 +24398,17 @@ echo "$as_me: error: conditional \"WITH_POP3_OR_IMAP_OR_GMAIL\" was never define
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE}" && test -z "${WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED\" was never defined.
+if test -z "${WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE}" && test -z "${WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED\" was never defined.
+echo "$as_me: error: conditional \"WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
-if test -z "${WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE}" && test -z "${WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE}"; then
-  { { echo "$as_me:$LINENO: error: conditional \"WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION\" was never defined.
+if test -z "${WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE}" && test -z "${WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION\" was never defined.
+echo "$as_me: error: conditional \"WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
@@ -24810,7 +24732,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by Mail Notification $as_me 3.0, which was
+This file was extended by Mail Notification $as_me 4.0-rc1, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -24873,7 +24795,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-Mail Notification config.status 3.0
+Mail Notification config.status 4.0-rc1
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -25206,6 +25128,7 @@ s,@INTLTOOL_ICONV@,$INTLTOOL_ICONV,;t t
 s,@INTLTOOL_MSGFMT@,$INTLTOOL_MSGFMT,;t t
 s,@INTLTOOL_MSGMERGE@,$INTLTOOL_MSGMERGE,;t t
 s,@INTLTOOL_XGETTEXT@,$INTLTOOL_XGETTEXT,;t t
+s,@ALL_LINGUAS@,$ALL_LINGUAS,;t t
 s,@PKG_CONFIG@,$PKG_CONFIG,;t t
 s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t
 s,@GTK_LIBS@,$GTK_LIBS,;t t
@@ -25232,9 +25155,12 @@ s,@SASL_LIBS@,$SASL_LIBS,;t t
 s,@EVOLUTION_PLUGIN_CFLAGS@,$EVOLUTION_PLUGIN_CFLAGS,;t t
 s,@EVOLUTION_PLUGIN_LIBS@,$EVOLUTION_PLUGIN_LIBS,;t t
 s,@evolution_plugindir@,$evolution_plugindir,;t t
-s,@evolution_source_dir@,$evolution_source_dir,;t t
 s,@WITH_MBOX_TRUE@,$WITH_MBOX_TRUE,;t t
 s,@WITH_MBOX_FALSE@,$WITH_MBOX_FALSE,;t t
+s,@WITH_MOZILLA_TRUE@,$WITH_MOZILLA_TRUE,;t t
+s,@WITH_MOZILLA_FALSE@,$WITH_MOZILLA_FALSE,;t t
+s,@WITH_MBOX_OR_MOZILLA_TRUE@,$WITH_MBOX_OR_MOZILLA_TRUE,;t t
+s,@WITH_MBOX_OR_MOZILLA_FALSE@,$WITH_MBOX_OR_MOZILLA_FALSE,;t t
 s,@WITH_MH_TRUE@,$WITH_MH_TRUE,;t t
 s,@WITH_MH_FALSE@,$WITH_MH_FALSE,;t t
 s,@WITH_MAILDIR_TRUE@,$WITH_MAILDIR_TRUE,;t t
@@ -25247,10 +25173,10 @@ s,@WITH_POP3_OR_IMAP_TRUE@,$WITH_POP3_OR_IMAP_TRUE,;t t
 s,@WITH_POP3_OR_IMAP_FALSE@,$WITH_POP3_OR_IMAP_FALSE,;t t
 s,@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@,$WITH_POP3_OR_IMAP_OR_GMAIL_TRUE,;t t
 s,@WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@,$WITH_POP3_OR_IMAP_OR_GMAIL_FALSE,;t t
-s,@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@,$WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE,;t t
-s,@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@,$WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE,;t t
-s,@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@,$WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE,;t t
-s,@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@,$WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE,;t t
+s,@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@,$WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE,;t t
+s,@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@,$WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE,;t t
+s,@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@,$WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE,;t t
+s,@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@,$WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE,;t t
 s,@WITH_SSL_TRUE@,$WITH_SSL_TRUE,;t t
 s,@WITH_SSL_FALSE@,$WITH_SSL_FALSE,;t t
 s,@WITH_SASL_TRUE@,$WITH_SASL_TRUE,;t t
@@ -26055,6 +25981,7 @@ Mailbox backends
   --enable-imap                $enable_imap $disable_imap_reason
   --enable-gmail               $enable_gmail $disable_gmail_reason
   --enable-evolution           $enable_evolution $disable_evolution_reason
+  --enable-mozilla             $enable_mozilla $disable_mozilla_reason
   --enable-sylpheed            $enable_sylpheed $disable_sylpheed_reason
   --enable-sylpheed-locking    $enable_sylpheed_locking $disable_sylpheed_locking_reason
 
diff --git a/configure.ac b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([Mail Notification], 3.0, jylefort@brutele.be)
+AC_INIT([Mail Notification], 4.0-rc1, jylefort@brutele.be)
 AC_CONFIG_SRCDIR(src/mn-main.c)
 
 AC_PREREQ(2.59)
@@ -18,11 +18,12 @@ MN_ARG_ENABLE(sasl, [disable SASL authentication support])
 MN_ARG_ENABLE(ipv6, [disable IPv6 support])
 MN_ARG_ENABLE(gmail, [disable Gmail support])
 MN_ARG_ENABLE(evolution, [disable Evolution support])
+MN_ARG_ENABLE(mozilla, [disable Mozilla products support])
 MN_ARG_ENABLE(sylpheed, [disable Sylpheed support])
 MN_ARG_ENABLE(sylpheed-locking, [enable .sylpheed_mark locking], no)
 
 MN_ARG_COMPILE_WARNINGS
-MN_ARG_DEBUG
+MN_ARG_DEBUG(yes)
 MN_ARG_ENABLE(regression-tests, [build and run regression tests], no)
 
 ### initialization
@@ -41,7 +42,7 @@ GETTEXT_PACKAGE=mail-notification
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Define to the gettext package name])
 AC_SUBST(GETTEXT_PACKAGE)
 
-ALL_LINGUAS="bg cs de fr ja nl pl pt pt_BR ru sr sr@Latn sv"
+ALL_LINGUAS="bg ca cs de fr ja nl pl pt pt_BR ru sr sr@Latn sv"
 AM_GLIB_GNU_GETTEXT
 
 AC_PROG_INTLTOOL
@@ -69,7 +70,7 @@ AC_STRUCT_TM
 
 AM_PATH_GTK_2_0(2.6.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 libxml-2.0],, [AC_MSG_ERROR([unable to find the GNOME libraries])])
+PKG_CHECK_MODULES(GNOME, [gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 >= 2.8.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0 libxml-2.0 libnotify],, [AC_MSG_ERROR([unable to find the GNOME libraries])])
 AM_GCONF_SOURCE_2
 
 AM_PATH_GNOME_PREFIX
@@ -96,6 +97,7 @@ if MN_FEATURE_ENABLED(mbox) ||
    MN_FEATURE_ENABLED(maildir) ||
    MN_FEATURE_ENABLED(pop3) ||
    MN_FEATURE_ENABLED(imap) ||
+   MN_FEATURE_ENABLED(mozilla) ||
    MN_FEATURE_ENABLED(sylpheed); then
 	PKG_CHECK_MODULES(GMIME, [gmime-2.0 >= 2.1.0], [MN_FEATURE_VAR_NAME(mime)=yes], [:])
 	if MN_FEATURE_DISABLED(mime); then
@@ -114,6 +116,9 @@ if MN_FEATURE_ENABLED(mbox) ||
 		if MN_FEATURE_ENABLED(imap); then
 			MN_FEATURE_DISABLE(imap, [GMime not found])
 		fi
+		if MN_FEATURE_ENABLED(mozilla); then
+			MN_FEATURE_DISABLE(mozilla, [GMime not found])
+		fi
 		if MN_FEATURE_ENABLED(sylpheed); then
 			MN_FEATURE_DISABLE(sylpheed, [GMime not found])
 		fi
@@ -145,22 +150,15 @@ fi
 
 if MN_FEATURE_ENABLED(evolution); then
 	evolution=no
-	AM_PATH_EVOLUTION_PLUGIN(2.8,, [evolution=yes])
+	AM_PATH_EVOLUTION_PLUGIN(2.10,, [evolution=yes])
 	if test $evolution = no; then
-		AM_PATH_EVOLUTION_PLUGIN(2.6,, [evolution=yes])
+		AM_PATH_EVOLUTION_PLUGIN(2.8,, [evolution=yes])
 	fi
 	if test $evolution = no; then
-		AM_PATH_EVOLUTION_PLUGIN(2.4,, [evolution=yes])
+		AM_PATH_EVOLUTION_PLUGIN(2.6,, [evolution=yes])
 	fi
 	if test $evolution = no; then
-		AM_PATH_EVOLUTION_PLUGIN(2.2,, [evolution=yes])
-		if test $evolution = yes; then
-			AM_PATH_EVOLUTION_SOURCEDIR([mail/em-event.h, mail/em-folder-tree.h, mail/mail-component.h, mail/mail-tools.h],, [evolution=no])
-		fi
-		if test $evolution = yes; then
-			EVOLUTION_PLUGIN_CFLAGS="$EVOLUTION_PLUGIN_CFLAGS -I$evolution_source_dir"
-			AC_DEFINE(HAVE_EVOLUTION_2_2, 1, [Define to 1 if the Evolution branch is 2.2])
-		fi
+		AM_PATH_EVOLUTION_PLUGIN(2.4,, [evolution=yes])
 	fi
 	if test $evolution = no; then
 		MN_FEATURE_DISABLE(evolution, [Evolution not found])
@@ -170,14 +168,16 @@ fi
 ### Automake conditionals
 
 AM_CONDITIONAL(WITH_MBOX, [MN_FEATURE_ENABLED(mbox)])
+AM_CONDITIONAL(WITH_MOZILLA, [MN_FEATURE_ENABLED(mozilla)])
+AM_CONDITIONAL(WITH_MBOX_OR_MOZILLA, [MN_FEATURE_ENABLED(mbox) || MN_FEATURE_ENABLED(mozilla)])
 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_POP3_OR_IMAP_OR_GMAIL, [MN_FEATURE_ENABLED(pop3) || MN_FEATURE_ENABLED(imap) || MN_FEATURE_ENABLED(gmail)])
-AM_CONDITIONAL(WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED, [MN_FEATURE_ENABLED(mbox) || MN_FEATURE_ENABLED(mh) || MN_FEATURE_ENABLED(maildir) || MN_FEATURE_ENABLED(sylpheed)])
-AM_CONDITIONAL(WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION, [MN_FEATURE_ENABLED(mbox) || MN_FEATURE_ENABLED(mh) || MN_FEATURE_ENABLED(maildir) || MN_FEATURE_ENABLED(sylpheed) || MN_FEATURE_ENABLED(evolution)])
+AM_CONDITIONAL(WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED, [MN_FEATURE_ENABLED(mbox) || MN_FEATURE_ENABLED(mozilla) || MN_FEATURE_ENABLED(mh) || MN_FEATURE_ENABLED(maildir) || MN_FEATURE_ENABLED(sylpheed)])
+AM_CONDITIONAL(WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION, [MN_FEATURE_ENABLED(mbox) || MN_FEATURE_ENABLED(mozilla) || MN_FEATURE_ENABLED(mh) || MN_FEATURE_ENABLED(maildir) || MN_FEATURE_ENABLED(sylpheed) || MN_FEATURE_ENABLED(evolution)])
 AM_CONDITIONAL(WITH_SSL, [MN_FEATURE_ENABLED(ssl)])
 AM_CONDITIONAL(WITH_SASL, [MN_FEATURE_ENABLED(sasl)])
 AM_CONDITIONAL(WITH_GMAIL, [MN_FEATURE_ENABLED(gmail)])
@@ -188,7 +188,7 @@ AM_CONDITIONAL(WITH_REGRESSION_TESTS, [MN_FEATURE_ENABLED(regression-tests)])
 
 ### config.h definitions
 
-MN_FEATURES_DEFINE([mbox, mh, maildir, pop3, imap, ssl, sasl, ipv6, gmail, evolution, sylpheed, sylpheed-locking, mime])
+MN_FEATURES_DEFINE([mbox, mh, maildir, pop3, imap, ssl, sasl, ipv6, gmail, evolution, mozilla, sylpheed, sylpheed-locking, mime])
 
 ### output
 
@@ -216,7 +216,7 @@ MN_REPORT_ARGS([prefix, exec-prefix])
 Installation directories
 MN_REPORT_ARGS([bindir, datadir, sysconfdir, libdir])
 Mailbox backends
-MN_REPORT_FEATURES([mbox, mh, maildir, pop3, imap, gmail, evolution, sylpheed, sylpheed-locking])
+MN_REPORT_FEATURES([mbox, mh, maildir, pop3, imap, gmail, evolution, mozilla, sylpheed, sylpheed-locking])
 POP3 and IMAP features
 MN_REPORT_FEATURES([ssl, sasl, ipv6])
 EOF
diff --git a/data/Makefile.am b/data/Makefile.am
@@ -35,7 +35,7 @@ EXTRA_DIST = \
 	GNOME_MailNotification_Evolution.server.in	\
 	mail-notification-properties.desktop.in		\
 	mail-notification.desktop.in			\
-	mail-notification.schemas.in
+	mail-notification.schemas.in.in
 
 CLEANFILES = \
 	$(evolution_server)			\
@@ -43,7 +43,11 @@ CLEANFILES = \
 	GNOME_MailNotification.server.in	\
 	mail-notification-properties.desktop	\
 	mail-notification.desktop		\
-	mail-notification.schemas
+	mail-notification.schemas		\
+	mail-notification.schemas.in
 
 GNOME_MailNotification.server.in: GNOME_MailNotification.server.in.in
 	sed -e 's|\@bindir\@|$(bindir)|' GNOME_MailNotification.server.in.in > GNOME_MailNotification.server.in
+
+mail-notification.schemas.in: mail-notification.schemas.in.in
+	sed -e 's|\@gnome_prefix\@|$(gnome_prefix)|' mail-notification.schemas.in.in > mail-notification.schemas.in
diff --git a/data/Makefile.in b/data/Makefile.in
@@ -70,6 +70,7 @@ DATA = $(autostart_DATA) $(gnome_capplet_DATA) $(schemas_DATA) \
 	$(server_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AML = @AML@
@@ -199,15 +200,19 @@ WITH_IMAP_TRUE = @WITH_IMAP_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_FALSE = @WITH_MBOX_OR_MOZILLA_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_TRUE = @WITH_MBOX_OR_MOZILLA_TRUE@
 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_MOZILLA_FALSE = @WITH_MOZILLA_FALSE@
+WITH_MOZILLA_TRUE = @WITH_MOZILLA_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
@@ -248,7 +253,6 @@ build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
 evolution_plugindir = @evolution_plugindir@
-evolution_source_dir = @evolution_source_dir@
 exec_prefix = @exec_prefix@
 gnome_cappletdir = @gnome_cappletdir@
 gnome_prefix = @gnome_prefix@
@@ -296,7 +300,7 @@ EXTRA_DIST = \
 	GNOME_MailNotification_Evolution.server.in	\
 	mail-notification-properties.desktop.in		\
 	mail-notification.desktop.in			\
-	mail-notification.schemas.in
+	mail-notification.schemas.in.in
 
 CLEANFILES = \
 	$(evolution_server)			\
@@ -304,7 +308,8 @@ CLEANFILES = \
 	GNOME_MailNotification.server.in	\
 	mail-notification-properties.desktop	\
 	mail-notification.desktop		\
-	mail-notification.schemas
+	mail-notification.schemas		\
+	mail-notification.schemas.in
 
 all: all-am
 
@@ -558,6 +563,9 @@ uninstall-am: uninstall-autostartDATA uninstall-gnome_cappletDATA \
 
 GNOME_MailNotification.server.in: GNOME_MailNotification.server.in.in
 	sed -e 's|\@bindir\@|$(bindir)|' GNOME_MailNotification.server.in.in > GNOME_MailNotification.server.in
+
+mail-notification.schemas.in: mail-notification.schemas.in.in
+	sed -e 's|\@gnome_prefix\@|$(gnome_prefix)|' mail-notification.schemas.in.in > mail-notification.schemas.in
 # 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/data/mail-notification-properties.desktop.in b/data/mail-notification-properties.desktop.in
@@ -1,7 +1,7 @@
 [Desktop Entry]
 Encoding=UTF-8
 _Name=Mail Notification
-Icon=mail-notification.png
+Icon=mail-notification
 _Comment=Configure Mail Notification
 Type=Application
 Categories=GNOME;Application;Settings;
diff --git a/data/mail-notification.desktop.in b/data/mail-notification.desktop.in
@@ -1,7 +1,7 @@
 [Desktop Entry]
 Encoding=UTF-8
 _Name=Mail Notification
-Icon=mail-notification.png
+Icon=mail-notification
 _Comment=Get notified when new mail arrives
 Type=Application
 Categories=GNOME;Application;Network;
diff --git a/data/mail-notification.schemas.in b/data/mail-notification.schemas.in
@@ -1,266 +0,0 @@
-<gconfschemafile>
-  <schemalist>
-    <schema>
-      <key>/schemas/apps/mail-notification/commands/new-mail/enabled</key>
-      <applyto>/apps/mail-notification/commands/new-mail/enabled</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-        <short>Run a command when new mail arrives</short>
-	<long>Whether to run a command when new mail arrives or not.</long>
-      </locale>
-    </schema> 
-    <schema>
-      <key>/schemas/apps/mail-notification/commands/new-mail/command</key>
-      <applyto>/apps/mail-notification/commands/new-mail/command</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <locale name="C">
-        <short>New mail command</short>
-	<long>The command to run when new mail arrives.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/commands/mail-read/enabled</key>
-      <applyto>/apps/mail-notification/commands/mail-read/enabled</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-        <short>Run a command when all mail is read</short>
-	<long>Whether to run a command when all mail is read or not.</long>
-      </locale>
-    </schema> 
-    <schema>
-      <key>/schemas/apps/mail-notification/commands/mail-read/command</key>
-      <applyto>/apps/mail-notification/commands/mail-read/command</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <locale name="C">
-        <short>Mail read command</short>
-	<long>The command to run when all mail is read.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/ui/properties-dialog/height</key>
-      <applyto>/apps/mail-notification/ui/properties-dialog/height</applyto>
-      <owner>mail-notification</owner>
-      <type>int</type>
-      <default>-1</default>
-      <locale name="C">
-        <short>Height of properties dialog</short>
-        <long>The height of the properties dialog in pixels.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/ui/properties-dialog/width</key>
-      <applyto>/apps/mail-notification/ui/properties-dialog/width</applyto>
-      <owner>mail-notification</owner>
-      <type>int</type>
-      <default>-1</default>
-      <locale name="C">
-        <short>Width of properties dialog</short>
-        <long>The width of the properties dialog in pixels.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/blink-on-errors</key>
-      <applyto>/apps/mail-notification/blink-on-errors</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>1</default>
-      <locale name="C">
-        <short>Blink on errors</short>
-	<long>Whether the status icon should blink on errors or not.</long>
-      </locale>
-    </schema> 
-    <schema>
-      <key>/schemas/apps/mail-notification/trusted-x509-certificates</key>
-      <applyto>/apps/mail-notification/trusted-x509-certificates</applyto>
-      <owner>mail-notification</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <locale name="C">
-        <short>Fingerprints of trusted X509 certificates</short>
-	<long>The list of trusted X509 certificates, represented by their MD5 fingerprint.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/trusted-servers</key>
-      <applyto>/apps/mail-notification/trusted-servers</applyto>
-      <owner>mail-notification</owner>
-      <type>list</type>
-      <list_type>string</list_type>
-      <locale name="C">
-        <short>Trusted servers list</short>
-	<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>
-    <schema>
-      <key>/schemas/apps/mail-notification/mail-summary-popup/only-recent</key>
-      <applyto>/apps/mail-notification/mail-summary-popup/only-recent</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-        <short>Only display recent mail in mail summary popup</short>
-	<long>Whether to hide previously displayed mail in the mail summary popup or not.</long>
-      </locale>
-    </schema> 
-    <schema>
-      <key>/schemas/apps/mail-notification/mail-summary-popup/fonts/aspect-source</key>
-      <applyto>/apps/mail-notification/mail-summary-popup/fonts/aspect-source</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <default>theme</default>
-      <locale name="C">
-        <short>Mail summary popup fonts aspect source</short>
-	<long>The aspect source of the mail summary popup fonts. Must be "theme" or "custom".</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/mail-summary-popup/fonts/title/font</key>
-      <applyto>/apps/mail-notification/mail-summary-popup/fonts/title/font</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <default>Sans 10</default>
-      <locale name="C">
-        <short>Mail summary popup title font</short>
-	<long>The custom font to use for the title of the mail summary popup.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/mail-summary-popup/fonts/contents/font</key>
-      <applyto>/apps/mail-notification/mail-summary-popup/fonts/contents/font</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <default>Sans 10</default>
-      <locale name="C">
-        <short>Mail summary popup contents font</short>
-	<long>The custom font to use for the contents of the mail summary popup.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/display-seen-mail</key>
-      <applyto>/apps/mail-notification/display-seen-mail</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>1</default>
-      <locale name="C">
-        <short>Display seen mail</short>
-	<long>Whether to display seen mail or not.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/tooltip-mail-summary</key>
-      <applyto>/apps/mail-notification/tooltip-mail-summary</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <default>standard</default>
-      <locale name="C">
-        <short>Tooltip mail summary</short>
-	<long>The type of mail summary to display in the icon's tooltip. Must be "standard", "compact" or "none".</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/always-display-icon</key>
-      <applyto>/apps/mail-notification/always-display-icon</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-        <short>Always display an icon</short>
-	<long>Whether to display an icon when there is no new mail or not.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/click-action</key>
-      <applyto>/apps/mail-notification/click-action</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <default>display-properties-dialog</default>
-      <locale name="C">
-        <short>Click action</short>
-	<long>The action to perform when the icon is clicked. Must be "display-properties-dialog", "launch-mail-reader" or "update-mail-status".</long>
-      </locale>
-    </schema>
-  </schemalist>
-</gconfschemafile>
diff --git a/data/mail-notification.schemas.in.in b/data/mail-notification.schemas.in.in
@@ -0,0 +1,222 @@
+<gconfschemafile>
+  <schemalist>
+    <schema>
+      <key>/schemas/apps/mail-notification/commands/new-mail/enabled</key>
+      <applyto>/apps/mail-notification/commands/new-mail/enabled</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Run a command when new mail arrives</short>
+	<long>Whether to run a command when new mail arrives or not.</long>
+      </locale>
+    </schema> 
+    <schema>
+      <key>/schemas/apps/mail-notification/commands/new-mail/command</key>
+      <applyto>/apps/mail-notification/commands/new-mail/command</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <default>play @gnome_prefix@/share/gnome/sounds/email.wav</default>
+      <locale name="C">
+        <short>New mail command</short>
+	<long>The command to run when new mail arrives.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/commands/mail-read/enabled</key>
+      <applyto>/apps/mail-notification/commands/mail-read/enabled</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Run a command when all mail is read</short>
+	<long>Whether to run a command when all mail is read or not.</long>
+      </locale>
+    </schema> 
+    <schema>
+      <key>/schemas/apps/mail-notification/commands/mail-read/command</key>
+      <applyto>/apps/mail-notification/commands/mail-read/command</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <locale name="C">
+        <short>Mail read command</short>
+	<long>The command to run when all mail is read.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/commands/mail-changed/enabled</key>
+      <applyto>/apps/mail-notification/commands/mail-changed/enabled</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Run a command when the message list changes</short>
+	<long>Whether to run a command when the message list changes or not.</long>
+      </locale>
+    </schema> 
+    <schema>
+      <key>/schemas/apps/mail-notification/commands/mail-changed/command</key>
+      <applyto>/apps/mail-notification/commands/mail-changed/command</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <locale name="C">
+        <short>Mail changed command</short>
+	<long>The command to run when the message list changes.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/ui/properties-dialog/height</key>
+      <applyto>/apps/mail-notification/ui/properties-dialog/height</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>-1</default>
+      <locale name="C">
+        <short>Height of properties dialog</short>
+        <long>The height of the properties dialog in pixels.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/ui/properties-dialog/width</key>
+      <applyto>/apps/mail-notification/ui/properties-dialog/width</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>-1</default>
+      <locale name="C">
+        <short>Width of properties dialog</short>
+        <long>The width of the properties dialog in pixels.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/blink-on-errors</key>
+      <applyto>/apps/mail-notification/blink-on-errors</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>1</default>
+      <locale name="C">
+        <short>Blink on errors</short>
+	<long>Whether the status icon should blink on errors or not.</long>
+      </locale>
+    </schema> 
+    <schema>
+      <key>/schemas/apps/mail-notification/trusted-x509-certificates</key>
+      <applyto>/apps/mail-notification/trusted-x509-certificates</applyto>
+      <owner>mail-notification</owner>
+      <type>list</type>
+      <list_type>string</list_type>
+      <locale name="C">
+        <short>Fingerprints of trusted X509 certificates</short>
+	<long>The list of trusted X509 certificates, represented by their MD5 fingerprint.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/trusted-servers</key>
+      <applyto>/apps/mail-notification/trusted-servers</applyto>
+      <owner>mail-notification</owner>
+      <type>list</type>
+      <list_type>string</list_type>
+      <locale name="C">
+        <short>Trusted servers list</short>
+	<long>The list of trusted SSL/TLS servers (hostname:port) lacking a X509 certificate.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/display-seen-mail</key>
+      <applyto>/apps/mail-notification/display-seen-mail</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>1</default>
+      <locale name="C">
+        <short>Display seen mail</short>
+	<long>Whether to display seen mail or not.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/tooltip-mail-summary</key>
+      <applyto>/apps/mail-notification/tooltip-mail-summary</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <default>standard</default>
+      <locale name="C">
+        <short>Tooltip mail summary</short>
+	<long>The type of mail summary to display in the icon's tooltip. Must be "standard", "compact" or "none".</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/always-display-icon</key>
+      <applyto>/apps/mail-notification/always-display-icon</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Always display an icon</short>
+	<long>Whether to display an icon when there is no new mail or not.</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/click-action-2</key>
+      <applyto>/apps/mail-notification/click-action-2</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <default>display-properties-dialog</default>
+      <locale name="C">
+        <short>Click action</short>
+	<long>The action to perform when the icon is clicked. Must be "display-properties-dialog", "launch-mail-reader", "open-latest-message" or "update-mail-status".</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/popups/enabled</key>
+      <applyto>/apps/mail-notification/popups/enabled</applyto>
+      <owner>mail-notification</owner>
+      <type>bool</type>
+      <default>1</default>
+      <locale name="C">
+        <short>Enable message popups</short>
+	<long>Whether to enable message popups or not.</long>
+      </locale>
+    </schema> 
+    <schema>
+      <key>/schemas/apps/mail-notification/popups/position</key>
+      <applyto>/apps/mail-notification/popups/position</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <default>attached</default>
+      <locale name="C">
+        <short>Message popups position</short>
+	<long>The position of the message popups. Must be "attached" or "free".</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/popups/expiration/enabled</key>
+      <applyto>/apps/mail-notification/popups/expiration/enabled</applyto>
+      <owner>mail-notification</owner>
+      <type>string</type>
+      <default>default</default>
+      <locale name="C">
+        <short>Expire message popups</short>
+	<long>Whether to expire message popups or not. Must be "default", "false" or "true".</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/popups/expiration/delay/minutes</key>
+      <applyto>/apps/mail-notification/popups/expiration/delay/minutes</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>0</default>
+      <locale name="C">
+        <short>Minutes to wait before expiring message popups</short>
+        <long>If /apps/mail-notification/popups/expiration/enabled is set to "true", the amount of time to wait before expiring message popups (minutes part).</long>
+      </locale>
+    </schema>
+    <schema>
+      <key>/schemas/apps/mail-notification/popups/expiration/delay/seconds</key>
+      <applyto>/apps/mail-notification/popups/expiration/delay/seconds</applyto>
+      <owner>mail-notification</owner>
+      <type>int</type>
+      <default>10</default>
+      <locale name="C">
+        <short>Seconds to wait before expiring message popups</short>
+        <long>If /apps/mail-notification/popups/expiration/enabled is set to "true", the amount of time to wait before expiring message popups (seconds part).</long>
+      </locale>
+    </schema>
+  </schemalist>
+</gconfschemafile>
diff --git a/help/C/Makefile.in b/help/C/Makefile.in
@@ -120,6 +120,7 @@ DIST_SOURCES =
 DATA = $(dist_noinst_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AML = @AML@
@@ -249,15 +250,19 @@ WITH_IMAP_TRUE = @WITH_IMAP_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_FALSE = @WITH_MBOX_OR_MOZILLA_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_TRUE = @WITH_MBOX_OR_MOZILLA_TRUE@
 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_MOZILLA_FALSE = @WITH_MOZILLA_FALSE@
+WITH_MOZILLA_TRUE = @WITH_MOZILLA_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
@@ -298,7 +303,6 @@ build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
 evolution_plugindir = @evolution_plugindir@
-evolution_source_dir = @evolution_source_dir@
 exec_prefix = @exec_prefix@
 gnome_cappletdir = @gnome_cappletdir@
 gnome_prefix = @gnome_prefix@
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>
-      2006-06-14
+      2006-11-27
     </date>
-    <version identifier="2.15" date="2006-06-14" description="Sixteenth release"/>
+    <version identifier="2.16" date="2006-11-27" description="Version 2.16"/>
     <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 "3.0">
-  <!ENTITY manrevision "2.15">
-  <!ENTITY date "Wednesday, June 14, 2006">
+  <!ENTITY appversion "4.0 Release Candidate 1">
+  <!ENTITY manrevision "2.16">
+  <!ENTITY date "Monday, November 27, 2006">
 
   <!ENTITY project "The Mail Notification Project">
 
@@ -21,15 +21,16 @@
   <!ENTITY sasl "<link linkend=&#34;sasl&#34;>SASL</link>">
   <!ENTITY ssl "<link linkend=&#34;pop3&#34;>SSL</link>">
   <!ENTITY tls "<link linkend=&#34;pop3&#34;>TLS</link>">
+  <!ENTITY mozilla "<link linkend=&#34;mozilla&#34;>Mozilla</link>">
   <!ENTITY sylpheed "<link linkend=&#34;sylpheed&#34;>Sylpheed</link>">
   <!ENTITY gmail "<link linkend=&#34;gmail&#34;>Gmail</link>">
   <!ENTITY gnomevfs "<link linkend=&#34;gnomevfs&#34;>GnomeVFS</link>">
 ]>
 
-<!-- $Id: mail-notification.xml,v 1.133 2006/06/14 07:44:48 jylefort Exp $ -->
+<!-- $Id: mail-notification.xml,v 1.148 2006/11/27 20:59:55 jylefort Exp $ -->
 <!-- Mail Notification Manual -->
 
-<!-- Copyright (C) 2004-2006 Jean-Yves Lefort -->
+<!-- Copyright (C) 2003-2006 Jean-Yves Lefort -->
 <!-- All rights reserved. -->
 
 <!-- Redistribution and use in source (SGML DocBook) and 'compiled' -->
@@ -136,6 +137,17 @@
 	</revdescription>
       </revision>
       <revision>
+	<revnumber>Mail Notification Manual V2.15</revnumber>
+	<date>Wednesday, June 14, 2006</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.14</revnumber>
 	<date>Thursday, May 18, 2006</date>
 	<revdescription>
@@ -335,13 +347,13 @@
     </para>
     <itemizedlist>
       <listitem><para>multiple mailbox support</para></listitem>
-      <listitem><para>&mbox;, &mh;, &maildir;, &pop3;, &imap;, &gmail;, Evolution and &sylpheed; support</para></listitem>
+      <listitem><para>&mbox;, &mh;, &maildir;, &pop3;, &imap;, &gmail;, Evolution, &mozilla; products (Mozilla, SeaMonkey, Thunderbird, &hellip;) and &sylpheed; support</para></listitem>
       <listitem><para>&sasl; authentication support</para></listitem>
       <listitem><para>APOP authentication support</para></listitem>
       <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 immediately or within seconds after a mailbox changes)</para></listitem>
-      <listitem><para>a mail summary</para></listitem>
+      <listitem><para>message popups</para></listitem>
       <listitem><para><ulink url="http://developer.gnome.org/projects/gup/hig" type="http">HIG</ulink> 2.0 compliance</para></listitem>
     </itemizedlist>
   </sect1>
@@ -356,7 +368,7 @@
       </para>
       <variablelist>
     	<varlistentry>
-	  <term><guimenu>Desktop</guimenu> menu</term>
+	  <term><guimenu>System</guimenu> menu</term>
 	  <listitem>
 	    <para>Choose
 	      <menuchoice>
@@ -383,12 +395,12 @@
 	    </para>
 	    <variablelist>
 	      <varlistentry>
-		<term>--version</term>
+		<term>-v, --version</term>
 		<listitem><para>Show version information and compiled-in features</para></listitem>
 	      </varlistentry>
 
 	      <varlistentry>
-		<term>--enable-info</term>
+		<term>-i, --enable-info</term>
 		<listitem>
 		  <para>Enable informational output</para>
 		  <warning>
@@ -403,23 +415,23 @@
 	      </varlistentry>
 
 	      <varlistentry>
-		<term>--display-properties</term>
+		<term>-p, --display-properties</term>
 		<listitem><para>Display the properties dialog</para></listitem>
 	      </varlistentry>
 
 	      <varlistentry>
-		<term>--display-about</term>
+		<term>-a, --display-about</term>
 		<listitem><para>Display the about dialog</para></listitem>
 	      </varlistentry>
 
 	      <varlistentry>
-		<term>--close-popup</term>
-		<listitem><para>Close the mail summary popup</para></listitem>
+		<term>-u, --update</term>
+		<listitem><para>Update the mail status</para></listitem>
 	      </varlistentry>
 
 	      <varlistentry>
-		<term>--update</term>
-		<listitem><para>Update the mail status</para></listitem>
+		<term>-s, --print-summary</term>
+		<listitem><para>Print a XML mail summary</para></listitem>
 	      </varlistentry>
 
 	      <varlistentry>
@@ -428,12 +440,12 @@
 	      </varlistentry>
 
 	      <varlistentry>
-		<term>--quit</term>
+		<term>-q, --quit</term>
 		<listitem><para>Quit &app;</para></listitem>
 	      </varlistentry>
 
 	      <varlistentry>
-		<term>--help</term>
+		<term>-?, --help</term>
 		<listitem><para>Show help</para></listitem>
 	      </varlistentry>
 	    </variablelist>
@@ -478,9 +490,9 @@
 	</listitem>
 	<listitem>
 	  <para>
-	    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
+	    if the <link linkend="enable-message-popups">Enable
+	    message popups</link> setting is enabled, information
+	    about each new message is popped up on your desktop
 	  </para>
 	</listitem>
       </itemizedlist>
@@ -501,7 +513,7 @@
     <title>Properties</title> 
     <para>To configure &app;, choose
       <menuchoice>
-	<guimenu>Desktop</guimenu>
+	<guimenu>System</guimenu>
 	<guisubmenu>Preferences</guisubmenu>
 	<guimenuitem>Mail Notification</guimenuitem>
       </menuchoice> (this location may vary across systems).
@@ -518,9 +530,14 @@
 	<para><link linkend="properties-status-icon">Status Icon</link></para>
       </listitem>
       <listitem>
-	<para><link linkend="properties-mail-summary-popup">Mail Summary Popup</link></para>
+	<para><link linkend="properties-message-popups">Message Popups</link></para>
       </listitem>
     </itemizedlist>
+    <para>
+      In addition, at the bottom of the dialog, the <guilabel>Test
+      messages</guilabel> option can be used to test the various
+      options against test messages.
+    </para>
 
     <sect2 id="properties-general">
       <title>General</title>
@@ -540,8 +557,9 @@
 		  <para>
 		    The following mailbox types make a distinction
 		    between seen and unseen mail: &mbox;, &maildir;,
-		    &pop3;, &imap;, Evolution and &sylpheed;. Other
-		    mailbox types consider all unread mail as unseen.
+		    &pop3;, &imap;, Evolution, &mozilla; and
+		    &sylpheed;. Other mailbox types consider all
+		    unread mail as unseen.
 		  </para>
 		</listitem>
 	      </varlistentry>
@@ -698,7 +716,8 @@
 	      You can choose an action to be performed when the mail
 	      icon is clicked:
 	      <guilabel>display this dialog</guilabel>,
-	      <guilabel>launch the mail reader</guilabel> or
+	      <guilabel>launch the mail reader</guilabel>,
+	      <guilabel>open the latest message</guilabel> or
 	      <guilabel>update the mail status</guilabel>.
 	    </para>
 	  </listitem>
@@ -706,46 +725,47 @@
       </variablelist>
     </sect2>
 
-    <sect2 id="properties-mail-summary-popup">
-      <title>Mail Summary Popup</title>
+    <sect2 id="properties-message-popups">
+      <title>Message Popups</title>
       <variablelist>
 	<varlistentry>
 	  <term><guilabel>General</guilabel></term>
 	  <listitem>
 	    <variablelist>
-	      <varlistentry id="enable-mail-summary-popup">
-		<term><guilabel>Enable mail summary popup</guilabel></term>
+	      <varlistentry id="enable-message-popups">
+		<term><guilabel>Enable message popups</guilabel></term>
 		<listitem>
 		  <para>
-		    If this option is enabled, the mail summary popup
-		    will be displayed when new mail arrives.
+		    If this option is enabled, an information window
+		    will be popped up on your desktop whenever a new
+		    message arrives.
 		  </para>
 		</listitem>
 	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><guilabel>Position</guilabel></term>
+	  <listitem>
+	    <para>
+	      The location of the message popups on the screen.
+	    </para>
+	    <variablelist>
 	      <varlistentry>
-		<term><guilabel>Automatically close after</guilabel></term>
+		<term><guilabel>Attached to the status icon</guilabel></term>
 		<listitem>
 		  <para>
-		    If this option is enabled, the mail summary popup
-		    will be automatically closed after a delay has
-		    elapsed.
-		    <note>
-		      <para>
-			The timer is restarted when new mail arrives.
-		      </para>
-		    </note>
+		    Message popups will be placed next to the status icon.
 		  </para>
 		</listitem>
 	      </varlistentry>
 	      <varlistentry>
-		<term><guilabel>Hide previously displayed mail</guilabel></term>
+		<term><guilabel>In the popup stack</guilabel></term>
 		<listitem>
 		  <para>
-		    If this option is enabled, the mail summary popup
-		    will only show new mail once (that is, the next
-		    time the mail summary is popped up, it will only
-		    display mail that was received since it was last
-		    popped up).
+		    Message popups will be stacked together in one
+		    corner of your screen.
 		  </para>
 		</listitem>
 	      </varlistentry>
@@ -753,397 +773,566 @@
 	  </listitem>
 	</varlistentry>
 	<varlistentry>
-	  <term><guilabel>Position</guilabel></term>
+	  <term><guilabel>Expiration</guilabel></term>
+	  <listitem>
+	    <para>
+	      You can choose to have message popups stay on the screen
+	      until you click them, or have them disappear after some
+	      time has elapsed.
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </sect2>
+  </sect1>
+
+  <sect1 id="mailbox-properties">
+    <title>Mailbox Properties</title>
+    <para>
+      The <guilabel>Mailbox Properties</guilabel> dialog is displayed
+      when you add a new mailbox or when you edit an existing one. It
+      may contain the following tabbed sections:
+    </para>
+    <itemizedlist>
+      <listitem>
+	<para><link linkend="mailbox-properties-general">General</link></para>
+      </listitem>
+      <listitem>
+	<para><link linkend="mailbox-properties-connection">Connection</link></para>
+      </listitem>
+    </itemizedlist>
+
+    <sect2 id="mailbox-properties-general">
+      <title>General</title>
+      <variablelist>
+	<varlistentry>
+	  <term><guilabel>General</guilabel></term>
 	  <listitem>
 	    <variablelist>
 	      <varlistentry>
-		<term><guilabel>Position</guilabel></term>
+		<term><guilabel>Mailbox type</guilabel></term>
+		<listitem>
+		  <para>
+		    This is the type of the mailbox. If you select
+		    <guilabel>autodetect</guilabel>, the type will be
+		    autodetected using the mailbox &uri; and/or
+		    contents.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term><guilabel>Mailbox name</guilabel></term>
+		<listitem>
+		  <para>
+		    You can choose to assign a custom name to the
+		    mailbox. The mailbox name has informative purposes
+		    only, and is displayed in various parts of
+		    &app;. To reset to the default name, click on the
+		    <guibutton>Use Default</guibutton> button.
+		  </para>
+		  <note>
+		    <para>
+		      The mailbox name will be modified automatically
+		      as you set some of the other options. To avoid
+		      losing your choice, only fill in the mailbox
+		      name after setting the other options.
+		    </para>
+		  </note>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry id="delay-between-mail-checks">
+		<term><guilabel>Delay between mail checks</guilabel></term>
 		<listitem>
 		  <para>
-		    The location of the mail summary popup on the
-		    screen.
+		    This is the amount of time to wait between mail checks.
+		    <note>
+		      <para>
+			This delay is only used if the mailbox does
+			not support <link
+			linkend="immediate-notification">immediate
+			notification</link> of changes. If this is the
+			case, an <link
+			linkend="poll-emblem">emblem</link> will be
+			displayed in the <link
+			linkend="mailbox-list">mailbox list</link>.
+		      </para>
+		    </note>
 		  </para>
 		</listitem>
 	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+
+	<varlistentry>
+	  <term>
+	    <guilabel>Location</guilabel>
+	    (<guilabel>Autodetect</guilabel> and <guilabel>System
+	      mailbox</guilabel> only)
+	  </term>
+	  <listitem>
+	    <para>
+	      This is the &uri; of the mailbox.
+	    </para>
+	    <note>
+	      <para>
+		&app; abstracts file operations by using &gnomevfs;.
+		All the schemes (http, ftp, sftp, &hellip;) supported by
+		&gnomevfs; are therefore supported by &app;.
+	      </para>
+	    </note>
+	  </listitem>
+	</varlistentry>
+
+	<varlistentry>
+	  <term>
+	    <guilabel>Account</guilabel> (<guilabel>POP3</guilabel>,
+	    <guilabel>IMAP</guilabel> and <guilabel>Gmail</guilabel>
+	    only)
+	  </term>
+	  <listitem>
+	    <variablelist>
 	      <varlistentry>
-		<term><guilabel>Horizontal offset</guilabel></term>
+		<term>
+		  <guilabel>Server</guilabel>
+		  (<guilabel>POP3</guilabel> and
+		  <guilabel>IMAP</guilabel> only)
+		</term>
 		<listitem>
 		  <para>
-		    The number of pixels to leave between the left or
-		    right side of the screen and the mail summary
-		    popup.
+		    This is the hostname or IP address of the &pop3; or
+		    &imap; server.
+		    <note>
+		      <para>
+			Symbolic names as well as IPv4 and IPv6
+			addresses are supported.
+		      </para>
+		    </note>
 		  </para>
 		</listitem>
 	      </varlistentry>
 	      <varlistentry>
-		<term><guilabel>Vertical offset</guilabel></term>
+		<term><guilabel>Username</guilabel></term>
 		<listitem>
 		  <para>
-		    The number of pixels to leave between the top or
-		    bottom side of the screen and the mail summary
-		    popup.
+		    This is your username on the &pop3;, &imap; or
+		    &gmail; server.  The username will be stored to disk
+		    unless it is left blank (in such case, a credentials
+		    prompt will appear when needed).
 		  </para>
 		</listitem>
 	      </varlistentry>
+	      <varlistentry>
+		<term><guilabel>Password</guilabel></term>
+		<listitem>
+		  <para>
+		    This is your password on the &pop3;, &imap; or
+		    &gmail; server.  The password will be stored to disk
+		    unless it is left blank (in such case, a credentials
+		    prompt will appear when needed).
+		  </para>
+		  <warning>
+		    <title>POP3 and IMAP Security</title>
+		    <para>
+		      To avoid sending your password over the network in
+		      clear text, you must either use a SSL/TLS
+		      connection or select a secure authentication
+		      mechanism. See below for more details.
+		    </para>
+		    <!-- simplified on purpose: actually, a weak SSL/TLS -->
+		    <!-- algorithm could be used, but this is beyond the -->
+		    <!-- scope of this document -->
+		  </warning>
+		</listitem>
+	      </varlistentry>
 	    </variablelist>
 	  </listitem>
 	</varlistentry>
+
 	<varlistentry>
-	  <term><guilabel>Layout</guilabel></term>
+	  <term>
+	    <guilabel>IMAP Mailbox</guilabel> (<guilabel>IMAP</guilabel> only)
+	  </term>
 	  <listitem>
 	    <para>
-	      You can choose the layout of the mail summary:
-	      <guilabel>standard</guilabel> or
-	      <guilabel>compact</guilabel>.
+	      This is the &imap; mailbox to use.
 	    </para>
 	  </listitem>
 	</varlistentry>
+
 	<varlistentry>
-	  <term><guilabel>Fonts</guilabel></term>
+	  <term>
+	    <guilabel>Folder</guilabel> (<guilabel>Evolution</guilabel> only)
+	  </term>
 	  <listitem>
 	    <para>
-	      You can choose to override your default theme fonts and
-	      use custom fonts in the mail summary popup. To further
-	      customise the appearance of &app;, see <xref linkend="modifying-appearance"/>.
+	      This is the Evolution folder to monitor for changes.
 	    </para>
 	    <note>
 	      <para>
-		The specified fonts are relative to the text
-		properties hard-coded into &app;, which cannot be
-		modified: the title is printed in bold and uses a
-		larger font size than the contents, and the message
-		headers are printed in bold.
+		For the folder selector to be available and for
+		monitoring an Evolution mailbox, Evolution must be
+		running and the Evolution Mail Notification plugin
+		must be loaded.
 	      </para>
 	    </note>
 	  </listitem>
 	</varlistentry>
+      </variablelist>
+    </sect2>
+
+    <sect2 id="mailbox-properties-connection">
+      <title>Connection (<guilabel>POP3</guilabel> and <guilabel>IMAP</guilabel> only)</title>
+      <variablelist>
 	<varlistentry>
-	  <term><guibutton>Display a Test Popup</guibutton></term>
+	  <term><guilabel>Connection type</guilabel></term>
 	  <listitem>
 	    <para>
-	      Clicking on this button will display an example popup,
-	      which can be used to ease configuration of the above
-	      options.
+	      This is the type of connection to use and the port
+	      number to connect to.
 	    </para>
 	    <para>
-	      Click on the example popup to close it.
+	      <guilabel>In-band SSL/TLS</guilabel> refers to a
+	      &ssl;/&tls; connection negotiated inside of the
+	      protocol (using the <literal>STLS</literal> &pop3;
+	      command or the <literal>STARTTLS</literal> &imap;
+	      command).
 	    </para>
-	  </listitem>
-	</varlistentry>
-      </variablelist>
-    </sect2>
-  </sect1>
-
-  <sect1 id="mailbox-properties">
-    <title>Mailbox Properties</title>
-    <para>
-      The <guilabel>Mailbox Properties</guilabel> dialog is displayed
-      when you add a new mailbox or when you edit an existing one.
-      It contains the following global settings:
-    </para>
-
-    <variablelist>
-      <varlistentry>
-	<term><guilabel>Mailbox type</guilabel></term>
-	<listitem>
-	  <para>
-	    This is the type of the mailbox. If you select <guilabel>autodetect</guilabel>,
-	    the type will be autodetected using the mailbox &uri; and/or contents.
-	  </para>
-	</listitem>
-      </varlistentry>
-      <varlistentry>
-	<term><guilabel>Mailbox name</guilabel></term>
-	<listitem>
-	  <para>
-	    You can choose to assign a custom name to the mailbox. The
-	    mailbox name has informative purposes only, and is
-	    displayed in various parts of &app;. To reset to the
-	    default name, click on the <guibutton>Use Default</guibutton>
-	    button.
-	  </para>
-	  <note>
 	    <para>
-	      The mailbox name will be modified automatically as you
-	      set some of the other options. To avoid losing your
-	      choice, only fill in the mailbox name after setting the
-	      other options.
+	      <guilabel>SSL/TLS on separate port</guilabel> refers to
+	      the most widespread method for establishing a
+	      &ssl;/&tls; connection: using a separate port.
 	    </para>
-	  </note>
-	</listitem>
-      </varlistentry>
-      <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 is only used if the mailbox does not support
-		<link linkend="immediate-notification">immediate notification</link>
-		of changes. If this is the case, an <link
-		linkend="poll-emblem">emblem</link> will be displayed
-		in the <link linkend="mailbox-list">mailbox
-		list</link>.
+		The security considerations listed below do not
+		apply if you select <guilabel>SSL/TLS</guilabel>
+		(either <guilabel>in-band</guilabel> or
+		<guilabel>on separate port</guilabel>).
 	      </para>
+	      <!-- simplified on purpose: actually, a weak SSL/TLS -->
+	      <!-- algorithm could be used, but this is beyond the -->
+	      <!-- scope of this document -->
 	    </note>
-	  </para>
-	</listitem>
-      </varlistentry>
-    </variablelist>
-
-    <para>
-      The rest of the window depends on the selected mailbox type:
-    </para>
+	  </listitem>
+	</varlistentry>
 
-    <variablelist>
-      <varlistentry>
-	<term>When <guilabel>autodetect</guilabel> is selected:</term>
-	<listitem>
-	  <variablelist>
-	    <varlistentry>
-	      <term><guilabel>Location</guilabel></term>
-	      <listitem>
-		<para>
-		  This is the &uri; of the mailbox.
-		  <note>
+	<varlistentry>
+	  <term><guilabel>Authentication</guilabel></term>
+	  <listitem>
+	    <variablelist>
+	      <varlistentry>
+		<term><guilabel>Mechanism</guilabel></term>
+		<listitem>
+		  <para>
+		    This is the authentication mechanism to use.
+		    If you select <guilabel>autodetect</guilabel>,
+		    all the authentication mechanisms supported by the &pop3;
+		    or &imap; server will be tried, in descending order of
+		    security. Otherwise, the selected mechanism (and
+		    <emphasis>only</emphasis> the selected mechanism) will
+		    be used.
+		  </para>
+		  <warning>
+		    <title>Security</title>
 		    <para>
-		      &app; abstracts file operations by using
-		      &gnomevfs;.  All the schemes (http, ftp, sftp,
-		      ...) supported by &gnomevfs; are therefore
-		      supported by &app;.
+		      If <guilabel>autodetect</guilabel> is selected and
+		      secure authentication fails, your credentials may
+		      be sent over the network in clear text (unless you
+		      use a &ssl;/&tls; connection).
 		    </para>
-		  </note>
-		</para>
-	      </listitem>
-	    </varlistentry>
-	  </variablelist>
-	</listitem>
-      </varlistentry>
-
-      <varlistentry>
-	<term>When <guilabel>POP3</guilabel> or <guilabel>IMAP</guilabel> is selected:</term>
-	<listitem>
-	  <variablelist>
-	    <varlistentry>
-	      <term><guilabel>Hostname</guilabel></term>
-	      <listitem>
-		<para>
-		  This is the hostname or IP address of the &pop3; or
-		  &imap; server.
-		  <note>
 		    <para>
-		      Symbolic names as well as IPv4 and IPv6
-		      addresses are supported.
+		      If this is a concern, select the appropriate
+		      secure authentication mechanism from the drop-down
+		      list.
 		    </para>
-		  </note>
-		</para>
-	      </listitem>
-	    </varlistentry>
-	    <varlistentry>
-	      <term><guilabel>Username</guilabel></term>
-	      <listitem>
-		<para>
-		  This is your username on the &pop3; or &imap;
-		  server.  The username will be stored to disk unless
-		  it is left blank (in such case, a credentials prompt
-		  will appear when needed).
-		</para>
-	      </listitem>
-	    </varlistentry>
-	    <varlistentry>
-	      <term><guilabel>Password</guilabel></term>
-	      <listitem>
-		<para>
-		  This is your password on the &pop3; or &imap;
-		  server.  The password will be stored to disk unless
-		  it is left blank (in such case, a credentials prompt
-		  will appear when needed).
-		</para>
-		<warning>
-		  <title>Security</title>
-		  <para>
-		    To avoid sending your password over the network in
-		    clear text, you must either use a SSL/TLS
-		    connection or select a secure authentication
-		    mechanism. See below for more details.
-		  </para>
-		  <!-- simplified on purpose: actually, a weak SSL/TLS -->
-		  <!-- algorithm could be used, but this is beyond the -->
-		  <!-- scope of this document -->
-		</warning>
-	      </listitem>
-	    </varlistentry>
-	    <varlistentry>
-	      <term><guilabel>Connection type</guilabel> and <guilabel>Port</guilabel></term>
-	      <listitem>
-		<para>
-		  This is the type of connection to use and the port
-		  number to connect to.
-		</para>
-		<para>
-		  <guilabel>In-band SSL/TLS</guilabel> refers to a
-		  &ssl;/&tls; connection negotiated inside of the
-		  protocol (using the <literal>STLS</literal> &pop3;
-		  command or the <literal>STARTTLS</literal> &imap;
-		  command).
-		</para>
-		<para>
-		  <guilabel>SSL/TLS on separate port</guilabel> refers to
-		  the most widespread method for establishing a
-		  &ssl;/&tls; connection: using a separate port.
-		</para>
-		<note>
-		  <para>
-		    The security considerations listed below do not
-		    apply if you select <guilabel>SSL/TLS</guilabel>
-		    (either <guilabel>in-band</guilabel> or
-		    <guilabel>on separate port</guilabel>).
-		  </para>
-		  <!-- simplified on purpose: actually, a weak SSL/TLS -->
-		  <!-- algorithm could be used, but this is beyond the -->
-		  <!-- scope of this document -->
-		</note>
-	      </listitem>
-	    </varlistentry>
-	    <varlistentry>
-	      <term><guilabel>Authentication mechanism</guilabel></term>
-	      <listitem>
-		<para>
-		  This is the authentication mechanism to use.
-		  If you select <guilabel>autodetect</guilabel>,
-		  all the authentication mechanisms supported by the &pop3;
-		  or &imap; server will be tried, in descending order of
-		  security. Otherwise, the selected mechanism (and
-		  <emphasis>only</emphasis> the selected mechanism) will
-		  be used.
-		</para>
-		<warning>
-		  <title>Security</title>
-		  <para>
-		    If <guilabel>autodetect</guilabel> is selected and
-		    secure authentication fails, your credentials may
-		    be sent over the network in clear text (unless you
-		    use a &ssl;/&tls; connection).
-		  </para>
-		  <para>
-		    If this is a concern, select the appropriate
-		    secure authentication mechanism from the drop-down
-		    list.
-		  </para>
-		</warning>
-	      </listitem>
-	    </varlistentry>
-	  </variablelist>
-	</listitem>
-      </varlistentry>
-      
-      <varlistentry>
-	<term>When <guilabel>IMAP</guilabel> is selected:</term>
-	<listitem>
-	  <variablelist>
-	    <varlistentry>
-	      <term><guilabel>Mailbox</guilabel></term>
-	      <listitem>
-		<para>
-		  This is the &imap; mailbox to use.
-		</para>
-	      </listitem>
-	    </varlistentry>
-	    <varlistentry>
-	      <term><guilabel>Use the IDLE extension</guilabel></term>
-	      <listitem>
-		<para>
-		  The IDLE extension (as defined by <ulink url="http://www.ietf.org/rfc/rfc2177.txt" type="http">RFC 2177</ulink>)
-		  allows &app; to stay connected to the server and provide
-		  <link linkend="immediate-notification">immediate notification</link> of changes.
-		</para>
-		<para>
-		  If <guilabel>never</guilabel> is selected, &app;
-		  will never use the IDLE extension, not even if the
-		  server supports it. Use this option if it appears
-		  that &app; does not detect changes to an &imap;
-		  mailbox while the IDLE extension is in use. If using
-		  this option fixes the issue, please also send the
-		  &imap; session transcript (obtained by running &app;
-		  using the --enable-info option) to Jean-Yves Lefort
-		  <email>jylefort@brutele.be</email>.
-		</para>
-		<para>
-		  If <guilabel>autodetect</guilabel> is selected,
-		  &app; will use the IDLE extension if the server
-		  supports it, unless the server software is known to
-		  have a broken IDLE implementation (currently, the
-		  only such software known to &app; is the University
-		  of Washington imapd). This is the recommended
-		  choice.
-		</para>
-		<para>
-		  If <guilabel>always</guilabel> is selected, &app;
-		  will use the IDLE extension if the server supports
-		  it, regardless of the server software. Use this
-		  option if you want to force &app; to use the IDLE
-		  extension, even if it has detected a bogus
-		  implementation.
-		</para>
-	      </listitem>
-	    </varlistentry>
-	  </variablelist>
-	</listitem>
-      </varlistentry>
+		  </warning>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
 
-      <varlistentry>
-	<term>When <guilabel>Gmail</guilabel> is selected:</term>
-	<listitem>
-	  <variablelist>
-	    <varlistentry>
-	      <term><guilabel>Username</guilabel></term>
-	      <listitem>
-		<para>
-		  This is your username on &gmail;. The username will
-		  be stored to disk unless it is left blank (in such
-		  case, a credentials prompt will appear when needed).
-		</para>
-	      </listitem>
-	    </varlistentry>
-	    <varlistentry>
-	      <term><guilabel>Password</guilabel></term>
-	      <listitem>
-		<para>
-		  This is your password on &gmail;. The password will
-		  be stored to disk unless it is left blank (in such
-		  case, a credentials prompt will appear when needed).
-		</para>
-	      </listitem>
-	    </varlistentry>
-	  </variablelist>
-	</listitem>
-      </varlistentry>
+	<varlistentry>
+	  <term>
+	    <guilabel>Use the IDLE extension</guilabel>
+	    (<guilabel>IMAP</guilabel> only)
+	  </term>
+	  <listitem>
+	    <para>
+	      The IDLE extension (as defined by <ulink url="http://www.ietf.org/rfc/rfc2177.txt" type="http">RFC 2177</ulink>)
+	      allows &app; to stay connected to the server and provide
+	      <link linkend="immediate-notification">immediate notification</link> of changes.
+	    </para>
+	    <para>
+	      If <guilabel>never</guilabel> is selected, &app;
+	      will never use the IDLE extension, not even if the
+	      server supports it. Use this option if it appears
+	      that &app; does not detect changes to an &imap;
+	      mailbox while the IDLE extension is in use. If using
+	      this option fixes the issue, please also send the
+	      &imap; session transcript (obtained by running &app;
+	      using the --enable-info option) to Jean-Yves Lefort
+	      <email>jylefort@brutele.be</email>.
+	    </para>
+	    <para>
+	      If <guilabel>autodetect</guilabel> is selected,
+	      &app; will use the IDLE extension if the server
+	      supports it, unless the server software is known to
+	      have a broken IDLE implementation (currently, the
+	      only such software known to &app; is the University
+	      of Washington imapd). This is the recommended
+	      choice.
+	    </para>
+	    <para>
+	      If <guilabel>always</guilabel> is selected, &app;
+	      will use the IDLE extension if the server supports
+	      it, regardless of the server software. Use this
+	      option if you want to force &app; to use the IDLE
+	      extension, even if it has detected a bogus
+	      implementation.
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </sect2>
+  </sect1>
 
-      <varlistentry>
-	<term>When <guilabel>Evolution</guilabel> is selected:</term>
-	<listitem>
-	  <variablelist>
-	    <varlistentry>
-	      <term><guilabel>Folder</guilabel></term>
-	      <listitem>
-		<para>
-		  This is the Evolution folder to monitor for changes.
-		</para>
-		<note>
-		  <para>
-		    For the folder selector to be available and for
-		    monitoring an Evolution mailbox, Evolution must be
-		    running and the Evolution Mail Notification plugin
-		    must be loaded.
-		  </para>
-		</note>
-	      </listitem>
-	    </varlistentry>
-	  </variablelist>
-	</listitem>
-      </varlistentry>
-    </variablelist>
+  <sect1 id="message-actions">
+    <title>Message Actions</title>
+    <para>
+      Message popups support the following actions:
+    </para>
+    <itemizedlist>
+      <listitem><para><guilabel>Open</guilabel></para></listitem>
+      <listitem><para><guilabel>Mark as Read</guilabel></para></listitem>
+      <listitem><para><guilabel>Mark as Spam</guilabel></para></listitem>
+    </itemizedlist>
+
+    <sect2 id="built-in-actions">
+      <title>Built-in Actions</title>
+      <para>
+	The following table summarizes the currently implemented
+	built-in actions for each mailbox type.
+      </para>
+      <table>
+	<title>Built-in Actions</title>
+	<tgroup cols="4">
+	  <thead>
+	    <row>
+	      <entry>Mailbox Type</entry>
+	      <entry><guilabel>Open</guilabel></entry>
+	      <entry><guilabel>Mark as Read</guilabel></entry>
+	      <entry><guilabel>Mark as Spam</guilabel></entry>
+	    </row>
+	  </thead>
+	  <tbody>
+	    <row>
+	      <entry>&mbox;</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	    </row>
+	    <row>
+	      <entry>&mh;</entry>
+	      <entry>yes</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	    </row>
+	    <row>
+	      <entry>&maildir;</entry>
+	      <entry>yes</entry>
+	      <entry>yes</entry>
+	      <entry>no</entry>
+	    </row>
+	    <row>
+	      <entry>&pop3;</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	    </row>
+	    <row>
+	      <entry>&imap;</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	    </row>
+	    <row>
+	      <entry>&gmail;</entry>
+	      <entry>yes</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	    </row>
+	    <row>
+	      <entry>Evolution</entry>
+	      <entry>yes</entry>
+	      <entry>yes</entry>
+	      <entry>yes</entry>
+	    </row>
+	    <row>
+	      <entry>&mozilla;</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	      <entry>no</entry>
+	    </row>
+	    <row>
+	      <entry>&sylpheed;</entry>
+	      <entry>yes</entry>
+	      <entry>yes</entry>
+	      <entry>no</entry>
+	    </row>
+	  </tbody>
+	</tgroup>
+      </table>
+    </sect2>
+
+    <sect2 id="custom-actions">
+      <title>Custom Actions</title>
+      <para>
+	To define a custom action for a particular mailbox, edit the
+	<filename>~/.gnome2/mail-notification/mailboxes.xml</filename>
+	file and specify a command to be executed when the action
+	button is clicked.
+      </para>
+      <note>
+	<para>
+	  If both a built-in action and a custom action exists, the
+	  custom action overrides the built-in action.
+	</para>
+      </note>
+      <para>
+	XML attributes should be added to the
+	<sgmltag>mailbox</sgmltag> element of the mailbox you want the
+	actions to be available for. The following table specifies
+	which XML attribute should be used for a particular action.
+      </para>
+      <table>
+	<title>Action Attributes</title>
+	<tgroup cols="2">
+	  <thead>
+	    <row>
+	      <entry>Action</entry>
+	      <entry>XML Attribute</entry>
+	    </row>
+	  </thead>
+	  <tbody>
+	    <row>
+	      <entry><guilabel>Open</guilabel></entry>
+	      <entry><parameter>open-command</parameter></entry>
+	    </row>
+	    <row>
+	      <entry><guilabel>Mark as Read</guilabel></entry>
+	      <entry><parameter>mark-as-read-command</parameter></entry>
+	    </row>
+	    <row>
+	      <entry><guilabel>Mark as Spam</guilabel></entry>
+	      <entry><parameter>mark-as-spam-command</parameter></entry>
+	    </row>
+	  </tbody>
+	</tgroup>
+      </table>
+      <para>
+	Before executing a command, some strings will be
+	substituted. The following table summarizes the available
+	substitutions.
+      </para>
+      <table>
+	<title>Command String Substitutions</title>
+	<tgroup cols="2">
+	  <thead>
+	    <row>
+	      <entry>String</entry>
+	      <entry>Substitution</entry>
+	    </row>
+	  </thead>
+	  <tbody>
+	    <row>
+	      <entry><literal>%%</literal></entry>
+	      <entry>a single percent character</entry>
+	    </row>
+	    <row>
+	      <entry><literal>%error</literal></entry>
+	      <entry>
+		the error message, if any
+	      </entry>
+	    </row>
+	    <row>
+	      <entry><literal>%sent-time</literal></entry>
+	      <entry>
+		the message timestamp expressed in seconds since the
+		Epoch (00:00:00 UTC, January 1, 1970)
+	      </entry>
+	    </row>
+	    <row>
+	      <entry><literal>%id</literal></entry>
+	      <entry>
+		the message unique identifier
+	      </entry>
+	    </row>
+	    <row>
+	      <entry><literal>%from</literal></entry>
+	      <entry>
+		the message sender
+	      </entry>
+	    </row>
+	    <row>
+	      <entry><literal>%subject</literal></entry>
+	      <entry>
+		the message subject, if any
+	      </entry>
+	    </row>
+	    <row>
+	      <entry><literal>%uri</literal></entry>
+	      <entry>
+		the message &uri;, if any
+	      </entry>
+	    </row>
+	    <row>
+	      <entry><literal>%filename</literal></entry>
+	      <entry>
+		if the message has an &uri; and that &uri; points to a
+		local filename, that filename
+	      </entry>
+	    </row>
+	    <row>
+	      <entry><literal>%uid</literal></entry>
+	      <entry>
+		the Evolution message UID, if any
+	      </entry>
+	    </row>
+	  </tbody>
+	</tgroup>
+      </table>
+      <note>
+	<itemizedlist>
+	  <listitem>
+	    <para>
+	      Substitutions will be shell-quoted as appropriate, you
+	      therefore must not quote the percent strings.
+	    </para>
+	  </listitem>
+	  <listitem>
+	    <para>
+	      Keywords can be enclosed in braces, as in
+	      <literal>%{from}</literal>.
+	    </para>
+	  </listitem>
+	</itemizedlist>
+      </note>
+      <para>
+	Example:
+      </para>
+      <programlisting>
+&lt;?xml version="1.0"?&gt;
+&lt;mailboxes&gt;
+  &lt;mailbox
+    type="custom-vfs"
+    uri="file:///home/jylefort/Mail/misc"
+    open-command="my-open-script %filename"
+    mark-as-spam-command="my-spam-script %filename"/&gt;
+&lt;/mailboxes&gt;
+</programlisting>
+    </sect2>
   </sect1>
 
   <sect1 id="troubleshooting">
@@ -1182,17 +1371,10 @@
       </para>
       <variablelist>
 	<varlistentry>
-	  <term>&mbox;, &mh;, &maildir; and &sylpheed; mailboxes:</term>
+	  <term>&mbox;, &mh;, &maildir;, &mozilla; and &sylpheed; mailboxes:</term>
 	  <listitem>
 	    <para>
-	      &gnomevfs; must be compiled
-	      with <ulink url="http://oss.sgi.com/projects/fam" type="http">FAM</ulink> support,
-	      and FAM must be configured properly.
-	    </para>
-	    <para>
-	      Refer to the
-	      <citerefentry><refentrytitle>fam</refentrytitle><manvolnum>1</manvolnum></citerefentry>
-	      manual page for more details.
+	      &gnomevfs; must support monitoring (it usually does).
 	    </para>
 	  </listitem>
 	</varlistentry>
@@ -1345,25 +1527,17 @@ if (! success) {
 	  </thead>
 	  <tbody>
 	    <row>
-	      <entry>mail summary popup</entry>
-	      <entry>mn-mail-summary-popup</entry>
-	    </row>
-	    <row>
-	      <entry>mail summary popup title</entry>
-	      <entry>mn-mail-summary-popup-title</entry>
-	    </row>
-	    <row>
-	      <entry>message list</entry>
-	      <entry>mn-message-view</entry>
-	    </row>
-	    <row>
 	      <entry>tooltip section title</entry>
 	      <entry>mn-tooltip-section-title</entry>
 	    </row>
 	    <row>
-	      <entry>tooltip section body (except message list)</entry>
+	      <entry>tooltip section body (except mail summary)</entry>
 	      <entry>mn-tooltip-section-body</entry>
 	    </row>
+	    <row>
+	      <entry>tooltip mail summary</entry>
+	      <entry>mn-message-view</entry>
+	    </row>
 	  </tbody>
 	</tgroup>
       </table>
@@ -1422,14 +1596,14 @@ if (! success) {
 	      <entry>mn-select-all</entry>
 	    </row>
 	    <row>
-	      <entry>mail summary</entry>
-	      <entry>mn-mail-summary</entry>
-	    </row>
-	    <row>
 	      <entry>mail reader</entry>
 	      <entry>mn-mail-reader</entry>
 	    </row>
 	    <row>
+	      <entry>open message</entry>
+	      <entry>mn-open-message</entry>
+	    </row>
+	    <row>
 	      <entry>connect (in the SSL/TLS confirmation dialog)</entry>
 	      <entry>mn-connect</entry>
 	    </row>
@@ -1449,26 +1623,6 @@ if (! success) {
 	  <filename>~/.gtkrc-2.0</filename> file.
 	</para>
 	<para>
-	  To use a large font for the mail summary popup title:
-	</para>
-	<programlisting>style "mn-mail-summary-popup-title"
-{
-  font_name = "Sans 14"
-}
-
-widget "*.mn-mail-summary-popup-title"
-  style "mn-mail-summary-popup-title"</programlisting>
-	<para>
-	  To use a small font for the mail summary popup messages:
-	</para>
-	<programlisting>style "mn-mail-summary-popup-messages"
-{
-  font_name = "Sans 8"
-}
-
-widget "mn-mail-summary-popup.*.mn-message-view"
-  style "mn-mail-summary-popup-messages"</programlisting>
-	<para>
 	  To use a small font for the mail summary tooltip messages:
 	</para>
 	<programlisting>style "mn-mail-summary-tooltip-messages"
@@ -1514,7 +1668,7 @@ widget "*" style "mn-icons"</programlisting>
 	  <para>
 	    Choose
 	    <menuchoice>
-	      <guimenu>Desktop</guimenu>
+	      <guimenu>System</guimenu>
 	      <guisubmenu>Preferences</guisubmenu>
 	      <guimenuitem>Mail Notification</guimenuitem>
 	    </menuchoice> (this location may vary across systems) or type
@@ -1590,6 +1744,56 @@ widget "*" style "mn-icons"</programlisting>
 	  </para>
 	</answer>
       </qandaentry>
+      <qandaentry>
+	<question>
+	  <para>
+	    How can I access message data from the new mail command?
+	  </para>
+	</question>
+	<answer>
+	  <para>
+	    Parse the output of <command>mail-notification --print-summary</command>.
+	  </para>
+	</answer>
+      </qandaentry>
+      <qandaentry>
+	<question>
+	  <para>
+	    I do not use &app; but I am presented with the properties
+	    dialog each time I log in. How can I disable it?
+	  </para>
+	</question>
+	<answer>
+	  <orderedlist>
+	    <listitem>
+	      <para>
+		Choose
+		<menuchoice>
+		  <guimenu>System</guimenu>
+		  <guisubmenu>Preferences</guisubmenu>
+		  <guimenuitem>Sessions</guimenuitem>
+		</menuchoice> (this location may vary across systems).
+	      </para>
+	    </listitem>
+	    <listitem>
+	      <para>
+		Select the <guilabel>Startup Programs</guilabel> tab.
+	      </para>
+	    </listitem>
+	    <listitem>
+	      <para>
+		Select the <command>mail-notification --sm-disable</command>
+		command.
+	      </para>
+	    </listitem>
+	    <listitem>
+	      <para>
+		Click on the <guibutton>Disable</guibutton> button.
+	      </para>
+	    </listitem>
+	  </orderedlist>
+	</answer>
+      </qandaentry>
     </qandaset>
   </sect1>
 
@@ -1605,8 +1809,9 @@ widget "*" style "mn-icons"</programlisting>
     <sect2 id="problem-reports">
       <title>Reporting Bugs and Other Feedback</title>
       <para>
-	Bug reports and feedback should be sent to Jean-Yves Lefort
-	<email>jylefort@brutele.be</email>.
+	Bug reports and feedback should be filed in the <ulink
+	url="https://savannah.nongnu.org/bugs/?group=mailnotify"
+	type="http">Mail Notification bug tracker</ulink>.
       </para>
     </sect2>
 
@@ -1630,6 +1835,7 @@ widget "*" style "mn-icons"</programlisting>
 	<listitem><para>Benoît Rouits</para></listitem>
 	<listitem><para>Tomasz Sarota-Raczek</para></listitem>
 	<listitem><para>Edwin Shin</para></listitem>
+	<listitem><para>Topi</para></listitem>
 	<listitem><para>Marcel J. Zwiebel</para></listitem>
       </itemizedlist>
     </sect2>
@@ -1718,6 +1924,21 @@ widget "*" style "mn-icons"</programlisting>
 	  </para>
 	</glossdef>
       </glossentry>
+
+      <glossentry id="mozilla">
+	<glossterm>Mozilla</glossterm>
+	<glossdef>
+	  <para>
+	    In this manual, a Mozilla mailbox refers to a mailbox
+	    produced by a Mozilla-based mail reader (Mozilla,
+	    SeaMonkey, Thunderbird, &hellip;). This mailbox format only
+	    differs from the &mbox; format by the fact that message
+	    status information is stored in the
+	    <literal>X-Mozilla-Status</literal> header instead of the
+	    <literal>Status</literal> header.
+	  </para>
+	</glossdef>
+      </glossentry>
     </glossdiv>
 
     <glossdiv><title>P</title>
diff --git a/help/Makefile.in b/help/Makefile.in
@@ -63,6 +63,7 @@ CTAGS = ctags
 DIST_SUBDIRS = $(SUBDIRS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AML = @AML@
@@ -192,15 +193,19 @@ WITH_IMAP_TRUE = @WITH_IMAP_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_FALSE = @WITH_MBOX_OR_MOZILLA_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_TRUE = @WITH_MBOX_OR_MOZILLA_TRUE@
 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_MOZILLA_FALSE = @WITH_MOZILLA_FALSE@
+WITH_MOZILLA_TRUE = @WITH_MOZILLA_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
@@ -241,7 +246,6 @@ build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
 evolution_plugindir = @evolution_plugindir@
-evolution_source_dir = @evolution_source_dir@
 exec_prefix = @exec_prefix@
 gnome_cappletdir = @gnome_cappletdir@
 gnome_prefix = @gnome_prefix@
diff --git a/intltool-extract.in b/intltool-extract.in
@@ -32,7 +32,7 @@
 ## Release information
 my $PROGRAM      = "intltool-extract";
 my $PACKAGE      = "intltool";
-my $VERSION      = "0.34.2";
+my $VERSION      = "0.35.0";
 
 ## Loaded modules
 use strict; 
diff --git a/intltool-merge.in b/intltool-merge.in
@@ -35,7 +35,7 @@
 ## Release information
 my $PROGRAM = "intltool-merge";
 my $PACKAGE = "intltool";
-my $VERSION = "0.34.2";
+my $VERSION = "0.35.0";
 
 ## Loaded modules
 use strict; 
@@ -395,7 +395,7 @@ sub create_translation_database
             } 
             else 
             {
-		print STDERR "WARNING: $po_file is not in UTF-8 but $encoding, converting...\n" unless $QUIET_ARG;;
+		print "NOTICE: $po_file is not in UTF-8 but $encoding, converting...\n" unless $QUIET_ARG;;
 
                 open PO_FILE, "$iconv -f $encoding -t UTF-8 $po_file|";	
             }
diff --git a/intltool-update.in b/intltool-update.in
@@ -30,7 +30,7 @@
 
 ## Release information
 my $PROGRAM = "intltool-update";
-my $VERSION = "0.34.2";
+my $VERSION = "0.35.0";
 my $PACKAGE = "intltool";
 
 ## Loaded modules
@@ -125,7 +125,7 @@ my $arg_count = ($DIST_ARG > 0)
 &Console_Write_IntltoolHelp if $arg_count > 1;
 
 # --version and --help don't require a module name
-my $MODULE = $GETTEXT_PACKAGE || &FindPackageName;
+my $MODULE = $GETTEXT_PACKAGE || &FindPackageName || "unknown";
 
 if ($POT_ARG)
 {
@@ -722,6 +722,8 @@ sub GeneratePOTemplate
 			   "--files-from\=\.\/POTFILES\.in\.temp");
     my $XGETTEXT_KEYWORDS = &FindPOTKeywords;
     push @xgettext_argument, $XGETTEXT_KEYWORDS;
+    my $MSGID_BUGS_ADDRESS = &FindMakevarsBugAddress;
+    push @xgettext_argument, "--msgid-bugs-address\=$MSGID_BUGS_ADDRESS" if $MSGID_BUGS_ADDRESS;
     push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii);
     push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS;
     my $xgettext_command = join ' ', @xgettext_argument;
@@ -874,8 +876,10 @@ sub SubstituteVariable
     {
 	my $rest = $3;
 	my $untouched = $1;
-	my $sub = $varhash{$2};
-	
+	my $sub = "";
+        # Ignore recursive definitions of variables
+        $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/;
+
 	return SubstituteVariable ("$untouched$sub$rest");
     }
     
@@ -992,10 +996,10 @@ sub FindPackageName
 	($name, $version) = ($1, $2);
 	$name    =~ s/[\[\]\s]//g;
 	$version =~ s/[\[\]\s]//g;
-	$varhash{"PACKAGE_NAME"} = $name;
-	$varhash{"PACKAGE"} = $name;
-	$varhash{"PACKAGE_VERSION"} = $version;
-	$varhash{"VERSION"} = $version;
+	$varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+	$varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+	$varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+	$varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
     }
     
     if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m) 
@@ -1003,10 +1007,10 @@ sub FindPackageName
 	($name, $version) = ($1, $2);
 	$name    =~ s/[\[\]\s]//g;
 	$version =~ s/[\[\]\s]//g;
-	$varhash{"PACKAGE_NAME"} = $name;
-	$varhash{"PACKAGE"} = $name;
-	$varhash{"PACKAGE_VERSION"} = $version;
-	$varhash{"VERSION"} = $version;
+	$varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/);
+	$varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/);
+	$varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/);
+	$varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/);
     }
 
     # \s makes this not work, why?
@@ -1063,3 +1067,23 @@ sub FindMakevarsDomain
     
     return $domain;
 }
+
+sub FindMakevarsBugAddress
+{
+
+    my $address = "";
+    my $makevars_source; { 
+	local (*IN);
+	open (IN, "<Makevars") || return undef;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$makevars_source = <IN>;
+	close IN;
+    }
+
+    $address = $1 if $makevars_source =~ /^MSGID_BUGS_ADDRESS[ ]*=\[?([^\n\]\$]+)/m;
+    $address =~ s/^\s+//;
+    $address =~ s/\s+$//;
+    
+    return $address;
+}
diff --git a/m4/Makefile.in b/m4/Makefile.in
@@ -54,6 +54,7 @@ SOURCES =
 DIST_SOURCES =
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AML = @AML@
@@ -183,15 +184,19 @@ WITH_IMAP_TRUE = @WITH_IMAP_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_FALSE = @WITH_MBOX_OR_MOZILLA_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_TRUE = @WITH_MBOX_OR_MOZILLA_TRUE@
 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_MOZILLA_FALSE = @WITH_MOZILLA_FALSE@
+WITH_MOZILLA_TRUE = @WITH_MOZILLA_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
@@ -232,7 +237,6 @@ build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
 evolution_plugindir = @evolution_plugindir@
-evolution_source_dir = @evolution_source_dir@
 exec_prefix = @exec_prefix@
 gnome_cappletdir = @gnome_cappletdir@
 gnome_prefix = @gnome_prefix@
diff --git a/m4/evolution-plugin.m4 b/m4/evolution-plugin.m4
@@ -1,6 +1,6 @@
 # This file is part of Mail Notification.
 #
-# Copyright (C) 2005 Jean-Yves Lefort.
+# Copyright (C) 2005, 2006 Jean-Yves Lefort.
 #
 # As a special exception to the Mail Notification licensing terms,
 # Jean-Yves Lefort gives unlimited permission to copy, distribute and
@@ -35,37 +35,3 @@ else
 fi
 
 AC_SUBST(evolution_plugindir)])
-
-dnl AM_PATH_EVOLUTION_SOURCEDIR([SOURCE-FILES], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
-dnl
-AC_DEFUN([AM_PATH_EVOLUTION_SOURCEDIR],
-[AC_ARG_WITH(evolution-source-dir,
-AC_HELP_STRING([--with-evolution-source-dir=DIR], [path to the Evolution source tree]),
-[evolution_source_dir="$withval"], [evolution_source_dir=""])
-
-found=no
-
-AC_MSG_CHECKING([for the Evolution source tree directory])
-if test -z "$evolution_source_dir"; then
-	AC_MSG_RESULT([not given, use --with-evolution-source-dir=DIR])
-else
-	AC_MSG_RESULT([$evolution_source_dir])
-	if test "x$evolution_source_dir" != "xno"; then
-		found=yes
-		m4_foreach(evofile, [ifelse([$1],, evolution-plugin.pc.in, [$1])],
-[
-if test $found = yes; then
-	AC_CHECK_FILE($evolution_source_dir/evofile, [found=yes], [found=no])
-fi
-])
-	fi
-fi
-
-if test $found = yes; then
-	ifelse([$2],, :, [$2])
-else
-	evolution_source_dir=""
-	ifelse([$3],, :, [$3])
-fi
-
-AC_SUBST(evolution_source_dir)])
diff --git a/m4/intltool.m4 b/m4/intltool.m4
@@ -23,7 +23,7 @@
 ## the same distribution terms that you use for the rest of that program.
 
 dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
-# serial 2 IT_PROG_INTLTOOL
+# serial 35 IT_PROG_INTLTOOL
 AC_DEFUN([IT_PROG_INTLTOOL],
 [AC_PREREQ([2.50])dnl
 
@@ -38,9 +38,9 @@ esac
 if test -n "$1"; then
     AC_MSG_CHECKING(for intltool >= $1)
 
-    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 100 + $ 2; }'`
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 1000 + $ 2 * 100 + $ 3; }'`
     INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { print $ 2; }' ${ac_aux_dir}/intltool-update.in`
-    [INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 100 + VERSION[2];}' ${ac_aux_dir}/intltool-update.in`
+    [INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($ 2, VERSION, "."); print VERSION[1] * 1000 + VERSION[2] * 100 + VERSION[3];}' ${ac_aux_dir}/intltool-update.in`
     ]
     AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
     test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
@@ -111,6 +111,9 @@ AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt)
 AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
 AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
 
+# Substitute ALL_LINGUAS so we can use it in po/Makefile
+AC_SUBST(ALL_LINGUAS)
+    
 IT_PO_SUBDIR([po])
 
 dnl The following is very similar to
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
@@ -22,7 +22,6 @@ PACKAGE = @PACKAGE@
 VERSION = @VERSION@
 
 SHELL = /bin/sh
-@SET_MAKE@
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
@@ -34,9 +33,8 @@ exec_prefix = @exec_prefix@
 datadir = @datadir@
 datarootdir = @datarootdir@
 libdir = @libdir@
-localedir = $(libdir)/locale
-gnulocaledir = $(datadir)/locale
-gettextsrcdir = $(datadir)/glib-2.0/gettext/po
+DATADIRNAME = @DATADIRNAME@
+itlocaledir = $(prefix)/$(DATADIRNAME)/locale
 subdir = po
 install_sh = @install_sh@
 # Automake >= 1.8 provides @mkdir_p@.
@@ -46,7 +44,6 @@ mkdir_p = $(install_sh) -d
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 
-CC = @CC@
 GMSGFMT = @GMSGFMT@
 MSGFMT = @MSGFMT@
 XGETTEXT = @XGETTEXT@
@@ -55,31 +52,22 @@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
 MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
 GENPOT   = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
 
-DEFS = @DEFS@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
+ALL_LINGUAS = @ALL_LINGUAS@
 
-INCLUDES = -I.. -I$(top_srcdir)/intl
+PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi)
 
-COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
+POFILES=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.po "; done)
 
-SOURCES = 
-POFILES = @POFILES@
-GMOFILES = @GMOFILES@
-DISTFILES = ChangeLog Makefile.in.in POTFILES.in \
-$(POFILES) $(SOURCES)
+DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(POFILES)
 EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS
 
 POTFILES = \
+#This Gets Replace for some reason
 
-CATALOGS = @CATALOGS@
-CATOBJEXT = @CATOBJEXT@
+CATALOGS=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.gmo "; done)
 
 .SUFFIXES:
-.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
-
-.c.o:
-	$(COMPILE) $<
+.SUFFIXES: .po .pox .gmo .mo .msg .cat
 
 .po.pox:
 	$(MAKE) $(GETTEXT_PACKAGE).pot
@@ -105,76 +93,63 @@ all-no:
 $(GETTEXT_PACKAGE).pot: $(POTFILES)
 	$(GENPOT)
 
-install: install-exec install-data
-install-exec:
+install: install-data
 install-data: install-data-@USE_NLS@
 install-data-no: all
 install-data-yes: all
-	$(mkdir_p) $(DESTDIR)$(datadir)
-	@catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  case "$$cat" in \
-	    *.gmo) destdir=$(gnulocaledir);; \
-	    *)     destdir=$(localedir);; \
-	  esac; \
-	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
+	$(mkdir_p) $(DESTDIR)$(itlocaledir)
+	if test -n "$(PO_LINGUAS)"; then \
+	  linguas="$(PO_LINGUAS)"; \
+	else \
+	  linguas="$(ALL_LINGUAS)"; \
+	fi; \
+	for lang in $$linguas; do \
+	  dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \
 	  $(mkdir_p) $$dir; \
-	  if test -r $$cat; then \
-	    $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE).mo; \
-	    echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE).mo"; \
+	  if test -r $$lang.gmo; then \
+	    $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+	    echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \
 	  else \
-	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE).mo; \
-	    echo "installing $(srcdir)/$$cat as" \
+	    $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \
+	    echo "installing $(srcdir)/$$lang.gmo as" \
 		 "$$dir/$(GETTEXT_PACKAGE).mo"; \
 	  fi; \
-	  if test -r $$cat.m; then \
-	    $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
-	    echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
+	  if test -r $$lang.gmo.m; then \
+	    $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+	    echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
 	  else \
-	    if test -r $(srcdir)/$$cat.m ; then \
-	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
+	    if test -r $(srcdir)/$$lang.gmo.m ; then \
+	      $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \
 		$$dir/$(GETTEXT_PACKAGE).mo.m; \
-	      echo "installing $(srcdir)/$$cat as" \
+	      echo "installing $(srcdir)/$$lang.gmo.m as" \
 		   "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
 	    else \
 	      true; \
 	    fi; \
 	  fi; \
 	done
-	if test "$(PACKAGE)" = "glib"; then \
-	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
-	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
-			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
-	else \
-	  : ; \
-	fi
+
+# Empty stubs to satisfy archaic automake needs
+dvi info tags TAGS ID:
 
 # Define this as empty until I found a useful application.
 installcheck:
 
 uninstall:
-	catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
-	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
-	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
-	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
+	if test -n "$(PO_LINGUAS)"; then \
+	  linguas="$(PO_LINGUAS)"; \
+	else \
+	  linguas="$(ALL_LINGUAS)"; \
+	fi; \
+	for lang in $$linguas; do \
+	  rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \
+	  rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \
 	done
-	if test "$(PACKAGE)" = "glib"; then \
-	  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
-	fi
 
 check: all $(GETTEXT_PACKAGE).pot
 
-dvi info tags TAGS ID:
-
 mostlyclean:
-	rm -f core core.* *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
-	rm -fr *.o
+	rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp
 	rm -f .intltool-merge-cache
 
 clean: mostlyclean
@@ -188,7 +163,7 @@ maintainer-clean: distclean
 	@echo "it deletes files that may require special tools to rebuild."
 	rm -f Makefile.in.in
 
-distdir = ../$(GETTEXT_PACKAGE)-$(VERSION)/$(subdir)
+distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
 dist distdir: $(DISTFILES)
 	dists="$(DISTFILES)"; \
 	extra_dists="$(EXTRA_DISTFILES)"; \
@@ -204,10 +179,12 @@ dist distdir: $(DISTFILES)
 update-po: Makefile
 	$(MAKE) $(GETTEXT_PACKAGE).pot
 	tmpdir=`pwd`; \
-	catalogs='$(CATALOGS)'; \
-	for cat in $$catalogs; do \
-	  cat=`basename $$cat`; \
-	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
+	if test -n "$(PO_LINGUAS)"; then \
+	  linguas="$(PO_LINGUAS)"; \
+	else \
+	  linguas="$(ALL_LINGUAS)"; \
+	fi; \
+	for lang in $$linguas; do \
 	  echo "$$lang:"; \
 	  result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \
 	  if $$result; then \
@@ -223,7 +200,7 @@ update-po: Makefile
 	      fi; \
 	    fi; \
 	  else \
-	    echo "msgmerge for $$cat failed!"; \
+	    echo "msgmerge for $$lang.gmo failed!"; \
 	    rm -f $$tmpdir/$$lang.new.po; \
 	  fi; \
 	done
diff --git a/po/POTFILES.in b/po/POTFILES.in
@@ -3,7 +3,7 @@ data/GNOME_MailNotification.server.in.in
 data/GNOME_MailNotification_Evolution.server.in
 data/mail-notification-properties.desktop.in
 data/mail-notification.desktop.in
-data/mail-notification.schemas.in
+data/mail-notification.schemas.in.in
 src/eggtrayicon.c
 src/eggtrayicon.h
 src/mn-about-dialog.gob
@@ -12,6 +12,7 @@ src/mn-authenticated-mailbox-properties.gob
 src/mn-authenticated-mailbox.gob
 src/mn-autodetect-mailbox-properties.gob
 src/mn-automation.gob
+src/mn-base-mbox-mailbox-backend.gob
 src/mn-blinking-image.gob
 src/mn-client-session.c
 src/mn-client-session.h
@@ -29,7 +30,6 @@ src/mn-gmime-stream-vfs.gob
 src/mn-imap-mailbox-properties.gob
 src/mn-imap-mailbox.gob
 src/mn-mail-icon.gob
-src/mn-mail-summary-popup.gob
 src/mn-mailbox-properties-dialog.gob
 src/mn-mailbox-view.gob
 src/mn-mailbox.gob
@@ -48,6 +48,7 @@ src/mn-pi-mailbox-properties.gob
 src/mn-pi-mailbox.gob
 src/mn-pop3-mailbox-properties.gob
 src/mn-pop3-mailbox.gob
+src/mn-popup.gob
 src/mn-properties-dialog.gob
 src/mn-sasl.c
 src/mn-sasl.h
@@ -60,6 +61,7 @@ src/mn-stock.h
 src/mn-sylpheed-mailbox-backend.gob
 src/mn-system-vfs-mailbox-properties.gob
 src/mn-system-vfs-mailbox.gob
+src/mn-test-mailbox.gob
 src/mn-tooltips.gob
 src/mn-util.c
 src/mn-util.h
@@ -67,6 +69,6 @@ src/mn-vfs-mailbox-backend.gob
 src/mn-vfs-mailbox.gob
 src/mn-vfs.c
 src/mn-vfs.h
-ui/mail-summary-popup.glade
+src/mn-xml.c
 ui/mailbox-properties-dialog.glade
 ui/properties-dialog.glade
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
@@ -12,9 +12,9 @@ src/mn-authenticated-mailbox-properties.c
 src/mn-authenticated-mailbox.c
 src/mn-autodetect-mailbox-properties.c
 src/mn-automation.c
+src/mn-base-mbox-mailbox-backend.c
 src/mn-blinking-image.c
 src/mn-compact-message-view.c
-src/mn-corba-object.c
 src/mn-custom-vfs-mailbox.c
 src/mn-dialog.c
 src/mn-evolution-glue.c
@@ -26,7 +26,6 @@ src/mn-gmime-stream-vfs.c
 src/mn-imap-mailbox-properties.c
 src/mn-imap-mailbox.c
 src/mn-mail-icon.c
-src/mn-mail-summary-popup.c
 src/mn-mailbox-properties-dialog.c
 src/mn-mailbox-view.c
 src/mn-mailbox.c
@@ -39,6 +38,7 @@ src/mn-pi-mailbox-properties.c
 src/mn-pi-mailbox.c
 src/mn-pop3-mailbox-properties.c
 src/mn-pop3-mailbox.c
+src/mn-popup.c
 src/mn-properties-dialog.c
 src/mn-reentrant-mailbox.c
 src/mn-shell.c
@@ -46,6 +46,7 @@ src/mn-standard-message-view.c
 src/mn-sylpheed-mailbox-backend.c
 src/mn-system-vfs-mailbox-properties.c
 src/mn-system-vfs-mailbox.c
+src/mn-test-mailbox.c
 src/mn-text-table.c
 src/mn-tooltips.c
 src/mn-vfs-mailbox-backend.c
diff --git a/po/ca.po b/po/ca.po
@@ -0,0 +1,1624 @@
+# Catalan translations for mail-notification.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# <topi@phreaker.net>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 3.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-07-12 17:00+0200\n"
+"PO-Revision-Date: 2006-11-21 17:34+0100\n"
+"Last-Translator: topi <topi@phreaker.net>\n"
+"Language-Team: Catalan <ca@dodds.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n!=1;\n"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Automatitzaci de l'avisador de correu"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Construcci de l'automatitzaci de l'avisador de correu"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:1
+msgid "Evolution folder tree control"
+msgstr "Control de l'arbre de carpetes de l'Evolution"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:2
+msgid "Evolution folder tree control factory"
+msgstr "Construcci del control de l'arbre de carpetes de l'Evolution"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:3
+msgid "Mail Notification / Evolution glue"
+msgstr "Avisador de correu / Enganxador amb l'Evolution"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:4
+msgid "Mail Notification / Evolution glue factory"
+msgstr "Avisador de correu / Construcci de l'enganxador amb l'Evolution"
+
+#: ../data/mail-notification-properties.desktop.in.h:1
+msgid "Configure Mail Notification"
+msgstr "Configura l'avisador de correu"
+
+#: ../data/mail-notification-properties.desktop.in.h:2
+#: ../data/mail-notification.desktop.in.h:2
+#: ../src/mn-mail-icon.gob:227
+#: ../src/mn-main.c:132
+#: ../src/mn-main.c:302
+#: ../src/mn-main.c:318
+msgid "Mail Notification"
+msgstr "Avisador de correu"
+
+#: ../data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Avisa'm en arribar correu nou"
+
+#: ../data/mail-notification.schemas.in.h:1
+msgid "Always display an icon"
+msgstr "Mostra sempre una icona"
+
+#: ../data/mail-notification.schemas.in.h:2
+msgid "Automatically close the mail summary popup"
+msgstr "Tanca automticament el resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:3
+msgid "Blink on errors"
+msgstr "Parpelleja si hi ha errors"
+
+#: ../data/mail-notification.schemas.in.h:4
+msgid "Click action"
+msgstr "Acci en fer clic"
+
+#: ../data/mail-notification.schemas.in.h:5
+msgid "Display seen mail"
+msgstr "Mostra els missatges vistos"
+
+#: ../data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr "Habilita el resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Empremtes digitals de certificats X509 confiables"
+
+#: ../data/mail-notification.schemas.in.h:8
+msgid "Height of properties dialog"
+msgstr "Alada del dileg de propietats"
+
+#: ../data/mail-notification.schemas.in.h:9
+msgid "Mail read command"
+msgstr "Comanda de correu llegit"
+
+#: ../data/mail-notification.schemas.in.h:10
+msgid "Mail summary popup contents font"
+msgstr "Font del contingut del resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup fonts aspect source"
+msgstr "Origen de l'aspecte de la font del resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup horizontal offset"
+msgstr "Distncia horitzontal del resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup position"
+msgstr "Posici del resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:14
+msgid "Mail summary popup title font"
+msgstr "Font del ttol del resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:15
+msgid "Mail summary popup vertical offset"
+msgstr "Distncia vertical del resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr "Minuts abans de tancar el resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:17
+msgid "New mail command"
+msgstr "Comanda per a correu nou"
+
+#: ../data/mail-notification.schemas.in.h:18
+msgid "Only display recent mail in mail summary popup"
+msgstr "Mostra noms els correus recents en el resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:19
+msgid "Run a command when all mail is read"
+msgstr "Executa una comanda en no haver correu per llegir"
+
+#: ../data/mail-notification.schemas.in.h:20
+msgid "Run a command when new mail arrives"
+msgstr "Executa una comanda en arribar correu nou"
+
+#: ../data/mail-notification.schemas.in.h:21
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr "Segons abans de tancar el resum emergent de correu"
+
+#: ../data/mail-notification.schemas.in.h:22
+msgid "The action to perform when the icon is clicked. Must be \"display-properties-dialog\", \"launch-mail-reader\" or \"update-mail-status\"."
+msgstr "L'acci a portar a terme quan es fa clic a la icona. Ha de ser \"mostra-dileg-de-propietats\", \"executa-el-client-de-correu\" o \"actualitza-l'estat-del-correu\"."
+
+#: ../data/mail-notification.schemas.in.h:23
+msgid "The amount of time to wait before closing the mail summary popup (minutes part)."
+msgstr "La quantitat de temps abans de tancar el resum emergent de correu (minuts)."
+
+#: ../data/mail-notification.schemas.in.h:24
+msgid "The amount of time to wait before closing the mail summary popup (seconds part)."
+msgstr "La quantitat de temps abans de tancar el resum emergent de correu (segons)."
+
+#: ../data/mail-notification.schemas.in.h:25
+msgid "The aspect source of the mail summary popup fonts. Must be \"theme\" or \"custom\"."
+msgstr "L'origen de les fonts del resum emergent de correu. Ha de ser \"theme\" o \"custom\"."
+
+#: ../data/mail-notification.schemas.in.h:26
+msgid "The command to run when all mail is read."
+msgstr "La comanda a executar en no haver correu per llegir."
+
+#: ../data/mail-notification.schemas.in.h:27
+msgid "The command to run when new mail arrives."
+msgstr "La comanda a executar en arribar correu nou."
+
+#: ../data/mail-notification.schemas.in.h:28
+msgid "The custom font to use for the contents of the mail summary popup."
+msgstr "La font a usar per al contingut del resum emergent de correu."
+
+#: ../data/mail-notification.schemas.in.h:29
+msgid "The custom font to use for the title of the mail summary popup."
+msgstr "La font a usar per al ttol del resum emergent de correu."
+
+#: ../data/mail-notification.schemas.in.h:30
+msgid "The height of the properties dialog in pixels."
+msgstr "L'alada del dileg de propietats en pxels."
+
+#: ../data/mail-notification.schemas.in.h:31
+msgid "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 certificate."
+msgstr "Llista de servidors confiables SSL/TLS (servidor:port) sense certificat X509."
+
+#: ../data/mail-notification.schemas.in.h:32
+msgid "The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr "Llista de certificats X509 confiables, representats per les empremtes digitals MD5."
+
+#: ../data/mail-notification.schemas.in.h:33
+msgid "The number of pixels to leave between the left or right side of the screen and the mail summary popup."
+msgstr "El nombre de pxels entre els costats esquerre i dret de la pantalla i el resum emergent de correu."
+
+#: ../data/mail-notification.schemas.in.h:34
+msgid "The number of pixels to leave between the top or bottom side of the screen and the mail summary popup."
+msgstr "El nombre de pxels entre els costats superior i inferior de la pantalla i el resum emergent de correu."
+
+#: ../data/mail-notification.schemas.in.h:35
+msgid "The position of the mail summary popup. Must be \"top-left\", \"top-right\", \"bottom-left\" or \"bottom-right\"."
+msgstr "Posici del resum emergent de correu. Ha de ser \"superior-esquerra\", \"superior-dreta\", \"inferior-esquerra\" o \"inferior-dreta\"."
+
+#: ../data/mail-notification.schemas.in.h:36
+msgid "The type of mail summary to display in the icon's tooltip. Must be \"standard\", \"compact\" or \"none\"."
+msgstr "El tipus de resum de correu que es mostrar com a consell de la icona. Ha de ser \"estndard\", \"compacte\" o \"cap\"."
+
+#: ../data/mail-notification.schemas.in.h:37
+msgid "The width of the properties dialog in pixels."
+msgstr "L'amplada del dileg de propietats en pxels."
+
+#: ../data/mail-notification.schemas.in.h:38
+msgid "Tooltip mail summary"
+msgstr "Resum de correu"
+
+#: ../data/mail-notification.schemas.in.h:39
+msgid "Trusted servers list"
+msgstr "Llista de servidors confiables"
+
+#: ../data/mail-notification.schemas.in.h:40
+msgid "Whether the status icon should blink on errors or not."
+msgstr "Si la icona d'estat ha de parpellejar quan hi ha errors."
+
+#: ../data/mail-notification.schemas.in.h:41
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Si s'ha de tancar automticament el resum emergent de correu."
+
+#: ../data/mail-notification.schemas.in.h:42
+msgid "Whether to display an icon when there is no new mail or not."
+msgstr "Si s'ha de mostrar una icona quan no hi ha correu nou."
+
+#: ../data/mail-notification.schemas.in.h:43
+msgid "Whether to display seen mail or not."
+msgstr "Si s'ha de mostrar el correu vist."
+
+#: ../data/mail-notification.schemas.in.h:44
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Si s'ha de mostrar el resum emergent de correu en arribar correu nou."
+
+#: ../data/mail-notification.schemas.in.h:45
+msgid "Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr "Si s'han d'amagar els correus mostrats anteriorment al resum emergent de correu."
+
+#: ../data/mail-notification.schemas.in.h:46
+msgid "Whether to run a command when all mail is read or not."
+msgstr "Si s'ha d'executar una comanda en no haver correu per llegir."
+
+#: ../data/mail-notification.schemas.in.h:47
+msgid "Whether to run a command when new mail arrives or not."
+msgstr "Si s'ha d'executar una comanda en arribar correu nou."
+
+#: ../data/mail-notification.schemas.in.h:48
+msgid "Width of properties dialog"
+msgstr "Amplada del dileg de propietats"
+
+#: ../src/eggtrayicon.c:132
+msgid "Orientation"
+msgstr "Orientaci"
+
+#: ../src/eggtrayicon.c:133
+msgid "The orientation of the tray."
+msgstr "L'orientaci de la safata."
+
+#. translators: header capitalization
+#: ../src/mn-about-dialog.gob:49
+msgid "A Mail Notification Icon"
+msgstr "Icona de l'avisador de correu"
+
+#.
+#. * translators: Your Name <your-email>
+#. * optionally followed by one or more: \nOther Contributor's Name <his-email>
+#.
+#: ../src/mn-about-dialog.gob:57
+msgid "translator-credits"
+msgstr "topi <topi@phreaker.net>"
+
+#: ../src/mn-about-dialog.gob:79
+msgid "Unable to open link"
+msgstr "No s'ha pogut obrir l'enlla"
+
+#: ../src/mn-auth-combo-box.gob:103
+#: ../src/mn-autodetect-mailbox-properties.gob:109
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">autodetectar</span>"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:46
+msgid "_Username:"
+msgstr "_Nom d'usuari:"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:50
+msgid "_Password:"
+msgstr "_Contrasenya:"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:110
+msgid "Location"
+msgstr "Ubicaci"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:122
+msgid "_Location:"
+msgstr "U_bicaci:"
+
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:130
+msgid "_Browse..."
+msgstr "_Navega..."
+
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:172
+msgid "Select a File or Folder"
+msgstr "Selecciona un Fitxer o Directori"
+
+#: ../src/mn-client-session.c:247
+#, c-format
+msgid "resolving %s"
+msgstr "resolent %s"
+
+#: ../src/mn-client-session.c:263
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "no s'ha pogut resoldre %s: %s"
+
+#: ../src/mn-client-session.c:304
+#, c-format
+msgid "network address #%i"
+msgstr "adrea de xarxa #%i"
+
+#: ../src/mn-client-session.c:307
+#, c-format
+msgid "unable to convert network address #%i into textual form: %s"
+msgstr "no s'ha pogut convertir l'adrea de xarxa #%i a format textual: %s"
+
+#: ../src/mn-client-session.c:318
+#, c-format
+msgid "%s: unsupported address family"
+msgstr "%s: famlia d'adreces no suportada"
+
+#: ../src/mn-client-session.c:325
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr "%s: no s'ha pogut crear el scol: %s"
+
+#: ../src/mn-client-session.c:329
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "connectant a %s (%s) port %i"
+
+#: ../src/mn-client-session.c:332
+#, c-format
+msgid "unable to connect: %s"
+msgstr "no s'ha pogut connectar: %s"
+
+#: ../src/mn-client-session.c:337
+msgid "connected successfully"
+msgstr "connectat amb xit"
+
+#. if reached, we couldn't find a working address
+#: ../src/mn-client-session.c:351
+#, c-format
+msgid "unable to connect to %s"
+msgstr "no s'ha pogut connectar a %s"
+
+#: ../src/mn-client-session.c:378
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr "no s'ha pogut inicialitzar la llibreria OpenSSL: %s"
+
+#: ../src/mn-client-session.c:386
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr "no s'ha pogut crear un objecte SSL/TLS: %s"
+
+#: ../src/mn-client-session.c:392
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr "no s'ha pogut ajustar el descriptor de fitxer SSL/TLS: %s"
+
+#: ../src/mn-client-session.c:398
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr "no s'ha pogut realitzar la negociaci SSL/TLS: %s"
+
+#: ../src/mn-client-session.c:404
+msgid "untrusted server"
+msgstr "servidor no confiable"
+
+#: ../src/mn-client-session.c:408
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr "no hi ha cap capa SSL/TLS activa (%s, %s %i-bit)"
+
+#: ../src/mn-client-session.c:455
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, empremta digitals: %s"
+
+#: ../src/mn-client-session.c:484
+msgid "missing certificate"
+msgstr "manca el certificat"
+
+#: ../src/mn-client-session.c:510
+#, 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 ""
+"L'avisador de correu no ha pogut establir la confiana per a \"%s\" (%s). s possible que alg estigui interceptant la comunicaci per obtenir informaci confidencial.\n"
+"\n"
+"Noms haureu de connectar al servidor si esteu segurs d'estar connectant a \"%s\". Si trieu connectar al servidor, no es tornar a mostrar-aquest missatge."
+
+#: ../src/mn-client-session.c:525
+msgid "Connect to untrusted server?"
+msgstr "Voleu connectar al servidor no confiable?"
+
+#: ../src/mn-client-session.c:590
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "la resposta \"%s\" no s vlida en el context actual"
+
+#: ../src/mn-client-session.c:619
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "no s'ha pogut analitzar la resposta: \"%s\""
+
+#: ../src/mn-client-session.c:669
+#: ../src/mn-client-session.c:676
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "no s'ha pogut llegir des del servidor: %s"
+
+#: ../src/mn-client-session.c:674
+msgid "unable to read from server: EOF"
+msgstr "no s'ha pogut llegir des del servidor: EOF"
+
+#: ../src/mn-client-session.c:686
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "no s'ha pogut descodificar les dades usant SASL: %s"
+
+#: ../src/mn-client-session.c:831
+#, c-format
+msgid "unable to encode data using SASL: %s"
+msgstr "no s'ha pogut codificar les dades usant SASL: %s"
+
+#: ../src/mn-client-session.c:862
+#: ../src/mn-client-session.c:869
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "no s'ha pogut escriure cap al servidor: %s"
+
+#: ../src/mn-client-session.c:867
+msgid "unable to write to server: EOF"
+msgstr "no s'ha pogut escriure cap al servidor: EOF"
+
+#: ../src/mn-client-session.c:898
+#: ../src/mn-pop3-mailbox.gob:433
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr "no s'ha pogut descodificar en Base64: %s"
+
+#: ../src/mn-client-session.c:1075
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr "no s'ha pogut inicialitzar la llibreria SASL: %s"
+
+#: ../src/mn-client-session.c:1087
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr "no s'ha pogut recuperar l'adrea local del scol: %s"
+
+#: ../src/mn-client-session.c:1093
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr "no s'ha pogut recuperar l'adrea remota del scol: %s"
+
+#: ../src/mn-client-session.c:1127
+#, c-format
+msgid "unable to set SASL security properties: %s"
+msgstr "no s'han pogut ajustar les propietats de seguretat SASL: %s"
+
+#: ../src/mn-client-session.c:1151
+msgid "unable to start SASL authentication: SASL asked for something we did not know"
+msgstr "no s'ha pogut iniciar l'autenticaci SASL: SASL ha preguntat alguna cosa que no sabem"
+
+#: ../src/mn-client-session.c:1170
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr "no s'ha pogut iniciar l'autenticaci SASL: %s"
+
+#: ../src/mn-client-session.c:1174
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr "no s'ha pogut crear una connexi SASL: %s"
+
+#: ../src/mn-client-session.c:1221
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr "SASL ha preguntat alguna cosa que no sabem, avortant l'autenticaci SASL"
+
+#: ../src/mn-client-session.c:1238
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr "%s, avortant l'autenticaci SASL"
+
+#. compliance error
+#: ../src/mn-client-session.c:1243
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr "no s'ha pogut descodificar en Base64 l'entrada del servidor: %s"
+
+#: ../src/mn-client-session.c:1279
+#, c-format
+msgid "a SASL security layer of strength factor %i is now active"
+msgstr "s'ha activat una capa de seguretat SASL de factor de fora %i"
+
+#. a security layer is active but we can't retrieve maxoutbuf -> fatal
+#: ../src/mn-client-session.c:1284
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr "no s'ha pogut llegir la propietat SASL_MAXOUTBUF: %s"
+
+#: ../src/mn-client-session.c:1290
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr "avs: no s'ha pogut llegir la propietat SASL_SSF: %s"
+
+#: ../src/mn-client-session.c:1449
+msgid "unknown server error"
+msgstr "error desconegut del servidor"
+
+#: ../src/mn-compact-message-view.gob:45
+msgid "Mailbox"
+msgstr "Bstia"
+
+#: ../src/mn-compact-message-view.gob:46
+msgid "From"
+msgstr "De"
+
+#: ../src/mn-compact-message-view.gob:47
+msgid "Subject"
+msgstr "Assumpte"
+
+#: ../src/mn-compact-message-view.gob:48
+msgid "Sent"
+msgstr "Enviat"
+
+#: ../src/mn-conf.c:262
+msgid "A directory creation error has occurred"
+msgstr "S'ha produt un error creant un directori"
+
+#: ../src/mn-conf.c:263
+#, c-format
+msgid "Unable to create directory \"%s\": %s."
+msgstr "No s'ha pogut crear el directori \"%s\": %s."
+
+#: ../src/mn-conf.c:402
+#, c-format
+msgid "recursively unsetting %s"
+msgstr "desajustant recursivament %s"
+
+#: ../src/mn-conf.c:406
+msgid "syncing the GConf database"
+msgstr "sincronitzant amb la base de dades de GConf"
+
+#: ../src/mn-conf.c:409
+msgid "completed"
+msgstr "completat"
+
+#: ../src/mn-conf.c:1137
+msgid "A command error has occurred in Mail Notification"
+msgstr "S'ha produt un error en el avisador de correu"
+
+#: ../src/mn-conf.c:1138
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "No s'ha pogut executar \"%s\": %s."
+
+#: ../src/mn-custom-vfs-mailbox.gob:76
+msgid "invalid location"
+msgstr "ubicaci no vlida"
+
+#: ../src/mn-evolution-folder-tree-control.c:91
+msgid "The currently selected URI"
+msgstr "L'URI seleccionat actualment"
+
+#. translators: header capitalization
+#: ../src/mn-evolution-mailbox-properties.gob:68
+msgid "Folder"
+msgstr "Carpeta"
+
+#: ../src/mn-evolution-mailbox-properties.gob:159
+msgid "Mail Notification can not contact Evolution. Make sure that Evolution is running and that the Evolution Mail Notification plugin is loaded."
+msgstr "L'avisador de correu no pot contactar amb l'Evolution. Comproveu que l'Evolution s'est executant i que est carregat el connector de l'avisador de correu."
+
+#: ../src/mn-evolution-mailbox.gob:75
+msgid "folder not found"
+msgstr "no s'ha trobat la carpeta"
+
+#: ../src/mn-evolution-mailbox.gob:212
+msgid "unable to contact Evolution"
+msgstr "no s'ha pogut contactar amb l'Evolution"
+
+#: ../src/mn-evolution-plugin.c:136
+#: ../src/mn-evolution-plugin.c:140
+msgid "Unable to activate the Mail Notification plugin"
+msgstr "No s'ha pogut activar el connector de l'avisador de correu"
+
+#: ../src/mn-evolution-plugin.c:136
+#, c-format
+msgid "Bonobo could not locate the %s server. Please check your Mail Notification installation."
+msgstr "Bonobo no ha pogut trobar el servidor %s. Comproveu la installaci de l'avisador de correu."
+
+#: ../src/mn-evolution-plugin.c:140
+#: ../src/mn-main.c:460
+#, c-format
+msgid "Bonobo was unable to register the %s server. Please check your Mail Notification installation."
+msgstr "Bonobo no ha pogut registrar el servidor %s. Comproveu la installaci de l'avisador de correu."
+
+#: ../src/mn-gmail-mailbox.gob:103
+msgid "invalid feed location"
+msgstr "la ubicaci de l'alimentaci no s vlida"
+
+#: ../src/mn-gmail-mailbox.gob:117
+#, c-format
+msgid "retrieving feed from %s"
+msgstr "recuperant l'alimentaci des de %s"
+
+#: ../src/mn-gmail-mailbox.gob:124
+#, c-format
+msgid "unable to retrieve feed: %s"
+msgstr "no s'ha pogut recuperar l'alimentaci: %s"
+
+#: ../src/mn-gmail-mailbox.gob:139
+#: ../src/mn-gmail-mailbox.gob:187
+msgid "unable to parse feed"
+msgstr "no s'ha pogut analitzar l'alimentaci"
+
+#: ../src/mn-gmime-stream-vfs.gob:50
+#: ../src/mn-sylpheed-mailbox-backend.gob:205
+#, c-format
+msgid "unable to read %s: %s"
+msgstr "no s'ha pogut llegir %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:52
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr "no s'ha pogut escriure en %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:54
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr "no s'ha pogut cercar en %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:56
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "no s'ha pogut fixar la posici de %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:58
+#: ../src/mn-mh-mailbox-backend.gob:164
+#, c-format
+msgid "unable to close %s: %s"
+msgstr "no s'ha pogut tancar %s: %s"
+
+#: ../src/mn-imap-mailbox-properties.gob:114
+#: ../src/mn-standard-message-view.gob:62
+msgid "Mailbox:"
+msgstr "Bstia:"
+
+#: ../src/mn-imap-mailbox-properties.gob:118
+msgid "in_box"
+msgstr "d'ent_rada"
+
+#: ../src/mn-imap-mailbox-properties.gob:129
+msgid "oth_er:"
+msgstr "_una altra:"
+
+#: ../src/mn-imap-mailbox-properties.gob:140
+msgid "ne_ver"
+msgstr "_mai"
+
+#: ../src/mn-imap-mailbox-properties.gob:141
+msgid "au_todetect"
+msgstr "_autodetecta"
+
+#: ../src/mn-imap-mailbox-properties.gob:142
+msgid "al_ways"
+msgstr "sem_pre"
+
+#: ../src/mn-imap-mailbox-properties.gob:174
+msgid "Use the <span style=\"italic\">IDLE</span> extension:"
+msgstr "Usa l'extensi <span style=\"italic\">IDLE</span>:"
+
+#: ../src/mn-imap-mailbox.gob:384
+msgid "server did not send capabilities"
+msgstr "el servidor no ha enviat les capacitats"
+
+#: ../src/mn-imap-mailbox.gob:551
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr "el servidor ha avisat LOGINDISABLED, no s'usar l'autenticaci LOGIN"
+
+#: ../src/mn-imap-mailbox.gob:552
+msgid "unable to login"
+msgstr "no s'ha pogut entrar"
+
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:752
+msgid "server did not send all the messages we requested"
+msgstr "el servidor no ha enviat tots els missatges que hem sollicitat"
+
+#: ../src/mn-imap-mailbox.gob:822
+msgid "unable to fetch message"
+msgstr "no s'ha pogut recuperar el missatge"
+
+#: ../src/mn-imap-mailbox.gob:847
+msgid "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, logging out"
+msgstr "\"Usa l'extensi IDLE\" ha de ser \"mai\" a les propietats de la bstia, sortint"
+
+#: ../src/mn-imap-mailbox.gob:858
+#, c-format
+msgid "the remote server runs %s, not using the IDLE extension"
+msgstr "el servidor remot executa %s, no s'usar l'extensi IDLE"
+
+#: ../src/mn-imap-mailbox.gob:863
+#, c-format
+msgid "the remote server runs %s, the IDLE extension might not function properly"
+msgstr "el servidor remot executa %s, s possible que l'extensi IDLE no funcioni correctament"
+
+#: ../src/mn-imap-mailbox.gob:872
+msgid "the remote server does not support the IDLE extension, logging out"
+msgstr "el servidor remot no suporta l'extensi IDLE, sortint"
+
+#: ../src/mn-imap-mailbox.gob:1377
+#: ../src/mn-pop3-mailbox.gob:296
+msgid "server does not support in-band SSL/TLS"
+msgstr "el servidor no suporta SSL/TLS en banda"
+
+#: ../src/mn-imap-mailbox.gob:1401
+#: ../src/mn-pop3-mailbox.gob:947
+msgid "a SASL authentication mechanism was selected but SASL support has not been compiled in"
+msgstr "s'ha seleccionat un mecanisme d'autenticaci SASL, per el suport de SASL no est disponible"
+
+#: ../src/mn-imap-mailbox.gob:1411
+#: ../src/mn-pop3-mailbox.gob:967
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "mecanisme d'autenticaci desconegut \"%s\""
+
+#: ../src/mn-imap-mailbox.gob:1443
+#: ../src/mn-pop3-mailbox.gob:1003
+#, c-format
+msgid "disabling mechanism \"%s\" and retrying SASL authentication"
+msgstr "inhabilitant el mecanisme \"%s\" i tornant a provar amb l'autenticaci SASL"
+
+#: ../src/mn-imap-mailbox.gob:1455
+msgid "falling back to IMAP LOGIN authentication"
+msgstr "passant a autenticaci amb IMAP LOGIN"
+
+#: ../src/mn-imap-mailbox.gob:1467
+#: ../src/mn-pop3-mailbox.gob:1032
+msgid "authentication failed"
+msgstr "l'autenticaci ha fallat"
+
+#. success; caller must switch state itself
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:1528
+msgid "server did not send search results"
+msgstr "el servidor no ha enviat els resultats de la cerca"
+
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:89
+msgid "_Mail Reader"
+msgstr "_Client de correu"
+
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:91
+#: ../src/mn-mailbox-view.gob:312
+msgid "_Update"
+msgstr "_Actualitzar"
+
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:98
+msgid "R_emove From Notification Area"
+msgstr "_Suprimir de l'rea de notificaci"
+
+#. translators: header capitalization
+#: ../src/mn-mail-summary-popup.gob:270
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span size=\"larger\" weight=\"bold\">Resum de Correu</span>"
+
+#. translators: header capitalization
+#: ../src/mn-mail-summary-popup.gob:277
+msgid "<span weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Resum de Correu</span>"
+
+#. translators: header capitalization
+#: ../src/mn-mailbox-properties-dialog.gob:89
+#, c-format
+msgid "%s Properties"
+msgstr "Propietats de %s"
+
+#. translators: header capitalization
+#: ../src/mn-mailbox-properties-dialog.gob:232
+msgid "Add a Mailbox"
+msgstr "Afegeix una Bstia"
+
+#: ../src/mn-mailbox-view.gob:248
+msgid "A paste error has occurred"
+msgstr "S'ha produt un error enganxant"
+
+#: ../src/mn-mailbox-view.gob:557
+#, c-format
+msgid "unhandled %s mailbox (%s)"
+msgstr "bstia %s no gestionada (%s)"
+
+#: ../src/mn-mailbox-view.gob:562
+#, c-format
+msgid "%s mailbox"
+msgstr "bstia %s"
+
+#: ../src/mn-mailbox-view.gob:577
+msgid "detecting mailbox type..."
+msgstr "detectant el tipus de bstia..."
+
+#: ../src/mn-mailbox.gob:472
+msgid "\"type\" attribute missing"
+msgstr "manca l'atribut de \"tipus\""
+
+#: ../src/mn-mailbox.gob:479
+#, c-format
+msgid "unknown mailbox type \"%s\""
+msgstr "tipus de bstia \"%s\" desconegut"
+
+#: ../src/mn-mailbox.gob:499
+#, c-format
+msgid "property \"%s\": unable to transform string \"%s\" into a value of type \"%s\""
+msgstr "propietat \"%s\": no es pot transformar la cadena \"%s\" a un valor de tipus \"%s\""
+
+#: ../src/mn-mailbox.gob:948
+#, c-format
+msgid "property \"%s\" has no value"
+msgstr "la propietat \"%s\" no t valor"
+
+#: ../src/mn-mailboxes.gob:239
+msgid "An error has occurred while importing old mailboxes"
+msgstr "S'ha produt un error important bsties antigues"
+
+#: ../src/mn-mailboxes.gob:265
+msgid "Unable to load the mailboxes configuration"
+msgstr "No es pot carregar la configuraci de les bsties"
+
+#: ../src/mn-mailboxes.gob:311
+msgid "Unable to parse the XML document."
+msgstr "No es pot analitzar el document XML."
+
+#: ../src/mn-mailboxes.gob:318
+msgid "The root element is missing."
+msgstr "Manca l'element arrel."
+
+#: ../src/mn-mailboxes.gob:324
+#, c-format
+msgid "The root element \"%s\" is invalid."
+msgstr "L'element arrel \"%s\" no s vlid."
+
+#: ../src/mn-mailboxes.gob:347
+#, c-format
+msgid "On line %i: %s."
+msgstr "En lnia %i: %s."
+
+#: ../src/mn-mailboxes.gob:352
+#, c-format
+msgid "On line %i: unknown element \"%s\"."
+msgstr "En lnia %i: element \"%s\" desconegut."
+
+#: ../src/mn-mailboxes.gob:361
+msgid "An error has occurred while loading the mailboxes configuration"
+msgid_plural "Errors have occurred while loading the mailboxes configuration"
+msgstr[0] "S'ha produt un error carregant la configuraci de les bsties"
+msgstr[1] "S'han produt errors carregant la configuraci de les bsties"
+
+#: ../src/mn-mailboxes.gob:386
+msgid "Unable to save the mailboxes configuration"
+msgstr "No es pot desar la configuraci de les bsties"
+
+#: ../src/mn-mailboxes.gob:428
+#, c-format
+msgid "Unable to remove %s: %s."
+msgstr "No es pot suprimir %s: %s."
+
+#: ../src/mn-mailboxes.gob:436
+#, c-format
+msgid "Unable to create %s: %s."
+msgstr "No es pot crear %s: %s."
+
+#: ../src/mn-mailboxes.gob:443
+#, c-format
+msgid "Unable to open %s for writing: %s."
+msgstr "No es pot obrir %s per escriptura: %s."
+
+#: ../src/mn-mailboxes.gob:450
+msgid "Unable to write the XML document."
+msgstr "No es pot escriure el document XML."
+
+#: ../src/mn-mailboxes.gob:456
+#, c-format
+msgid "Unable to close %s: %s."
+msgstr "No es pot tancar %s: %s."
+
+#: ../src/mn-mailboxes.gob:466
+#: ../src/mn-mailboxes.gob:473
+#, c-format
+msgid "Unable to rename %s to %s: %s."
+msgstr "No es pot canviar el nom de %s a %s: %s."
+
+#. non fatal
+#: ../src/mn-mailboxes.gob:479
+#, c-format
+msgid "unable to delete %s: %s"
+msgstr "no es pot suprimir %s: %s"
+
+#: ../src/mn-mailboxes.gob:509
+#, c-format
+msgid "%s has %i new message"
+msgid_plural "%s has %i new messages"
+msgstr[0] "%s t %i missatge nou"
+msgstr[1] "%s t %i missatges nous"
+
+#: ../src/mn-mailboxes.gob:535
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s ha generat un error: %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:125
+#, c-format
+msgid "unable to open folder \"%s\": %s"
+msgstr "no es pot obrir la carpeta \"%s\": %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:173
+#, c-format
+msgid "unable to close folder \"%s\": %s"
+msgstr "no es pot tancar la carpeta \"%s\": %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:176
+#, c-format
+msgid "error while reading folder \"%s\": %s"
+msgstr "s'ha produt un error en llegir la carpeta \"%s\": %s"
+
+#: ../src/mn-main.c:100
+msgid "yes"
+msgstr "s"
+
+#: ../src/mn-main.c:100
+msgid "no"
+msgstr "no"
+
+#: ../src/mn-main.c:132
+#, c-format
+msgid "%s version %s\n"
+msgstr "%s versi %s\n"
+
+#: ../src/mn-main.c:137
+msgid "Mailbox backends:\n"
+msgstr "Rerefons de la bstia:\n"
+
+#: ../src/mn-main.c:142
+msgid "POP3 and IMAP features:\n"
+msgstr "Caracterstiques de POP3 i IMAP:\n"
+
+#: ../src/mn-main.c:147
+msgid "Sylpheed features:\n"
+msgstr "Caracterstiques de Sylpheed:\n"
+
+#: ../src/mn-main.c:198
+#, c-format
+msgid "A Bonobo exception (%s) has occurred in %s()."
+msgstr "S'ha produt una excepci de Bonobo (%s) en %s()."
+
+#: ../src/mn-main.c:220
+msgid "Show version information"
+msgstr "Mostra la informaci de la versi"
+
+#: ../src/mn-main.c:229
+msgid "Enable informational output"
+msgstr "Habilita la sortida d'informaci"
+
+#: ../src/mn-main.c:238
+msgid "Display the properties dialog"
+msgstr "Mostra el dileg de propietats"
+
+#: ../src/mn-main.c:247
+msgid "Display the about dialog"
+msgstr "Mostra el dileg Quant a"
+
+#: ../src/mn-main.c:256
+msgid "Close the mail summary popup"
+msgstr "Tanca el resum emergent de correu"
+
+#: ../src/mn-main.c:265
+msgid "Update the mail status"
+msgstr "Actualitza l'estat del correu"
+
+#: ../src/mn-main.c:274
+msgid "Unset obsolete GConf configuration"
+msgstr "Desajusta la configuraci obsoleta de GConf"
+
+#: ../src/mn-main.c:283
+msgid "Quit Mail Notification"
+msgstr "Sortir de l'avisador de correu"
+
+#.
+#. * We cannot use mn_fatal_error_dialog() because gtk_init() has
+#. * not been called yet.
+#.
+#: ../src/mn-main.c:310
+msgid "multi-threading is not available"
+msgstr "no est disponible el muti-threading"
+
+#: ../src/mn-main.c:365
+msgid "Bonobo could not locate the automation object. Please check your Mail Notification installation."
+msgstr "Bonobo no pot trobar l'objecte d'automatitzaci. Comproveu la installaci de l'avisador de correu."
+
+#: ../src/mn-main.c:371
+msgid "quitting Mail Notification"
+msgstr "sortint de l'avisador de correu"
+
+#: ../src/mn-main.c:375
+msgid "Mail Notification is not running"
+msgstr "L'avisador de correu no s'est executant"
+
+#: ../src/mn-main.c:390
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "No s'ha pogut inicialitzar la llibreria GnomeVFS."
+
+#: ../src/mn-main.c:438
+msgid "updating the mail status"
+msgstr "actualitzant l'estat del correu"
+
+#: ../src/mn-main.c:446
+msgid "Mail Notification is already running"
+msgstr "L'avisador de correu ja s'est executant"
+
+#: ../src/mn-main.c:456
+#, c-format
+msgid "Bonobo could not locate the %s file. Please check your Mail Notification installation."
+msgstr "Bonobo no ha pogut trobar el fitxer %s. Comproveu la installaci de l'avisador de correu."
+
+#: ../src/mn-mbox-mailbox-backend.gob:281
+#, c-format
+msgid "unable to close file: %s"
+msgstr "no s'ha pogut tancar el fitxer: %s"
+
+#: ../src/mn-mbox-mailbox-backend.gob:298
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "no s'ha pogut obrir la bstia: %s"
+
+#: ../src/mn-message-mime.c:121
+msgid "unable to parse MIME message"
+msgstr "no s'ha pogut analitzar el missatge MIME"
+
+#: ../src/mn-message.gob:111
+msgid "Unknown"
+msgstr "Desconegut"
+
+#. translators: "none" is used like "Mailbox: none"
+#: ../src/mn-message.gob:130
+msgid "none"
+msgstr "cap"
+
+#: ../src/mn-mh-mailbox-backend.gob:167
+#, c-format
+msgid "error while reading %s: %s"
+msgstr "s'ha produt un error en llegir %s: %s"
+
+#: ../src/mn-mh-mailbox-backend.gob:180
+#, c-format
+msgid "unable to open %s: %s"
+msgstr "no s'ha pogut obrir %s: %s"
+
+#: ../src/mn-pi-mailbox-properties.gob:67
+msgid "sta_ndard"
+msgstr "_estndard"
+
+#: ../src/mn-pi-mailbox-properties.gob:68
+msgid "in-band SS_L/TLS"
+msgstr "SS_L/TLS en banda"
+
+#: ../src/mn-pi-mailbox-properties.gob:69
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLS en un port _diferent"
+
+#: ../src/mn-pi-mailbox-properties.gob:73
+msgid "Ho_stname:"
+msgstr "_Servidor:"
+
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox-properties.gob:94
+msgid "_Details"
+msgstr "_Detalls"
+
+#: ../src/mn-pi-mailbox-properties.gob:149
+msgid "Connection type:"
+msgstr "Tipus de connexi:"
+
+#: ../src/mn-pi-mailbox-properties.gob:156
+msgid "Port:"
+msgstr "Port:"
+
+#: ../src/mn-pi-mailbox-properties.gob:179
+msgid "Authent_ication mechanism:"
+msgstr "Mecanisme d'_autenticaci:"
+
+#: ../src/mn-pi-mailbox.gob:151
+msgid "SSL/TLS support has not been compiled in"
+msgstr "El suport de SSL/TLS no est disponible"
+
+#: ../src/mn-pi-mailbox.gob:317
+#, c-format
+msgid ""
+"Mail Notification was unable to log into %s mailbox %s, possibly because the credentials you have entered are invalid.\n"
+"\n"
+"Please re-enter your credentials."
+msgstr ""
+"L'avisador de correu no ha estat capa d'entrar a la bstia %s %s, possiblement perqu les credencials entrades no sn vlides.\n"
+"\n"
+"Torneu a introduir les credencials."
+
+#: ../src/mn-pi-mailbox.gob:318
+#, c-format
+msgid "Enter your credentials for %s mailbox %s."
+msgstr "Introduu les credencials per a la bstia %s %s."
+
+#. keep the title in sync with gnome-authentication-manager
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox.gob:361
+msgid "Authentication Required"
+msgstr "Autenticaci Obligatria"
+
+#: ../src/mn-pop3-mailbox.gob:344
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr "argument no vlids per a la capacitat LOGIN-DELAY"
+
+#.
+#. * Some servers violate RFC 2449 by not supporting a
+#. * second argument to the AUTH command. Support these
+#. * servers nevertheless, by retrying without the SASL
+#. * initial client response.
+#.
+#: ../src/mn-pop3-mailbox.gob:485
+msgid "SASL authentication with initial client response failed, retrying without initial client response"
+msgstr "Als servidors amb autenticaci SASL que fallen la resposta inicial del client, reprova sense resposta inicial del client"
+
+#: ../src/mn-pop3-mailbox.gob:696
+msgid "unknown error"
+msgstr "error desconegut"
+
+#: ../src/mn-pop3-mailbox.gob:791
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgstr "seguint LOGIN-DELAY, s'esperar durant %i segon"
+
+#: ../src/mn-pop3-mailbox.gob:959
+msgid "server does not support APOP authentication"
+msgstr "el servidor no suporta autenticaci APOP"
+
+#: ../src/mn-pop3-mailbox.gob:1015
+msgid "falling back to APOP authentication"
+msgstr "passant a autenticaci amb APOP"
+
+#: ../src/mn-pop3-mailbox.gob:1020
+msgid "falling back to USER/PASS authentication"
+msgstr "passant a autenticaci amb USER/PASS"
+
+#. translators: header capitalization
+#: ../src/mn-properties-dialog.gob:173
+#: ../ui/properties-dialog.glade.h:23
+msgid "Mail Notification Properties"
+msgstr "Propietats de l'avisador de correu"
+
+#: ../src/mn-properties-dialog.gob:207
+msgid "top left"
+msgstr "superior esquerra"
+
+#: ../src/mn-properties-dialog.gob:208
+msgid "top right"
+msgstr "superior dreta"
+
+#: ../src/mn-properties-dialog.gob:209
+msgid "bottom left"
+msgstr "inferior esquerra"
+
+#: ../src/mn-properties-dialog.gob:210
+msgid "bottom right"
+msgstr "inferior dreta"
+
+#: ../src/mn-properties-dialog.gob:332
+msgid "No mailbox selected."
+msgstr "Cap bstia seleccionada."
+
+#: ../src/mn-properties-dialog.gob:337
+#, c-format
+msgid "%i mailbox selected."
+msgstr "%i bsties seleccionades."
+
+#: ../src/mn-properties-dialog.gob:456
+#, c-format
+msgid "Test message #%i"
+msgstr "Correu de prova #%i"
+
+#. translators: header capitalization
+#: ../src/mn-properties-dialog.gob:462
+msgid "Mail Notification Properties Dialog"
+msgstr "Dileg de Propietats de l'avisador de correu"
+
+#. translators: header capitalization
+#: ../src/mn-shell.gob:381
+msgid "Mailboxes Having New Mail"
+msgstr "Bsties amb Correu Nou"
+
+#. translators: header capitalization
+#: ../src/mn-shell.gob:400
+msgid "Errors"
+msgstr "Errors"
+
+#. translators: header capitalization
+#: ../src/mn-shell.gob:416
+msgid "Mail Summary"
+msgstr "Resum de Correu"
+
+#: ../src/mn-shell.gob:445
+msgid "You have no new mail."
+msgstr "No hi ha correu nou."
+
+#: ../src/mn-ssl.c:76
+msgid "unknown SSL/TLS error"
+msgstr "s'ha produt un error SSL/TSL desconegut"
+
+#: ../src/mn-standard-message-view.gob:64
+msgid "Unreadable message:"
+msgstr "Correu illegible:"
+
+#: ../src/mn-standard-message-view.gob:67
+msgid "From:"
+msgstr "De:"
+
+#: ../src/mn-standard-message-view.gob:68
+msgid "Subject:"
+msgstr "Assumpte:"
+
+#: ../src/mn-standard-message-view.gob:72
+msgid "Sent:"
+msgstr "Enviat:"
+
+#. translators: header capitalization
+#: ../src/mn-stock.c:29
+msgid "Select _All"
+msgstr "Selecciona _Tots"
+
+#. translators: header capitalization
+#. translators: header capitalization
+#: ../src/mn-stock.c:32
+msgid "Co_nnect"
+msgstr "Co_nnecta"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:223
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "no s'ha pogut obrir la carpeta: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:276
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "no s'ha pogut tancar la carpeta: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:279
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "s'ha produt un error en llegir la carpeta: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:420
+msgid "unexpected end of file"
+msgstr "final de fitxer inesperat"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:438
+#, c-format
+msgid "incompatible file version \"%i\""
+msgstr "versi del fitxer \"%i\" incompatible"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:441
+msgid "file version missing"
+msgstr "manca la versi del fitxer"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:40
+#: ../src/mn-system-vfs-mailbox-properties.gob:48
+#: ../src/mn-system-vfs-mailbox.gob:45
+msgid "System mailbox"
+msgstr "Bstia de sistema"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:70
+#, c-format
+msgid "Your system mailbox is <span weight=\"bold\">%s</span>."
+msgstr "La bstia del sistema s <span weight=\"bold\">%s</span>."
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:77
+msgid "The location of your system mailbox could not be detected. Check the MAIL environment variable."
+msgstr "No s'ha pogut detectar la ubicaci de la bstia del sistema. Comproveu la variable d'entorn MAIL."
+
+#: ../src/mn-system-vfs-mailbox.gob:72
+msgid "system mailbox not found"
+msgstr "no s'ha trobat la bstia del sistema"
+
+#: ../src/mn-util.c:349
+#, c-format
+msgid "error loading image: %s"
+msgstr "s'ha produt un error carregant la imatge: %s"
+
+#: ../src/mn-util.c:365
+#, c-format
+msgid "Unable to load interface \"%s\". Please check your Mail Notification installation."
+msgstr "No s'ha pogut carregat la interfcie \"%s\". Comproveu la installaci de l'avisador de correu."
+
+#: ../src/mn-util.c:380
+#, c-format
+msgid "Widget \"%s\" not found in interface \"%s\". Please check your Mail Notification installation."
+msgstr "No s'ha torbat el giny \"%s\" a la interfcie \"%s\". Comproveu la installaci de l'avisador de correu."
+
+#: ../src/mn-util.c:449
+#, c-format
+msgid "Unable to open self as a module (%s)."
+msgstr "No s'ha pogut obrir com a mdul (%s)."
+
+#: ../src/mn-util.c:454
+#, c-format
+msgid "Signal handler \"%s\" not found. Please check your Mail Notification installation."
+msgstr "No s'ha trobat el gestor de senyals \"%s\". Comproveu la installaci de l'avisador de correu."
+
+#: ../src/mn-util.c:605
+#: ../src/mn-util.c:628
+#: ../src/mn-util.c:648
+#: ../src/mn-util.c:670
+msgid "A drag and drop error has occurred"
+msgstr "S'ha produt un error en arrossegar i deixar anar"
+
+#: ../src/mn-util.c:606
+msgid "An invalid location list has been received."
+msgstr "S'ha rebut una llista d'ubicacions no vlida."
+
+#: ../src/mn-util.c:649
+msgid "An invalid Mozilla location has been received."
+msgstr "S'ha rebut una ubicaci de Mozilla no vlida."
+
+#: ../src/mn-util.c:725
+msgid "Unable to display help"
+msgstr "No es pot mostrar l'ajuda"
+
+#: ../src/mn-util.c:739
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "No es pot crear el fil: %s"
+
+#: ../src/mn-util.c:899
+#, c-format
+msgid ""
+"The following location is invalid:\n"
+"\n"
+"%sThe following locations are invalid:\n"
+"\n"
+"%s"
+msgstr ""
+"La ubicaci segent no s vlida:\n"
+"\n"
+"%sLes ubicacions segents no sn vlides:\n"
+"\n"
+"%s"
+
+#: ../src/mn-util.c:919
+msgid "A fatal error has occurred in Mail Notification"
+msgstr "S'ha produt un error fatal a l'avisador de correu"
+
+#: ../src/mn-util.c:958
+#, c-format
+msgid "unable to get current time: %s"
+msgstr "no es pot recuperar l'hora actual: %s"
+
+#: ../src/mn-util.c:1250
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] "fa %i segon"
+msgstr[1] "fa %i segons"
+
+#: ../src/mn-util.c:1254
+#, c-format
+msgid "about %i minute ago"
+msgid_plural "about %i minutes ago"
+msgstr[0] "fa %i minut"
+msgstr[1] "fa %i minuts"
+
+#: ../src/mn-util.c:1259
+#, c-format
+msgid "about %i hour ago"
+msgid_plural "about %i hours ago"
+msgstr[0] "fa %i hora"
+msgstr[1] "fa %i hores"
+
+#: ../src/mn-util.c:1264
+#, c-format
+msgid "about %i day ago"
+msgid_plural "about %i days ago"
+msgstr[0] "fa %i dia"
+msgstr[1] "fa %i dies"
+
+#: ../src/mn-util.c:1269
+#, c-format
+msgid "about %i week ago"
+msgid_plural "about %i weeks ago"
+msgstr[0] "fa %i setmana"
+msgstr[1] "fa %i setmanes"
+
+#: ../src/mn-util.c:1282
+msgid "unknown date"
+msgstr "data desconeguda"
+
+#: ../src/mn-vfs-mailbox.gob:221
+#, c-format
+msgid "unable to monitor %s (%s), poll mode activated"
+msgstr "no es pot monitoritzar %s (%s), s'ha activat el mode de sondeig"
+
+#: ../src/mn-vfs-mailbox.gob:385
+msgid "unknown mailbox format"
+msgstr "format de bstia desconegut"
+
+#: ../src/mn-vfs-mailbox.gob:385
+msgid "does not exist"
+msgstr "no existeix"
+
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:2
+#: ../ui/properties-dialog.glade.h:8
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">General</span>"
+
+#: ../ui/mailbox-properties-dialog.glade.h:3
+msgid "Delay between mail chec_ks:"
+msgstr "Inter_val entre comprovacions:"
+
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "Mailbox _name:"
+msgstr "Nom de la _bstia:"
+
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:6
+msgid "Use De_fault"
+msgstr "Usa el _Predeterminat"
+
+#: ../ui/mailbox-properties-dialog.glade.h:7
+msgid "_Mailbox type:"
+msgstr "T_ipus de bstia:"
+
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:9
+msgid "_Use Default"
+msgstr "_Usa el Predeterminat"
+
+#: ../ui/mailbox-properties-dialog.glade.h:10
+#: ../ui/properties-dialog.glade.h:48
+msgid "minutes"
+msgstr "minuts"
+
+#: ../ui/mailbox-properties-dialog.glade.h:11
+#: ../ui/properties-dialog.glade.h:52
+msgid "seconds"
+msgstr "segons"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:2
+msgid "<span weight=\"bold\">Click Action</span>"
+msgstr "<span weight=\"bold\">Acci en Fer Clic</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:4
+msgid "<span weight=\"bold\">Commands</span>"
+msgstr "<span weight=\"bold\">Comandes</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:6
+msgid "<span weight=\"bold\">Fonts</span>"
+msgstr "<span weight=\"bold\">Fonts</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:10
+msgid "<span weight=\"bold\">Layout</span>"
+msgstr "<span weight=\"bold\">Disposici</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:12
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Llista de Bsties</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:14
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Posici</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:16
+msgid "<span weight=\"bold\">Tooltip Mail Summary</span>"
+msgstr "<span weight=\"bold\">Resum de correu</span>"
+
+#: ../ui/properties-dialog.glade.h:17
+msgid "Co_ntents:"
+msgstr "Co_ntinguts:"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:19
+msgid "General"
+msgstr "General"
+
+#: ../ui/properties-dialog.glade.h:20
+msgid "Hide p_reviously displayed mail"
+msgstr "_Amaga el correus mostrats anteriorment"
+
+#: ../ui/properties-dialog.glade.h:21
+msgid "Hori_zontal offset:"
+msgstr "Distncia _horitzontal:"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:25
+msgid "Mail Summary Popup"
+msgstr "Resum Emergent de Correu"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:27
+msgid "Status Icon"
+msgstr "Icona d'Estat"
+
+#: ../ui/properties-dialog.glade.h:28
+msgid "Use these _fonts:"
+msgstr "Usa les _fonts:"
+
+#: ../ui/properties-dialog.glade.h:29
+msgid "When _new mail arrives:"
+msgstr "En arribar correu _nou:"
+
+#: ../ui/properties-dialog.glade.h:30
+msgid "When all mail has _been read:"
+msgstr "En no haver correu per _llegir:"
+
+#: ../ui/properties-dialog.glade.h:31
+msgid "_Always display"
+msgstr "Mostra _sempre"
+
+#: ../ui/properties-dialog.glade.h:32
+msgid "_Automatically close after:"
+msgstr "Ta_nca automticament desprs de:"
+
+#: ../ui/properties-dialog.glade.h:33
+msgid "_Blink on errors"
+msgstr "_Parpelleja si hi ha errors"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:35
+msgid "_Display a Test Popup"
+msgstr "_Mostra un Resum Emergent de Prova"
+
+#: ../ui/properties-dialog.glade.h:36
+msgid "_Display seen mail"
+msgstr "_Mostra el correu vist"
+
+#: ../ui/properties-dialog.glade.h:37
+msgid "_Display this dialog"
+msgstr "_Mostra aquest dileg"
+
+#: ../ui/properties-dialog.glade.h:38
+msgid "_Enable mail summary popup"
+msgstr "Habilita el _resum emergent de correu"
+
+#: ../ui/properties-dialog.glade.h:39
+msgid "_Launch the mail reader"
+msgstr "E_xecuta el client de correu"
+
+#: ../ui/properties-dialog.glade.h:40
+msgid "_None"
+msgstr "C_ap"
+
+#: ../ui/properties-dialog.glade.h:41
+msgid "_Position:"
+msgstr "_Posici:"
+
+#: ../ui/properties-dialog.glade.h:42
+msgid "_Title:"
+msgstr "Tt_ol:"
+
+#: ../ui/properties-dialog.glade.h:43
+msgid "_Update the mail status"
+msgstr "Act_ualitza l'estat del correu"
+
+#: ../ui/properties-dialog.glade.h:44
+msgid "_Use fonts from theme"
+msgstr "_Usa les fonts del tema"
+
+#: ../ui/properties-dialog.glade.h:45
+msgid "_Vertical offset:"
+msgstr "Distncia _vertical:"
+
+#: ../ui/properties-dialog.glade.h:46
+msgid "icon tooltip's mail summary layout|Co_mpact"
+msgstr "_Compacte"
+
+#: ../ui/properties-dialog.glade.h:47
+msgid "icon tooltip's mail summary layout|_Standard"
+msgstr "_Estndard"
+
+#: ../ui/properties-dialog.glade.h:49
+msgid "pixels"
+msgstr "pxels"
+
+#: ../ui/properties-dialog.glade.h:50
+msgid "popup's mail summary layout|Co_mpact"
+msgstr "_Compacte"
+
+#: ../ui/properties-dialog.glade.h:51
+msgid "popup's mail summary layout|_Standard"
+msgstr "_Estndard"
+
+
diff --git a/po/fr.po b/po/fr.po
@@ -8,10 +8,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: mail-notification 3.0\n"
+"Project-Id-Version: mail-notification 4.0-rc1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-05-16 02:11+0200\n"
-"PO-Revision-Date: 2006-06-14 09:23+0200\n"
+"POT-Creation-Date: 2006-11-27 22:02+0100\n"
+"PO-Revision-Date: 2006-11-27 22:03+0100\n"
 "Last-Translator: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "Language-Team: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "MIME-Version: 1.0\n"
@@ -48,8 +48,9 @@ msgid "Configure Mail Notification"
 msgstr "Configurer l'avertisseur de courrier"
 
 #: ../data/mail-notification-properties.desktop.in.h:2
-#: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:227
-#: ../src/mn-main.c:132 ../src/mn-main.c:302 ../src/mn-main.c:318
+#: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:234
+#: ../src/mn-main.c:142 ../src/mn-main.c:348 ../src/mn-main.c:364
+#: ../src/mn-main.c:440
 msgid "Mail Notification"
 msgstr "Avertisseur de courrier"
 
@@ -57,149 +58,117 @@ msgstr "Avertisseur de courrier"
 msgid "Get notified when new mail arrives"
 msgstr "Etre averti lorsque du nouveau courrier arrive"
 
-#: ../data/mail-notification.schemas.in.h:1
+#: ../data/mail-notification.schemas.in.in.h:1
 msgid "Always display an icon"
 msgstr "Toujours afficher une icône"
 
-#: ../data/mail-notification.schemas.in.h:2
-msgid "Automatically close the mail summary popup"
-msgstr "Fermer automatiquement le popup d'aperçu du courrier"
-
-#: ../data/mail-notification.schemas.in.h:3
+#: ../data/mail-notification.schemas.in.in.h:2
 msgid "Blink on errors"
 msgstr "Clignoter lors d'erreurs"
 
-#: ../data/mail-notification.schemas.in.h:4
+#: ../data/mail-notification.schemas.in.in.h:3
 msgid "Click action"
 msgstr "Action du click"
 
-#: ../data/mail-notification.schemas.in.h:5
+#: ../data/mail-notification.schemas.in.in.h:4
 msgid "Display seen mail"
 msgstr "Afficher le courrier vu"
 
-#: ../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.in.h:5
+msgid "Enable message popups"
+msgstr "Activer les popups"
+
+#: ../data/mail-notification.schemas.in.in.h:6
+msgid "Expire message popups"
+msgstr "Activer l'expiration des popups"
 
-#: ../data/mail-notification.schemas.in.h:7
+#: ../data/mail-notification.schemas.in.in.h:7
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Empreintes digitales des certificats X509 de confiance"
 
-#: ../data/mail-notification.schemas.in.h:8
+#: ../data/mail-notification.schemas.in.in.h:8
 msgid "Height of properties dialog"
 msgstr "Hauteur de la boîte de dialogue contenant les propriétés"
 
-#: ../data/mail-notification.schemas.in.h:9
-msgid "Mail read command"
-msgstr "Commande de courrier lu"
-
-#: ../data/mail-notification.schemas.in.h:10
-msgid "Mail summary popup contents font"
-msgstr "Police du contenu du popup d'aperçu du courrier"
-
-#: ../data/mail-notification.schemas.in.h:11
-msgid "Mail summary popup fonts aspect source"
+#: ../data/mail-notification.schemas.in.in.h:9
+msgid ""
+"If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the "
+"amount of time to wait before expiring message popups (minutes part)."
 msgstr ""
-"Source d'aspect des polices de caractères du popup d'aperçu du courrier"
+"Si /apps/mail-notification/popups/expiration/enabled est \"true\", le délai "
+"d'expiration des popups (minutes)."
 
-#: ../data/mail-notification.schemas.in.h:12
-msgid "Mail summary popup horizontal offset"
-msgstr "Décalage horizontal du popup d'aperçu du courrier"
+#: ../data/mail-notification.schemas.in.in.h:10
+msgid ""
+"If /apps/mail-notification/popups/expiration/enabled is set to \"true\", the "
+"amount of time to wait before expiring message popups (seconds part)."
+msgstr ""
+"Si /apps/mail-notification/popups/expiration/enabled est \\\"true\\\", le "
+"délai d'expiration des popups (secondes)."
 
-#: ../data/mail-notification.schemas.in.h:13
-msgid "Mail summary popup position"
-msgstr "Position du popup d'aperçu du courrier"
+#: ../data/mail-notification.schemas.in.in.h:11
+msgid "Mail changed command"
+msgstr "Commande de courrier changé"
 
-#: ../data/mail-notification.schemas.in.h:14
-msgid "Mail summary popup title font"
-msgstr "Police du titre du popup d'aperçu du courrier"
+#: ../data/mail-notification.schemas.in.in.h:12
+msgid "Mail read command"
+msgstr "Commande de courrier lu"
 
-#: ../data/mail-notification.schemas.in.h:15
-msgid "Mail summary popup vertical offset"
-msgstr "Décalage vertical du popup d'aperçu du courrier"
+#: ../data/mail-notification.schemas.in.in.h:13
+msgid "Message popups position"
+msgstr "Position des popups"
 
-#: ../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.in.h:14
+msgid "Minutes to wait before expiring message popups"
+msgstr "Minutes du délai d'expiration des popups"
 
-#: ../data/mail-notification.schemas.in.h:17
+#: ../data/mail-notification.schemas.in.in.h:15
 msgid "New mail command"
 msgstr "Commande de nouveau message"
 
-#: ../data/mail-notification.schemas.in.h:18
-msgid "Only display recent mail in mail summary popup"
-msgstr ""
-"Afficher uniquement le courrier récent dans le popup d'aperçu du courrier"
-
-#: ../data/mail-notification.schemas.in.h:19
+#: ../data/mail-notification.schemas.in.in.h:16
 msgid "Run a command when all mail is read"
 msgstr "Exécuter une commande lorsque tout le courrier est lu"
 
-#: ../data/mail-notification.schemas.in.h:20
+#: ../data/mail-notification.schemas.in.in.h:17
 msgid "Run a command when new mail arrives"
 msgstr "Exécuter une commande lorsque du nouveau courrier arrive"
 
-#: ../data/mail-notification.schemas.in.h:21
-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.in.h:18
+msgid "Run a command when the message list changes"
+msgstr "Exécuter une commande lorsque la liste des messages change"
+
+#: ../data/mail-notification.schemas.in.in.h:19
+msgid "Seconds to wait before expiring message popups"
+msgstr "Secondes du délai d'expiration des popups"
 
-#: ../data/mail-notification.schemas.in.h:22
+#: ../data/mail-notification.schemas.in.in.h:20
 msgid ""
 "The action to perform when the icon is clicked. Must be \"display-properties-"
-"dialog\", \"launch-mail-reader\" or \"update-mail-status\"."
+"dialog\", \"launch-mail-reader\", \"open-latest-message\" or \"update-mail-"
+"status\"."
 msgstr ""
 "L'action à effectuer lorsque l'icône est clickée. Doit être \"display-"
-"properties-dialog\", \"launch-mail-reader\" ou \"update-mail-status\"."
+"properties-dialog\", \"launch-mail-reader\", \"open-latest-message\" ou "
+"\"update-mail-status\"."
 
-#: ../data/mail-notification.schemas.in.h:23
-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:24
-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:25
-msgid ""
-"The aspect source of the mail summary popup fonts. Must be \"theme\" or "
-"\"custom\"."
-msgstr ""
-"La source d'aspect des polices de caractères du popup d'aperçu du courrier. "
-"Doit être \"theme\" ou \"custom\"."
-
-#: ../data/mail-notification.schemas.in.h:26
+#: ../data/mail-notification.schemas.in.in.h:21
 msgid "The command to run when all mail is read."
 msgstr "La commande à exécuter lorsque tout le courrier est lu"
 
-#: ../data/mail-notification.schemas.in.h:27
+#: ../data/mail-notification.schemas.in.in.h:22
 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:28
-msgid "The custom font to use for the contents of the mail summary popup."
-msgstr ""
-"La police de caractères à utiliser pour le contenu du popup d'aperçu du "
-"courrier."
-
-#: ../data/mail-notification.schemas.in.h:29
-msgid "The custom font to use for the title of the mail summary popup."
-msgstr ""
-"La police de caractères à utiliser pour le titre du popup d'aperçu du "
-"courrier."
+#: ../data/mail-notification.schemas.in.in.h:23
+msgid "The command to run when the message list changes."
+msgstr "La commande à exécuter lorsque la liste des messages change."
 
-#: ../data/mail-notification.schemas.in.h:30
+#: ../data/mail-notification.schemas.in.in.h:24
 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:31
+#: ../data/mail-notification.schemas.in.in.h:25
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
@@ -207,38 +176,18 @@ msgstr ""
 "La liste des serveurs SSL/TLS (hôte:port) de confiance auxquels il manque un "
 "certificat X509."
 
-#: ../data/mail-notification.schemas.in.h:32
+#: ../data/mail-notification.schemas.in.in.h:26
 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:33
-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:34
-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.in.h:27
+msgid "The position of the message popups. Must be \"attached\" or \"free\"."
+msgstr "La position des popups. Doit être \"attached\" ou \"free\"."
 
-#: ../data/mail-notification.schemas.in.h:35
-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 être \"top-left\", \"top-"
-"right\", \"bottom-left\" or \"bottom-right\"."
-
-#: ../data/mail-notification.schemas.in.h:36
+#: ../data/mail-notification.schemas.in.in.h:28
 msgid ""
 "The type of mail summary to display in the icon's tooltip. Must be \"standard"
 "\", \"compact\" or \"none\"."
@@ -246,61 +195,61 @@ msgstr ""
 "Le type d'aperçu du courrier à afficher dans le ballon d'aide de l'icône. "
 "Doit être \"standard\", \"compact\" ou \"aucun\"."
 
-#: ../data/mail-notification.schemas.in.h:37
+#: ../data/mail-notification.schemas.in.in.h:29
 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:38
+#: ../data/mail-notification.schemas.in.in.h:30
 msgid "Tooltip mail summary"
 msgstr "Aperçu du courrier dans le ballon d'aide"
 
-#: ../data/mail-notification.schemas.in.h:39
+#: ../data/mail-notification.schemas.in.in.h:31
 msgid "Trusted servers list"
 msgstr "Liste des serveurs de confiance"
 
-#: ../data/mail-notification.schemas.in.h:40
+#: ../data/mail-notification.schemas.in.in.h:32
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Si l'icône de statut doit clignoter lors d'erreurs ou pas."
 
-#: ../data/mail-notification.schemas.in.h:41
-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:42
+#: ../data/mail-notification.schemas.in.in.h:33
 msgid "Whether to display an icon when there is no new mail or not."
 msgstr ""
 "Si une icône doit être affichée lorsqu'il n'y a pas de nouveau courrier ou "
 "pas."
 
-#: ../data/mail-notification.schemas.in.h:43
+#: ../data/mail-notification.schemas.in.in.h:34
 msgid "Whether to display seen mail or not."
 msgstr "Si le courrier vu doit être affiché ou pas."
 
-#: ../data/mail-notification.schemas.in.h:44
-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.in.h:35
+msgid "Whether to enable message popups or not."
+msgstr "Si les popups doivent être activés ou pas."
 
-#: ../data/mail-notification.schemas.in.h:45
+#: ../data/mail-notification.schemas.in.in.h:36
 msgid ""
-"Whether to hide previously displayed mail in the mail summary popup or not."
+"Whether to expire message popups or not. Must be \"default\", \"false\" or "
+"\"true\"."
 msgstr ""
-"Si le courrier précédemment affiché dans le popup d'aperçu du courrier doit "
-"être caché ou pas."
+"Si l'expiration des popups doit être activée ou pas. Doit être \"default\", "
+"\"false\" ou \"true\"."
 
-#: ../data/mail-notification.schemas.in.h:46
+#: ../data/mail-notification.schemas.in.in.h:37
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Si une commande doit être exécutée lorsque tout le courrier est lu ou pas."
 
-#: ../data/mail-notification.schemas.in.h:47
+#: ../data/mail-notification.schemas.in.in.h:38
 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:48
+#: ../data/mail-notification.schemas.in.in.h:39
+msgid "Whether to run a command when the message list changes or not."
+msgstr ""
+"Si une commande doit être exécutée lorsque la liste des messages change ou "
+"pas."
+
+#: ../data/mail-notification.schemas.in.in.h:40
 msgid "Width of properties dialog"
 msgstr "Largeur de la boîte de dialogue contenant les propriétés"
 
@@ -313,7 +262,7 @@ msgid "The orientation of the tray."
 msgstr "L'orientation du plateau."
 
 #. translators: header capitalization
-#: ../src/mn-about-dialog.gob:49
+#: ../src/mn-about-dialog.gob:50
 msgid "A Mail Notification Icon"
 msgstr "Une icône d'avertissement de courrier"
 
@@ -321,135 +270,148 @@ msgstr "Une icône d'avertissement de courrier"
 #. * translators: Your Name <your-email>
 #. * optionally followed by one or more: \nOther Contributor's Name <his-email>
 #.
-#: ../src/mn-about-dialog.gob:57
+#: ../src/mn-about-dialog.gob:58
 msgid "translator-credits"
 msgstr "Jean-Yves Lefort <jylefort@brutele.be>"
 
-#: ../src/mn-about-dialog.gob:79
-msgid "Unable to open link"
-msgstr "Impossible d'ouvrir le lien"
+#: ../src/mn-auth-combo-box.gob:104
+#: ../src/mn-autodetect-mailbox-properties.gob:110
+msgid "Autodetect"
+msgstr "Autodétecter"
 
-#: ../src/mn-auth-combo-box.gob:103
-#: ../src/mn-autodetect-mailbox-properties.gob:109
-msgid "<span style=\"italic\">autodetect</span>"
-msgstr "<span style=\"italic\">autodétecter</span>"
+#. translators: header capitalization
+#: ../src/mn-authenticated-mailbox-properties.gob:50
+msgid "Account"
+msgstr "Compte"
 
-#: ../src/mn-authenticated-mailbox-properties.gob:46
+#: ../src/mn-authenticated-mailbox-properties.gob:53
 msgid "_Username:"
 msgstr "Nom d'_utilisateur :"
 
-#: ../src/mn-authenticated-mailbox-properties.gob:50
+#: ../src/mn-authenticated-mailbox-properties.gob:57
 msgid "_Password:"
 msgstr "Mot de _passe :"
 
-#: ../src/mn-autodetect-mailbox-properties.gob:110
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:124
+#: ../src/mn-system-vfs-mailbox-properties.gob:60
 msgid "Location"
 msgstr "Emplacement"
 
-#: ../src/mn-autodetect-mailbox-properties.gob:122
+#: ../src/mn-autodetect-mailbox-properties.gob:126
 msgid "_Location:"
 msgstr "_Emplacement :"
 
 #. translators: header capitalization
-#: ../src/mn-autodetect-mailbox-properties.gob:130
+#: ../src/mn-autodetect-mailbox-properties.gob:134
 msgid "_Browse..."
 msgstr "_Parcourir..."
 
 #. translators: header capitalization
-#: ../src/mn-autodetect-mailbox-properties.gob:172
+#: ../src/mn-autodetect-mailbox-properties.gob:176
 msgid "Select a File or Folder"
 msgstr "Sélectionnez un fichier ou dossier"
 
-#: ../src/mn-client-session.c:247
+#: ../src/mn-base-mbox-mailbox-backend.gob:345
+#, c-format
+msgid "unable to close file: %s"
+msgstr "impossible de fermer le fichier : %s"
+
+#: ../src/mn-base-mbox-mailbox-backend.gob:359
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "impossible d'ouvrir la boîte aux lettres : %s"
+
+#: ../src/mn-client-session.c:248
 #, c-format
 msgid "resolving %s"
 msgstr "résolution de %s en cours"
 
-#: ../src/mn-client-session.c:263
+#: ../src/mn-client-session.c:264
 #, c-format
 msgid "unable to resolve %s: %s"
 msgstr "impossible de résoudre %s : %s"
 
-#: ../src/mn-client-session.c:304
+#: ../src/mn-client-session.c:305
 #, c-format
 msgid "network address #%i"
 msgstr "adresse réseau %i"
 
-#: ../src/mn-client-session.c:307
+#: ../src/mn-client-session.c:308
 #, c-format
 msgid "unable to convert network address #%i into textual form: %s"
 msgstr ""
 "impossible de convertir l'adresse réseau %i vers une forme textuelle : %s"
 
-#: ../src/mn-client-session.c:318
+#: ../src/mn-client-session.c:319
 #, c-format
 msgid "%s: unsupported address family"
 msgstr "%s : famille d'adresse non prise en charge"
 
-#: ../src/mn-client-session.c:325
+#: ../src/mn-client-session.c:326
 #, c-format
 msgid "%s: unable to create socket: %s"
 msgstr "%s : impossible de créer un socket : %s"
 
-#: ../src/mn-client-session.c:329
+#: ../src/mn-client-session.c:330
 #, c-format
 msgid "connecting to %s (%s) port %i"
 msgstr "connexion à %s (%s) port %i en cours"
 
-#: ../src/mn-client-session.c:332
+#: ../src/mn-client-session.c:333
 #, c-format
 msgid "unable to connect: %s"
 msgstr "impossible de se connecter : %s"
 
-#: ../src/mn-client-session.c:337
+#: ../src/mn-client-session.c:338
 msgid "connected successfully"
 msgstr "connecté avec succès"
 
 #. if reached, we couldn't find a working address
-#: ../src/mn-client-session.c:351
+#: ../src/mn-client-session.c:352
 #, c-format
 msgid "unable to connect to %s"
 msgstr "impossible de se connecter à %s"
 
-#: ../src/mn-client-session.c:378
+#: ../src/mn-client-session.c:379
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
 msgstr "impossible d'initialiser la bibliothèque OpenSSL : %s"
 
-#: ../src/mn-client-session.c:386
+#: ../src/mn-client-session.c:387
 #, 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:392
+#: ../src/mn-client-session.c:393
 #, 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:398
+#: ../src/mn-client-session.c:399
 #, c-format
 msgid "unable to perform the SSL/TLS handshake: %s"
 msgstr "impossible d'accomplir la négociation SSL/TLS : %s"
 
-#: ../src/mn-client-session.c:404
+#: ../src/mn-client-session.c:405
 msgid "untrusted server"
 msgstr "serveur non fiable"
 
-#: ../src/mn-client-session.c:408
+#: ../src/mn-client-session.c:409
 #, 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:455
+#: ../src/mn-client-session.c:456
 #, c-format
 msgid "%s, fingerprint: %s"
 msgstr "%s, empreinte digitale : %s"
 
-#: ../src/mn-client-session.c:484
+#: ../src/mn-client-session.c:485
 msgid "missing certificate"
 msgstr "certificat manquant"
 
-#: ../src/mn-client-session.c:510
+#: ../src/mn-client-session.c:511
 #, c-format
 msgid ""
 "Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -468,189 +430,180 @@ msgstr ""
 "vous êtes connecté à \"%s\". Si vous choisissez de vous connecter au "
 "serveur, ce message ne sera plus affiché."
 
-#: ../src/mn-client-session.c:525
+#: ../src/mn-client-session.c:526
 msgid "Connect to untrusted server?"
 msgstr "Se connecter au serveur non fiable ?"
 
-#: ../src/mn-client-session.c:590
+#: ../src/mn-client-session.c:591
 #, 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:619
+#: ../src/mn-client-session.c:620
 #, c-format
 msgid "unable to parse response \"%s\""
 msgstr "impossible d'interpréter la réponse \"%s\""
 
-#: ../src/mn-client-session.c:669 ../src/mn-client-session.c:676
+#: ../src/mn-client-session.c:670 ../src/mn-client-session.c:677
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "impossible de lire depuis le serveur : %s"
 
-#: ../src/mn-client-session.c:674
+#: ../src/mn-client-session.c:675
 msgid "unable to read from server: EOF"
 msgstr "impossible de lire depuis le serveur : EOF"
 
-#: ../src/mn-client-session.c:686
+#: ../src/mn-client-session.c:687
 #, 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:831
+#: ../src/mn-client-session.c:832
 #, 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:862 ../src/mn-client-session.c:869
+#: ../src/mn-client-session.c:863 ../src/mn-client-session.c:870
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "impossible d'écrire vers le serveur : %s"
 
-#: ../src/mn-client-session.c:867
+#: ../src/mn-client-session.c:868
 msgid "unable to write to server: EOF"
 msgstr "impossible d'écrire vers le serveur : EOF"
 
-#: ../src/mn-client-session.c:898 ../src/mn-pop3-mailbox.gob:433
+#: ../src/mn-client-session.c:899 ../src/mn-pop3-mailbox.gob:434
 #, c-format
 msgid "unable to encode Base64: %s"
-msgstr "impossible d'encoder en Base64: %s"
+msgstr "impossible d'encoder en Base64 : %s"
 
-#: ../src/mn-client-session.c:1075
+#: ../src/mn-client-session.c:1076
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "impossible d'initialiser la bibliothèque SASL : %s"
 
-#: ../src/mn-client-session.c:1087
+#: ../src/mn-client-session.c:1088
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr "impossible d'obtenir l'adresse locale du socket : %s"
 
-#: ../src/mn-client-session.c:1093
+#: ../src/mn-client-session.c:1094
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr "impossible d'obtenir l'adresse distante du socket : %s"
 
-#: ../src/mn-client-session.c:1127
+#: ../src/mn-client-session.c:1128
 #, c-format
 msgid "unable to set SASL security properties: %s"
 msgstr "impossible de spécifier les propriétés de sécurité SASL : %s"
 
-#: ../src/mn-client-session.c:1151
+#: ../src/mn-client-session.c:1152
 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:1170
+#: ../src/mn-client-session.c:1171
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "impossible de démarrer l'authentification SASL : %s"
 
-#: ../src/mn-client-session.c:1174
+#: ../src/mn-client-session.c:1175
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "impossible de créer une connexion SASL : %s"
 
-#: ../src/mn-client-session.c:1221
+#: ../src/mn-client-session.c:1222
 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:1238
+#: ../src/mn-client-session.c:1239
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, annulation de l'authentification SASL"
 
 #. compliance error
-#: ../src/mn-client-session.c:1243
+#: ../src/mn-client-session.c:1244
 #, 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:1279
+#: ../src/mn-client-session.c:1280
 #, 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:1284
+#: ../src/mn-client-session.c:1285
 #, 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:1290
+#: ../src/mn-client-session.c:1291
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr "avertissement : impossible d'obtenir la propriété SASL_SSF : %s"
 
-#: ../src/mn-client-session.c:1449
+#: ../src/mn-client-session.c:1450
 msgid "unknown server error"
 msgstr "erreur serveur inconnue"
 
-#: ../src/mn-compact-message-view.gob:45
+#: ../src/mn-compact-message-view.gob:46
 msgid "Mailbox"
 msgstr "Boîte aux lettres"
 
-#: ../src/mn-compact-message-view.gob:46
+#: ../src/mn-compact-message-view.gob:47
 msgid "From"
 msgstr "De"
 
-#: ../src/mn-compact-message-view.gob:47
+#: ../src/mn-compact-message-view.gob:48
 msgid "Subject"
 msgstr "Sujet"
 
-#: ../src/mn-compact-message-view.gob:48
+#: ../src/mn-compact-message-view.gob:49
 msgid "Sent"
 msgstr "Envoyé"
 
-#: ../src/mn-conf.c:262
+#: ../src/mn-conf.c:281
 msgid "A directory creation error has occurred"
 msgstr "Une erreur de création de répertoire s'est produite"
 
-#: ../src/mn-conf.c:263
+#: ../src/mn-conf.c:282
 #, c-format
 msgid "Unable to create directory \"%s\": %s."
-msgstr "Impossible de créer le répertoire \"%s\": %s."
+msgstr "Impossible de créer le répertoire \"%s\" : %s."
 
-#: ../src/mn-conf.c:402
+#: ../src/mn-conf.c:406
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "en train de supprimer récursivement %s"
 
-#: ../src/mn-conf.c:406
+#: ../src/mn-conf.c:410
 msgid "syncing the GConf database"
 msgstr "en train de synchroniser la base de données GConf"
 
-#: ../src/mn-conf.c:409
+#: ../src/mn-conf.c:413
 msgid "completed"
 msgstr "terminé"
 
-#: ../src/mn-conf.c:1137
-msgid "A command error has occurred in Mail Notification"
-msgstr "Une erreur de commande s'est produite dans l'avertisseur de courrier"
-
-#: ../src/mn-conf.c:1138
-#, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "Impossible d'exécuter \"%s\": %s"
-
-#: ../src/mn-custom-vfs-mailbox.gob:76
+#: ../src/mn-custom-vfs-mailbox.gob:77
 msgid "invalid location"
 msgstr "emplacement invalide"
 
-#: ../src/mn-evolution-folder-tree-control.c:91
+#: mn-evolution-folder-tree-control.gob:69
 msgid "The currently selected URI"
 msgstr "L'URI actuellement sélectionnée"
 
 #. translators: header capitalization
-#: ../src/mn-evolution-mailbox-properties.gob:68
+#: ../src/mn-evolution-mailbox-properties.gob:79
 msgid "Folder"
 msgstr "Dossier"
 
-#: ../src/mn-evolution-mailbox-properties.gob:159
+#: ../src/mn-evolution-mailbox-properties.gob:204
 msgid ""
 "Mail Notification can not contact Evolution. Make sure that Evolution is "
 "running and that the Evolution Mail Notification plugin is loaded."
@@ -659,19 +612,23 @@ msgstr ""
 "qu'Evolution est en cours de fonctionnement et que l'extension Evolution "
 "\"Avertisseur de courrier\" est chargée."
 
-#: ../src/mn-evolution-mailbox.gob:75
+#: ../src/mn-evolution-mailbox.gob:78
 msgid "folder not found"
 msgstr "dossier non trouvé"
 
-#: ../src/mn-evolution-mailbox.gob:216
+#: ../src/mn-evolution-mailbox.gob:79
+msgid "message not found"
+msgstr "message non trouvé"
+
+#: ../src/mn-evolution-mailbox.gob:220
 msgid "unable to contact Evolution"
 msgstr "impossible de contacter Evolution"
 
-#: ../src/mn-evolution-plugin.c:136 ../src/mn-evolution-plugin.c:140
+#: ../src/mn-evolution-plugin.c:102 ../src/mn-evolution-plugin.c:106
 msgid "Unable to activate the Mail Notification plugin"
 msgstr "Impossible d'activer l'extension \"Avertisseur de courrier\""
 
-#: ../src/mn-evolution-plugin.c:136
+#: ../src/mn-evolution-plugin.c:102
 #, c-format
 msgid ""
 "Bonobo could not locate the %s server. Please check your Mail Notification "
@@ -680,7 +637,7 @@ msgstr ""
 "Bonobo n'a pu localiser le serveur %s. Veuillez vérifier votre installation "
 "de l'avertisseur de courrier."
 
-#: ../src/mn-evolution-plugin.c:140 ../src/mn-main.c:460
+#: ../src/mn-evolution-plugin.c:106 ../src/mn-main.c:518
 #, c-format
 msgid ""
 "Bonobo was unable to register the %s server. Please check your Mail "
@@ -689,103 +646,105 @@ msgstr ""
 "Bonobo n'a pu inscrire le serveur %s. Veuillez vérifier votre installation "
 "de l'avertisseur de courrier."
 
-#: ../src/mn-gmail-mailbox.gob:103
+#: ../src/mn-gmail-mailbox.gob:104
 msgid "invalid feed location"
 msgstr "emplacement d'alimentation non valide"
 
-#: ../src/mn-gmail-mailbox.gob:117
+#: ../src/mn-gmail-mailbox.gob:118
 #, c-format
 msgid "retrieving feed from %s"
 msgstr "obtention de l'alimentation depuis %s en cours"
 
-#: ../src/mn-gmail-mailbox.gob:124
+#: ../src/mn-gmail-mailbox.gob:125
 #, c-format
 msgid "unable to retrieve feed: %s"
 msgstr "impossible d'obtenir l'alimentation : %s"
 
-#: ../src/mn-gmail-mailbox.gob:139 ../src/mn-gmail-mailbox.gob:187
+#: ../src/mn-gmail-mailbox.gob:140 ../src/mn-gmail-mailbox.gob:191
 msgid "unable to parse feed"
 msgstr "impossible d'interpréter l'alimentation"
 
-#: ../src/mn-gmime-stream-vfs.gob:50
-#: ../src/mn-sylpheed-mailbox-backend.gob:205
+#: ../src/mn-gmime-stream-vfs.gob:51
+#: ../src/mn-sylpheed-mailbox-backend.gob:209
 #, c-format
 msgid "unable to read %s: %s"
 msgstr "impossible de lire %s : %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:52
+#: ../src/mn-gmime-stream-vfs.gob:53
 #, c-format
 msgid "unable to write to %s: %s"
 msgstr "impossible d'écrire vers %s : %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:54
+#: ../src/mn-gmime-stream-vfs.gob:55
 #, c-format
 msgid "unable to seek in %s: %s"
 msgstr "impossible de chercher dans %s : %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:56
+#: ../src/mn-gmime-stream-vfs.gob:57
 #, 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:58 ../src/mn-mh-mailbox-backend.gob:164
+#: ../src/mn-gmime-stream-vfs.gob:59 ../src/mn-mh-mailbox-backend.gob:167
 #, c-format
 msgid "unable to close %s: %s"
 msgstr "impossible de fermer %s : %s"
 
-#: ../src/mn-imap-mailbox-properties.gob:114
-#: ../src/mn-standard-message-view.gob:62
-msgid "Mailbox:"
-msgstr "Boîte aux lettres :"
-
+#. translators: header capitalization
 #: ../src/mn-imap-mailbox-properties.gob:118
-msgid "in_box"
-msgstr "_boîte de réception"
+msgid "IMAP Mailbox"
+msgstr "Boîte aux lettres IMAP"
 
-#: ../src/mn-imap-mailbox-properties.gob:129
-msgid "oth_er:"
-msgstr "autr_e :"
+#: ../src/mn-imap-mailbox-properties.gob:120
+msgid "In_box"
+msgstr "_Boîte de réception"
 
-#: ../src/mn-imap-mailbox-properties.gob:140
-msgid "ne_ver"
-msgstr "_jamais"
+#: ../src/mn-imap-mailbox-properties.gob:125
+msgid "_Other:"
+msgstr "Autr_e :"
 
-#: ../src/mn-imap-mailbox-properties.gob:141
-msgid "au_todetect"
-msgstr "autodéte_cter"
+#. translators: header capitalization
+#: ../src/mn-imap-mailbox-properties.gob:138
+msgid "Use the IDLE Extension"
+msgstr "Utiliser l'extension IDLE"
 
 #: ../src/mn-imap-mailbox-properties.gob:142
-msgid "al_ways"
-msgstr "t_oujours"
+#: ../ui/properties-dialog.glade.h:35
+msgid "_Never"
+msgstr "Jamai_s"
+
+#: ../src/mn-imap-mailbox-properties.gob:143
+msgid "A_utodetect"
+msgstr "Auto_détecter"
 
-#: ../src/mn-imap-mailbox-properties.gob:174
-msgid "Use the <span style=\"italic\">IDLE</span> extension:"
-msgstr "Utiliser l'extension <span style=\"italic\">IDLE</span>:"
+#: ../src/mn-imap-mailbox-properties.gob:144
+msgid "Al_ways"
+msgstr "_Toujours"
 
-#: ../src/mn-imap-mailbox.gob:384
+#: ../src/mn-imap-mailbox.gob:385
 msgid "server did not send capabilities"
 msgstr "le serveur n'a pas envoyé ses possibilités"
 
-#: ../src/mn-imap-mailbox.gob:551
+#: ../src/mn-imap-mailbox.gob:552
 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:552
+#: ../src/mn-imap-mailbox.gob:553
 msgid "unable to login"
 msgstr "impossible d'ouvrir la session"
 
 #. compliance error
-#: ../src/mn-imap-mailbox.gob:752
+#: ../src/mn-imap-mailbox.gob:753
 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:822
+#: ../src/mn-imap-mailbox.gob:823
 msgid "unable to fetch message"
 msgstr "impossible d'obtenir le message"
 
-#: ../src/mn-imap-mailbox.gob:847
+#: ../src/mn-imap-mailbox.gob:848
 msgid ""
 "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, "
 "logging out"
@@ -793,12 +752,12 @@ msgstr ""
 "la valeur de l'option \"Utiliser l'extension IDLE\" dans les propriétés de "
 "la boîte aux lettres est \"jamais\", fermeture de session"
 
-#: ../src/mn-imap-mailbox.gob:858
+#: ../src/mn-imap-mailbox.gob:859
 #, c-format
 msgid "the remote server runs %s, not using the IDLE extension"
 msgstr "le serveur distant utilise %s, l'extension IDLE ne sera pas utilisée"
 
-#: ../src/mn-imap-mailbox.gob:863
+#: ../src/mn-imap-mailbox.gob:864
 #, c-format
 msgid ""
 "the remote server runs %s, the IDLE extension might not function properly"
@@ -806,16 +765,16 @@ msgstr ""
 "le serveur distant utilise %s, il se peut que l'extension IDLE ne fonctionne "
 "pas correctement"
 
-#: ../src/mn-imap-mailbox.gob:872
+#: ../src/mn-imap-mailbox.gob:873
 msgid "the remote server does not support the IDLE extension, logging out"
 msgstr ""
 "le serveur distant ne supporte pas l'extension IDLE, fermeture de session"
 
-#: ../src/mn-imap-mailbox.gob:1377 ../src/mn-pop3-mailbox.gob:296
+#: ../src/mn-imap-mailbox.gob:1378 ../src/mn-pop3-mailbox.gob:297
 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:1401 ../src/mn-pop3-mailbox.gob:947
+#: ../src/mn-imap-mailbox.gob:1402 ../src/mn-pop3-mailbox.gob:954
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -823,143 +782,129 @@ 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:1411 ../src/mn-pop3-mailbox.gob:967
+#: ../src/mn-imap-mailbox.gob:1412 ../src/mn-pop3-mailbox.gob:974
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "mécanisme d'authentification inconnu \"%s\""
 
-#: ../src/mn-imap-mailbox.gob:1443 ../src/mn-pop3-mailbox.gob:1003
+#: ../src/mn-imap-mailbox.gob:1444 ../src/mn-pop3-mailbox.gob:1010
 #, c-format
 msgid "disabling mechanism \"%s\" and retrying SASL authentication"
 msgstr ""
 "désactivation du mécanisme \"%s\" et nouvelle tentative d'authentification "
 "SASL"
 
-#: ../src/mn-imap-mailbox.gob:1455
+#: ../src/mn-imap-mailbox.gob:1456
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "rétrogradation vers l'authentification IMAP LOGIN"
 
-#: ../src/mn-imap-mailbox.gob:1467 ../src/mn-pop3-mailbox.gob:1032
+#: ../src/mn-imap-mailbox.gob:1468 ../src/mn-pop3-mailbox.gob:1039
 msgid "authentication failed"
 msgstr "l'authentification a échoué"
 
 #. success; caller must switch state itself
 #. compliance error
-#: ../src/mn-imap-mailbox.gob:1528
+#: ../src/mn-imap-mailbox.gob:1529
 msgid "server did not send search results"
 msgstr "le serveur n'a pas envoyé les résultats de la recherche"
 
 #. translators: header capitalization
-#: ../src/mn-mail-icon.gob:89
+#: ../src/mn-mail-icon.gob:93
 msgid "_Mail Reader"
 msgstr "_Lecteur de courrier"
 
 #. translators: header capitalization
-#: ../src/mn-mail-icon.gob:91 ../src/mn-mailbox-view.gob:312
+#: ../src/mn-mail-icon.gob:95
+msgid "_Open Latest Message"
+msgstr "_Ouvrir le dernier message"
+
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:97 ../src/mn-mailbox-view.gob:314
 msgid "_Update"
 msgstr "_Mettre à jour"
 
 #. translators: header capitalization
-#: ../src/mn-mail-icon.gob:98
+#: ../src/mn-mail-icon.gob:104
 msgid "R_emove From Notification Area"
 msgstr "_Enlever de la zone d'avertissement"
 
 #. translators: header capitalization
-#: ../src/mn-mail-summary-popup.gob:270
-msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
-msgstr "<span size=\"larger\" weight=\"bold\">Aperçu du courrier</span>"
-
-#. translators: header capitalization
-#: ../src/mn-mail-summary-popup.gob:277
-msgid "<span weight=\"bold\">Mail Summary</span>"
-msgstr "<span weight=\"bold\">Aperçu du courrier</span>"
-
-#. translators: header capitalization
-#: ../src/mn-mailbox-properties-dialog.gob:89
+#: ../src/mn-mailbox-properties-dialog.gob:95
 #, c-format
 msgid "%s Properties"
 msgstr "Propriétés de %s"
 
 #. translators: header capitalization
-#: ../src/mn-mailbox-properties-dialog.gob:232
+#: ../src/mn-mailbox-properties-dialog.gob:244
 msgid "Add a Mailbox"
 msgstr "Ajouter une boîte aux lettres"
 
-#: ../src/mn-mailbox-view.gob:248
+#: ../src/mn-mailbox-view.gob:250
 msgid "A paste error has occurred"
 msgstr "Une erreur de collage s'est produite"
 
-#: ../src/mn-mailbox-view.gob:557
+#: ../src/mn-mailbox-view.gob:566
 #, c-format
 msgid "unhandled %s mailbox (%s)"
 msgstr "boîte aux lettres %s non prise en charge (%s)"
 
-#: ../src/mn-mailbox-view.gob:562
+#: ../src/mn-mailbox-view.gob:571
 #, c-format
 msgid "%s mailbox"
 msgstr "boîte aux lettres %s"
 
-#: ../src/mn-mailbox-view.gob:577
+#: ../src/mn-mailbox-view.gob:586
 msgid "detecting mailbox type..."
 msgstr "détection du type de boîte aux lettres en cours..."
 
-#: ../src/mn-mailbox.gob:472
+#: ../src/mn-mailbox.gob:504
 msgid "\"type\" attribute missing"
 msgstr "attribut \"type\" manquant"
 
-#: ../src/mn-mailbox.gob:479
+#: ../src/mn-mailbox.gob:511
 #, c-format
 msgid "unknown mailbox type \"%s\""
 msgstr "type de boîte aux lettres \"%s\" inconnu"
 
-#: ../src/mn-mailbox.gob:499
-#, c-format
-msgid ""
-"property \"%s\": unable to transform string \"%s\" into a value of type \"%s"
-"\""
-msgstr ""
-"propriété \"%s\" : impossible de transformer la chaîne de caractères \"%s\" "
-"en une valeur de type \"%s\""
-
-#: ../src/mn-mailbox.gob:948
+#: ../src/mn-mailbox.gob:907
 #, c-format
 msgid "property \"%s\" has no value"
 msgstr "la propriété \"%s\" n'a pas de valeur"
 
-#: ../src/mn-mailboxes.gob:239
+#: ../src/mn-mailboxes.gob:241
 msgid "An error has occurred while importing old mailboxes"
 msgstr ""
 "Une erreur s'est produite lors de l'importation des anciennes boîtes aux "
 "lettres"
 
-#: ../src/mn-mailboxes.gob:265
+#: ../src/mn-mailboxes.gob:267
 msgid "Unable to load the mailboxes configuration"
 msgstr "Impossible de charger la configuration des boîtes aux lettres"
 
-#: ../src/mn-mailboxes.gob:311
+#: ../src/mn-mailboxes.gob:313
 msgid "Unable to parse the XML document."
 msgstr "Impossible d'interpréter le document XML."
 
-#: ../src/mn-mailboxes.gob:318
+#: ../src/mn-mailboxes.gob:320
 msgid "The root element is missing."
 msgstr "L'élément racine est manquant."
 
-#: ../src/mn-mailboxes.gob:324
+#: ../src/mn-mailboxes.gob:326
 #, c-format
 msgid "The root element \"%s\" is invalid."
 msgstr "L'élément racine \"%s\" est invalide."
 
-#: ../src/mn-mailboxes.gob:347
+#: ../src/mn-mailboxes.gob:349
 #, c-format
 msgid "On line %i: %s."
 msgstr "A la ligne %i : %s."
 
-#: ../src/mn-mailboxes.gob:352
+#: ../src/mn-mailboxes.gob:354
 #, c-format
 msgid "On line %i: unknown element \"%s\"."
 msgstr "A la ligne %i : élément \"%s\" inconnu."
 
-#: ../src/mn-mailboxes.gob:361
+#: ../src/mn-mailboxes.gob:363
 msgid "An error has occurred while loading the mailboxes configuration"
 msgid_plural "Errors have occurred while loading the mailboxes configuration"
 msgstr[0] ""
@@ -969,131 +914,139 @@ msgstr[1] ""
 "Des erreurs se sont produites lors du chargement de la configuration des "
 "boîtes aux lettres"
 
-#: ../src/mn-mailboxes.gob:386
+#: ../src/mn-mailboxes.gob:388
 msgid "Unable to save the mailboxes configuration"
 msgstr "Impossible de sauvegarder la configuration des boîtes aux lettres"
 
-#: ../src/mn-mailboxes.gob:428
+#: ../src/mn-mailboxes.gob:430 ../src/mn-vfs.c:240
 #, c-format
 msgid "Unable to remove %s: %s."
 msgstr "Impossible d'enlever %s : %s."
 
-#: ../src/mn-mailboxes.gob:436
+#: ../src/mn-mailboxes.gob:438
 #, c-format
 msgid "Unable to create %s: %s."
 msgstr "Impossible de créer %s : %s."
 
-#: ../src/mn-mailboxes.gob:443
+#: ../src/mn-mailboxes.gob:445
 #, c-format
 msgid "Unable to open %s for writing: %s."
 msgstr "Impossible d'ouvrir %s en mode écriture : %s."
 
-#: ../src/mn-mailboxes.gob:450
+#: ../src/mn-mailboxes.gob:452
 msgid "Unable to write the XML document."
 msgstr "Impossible d'écrire le document XML."
 
-#: ../src/mn-mailboxes.gob:456
+#: ../src/mn-mailboxes.gob:458
 #, c-format
 msgid "Unable to close %s: %s."
 msgstr "Impossible de fermer %s : %s."
 
-#: ../src/mn-mailboxes.gob:466 ../src/mn-mailboxes.gob:473
+#: ../src/mn-mailboxes.gob:468 ../src/mn-mailboxes.gob:475 ../src/mn-vfs.c:258
+#: ../src/mn-vfs.c:266
 #, c-format
 msgid "Unable to rename %s to %s: %s."
 msgstr "Impossible de renommer %s en %s : %s."
 
 #. non fatal
-#: ../src/mn-mailboxes.gob:479
+#: ../src/mn-mailboxes.gob:481 ../src/mn-vfs.c:276
 #, c-format
 msgid "unable to delete %s: %s"
 msgstr "impossible de supprimer %s : %s"
 
-#: ../src/mn-mailboxes.gob:509
+#: ../src/mn-mailboxes.gob:511
 #, c-format
 msgid "%s has %i new message"
 msgid_plural "%s has %i new messages"
 msgstr[0] "%s a %i nouveau message"
 msgstr[1] "%s a %i nouveaux messages"
 
-#: ../src/mn-mailboxes.gob:535
+#: ../src/mn-mailboxes.gob:537
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s a indiqué une erreur : %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:125
+#: ../src/mn-maildir-mailbox-backend.gob:129
 #, c-format
 msgid "unable to open folder \"%s\": %s"
-msgstr "impossible d'ouvrir le dossier \"%s\": %s"
+msgstr "impossible d'ouvrir le dossier \"%s\" : %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:173
+#: ../src/mn-maildir-mailbox-backend.gob:178
 #, c-format
 msgid "unable to close folder \"%s\": %s"
-msgstr "impossible de fermer le dossier \"%s\": %s"
+msgstr "impossible de fermer le dossier \"%s\" : %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:176
+#: ../src/mn-maildir-mailbox-backend.gob:181
 #, c-format
 msgid "error while reading folder \"%s\": %s"
-msgstr "erreur lors de la lecture du dossier \"%s\": %s"
+msgstr "erreur lors de la lecture du dossier \"%s\" : %s"
 
-#: ../src/mn-main.c:100
+#: ../src/mn-main.c:109
 msgid "yes"
 msgstr "oui"
 
-#: ../src/mn-main.c:100
+#: ../src/mn-main.c:109
 msgid "no"
 msgstr "non"
 
-#: ../src/mn-main.c:132
+#: ../src/mn-main.c:142
 #, c-format
 msgid "%s version %s\n"
 msgstr "%s version %s\n"
 
-#: ../src/mn-main.c:137
+#: ../src/mn-main.c:147
 msgid "Mailbox backends:\n"
 msgstr "Prises en charge de boîtes aux lettres :\n"
 
-#: ../src/mn-main.c:142
+#: ../src/mn-main.c:152
 msgid "POP3 and IMAP features:\n"
 msgstr "Fonctionnalités POP3 et IMAP :\n"
 
-#: ../src/mn-main.c:147
+#: ../src/mn-main.c:157
 msgid "Sylpheed features:\n"
-msgstr "Fonctionnalités Sylpheed:\n"
+msgstr "Fonctionnalités Sylpheed :\n"
 
-#: ../src/mn-main.c:198
+#: ../src/mn-main.c:205
 #, c-format
 msgid "A Bonobo exception (%s) has occurred in %s()."
 msgstr "Une exception Bonobo (%s) s'est produite dans %s()."
 
-#: ../src/mn-main.c:220
+#: ../src/mn-main.c:247
+#, c-format
+msgid "%s option ignored since Mail Notification is not already running"
+msgstr ""
+"option %s ignorée puisque l'avertisseur de courrier n'est pas déjà en cours "
+"d'exécution"
+
+#: ../src/mn-main.c:267
 msgid "Show version information"
 msgstr "Afficher les informations de version"
 
-#: ../src/mn-main.c:229
+#: ../src/mn-main.c:276
 msgid "Enable informational output"
 msgstr "Activer la sortie informationnelle"
 
-#: ../src/mn-main.c:238
+#: ../src/mn-main.c:285
 msgid "Display the properties dialog"
 msgstr "Afficher la boîte de dialogue contenant les propriétés"
 
-#: ../src/mn-main.c:247
+#: ../src/mn-main.c:294
 msgid "Display the about dialog"
 msgstr "Afficher la boîte de dialogue \"à propos\""
 
-#: ../src/mn-main.c:256
-msgid "Close the mail summary popup"
-msgstr "Fermer le popup d'aperçu du courrier"
-
-#: ../src/mn-main.c:265
+#: ../src/mn-main.c:303
 msgid "Update the mail status"
 msgstr "Mettre à jour le statut du courrier"
 
-#: ../src/mn-main.c:274
+#: ../src/mn-main.c:312
+msgid "Print a XML mail summary"
+msgstr "Afficher un aperçu du courrier XML"
+
+#: ../src/mn-main.c:321
 msgid "Unset obsolete GConf configuration"
 msgstr "Supprimer la configuration GConf obsolète"
 
-#: ../src/mn-main.c:283
+#: ../src/mn-main.c:330
 msgid "Quit Mail Notification"
 msgstr "Quitter l'avertisseur de courrier"
 
@@ -1101,11 +1054,11 @@ msgstr "Quitter l'avertisseur de courrier"
 #. * We cannot use mn_fatal_error_dialog() because gtk_init() has
 #. * not been called yet.
 #.
-#: ../src/mn-main.c:310
+#: ../src/mn-main.c:356
 msgid "multi-threading is not available"
 msgstr "le multi-threading n'est pas disponible"
 
-#: ../src/mn-main.c:365
+#: ../src/mn-main.c:407
 msgid ""
 "Bonobo could not locate the automation object. Please check your Mail "
 "Notification installation."
@@ -1113,27 +1066,40 @@ msgstr ""
 "Bonobo n'a pu localiser l'objet automation. Veuillez vérifier votre "
 "installation de l'avertisseur de courrier."
 
-#: ../src/mn-main.c:371
+#: ../src/mn-main.c:413
 msgid "quitting Mail Notification"
 msgstr "en train de quitter l'avertisseur de courrier"
 
-#: ../src/mn-main.c:375
+#: ../src/mn-main.c:417
 msgid "Mail Notification is not running"
 msgstr "L'avertisseur de courrier n'est pas en cours d'exécution"
 
-#: ../src/mn-main.c:390
+#: ../src/mn-main.c:432
 msgid "Unable to initialize the GnomeVFS library."
 msgstr "Impossible d'initialiser la bibliothèque GnomeVFS."
 
-#: ../src/mn-main.c:438
+#: ../src/mn-main.c:442
+msgid "An initialization error has occurred in Mail Notification"
+msgstr ""
+"Une erreur d'initialisation s'est produite dans l'avertisseur de courrier"
+
+#: ../src/mn-main.c:443
+msgid ""
+"Unable to initialize the notification library. Message popups will not be "
+"displayed."
+msgstr ""
+"Impossible d'initialiser la bibliothèque d'avertissement. Les popups ne "
+"seront pas affichés."
+
+#: ../src/mn-main.c:481
 msgid "updating the mail status"
 msgstr "mise à jour du statut du courrier"
 
-#: ../src/mn-main.c:446
+#: ../src/mn-main.c:497
 msgid "Mail Notification is already running"
 msgstr "L'avertisseur de courrier est déjà en cours d'exécution"
 
-#: ../src/mn-main.c:456
+#: ../src/mn-main.c:514
 #, c-format
 msgid ""
 "Bonobo could not locate the %s file. Please check your Mail Notification "
@@ -1142,77 +1108,85 @@ msgstr ""
 "Bonobo n'a pu localiser le fichier %s. Veuillez vérifier votre installation "
 "de l'avertisseur de courrier."
 
-#: ../src/mn-mbox-mailbox-backend.gob:281
-#, c-format
-msgid "unable to close file: %s"
-msgstr "impossible de fermer le fichier : %s"
-
-#: ../src/mn-mbox-mailbox-backend.gob:298
-#, c-format
-msgid "unable to open mailbox: %s"
-msgstr "impossible d'ouvrir la boîte aux lettres : %s"
-
-#: ../src/mn-message-mime.c:121
+#: ../src/mn-message-mime.c:168
 msgid "unable to parse MIME message"
 msgstr "impossible d'interpréter le message MIME"
 
-#: ../src/mn-message.gob:111
+#: ../src/mn-message.gob:144
 msgid "Unknown"
 msgstr "Inconnu"
 
-#. translators: "none" is used like "Mailbox: none"
-#: ../src/mn-message.gob:130
-msgid "none"
-msgstr "aucune"
+#: ../src/mn-message.gob:207
+msgid "unterminated substitution"
+msgstr "substitution non terminée"
+
+#: ../src/mn-message.gob:246
+#, c-format
+msgid "unknown substitution \"%s\""
+msgstr "substitution \"%s\" inconnue"
+
+#: ../src/mn-message.gob:249
+msgid "empty substitution"
+msgstr "substitution vide"
 
-#: ../src/mn-mh-mailbox-backend.gob:167
+#: ../src/mn-message.gob:312 ../src/mn-util.c:1372
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "Impossible d'exécuter \"%s\" : %s"
+
+#: ../src/mn-mh-mailbox-backend.gob:170
 #, c-format
 msgid "error while reading %s: %s"
 msgstr "erreur lors de la lecture de %s : %s"
 
-#: ../src/mn-mh-mailbox-backend.gob:180
+#: ../src/mn-mh-mailbox-backend.gob:183
 #, c-format
 msgid "unable to open %s: %s"
 msgstr "impossible d'ouvrir %s : %s"
 
-#: ../src/mn-pi-mailbox-properties.gob:67
-msgid "sta_ndard"
-msgstr "_standard"
+#: ../src/mn-pi-mailbox-properties.gob:70
+msgid "_Standard"
+msgstr "_Standard"
 
-#: ../src/mn-pi-mailbox-properties.gob:68
-msgid "in-band SS_L/TLS"
+#: ../src/mn-pi-mailbox-properties.gob:71
+msgid "In-_band SSL/TLS"
 msgstr "SS_L/TLS interne"
 
-#: ../src/mn-pi-mailbox-properties.gob:69
-msgid "SSL/TLS on sepa_rate port"
+#: ../src/mn-pi-mailbox-properties.gob:72
+msgid "SSL/TLS on s_eparate port"
 msgstr "SSL/TLS sur port sépa_ré"
 
-#: ../src/mn-pi-mailbox-properties.gob:73
-msgid "Ho_stname:"
-msgstr "Nom d'_hôte :"
+#: ../src/mn-pi-mailbox-properties.gob:76
+msgid "_Server:"
+msgstr "_Serveur :"
 
 #. translators: header capitalization
-#: ../src/mn-pi-mailbox-properties.gob:94
-msgid "_Details"
-msgstr "_Détails"
-
-#: ../src/mn-pi-mailbox-properties.gob:149
-msgid "Connection type:"
-msgstr "Type de connexion :"
+#: ../src/mn-pi-mailbox-properties.gob:96
+msgid "Connection Type"
+msgstr "Type de connexion"
 
-#: ../src/mn-pi-mailbox-properties.gob:156
+#: ../src/mn-pi-mailbox-properties.gob:140
 msgid "Port:"
 msgstr "Port :"
 
-#: ../src/mn-pi-mailbox-properties.gob:179
-msgid "Authent_ication mechanism:"
-msgstr "Mécanisme d'authenti_fication :"
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox-properties.gob:167
+msgid "Authentication"
+msgstr "Authentification"
+
+#: ../src/mn-pi-mailbox-properties.gob:171
+msgid "_Mechanism:"
+msgstr "_Mécanisme :"
 
-#: ../src/mn-pi-mailbox.gob:151
+#: ../src/mn-pi-mailbox-properties.gob:205
+msgid "Connection"
+msgstr "Connexion"
+
+#: ../src/mn-pi-mailbox.gob:153
 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-pi-mailbox.gob:317
+#: ../src/mn-pi-mailbox.gob:319
 #, c-format
 msgid ""
 "Mail Notification was unable to log into %s mailbox %s, possibly because the "
@@ -1226,18 +1200,18 @@ msgstr ""
 "\n"
 "Veuillez à nouveau saisir vos données d'authentification."
 
-#: ../src/mn-pi-mailbox.gob:318
+#: ../src/mn-pi-mailbox.gob:320
 #, c-format
 msgid "Enter your credentials for %s mailbox %s."
 msgstr "Entrez vos données d'authentification pour la boîte aux lettres %s %s."
 
 #. keep the title in sync with gnome-authentication-manager
 #. translators: header capitalization
-#: ../src/mn-pi-mailbox.gob:361
+#: ../src/mn-pi-mailbox.gob:363
 msgid "Authentication Required"
 msgstr "Authentification requise"
 
-#: ../src/mn-pop3-mailbox.gob:344
+#: ../src/mn-pop3-mailbox.gob:345
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "arguments invalides pour la possibilité LOGIN-DELAY"
 
@@ -1247,7 +1221,7 @@ msgstr "arguments invalides pour la possibilité LOGIN-DELAY"
 #. * servers nevertheless, by retrying without the SASL
 #. * initial client response.
 #.
-#: ../src/mn-pop3-mailbox.gob:485
+#: ../src/mn-pop3-mailbox.gob:486
 msgid ""
 "SASL authentication with initial client response failed, retrying without "
 "initial client response"
@@ -1255,162 +1229,213 @@ msgstr ""
 "l'authentification SASL avec réponse client SASL initiale a échoué, nouvel "
 "essai sans réponse client SASL initiale"
 
-#: ../src/mn-pop3-mailbox.gob:696
+#: ../src/mn-pop3-mailbox.gob:703
 msgid "unknown error"
 msgstr "erreur inconnue"
 
-#: ../src/mn-pop3-mailbox.gob:791
+#: ../src/mn-pop3-mailbox.gob:798
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
 msgstr[0] "attente de %i seconde afin d'obéir à LOGIN-DELAY"
 msgstr[1] "attente de %i secondes afin d'obéir à LOGIN-DELAY"
 
-#: ../src/mn-pop3-mailbox.gob:959
+#: ../src/mn-pop3-mailbox.gob:966
 msgid "server does not support APOP authentication"
 msgstr "le serveur ne supporte pas l'authentification APOP"
 
-#: ../src/mn-pop3-mailbox.gob:1015
+#: ../src/mn-pop3-mailbox.gob:1022
 msgid "falling back to APOP authentication"
 msgstr "rétrogradation vers l'authentification APOP"
 
-#: ../src/mn-pop3-mailbox.gob:1020
+#: ../src/mn-pop3-mailbox.gob:1027
 msgid "falling back to USER/PASS authentication"
 msgstr "rétrogradation vers l'authentification USER/PASS"
 
+#: ../src/mn-popup.gob:52 ../src/mn-standard-message-view.gob:63
+msgid "Mailbox:"
+msgstr "Boîte aux lettres :"
+
+#: ../src/mn-popup.gob:54 ../src/mn-standard-message-view.gob:65
+msgid "Unreadable message:"
+msgstr "Message non lisible :"
+
+#: ../src/mn-popup.gob:57 ../src/mn-standard-message-view.gob:68
+msgid "From:"
+msgstr "De :"
+
+#: ../src/mn-popup.gob:58 ../src/mn-standard-message-view.gob:69
+msgid "Subject:"
+msgstr "Sujet :"
+
 #. translators: header capitalization
-#: ../src/mn-properties-dialog.gob:173 ../ui/properties-dialog.glade.h:23
-msgid "Mail Notification Properties"
-msgstr "Propriétés de l'avertisseur de courrier"
+#: ../src/mn-popup.gob:79
+msgid "Open"
+msgstr "Ouvrir"
+
+#. translators: header capitalization
+#: ../src/mn-popup.gob:87
+msgid "Mark as Read"
+msgstr "Marquer comme lu"
+
+#. translators: header capitalization
+#: ../src/mn-popup.gob:95
+msgid "Mark as Spam"
+msgstr "Marquer comme indésirable"
 
-#: ../src/mn-properties-dialog.gob:207
-msgid "top left"
-msgstr "en haut à gauche"
+#: ../src/mn-popup.gob:117
+msgid "Unable to open message"
+msgstr "Impossible d'ouvrir le message"
 
-#: ../src/mn-properties-dialog.gob:208
-msgid "top right"
-msgstr "en haut à droite"
+#: ../src/mn-popup.gob:134
+msgid "Unable to mark message as read"
+msgstr "Impossible de marquer le message comme lu"
 
-#: ../src/mn-properties-dialog.gob:209
-msgid "bottom left"
-msgstr "en bas à gauche"
+#: ../src/mn-popup.gob:151
+msgid "Unable to mark message as spam"
+msgstr "Impossible de marquer le message comme indésirable"
 
-#: ../src/mn-properties-dialog.gob:210
-msgid "bottom right"
-msgstr "en bas à droite"
+#: ../src/mn-popup.gob:210
+#, c-format
+msgid "unable to show popup: %s"
+msgstr "impossible d'afficher le popup : %s"
+
+#: ../src/mn-popup.gob:227
+#, c-format
+msgid "unable to close popup: %s"
+msgstr "impossible de fermer le popup : %s"
+
+#. we set the summary here because libnotify requires it
+#. translators: header capitalization
+#: ../src/mn-popup.gob:238
+msgid "New Message"
+msgstr "Nouveau message"
+
+#. translators: header capitalization
+#: ../src/mn-properties-dialog.gob:131 ../ui/properties-dialog.glade.h:20
+msgid "Mail Notification Properties"
+msgstr "Propriétés de l'avertisseur de courrier"
 
-#: ../src/mn-properties-dialog.gob:332
+#. translators: "test" is an adjective, not a verb
+#: ../src/mn-properties-dialog.gob:136
+msgid "_Test messages"
+msgstr "_Messages de test"
+
+#: ../src/mn-properties-dialog.gob:276
 msgid "No mailbox selected."
 msgstr "Pas de boîte aux lettres sélectionnée."
 
-#: ../src/mn-properties-dialog.gob:337
+#: ../src/mn-properties-dialog.gob:281
 #, 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-properties-dialog.gob:456
-#, c-format
-msgid "Test message #%i"
-msgstr "Message test %i"
+#: ../src/mn-shell.gob:224
+msgid "No mail reader is configured"
+msgstr "Aucun lecteur de courrier n'est configuré"
 
-#. translators: header capitalization
-#: ../src/mn-properties-dialog.gob:462
-msgid "Mail Notification Properties Dialog"
+#: ../src/mn-shell.gob:225
+msgid ""
+"You can configure a mail reader by choosing <b>System → Preferences → "
+"Preferred Applications</b>."
 msgstr ""
-"Boîte de dialogue contenant les propriétés de l'avertisseur de courrier"
+"Vous pouvez configurer un lecteur de courrier en choisissant <b>Système → "
+"Préférences → Applications préférées</b>."
+
+#: ../src/mn-shell.gob:236 ../src/mn-shell.gob:242 ../src/mn-shell.gob:534
+msgid "Unable to open the latest message"
+msgstr "Impossible d'ouvrir le dernier message"
+
+#: ../src/mn-shell.gob:237
+#, c-format
+msgid "Messages of mailbox \"%s\" cannot be opened."
+msgstr "Les messages de la boîte aux lettres \"%s\" ne peuvent être ouverts."
+
+#: ../src/mn-shell.gob:243 ../src/mn-shell.gob:462
+msgid "You have no new mail."
+msgstr "Vous n'avez pas de nouveau courrier."
 
 #. translators: header capitalization
-#: ../src/mn-shell.gob:381
+#: ../src/mn-shell.gob:398
 msgid "Mailboxes Having New Mail"
 msgstr "Boîtes aux lettres ayant du nouveau courrier"
 
 #. translators: header capitalization
-#: ../src/mn-shell.gob:400
+#: ../src/mn-shell.gob:417
 msgid "Errors"
 msgstr "Erreurs"
 
 #. translators: header capitalization
-#: ../src/mn-shell.gob:416
+#: ../src/mn-shell.gob:433
 msgid "Mail Summary"
 msgstr "Aperçu du courrier"
 
-#: ../src/mn-shell.gob:445
-msgid "You have no new mail."
-msgstr "Vous n'avez pas de nouveau courrier."
-
-#: ../src/mn-ssl.c:76
+#: ../src/mn-ssl.c:77
 msgid "unknown SSL/TLS error"
 msgstr "erreur SSL/TLS inconnue"
 
-#: ../src/mn-standard-message-view.gob:64
-msgid "Unreadable message:"
-msgstr "Message non lisible :"
-
-#: ../src/mn-standard-message-view.gob:67
-msgid "From:"
-msgstr "De :"
-
-#: ../src/mn-standard-message-view.gob:68
-msgid "Subject:"
-msgstr "Sujet :"
-
-#: ../src/mn-standard-message-view.gob:72
+#: ../src/mn-standard-message-view.gob:73
 msgid "Sent:"
-msgstr "Envoyé:"
+msgstr "Envoyé :"
 
 #. translators: header capitalization
-#: ../src/mn-stock.c:29
+#: ../src/mn-stock.c:30
 msgid "Select _All"
 msgstr "Sélectionner _tout"
 
 #. translators: header capitalization
 #. translators: header capitalization
-#: ../src/mn-stock.c:32
+#: ../src/mn-stock.c:33
 msgid "Co_nnect"
 msgstr "Se co_nnecter"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:223
+#: ../src/mn-sylpheed-mailbox-backend.gob:227
 #, c-format
 msgid "unable to open folder: %s"
 msgstr "impossible d'ouvrir le dossier : %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:276
+#: ../src/mn-sylpheed-mailbox-backend.gob:277
 #, c-format
 msgid "unable to close folder: %s"
 msgstr "impossible de fermer le dossier : %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:279
+#: ../src/mn-sylpheed-mailbox-backend.gob:280
 #, c-format
 msgid "error while reading folder: %s"
 msgstr "erreur lors de la lecture du dossier : %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:420
+#: ../src/mn-sylpheed-mailbox-backend.gob:424
 msgid "unexpected end of file"
 msgstr "fin de fichier inattendue"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:438
+#: ../src/mn-sylpheed-mailbox-backend.gob:437
 #, c-format
 msgid "incompatible file version \"%i\""
 msgstr "version de fichier \"%i\" incompatible"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:441
+#: ../src/mn-sylpheed-mailbox-backend.gob:440
 msgid "file version missing"
 msgstr "version de fichier manquante"
 
-#: ../src/mn-system-vfs-mailbox-properties.gob:40
-#: ../src/mn-system-vfs-mailbox-properties.gob:48
-#: ../src/mn-system-vfs-mailbox.gob:45
+#: ../src/mn-sylpheed-mailbox-backend.gob:498
+#, c-format
+msgid "Unable to read %s: %s."
+msgstr "Impossible de lire %s : %s."
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:41
+#: ../src/mn-system-vfs-mailbox-properties.gob:49
+#: ../src/mn-system-vfs-mailbox.gob:46
 msgid "System mailbox"
 msgstr "Boîte aux lettres système"
 
-#: ../src/mn-system-vfs-mailbox-properties.gob:70
+#: ../src/mn-system-vfs-mailbox-properties.gob:76
 #, c-format
 msgid "Your system mailbox is <span weight=\"bold\">%s</span>."
 msgstr "Votre boîte aux lettres système est <span weight=\"bold\">%s</span>."
 
-#: ../src/mn-system-vfs-mailbox-properties.gob:77
+#: ../src/mn-system-vfs-mailbox-properties.gob:83
 msgid ""
 "The location of your system mailbox could not be detected. Check the MAIL "
 "environment variable."
@@ -1418,16 +1443,31 @@ msgstr ""
 "L'emplacement de votre boîte aux lettres système n'a pu être détecté. "
 "Vérifiez la variable d'environnement MAIL."
 
-#: ../src/mn-system-vfs-mailbox.gob:72
+#: ../src/mn-system-vfs-mailbox.gob:73
 msgid "system mailbox not found"
 msgstr "boîte aux lettres système non trouvée"
 
-#: ../src/mn-util.c:349
+#: ../src/mn-test-mailbox.gob:40
+msgid "Test mailbox"
+msgstr "Boîte aux lettres test"
+
+#: ../src/mn-test-mailbox.gob:59
+#, c-format
+msgid "Test message #%i"
+msgstr "Message test %i"
+
+#. translators: header capitalization
+#: ../src/mn-test-mailbox.gob:65
+msgid "Mail Notification Properties Dialog"
+msgstr ""
+"Boîte de dialogue contenant les propriétés de l'avertisseur de courrier"
+
+#: ../src/mn-util.c:350
 #, c-format
 msgid "error loading image: %s"
 msgstr "erreur de chargement d'image : %s"
 
-#: ../src/mn-util.c:365
+#: ../src/mn-util.c:366
 #, c-format
 msgid ""
 "Unable to load interface \"%s\". Please check your Mail Notification "
@@ -1436,7 +1476,7 @@ msgstr ""
 "Impossible de charger l'interface \"%s\". Veuillez vérifier votre "
 "installation de l'avertisseur de courrier."
 
-#: ../src/mn-util.c:380
+#: ../src/mn-util.c:381
 #, c-format
 msgid ""
 "Widget \"%s\" not found in interface \"%s\". Please check your Mail "
@@ -1445,12 +1485,12 @@ msgstr ""
 "Elément \"%s\" non trouvé dans l'interface \"%s\". Veuillez vérifier votre "
 "installation de l'avertisseur de courrier."
 
-#: ../src/mn-util.c:449
+#: ../src/mn-util.c:450
 #, c-format
 msgid "Unable to open self as a module (%s)."
 msgstr "Impossible de s'auto-ouvrir en tant que module (%s)."
 
-#: ../src/mn-util.c:454
+#: ../src/mn-util.c:455
 #, c-format
 msgid ""
 "Signal handler \"%s\" not found. Please check your Mail Notification "
@@ -1459,29 +1499,33 @@ msgstr ""
 "Gestionnaire de signal \"%s\" non trouvé. Veuillez vérifier votre "
 "installation de l'avertisseur de courrier."
 
-#: ../src/mn-util.c:605 ../src/mn-util.c:628 ../src/mn-util.c:648
-#: ../src/mn-util.c:670
+#: ../src/mn-util.c:606 ../src/mn-util.c:629 ../src/mn-util.c:649
+#: ../src/mn-util.c:671
 msgid "A drag and drop error has occurred"
 msgstr "Une erreur de glisser-déposer s'est produite"
 
-#: ../src/mn-util.c:606
+#: ../src/mn-util.c:607
 msgid "An invalid location list has been received."
 msgstr "Une liste d'emplacements non valide a été reçue."
 
-#: ../src/mn-util.c:649
+#: ../src/mn-util.c:650
 msgid "An invalid Mozilla location has been received."
 msgstr "Un emplacement Mozilla non valide a été reçu."
 
-#: ../src/mn-util.c:725
+#: ../src/mn-util.c:726
 msgid "Unable to display help"
 msgstr "Impossible d'afficher l'aide"
 
-#: ../src/mn-util.c:739
+#: ../src/mn-util.c:738
+msgid "Unable to open link"
+msgstr "Impossible d'ouvrir le lien"
+
+#: ../src/mn-util.c:752
 #, c-format
 msgid "Unable to create a thread: %s."
 msgstr "Impossible de créer un thread : %s."
 
-#: ../src/mn-util.c:899
+#: ../src/mn-util.c:929
 #, c-format
 msgid ""
 "The following location is invalid:\n"
@@ -1500,88 +1544,112 @@ msgstr[1] ""
 "\n"
 "%s"
 
-#: ../src/mn-util.c:919
+#: ../src/mn-util.c:945
 msgid "A fatal error has occurred in Mail Notification"
 msgstr "Une erreur fatale s'est produite dans l'avertisseur de courrier"
 
-#: ../src/mn-util.c:958
+#: ../src/mn-util.c:989
 #, c-format
 msgid "unable to get current time: %s"
 msgstr "impossible d'obtenir l'heure courante : %s"
 
-#: ../src/mn-util.c:1250
+#: ../src/mn-util.c:1304
 #, 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-util.c:1254
+#: ../src/mn-util.c:1308
 #, c-format
 msgid "about %i minute ago"
 msgid_plural "about %i minutes ago"
 msgstr[0] "il y a approximativement %i minute"
 msgstr[1] "il y a approximativement %i minutes"
 
-#: ../src/mn-util.c:1259
+#: ../src/mn-util.c:1313
 #, c-format
 msgid "about %i hour ago"
 msgid_plural "about %i hours ago"
 msgstr[0] "il y a approximativement %i heure"
 msgstr[1] "il y a approximativement %i heures"
 
-#: ../src/mn-util.c:1264
+#: ../src/mn-util.c:1318
 #, c-format
 msgid "about %i day ago"
 msgid_plural "about %i days ago"
 msgstr[0] "il y a approximativement %i jour"
 msgstr[1] "il y a approximativement %i jours"
 
-#: ../src/mn-util.c:1269
+#: ../src/mn-util.c:1323
 #, c-format
 msgid "about %i week ago"
 msgid_plural "about %i weeks ago"
 msgstr[0] "il y a approximativement %i semaine"
 msgstr[1] "il y a approximativement %i semaines"
 
-#: ../src/mn-util.c:1282
+#: ../src/mn-util.c:1336
 msgid "unknown date"
 msgstr "date inconnue"
 
-#: ../src/mn-vfs-mailbox.gob:221
+#: ../src/mn-util.c:1371
+msgid "A command error has occurred in Mail Notification"
+msgstr "Une erreur de commande s'est produite dans l'avertisseur de courrier"
+
+#: ../src/mn-vfs-mailbox.gob:228
 #, c-format
 msgid "unable to monitor %s (%s), poll mode activated"
 msgstr "impossible de surveiller %s (%s), vérification explicite activée"
 
-#: ../src/mn-vfs-mailbox.gob:385
+#: ../src/mn-vfs-mailbox.gob:392
 msgid "unknown mailbox format"
 msgstr "format de boîte aux lettres inconnu"
 
-#: ../src/mn-vfs-mailbox.gob:385
+#: ../src/mn-vfs-mailbox.gob:392
 msgid "does not exist"
 msgstr "n'existe pas"
 
+#: ../src/mn-vfs.c:248
+#, c-format
+msgid "Unable to write %s: %s."
+msgstr "Impossible d'écrire %s : %s."
+
+#: ../src/mn-xml.c:54
+#, c-format
+msgid ""
+"property \"%s\": unable to transform string \"%s\" into a value of type \"%s"
+"\""
+msgstr ""
+"propriété \"%s\" : impossible de transformer la chaîne de caractères \"%s\" "
+"en une valeur de type \"%s\""
+
 #. translators: header capitalization
-#: ../ui/mailbox-properties-dialog.glade.h:2 ../ui/properties-dialog.glade.h:8
+#: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:8
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Général</span>"
 
-#: ../ui/mailbox-properties-dialog.glade.h:3
-msgid "Delay between mail chec_ks:"
-msgstr "Délai entre les _vérifications de courrier :"
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:2
+#: ../ui/properties-dialog.glade.h:17
+msgid "General"
+msgstr "Général"
 
-#: ../ui/mailbox-properties-dialog.glade.h:4
+#: ../ui/mailbox-properties-dialog.glade.h:3
 msgid "Mailbox _name:"
 msgstr "No_m de la boîte aux lettres :"
 
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "Mailbox _type:"
+msgstr "_Type de boîte aux lettres :"
+
 #. translators: header capitalization
 #: ../ui/mailbox-properties-dialog.glade.h:6
-msgid "Use De_fault"
+msgid "Us_e Default"
 msgstr "Par dé_faut"
 
 #: ../ui/mailbox-properties-dialog.glade.h:7
-msgid "_Mailbox type:"
-msgstr "_Type de boîte aux lettres :"
+msgid "_Delay between mail checks:"
+msgstr "Délai entre les _vérifications de courrier :"
 
 #. translators: header capitalization
 #: ../ui/mailbox-properties-dialog.glade.h:9
@@ -1589,12 +1657,12 @@ msgid "_Use Default"
 msgstr "_Par défaut"
 
 #: ../ui/mailbox-properties-dialog.glade.h:10
-#: ../ui/properties-dialog.glade.h:48
+#: ../ui/properties-dialog.glade.h:41
 msgid "minutes"
 msgstr "minutes"
 
 #: ../ui/mailbox-properties-dialog.glade.h:11
-#: ../ui/properties-dialog.glade.h:52
+#: ../ui/properties-dialog.glade.h:42
 msgid "seconds"
 msgstr "secondes"
 
@@ -1610,141 +1678,98 @@ msgstr "<span weight=\"bold\">Commandes</span>"
 
 #. translators: header capitalization
 #: ../ui/properties-dialog.glade.h:6
-msgid "<span weight=\"bold\">Fonts</span>"
-msgstr "<span weight=\"bold\">Polices de caractères</span>"
+msgid "<span weight=\"bold\">Expiration</span>"
+msgstr "<span weight=\"bold\">Expiration</span>"
 
 #. translators: header capitalization
 #: ../ui/properties-dialog.glade.h:10
-msgid "<span weight=\"bold\">Layout</span>"
-msgstr "<span weight=\"bold\">Présentation</span>"
-
-#. translators: header capitalization
-#: ../ui/properties-dialog.glade.h:12
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Liste des boîtes aux lettres</span>"
 
 #. translators: header capitalization
-#: ../ui/properties-dialog.glade.h:14
+#: ../ui/properties-dialog.glade.h:12
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Position</span>"
 
 #. translators: header capitalization
-#: ../ui/properties-dialog.glade.h:16
+#: ../ui/properties-dialog.glade.h:14
 msgid "<span weight=\"bold\">Tooltip Mail Summary</span>"
 msgstr "<span weight=\"bold\">Aperçu du courrier dans le ballon d'aide</span>"
 
-#: ../ui/properties-dialog.glade.h:17
-msgid "Co_ntents:"
-msgstr "Co_ntenu :"
+#: ../ui/properties-dialog.glade.h:15
+msgid "A_fter:"
+msgstr "Ap_rès :"
 
-#. translators: header capitalization
-#: ../ui/properties-dialog.glade.h:19
-msgid "General"
-msgstr "Général"
-
-#: ../ui/properties-dialog.glade.h:20
-msgid "Hide p_reviously displayed mail"
-msgstr "Masquer le courrier précé_demment affiché"
-
-#: ../ui/properties-dialog.glade.h:21
-msgid "Hori_zontal offset:"
-msgstr "Décalage hori_zontal :"
+#: ../ui/properties-dialog.glade.h:18
+msgid "In the p_opup stack"
+msgstr "Dans la pile des p_opups"
 
 #. translators: header capitalization
-#: ../ui/properties-dialog.glade.h:25
-msgid "Mail Summary Popup"
-msgstr "Popup d'aperçu du courrier"
+#: ../ui/properties-dialog.glade.h:22
+msgid "Message Popups"
+msgstr "Popups"
 
 #. translators: header capitalization
-#: ../ui/properties-dialog.glade.h:27
+#: ../ui/properties-dialog.glade.h:24
 msgid "Status Icon"
 msgstr "Icône de statut"
 
-#: ../ui/properties-dialog.glade.h:28
-msgid "Use these _fonts:"
-msgstr "Utiliser c_es polices de caractères :"
-
-#: ../ui/properties-dialog.glade.h:29
+#: ../ui/properties-dialog.glade.h:25
 msgid "When _new mail arrives:"
 msgstr "Quand du _nouveau courrier arrive :"
 
-#: ../ui/properties-dialog.glade.h:30
+#: ../ui/properties-dialog.glade.h:26
 msgid "When all mail has _been read:"
 msgstr "Quand _tout le courrier a été lu :"
 
-#: ../ui/properties-dialog.glade.h:31
+#: ../ui/properties-dialog.glade.h:27
 msgid "_Always display"
 msgstr "_Toujours afficher"
 
-#: ../ui/properties-dialog.glade.h:32
-msgid "_Automatically close after:"
-msgstr "Fe_rmer automatiquement après :"
+#: ../ui/properties-dialog.glade.h:28
+msgid "_Attached to the status icon"
+msgstr "A_ttachés à l'icône de statut"
 
-#: ../ui/properties-dialog.glade.h:33
+#: ../ui/properties-dialog.glade.h:29
 msgid "_Blink on errors"
 msgstr "_Clignoter lors d'erreurs"
 
-#. translators: header capitalization
-#: ../ui/properties-dialog.glade.h:35
-msgid "_Display a Test Popup"
-msgstr "Afficher un popup de _test"
+#: ../ui/properties-dialog.glade.h:30
+msgid "_Desktop default"
+msgstr "Valeur par _défaut du bureau"
 
-#: ../ui/properties-dialog.glade.h:36
+#: ../ui/properties-dialog.glade.h:31
 msgid "_Display seen mail"
 msgstr "Afficher le courrier _vu"
 
-#: ../ui/properties-dialog.glade.h:37
+#: ../ui/properties-dialog.glade.h:32
 msgid "_Display this dialog"
 msgstr "Afficher cette _boîte de dialogue"
 
-#: ../ui/properties-dialog.glade.h:38
-msgid "_Enable mail summary popup"
-msgstr "A_ctiver le popup d'aperçu du courrier"
+#: ../ui/properties-dialog.glade.h:33
+msgid "_Enable message popups"
+msgstr "A_ctiver les popups"
 
-#: ../ui/properties-dialog.glade.h:39
+#: ../ui/properties-dialog.glade.h:34
 msgid "_Launch the mail reader"
 msgstr "_Exécuter le lecteur de courrier"
 
-#: ../ui/properties-dialog.glade.h:40
+#: ../ui/properties-dialog.glade.h:36
 msgid "_None"
 msgstr "Aucu_n"
 
-#: ../ui/properties-dialog.glade.h:41
-msgid "_Position:"
-msgstr "_Position :"
-
-#: ../ui/properties-dialog.glade.h:42
-msgid "_Title:"
-msgstr "_Titre :"
+#: ../ui/properties-dialog.glade.h:37
+msgid "_Open the latest message"
+msgstr "_Ouvrir le dernier message"
 
-#: ../ui/properties-dialog.glade.h:43
+#: ../ui/properties-dialog.glade.h:38
 msgid "_Update the mail status"
 msgstr "Mett_re à jour le statut du courrier"
 
-#: ../ui/properties-dialog.glade.h:44
-msgid "_Use fonts from theme"
-msgstr "_Utiliser les polices de caractères du thème"
-
-#: ../ui/properties-dialog.glade.h:45
-msgid "_Vertical offset:"
-msgstr "Décalage _vertical :"
-
-#: ../ui/properties-dialog.glade.h:46
+#: ../ui/properties-dialog.glade.h:39
 msgid "icon tooltip's mail summary layout|Co_mpact"
 msgstr "Co_mpact"
 
-#: ../ui/properties-dialog.glade.h:47
+#: ../ui/properties-dialog.glade.h:40
 msgid "icon tooltip's mail summary layout|_Standard"
 msgstr "_Standard"
-
-#: ../ui/properties-dialog.glade.h:49
-msgid "pixels"
-msgstr "pixels"
-
-#: ../ui/properties-dialog.glade.h:50
-msgid "popup's mail summary layout|Co_mpact"
-msgstr "Co_mpacte"
-
-#: ../ui/properties-dialog.glade.h:51
-msgid "popup's mail summary layout|_Standard"
-msgstr "_Standard"
diff --git a/po/sr.po b/po/sr.po
@@ -4,17 +4,17 @@
 # This file is distributed under the same license as the
 # mail-notification package.
 #
-# Filip Miletic <filmil@gmail.com>, 2004, 2005.
+# Filip Miletic <filmil@gmail.com>, 2004-2006.
 #
 # Both Serbian Cyrillic and Serbian Latin files should
 # be available.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: mail-notification 2.0\n"
+"Project-Id-Version: mail-notification 3.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-07-31 04:17+0200\n"
-"PO-Revision-Date: 2005-07-31 11:13+0100\n"
+"POT-Creation-Date: 2006-06-25 01:00+0200\n"
+"PO-Revision-Date: 2006-11-21 17:41+0100\n"
 "Last-Translator: Филип Милетић <filmil@gmail.com>\n"
 "Language-Team: Serbian (sr) <gnu@prevod.org>\n"
 "MIME-Version: 1.0\n"
@@ -32,11 +32,11 @@ msgstr "Фабрика за дојаву приспећа поште"
 
 #: ../data/GNOME_MailNotification_Evolution.server.in.h:1
 msgid "Evolution folder tree control"
-msgstr "Управљање Еволуцијиним дрветом директоријума"
+msgstr "Управљање стаблом фасцикли у програму Еволуција"
 
 #: ../data/GNOME_MailNotification_Evolution.server.in.h:2
 msgid "Evolution folder tree control factory"
-msgstr "Фабрика за управљач Еволуцијиним дрветом директоријума"
+msgstr "Фабрика за управљање стаблом фасцикли у програму Еволуција"
 
 #: ../data/GNOME_MailNotification_Evolution.server.in.h:3
 msgid "Mail Notification / Evolution glue"
@@ -47,14 +47,12 @@ msgid "Mail Notification / Evolution glue factory"
 msgstr "Фабрика за Дојаву поште и Еволуцију"
 
 #: ../data/mail-notification-properties.desktop.in.h:1
-#: ../src/mn-main-window.gob:209
 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-mail-icon.gob:223
-#: ../src/mn-main.c:285 ../src/mn-main.c:301
+#: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:227
+#: ../src/mn-main.c:132 ../src/mn-main.c:302 ../src/mn-main.c:318
 msgid "Mail Notification"
 msgstr "Дојава поште"
 
@@ -63,196 +61,149 @@ msgid "Get notified when new mail arrives"
 msgstr "Обавести када стигне нова пошта"
 
 #: ../data/mail-notification.schemas.in.h:1
+msgid "Always display an icon"
+msgstr "Увек приказуј сличицу"
+
+#: ../data/mail-notification.schemas.in.h:2
 msgid "Automatically close the mail summary popup"
 msgstr "Аутоматски затвори прозор са сажетком порука"
 
-#: ../data/mail-notification.schemas.in.h:2
+#: ../data/mail-notification.schemas.in.h:3
 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 "Размак између две провере (секунде)."
+msgid "Click action"
+msgstr "Дејство при притиску"
 
 #: ../data/mail-notification.schemas.in.h:5
-msgid "Display mail summary in tooltip"
-msgstr "Прикажи сажетат порука у облачићу"
+msgid "Display seen mail"
+msgstr "Прикажи прегледане поруке"
 
 #: ../data/mail-notification.schemas.in.h:6
-msgid "Do not show the immediate notification error dialog"
-msgstr "Не показуј прозор са обавештењем о грешкама"
-
-#: ../data/mail-notification.schemas.in.h:7
-msgid "Double-click action"
-msgstr "Изврши на двоструки клик"
-
-#: ../data/mail-notification.schemas.in.h:8
 msgid "Enable mail summary popup"
 msgstr "Дозволи приказ сажетка порука"
 
-#: ../data/mail-notification.schemas.in.h:9
+#: ../data/mail-notification.schemas.in.h:7
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Отисци проверених X509 сертификата"
 
-#: ../data/mail-notification.schemas.in.h:10
-msgid "Height of edit toolbars dialog"
-msgstr "Висина прозора за уређивање алатних трака"
-
-#: ../data/mail-notification.schemas.in.h:11
-msgid "Height of main window"
-msgstr "Висина главног прозора"
-
-#: ../data/mail-notification.schemas.in.h:12
+#: ../data/mail-notification.schemas.in.h:8
 msgid "Height of properties dialog"
 msgstr "Висина прозора са поставкама"
 
-#: ../data/mail-notification.schemas.in.h:13
+#: ../data/mail-notification.schemas.in.h:9
 msgid "Mail read command"
 msgstr "Команда за читање поште"
 
-#: ../data/mail-notification.schemas.in.h:14
-msgid "Mail reader command"
-msgstr "Команда за читање поште"
-
-#: ../data/mail-notification.schemas.in.h:15
+#: ../data/mail-notification.schemas.in.h:10
 msgid "Mail summary popup contents font"
 msgstr "Писмо које се користи за садржај прозора са сажетком порука"
 
-#: ../data/mail-notification.schemas.in.h:16
+#: ../data/mail-notification.schemas.in.h:11
 msgid "Mail summary popup fonts aspect source"
 msgstr "Извор за аспект за писмо у прозору за сажетак (???)"
 
-#: ../data/mail-notification.schemas.in.h:17
+#: ../data/mail-notification.schemas.in.h:12
 msgid "Mail summary popup horizontal offset"
 msgstr "Померај хоризонталних тачака за прозор са сажетком порука"
 
-#: ../data/mail-notification.schemas.in.h:18
+#: ../data/mail-notification.schemas.in.h:13
 msgid "Mail summary popup position"
 msgstr "Број хоризонталних тачака за прозор са сажетком порука"
 
-#: ../data/mail-notification.schemas.in.h:19
+#: ../data/mail-notification.schemas.in.h:14
 msgid "Mail summary popup title font"
 msgstr "Писмо које се користи за наслов прозора са сажетком порука"
 
-#: ../data/mail-notification.schemas.in.h:20
+#: ../data/mail-notification.schemas.in.h:15
 msgid "Mail summary popup vertical offset"
 msgstr "Померај вертикалних тачака ѕа прозор са сажетком порука"
 
-#: ../data/mail-notification.schemas.in.h:21
-msgid "Minutes between mail checks"
-msgstr "Минута између две провере"
-
-#: ../data/mail-notification.schemas.in.h:22
+#: ../data/mail-notification.schemas.in.h:16
 msgid "Minutes to wait before closing the mail summary popup"
 msgstr ""
 "Број минута који треба да протекне пре затварања прозора са сажетком порука"
 
-#: ../data/mail-notification.schemas.in.h:23
+#: ../data/mail-notification.schemas.in.h:17
 msgid "New mail command"
 msgstr "Изврши када пошта стигне"
 
-#: ../data/mail-notification.schemas.in.h:24
+#: ../data/mail-notification.schemas.in.h:18
 msgid "Only display recent mail in mail summary popup"
 msgstr "Прикажи само скоро приспеле поруке у сажетку"
 
-#: ../data/mail-notification.schemas.in.h:25
+#: ../data/mail-notification.schemas.in.h:19
 msgid "Run a command when all mail is read"
 msgstr "Покрени команду када је сва пошта прочитана"
 
-#: ../data/mail-notification.schemas.in.h:26
+#: ../data/mail-notification.schemas.in.h:20
 msgid "Run a command when new mail arrives"
 msgstr "Покрени команду када стигне нова пошта"
 
-#: ../data/mail-notification.schemas.in.h:27
-msgid "Seconds between mail checks"
-msgstr "Секунди између две провере"
-
-#: ../data/mail-notification.schemas.in.h:28
+#: ../data/mail-notification.schemas.in.h:21
 msgid "Seconds to wait before closing the mail summary popup"
 msgstr "Број секунди који треба да протекне пре затварања сажетка порука"
 
-#: ../data/mail-notification.schemas.in.h:29
-msgid "Set a mail reader"
-msgstr "Изаберите читач поште"
-
-#: ../data/mail-notification.schemas.in.h:30
+#: ../data/mail-notification.schemas.in.h:22
 msgid ""
-"The action to perform when the icon is double-clicked. Must be \"display-"
-"main-window\", \"launch-mail-reader\" or \"update-mail-status\"."
-msgstr ""
-"Постављање наредбе која се извршава при двоструком клику на сличицу. Могући "
-"избори су: ?главни-прозор?, ?покрени-читач-поште? или ?ажурирај-статус-"
-"поште?."
+"The action to perform when the icon is clicked. Must be \"display-properties-"
+"dialog\", \"launch-mail-reader\" or \"update-mail-status\"."
+msgstr "Постављање наредбе која се извршава при притиску на сличицу. Могући избори су: „главни-прозор?, „покрени-читач-поште? или „ажурирај-статус-поште?."
 
-#: ../data/mail-notification.schemas.in.h:31
+#: ../data/mail-notification.schemas.in.h:23
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
 msgstr "Пауза пре затварања прозора са сажетком порука (минути)."
 
-#: ../data/mail-notification.schemas.in.h:32
+#: ../data/mail-notification.schemas.in.h:24
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
 msgstr "Пауза пре затварања прозора са сажетком порука (секунде)."
 
-#: ../data/mail-notification.schemas.in.h:33
+#: ../data/mail-notification.schemas.in.h:25
 msgid ""
 "The aspect source of the mail summary popup fonts. Must be \"theme\" or "
 "\"custom\"."
 msgstr "Извор за подешавања писма. Може бити: ?тема? или ?посебан?."
 
-#: ../data/mail-notification.schemas.in.h:34
-msgid "The command to run to launch the mail reader."
-msgstr "Команда којом се покреће читач поште"
-
-#: ../data/mail-notification.schemas.in.h:35
+#: ../data/mail-notification.schemas.in.h:26
 msgid "The command to run when all mail is read."
 msgstr "Команда коју треба покренути када је сва пошта прочитана."
 
-#: ../data/mail-notification.schemas.in.h:36
+#: ../data/mail-notification.schemas.in.h:27
 msgid "The command to run when new mail arrives."
 msgstr "Покрени ову команду када стигне нова пошта."
 
-#: ../data/mail-notification.schemas.in.h:37
+#: ../data/mail-notification.schemas.in.h:28
 msgid "The custom font to use for the contents of the mail summary popup."
 msgstr ""
 "Посебно писмо које се користи за испис садржаја прозора са сажетком порука."
 
-#: ../data/mail-notification.schemas.in.h:38
+#: ../data/mail-notification.schemas.in.h:29
 msgid "The custom font to use for the title of the mail summary popup."
 msgstr ""
 "Посебно писмо које се користи за испис наслова прозора са сажетком порука."
 
-#: ../data/mail-notification.schemas.in.h:39
-msgid "The height of the edit toolbars dialog in pixels."
-msgstr "Висина прозора за уређивање статусних трака, изражена у тачкама."
-
-#: ../data/mail-notification.schemas.in.h:40
-msgid "The height of the main window in pixels."
-msgstr "Висина главног прозора изражена у тачкама."
-
-#: ../data/mail-notification.schemas.in.h:41
+#: ../data/mail-notification.schemas.in.h:30
 msgid "The height of the properties dialog in pixels."
 msgstr "Висина прозора са поставкама изражена у тачкама."
 
-#: ../data/mail-notification.schemas.in.h:42
+#: ../data/mail-notification.schemas.in.h:31
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
 msgstr ""
 "Списак проверених SSL/TLS сервера (рачунар:порт) који немају X509 сертификат."
 
-#: ../data/mail-notification.schemas.in.h:43
+#: ../data/mail-notification.schemas.in.h:32
 msgid ""
 "The list of trusted X509 certificates, represented by their MD5 fingerprint."
 msgstr "Списак проверених X509 сертификата, представљених MD5 отиском."
 
-#: ../data/mail-notification.schemas.in.h:44
+#: ../data/mail-notification.schemas.in.h:33
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
@@ -260,7 +211,7 @@ msgstr ""
 "Број тачака које треба оставити између леве, одн. десне стране екрана и "
 "прозора са сажетком порука."
 
-#: ../data/mail-notification.schemas.in.h:45
+#: ../data/mail-notification.schemas.in.h:34
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
@@ -268,7 +219,7 @@ msgstr ""
 "Број тачака које треба оставити између врха, одн. дна екрана и прозора са "
 "сажетком порука."
 
-#: ../data/mail-notification.schemas.in.h:46
+#: ../data/mail-notification.schemas.in.h:35
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
@@ -276,126 +227,74 @@ msgstr ""
 "Положај прозора са сажетком порука. Може бити: ?горе-лево?, ?горе-десно?, ?"
 "доле-лево? или ?доле-десно?."
 
-#: ../data/mail-notification.schemas.in.h:47
+#: ../data/mail-notification.schemas.in.h:36
 msgid ""
-"The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text\", "
-"\"both\" or \"both-horiz\"."
-msgstr ""
-"Стил алатних трака. Може бити: ?подразумеван?, ?слике?, ?текст?, ?оба?, ?оба-"
-"водоравно?."
-
-#: ../data/mail-notification.schemas.in.h:48
-msgid "The width of the edit toolbars dialog in pixels."
-msgstr "Ширина прозора за уређивање статусних трака, изражена у тачкама."
-
-#: ../data/mail-notification.schemas.in.h:49
-msgid "The width of the main window in pixels."
-msgstr "Ширина прозора главног прозора изражена у тачкама."
+"The type of mail summary to display in the icon's tooltip. Must be \"standard"
+"\", \"compact\" or \"none\"."
+msgstr "Врста сажетка поште који се приказује у облачићу.  Може бити „обичан?, „кратак? или „ниједан?."
 
-#: ../data/mail-notification.schemas.in.h:50
+#: ../data/mail-notification.schemas.in.h:37
 msgid "The width of the properties dialog in pixels."
 msgstr "Ширина прозора са поставкама изражена у тачкама."
 
-#: ../data/mail-notification.schemas.in.h:51
-msgid "Toolbars style"
-msgstr "Стил алатне траке"
+#: ../data/mail-notification.schemas.in.h:38
+msgid "Tooltip mail summary"
+msgstr "Облачић са сажетком порука"
 
-#: ../data/mail-notification.schemas.in.h:52
+#: ../data/mail-notification.schemas.in.h:39
 msgid "Trusted servers list"
 msgstr "Списак проверених сервера"
 
-#: ../data/mail-notification.schemas.in.h:53
-msgid "View statusbar"
-msgstr "Прикажи статусну траку"
-
-#: ../data/mail-notification.schemas.in.h:54
-msgid "View toolbars"
-msgstr "Прикажи алатну траку"
-
-#: ../data/mail-notification.schemas.in.h:55
+#: ../data/mail-notification.schemas.in.h:40
 msgid "Whether the status icon should blink on errors or not."
 msgstr "Да ли сличица треба да трепери ако дође до грешке или не."
 
-#: ../data/mail-notification.schemas.in.h:56
-msgid "Whether the statusbar should be visible or not."
-msgstr "Да ли статусна линија треба да се види или не."
-
-#: ../data/mail-notification.schemas.in.h:57
-msgid "Whether the toolbars should be visible or not."
-msgstr "Да ли алатне траке треба да се виде или не"
-
-#: ../data/mail-notification.schemas.in.h:58
+#: ../data/mail-notification.schemas.in.h:41
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 "Да ли треба или не треба аутоматски затворити прозор са сажетком поште."
 
-#: ../data/mail-notification.schemas.in.h:59
-msgid "Whether to display the mail summary in the status icon tooltip or not."
-msgstr ""
-"Да ли треба приказати сажетак порука у облачићу статусне сличице или не."
+#: ../data/mail-notification.schemas.in.h:42
+msgid "Whether to display an icon when there is no new mail or not."
+msgstr "Да ли се приказује сличица када нема нове поште."
+
+#: ../data/mail-notification.schemas.in.h:43
+msgid "Whether to display seen mail or not."
+msgstr "Да ли треба приказивати прегледану пошту или не."
 
-#: ../data/mail-notification.schemas.in.h:60
+#: ../data/mail-notification.schemas.in.h:44
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr "Да ли треба приказати сажетак порука када стигне нова пошта."
 
-#: ../data/mail-notification.schemas.in.h:61
+#: ../data/mail-notification.schemas.in.h:45
 msgid ""
 "Whether to hide previously displayed mail in the mail summary popup or not."
 msgstr ""
 "Да ли из сажетка треба уклонити поруке које су се у њему већ пре појавиле."
 
-#: ../data/mail-notification.schemas.in.h:62
-msgid ""
-"Whether to prevent the immediate notification error dialog from being "
-"displayed or not."
-msgstr "Да ли треба или не треба спречити појаву прозора са описом грешака."
-
-#: ../data/mail-notification.schemas.in.h:63
+#: ../data/mail-notification.schemas.in.h:46
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Да ли треба или не треба покренути неку команду када је сва пошта прочитана."
 
-#: ../data/mail-notification.schemas.in.h:64
+#: ../data/mail-notification.schemas.in.h:47
 msgid "Whether to run a command when new mail arrives or not."
 msgstr "Да ли треба покренути неку команду када стигне нова пошта."
 
-#: ../data/mail-notification.schemas.in.h:65
-msgid "Whether to set a mail reader or not."
-msgstr "Да ли треба поставити читач поште или не."
-
-#: ../data/mail-notification.schemas.in.h:66
-msgid "Width of edit toolbars dialog"
-msgstr "Ширина прозора за уређивање статусних трака"
-
-#: ../data/mail-notification.schemas.in.h:67
-msgid "Width of main window"
-msgstr "Ширина главног прозора"
-
-#: ../data/mail-notification.schemas.in.h:68
+#: ../data/mail-notification.schemas.in.h:48
 msgid "Width of properties dialog"
 msgstr "Ширина прозора са поставкама"
 
-#: ../data/mail-notification.soundlist.in.h:2
-msgid "New Mail"
-msgstr "Нова пошта"
-
-#: ../src/egg-editable-toolbar.c:534
-msgid "_Remove Toolbar"
-msgstr "_Уклони алатну траку"
-
-#: ../src/egg-toolbar-editor.c:555
-msgid "Separator"
-msgstr "Граничник"
-
-#: ../src/eggtrayicon.c:128
+#: ../src/eggtrayicon.c:132
 msgid "Orientation"
 msgstr "Оријентација"
 
-#: ../src/eggtrayicon.c:129
+#: ../src/eggtrayicon.c:133
 msgid "The orientation of the tray."
 msgstr "Оријентација обавештајне зоне."
 
-#: ../src/mn-about-dialog.gob:48
+#. translators: header capitalization
+#: ../src/mn-about-dialog.gob:49
 msgid "A Mail Notification Icon"
 msgstr "Сличица за дојаву приспећа поште"
 
@@ -403,16 +302,16 @@ msgstr "Сличица за дојаву приспећа поште"
 #. * translators: Your Name <your-email>
 #. * optionally followed by one or more: \nOther Contributor's Name <his-email>
 #.
-#: ../src/mn-about-dialog.gob:56
+#: ../src/mn-about-dialog.gob:57
 msgid "translator-credits"
 msgstr "Филип Милетић <filmil@gmail.com>"
 
-#: ../src/mn-about-dialog.gob:78
+#: ../src/mn-about-dialog.gob:79
 msgid "Unable to open link"
 msgstr "није могуће отворити везу"
 
 #: ../src/mn-auth-combo-box.gob:103
-#: ../src/mn-autodetect-mailbox-properties.gob:92
+#: ../src/mn-autodetect-mailbox-properties.gob:109
 msgid "<span style=\"italic\">autodetect</span>"
 msgstr "<span style=\"italic\">сам пронађи</span>"
 
@@ -424,124 +323,113 @@ msgstr "_Кор.име:"
 msgid "_Password:"
 msgstr "_Лозинка:"
 
-#: ../src/mn-authenticated-mailbox.gob:152
-#, c-format
-msgid ""
-"Mail Notification was unable to log into %s mailbox %s, possibly because the "
-"credentials you have entered are invalid.\n"
-"\n"
-"Please re-enter your credentials."
-msgstr ""
-"Није могуће пријавити се за читање %s сандучета %s, највероватније зато што "
-"унета лозинка није исправна.\n"
-"\n"
-"Молим унесите поново лозинку."
-
-#: ../src/mn-authenticated-mailbox.gob:153
-#, c-format
-msgid "Enter your credentials for %s mailbox %s."
-msgstr "Унесите лозинку за %s сандуче %s."
-
-#. keep the title in sync with gnome-authentication-manager
-#: ../src/mn-authenticated-mailbox.gob:195
-msgid "Authentication Required"
-msgstr "Потребна је пријава"
-
-#: ../src/mn-autodetect-mailbox-properties.gob:93
+#: ../src/mn-autodetect-mailbox-properties.gob:110
 msgid "Location"
 msgstr "Место"
 
-#: ../src/mn-autodetect-mailbox-properties.gob:103
+#: ../src/mn-autodetect-mailbox-properties.gob:122
 msgid "_Location:"
 msgstr "_Место:"
 
-#: ../src/mn-autodetect-mailbox-properties.gob:110
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:130
 msgid "_Browse..."
 msgstr "_Прегледај..."
 
-#: ../src/mn-autodetect-mailbox-properties.gob:149
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:172
 msgid "Select a File or Folder"
-msgstr "Изаберите датотеку или директоријум"
+msgstr "Изаберите датотеку или фасциклу"
 
-#: ../src/mn-client-session.c:248
+#: ../src/mn-client-session.c:247
 #, c-format
 msgid "resolving %s"
 msgstr "проналазим %s"
 
-#: ../src/mn-client-session.c:264
+#: ../src/mn-client-session.c:263
 #, c-format
 msgid "unable to resolve %s: %s"
 msgstr "Није могуће пронаћи %s: %s"
 
-#: ../src/mn-client-session.c:308
+#: ../src/mn-client-session.c:304
+#, c-format
+msgid "network address #%i"
+msgstr "мрежна адреса #%i"
+
+#: ../src/mn-client-session.c:307
+#, c-format
+msgid "unable to convert network address #%i into textual form: %s"
+msgstr "мрежна адреса #%i се не може пребацити у текстуални облик: %s"
+
+#: ../src/mn-client-session.c:318
 #, c-format
 msgid "%s: unsupported address family"
 msgstr "%s: ова врста адресе није подржана"
 
-#: ../src/mn-client-session.c:315
+#: ../src/mn-client-session.c:325
 #, c-format
 msgid "%s: unable to create socket: %s"
 msgstr "%s: није могуће направити утичницу: %s"
 
-#: ../src/mn-client-session.c:319
+#: ../src/mn-client-session.c:329
 #, c-format
 msgid "connecting to %s (%s) port %i"
 msgstr "повезујем се са %s (%s) порт %i"
 
-#: ../src/mn-client-session.c:322
+#: ../src/mn-client-session.c:332
 #, c-format
 msgid "unable to connect: %s"
 msgstr "није могуће повезати се са: %s"
 
-#: ../src/mn-client-session.c:327
+#: ../src/mn-client-session.c:337
 msgid "connected successfully"
 msgstr "повезивање је успело"
 
 #. if reached, we couldn't find a working address
-#: ../src/mn-client-session.c:333
+#: ../src/mn-client-session.c:351
 #, c-format
 msgid "unable to connect to %s"
 msgstr "није могуће повезати се са %s"
 
-#: ../src/mn-client-session.c:360
+#: ../src/mn-client-session.c:378
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
 msgstr "није могуће покренути OpenSSL библиотеку: %s"
 
-#: ../src/mn-client-session.c:368
+#: ../src/mn-client-session.c:386
 #, c-format
 msgid "unable to create a SSL/TLS object: %s"
 msgstr "није могуће направити SSL/TLS објекат: %s"
 
-#: ../src/mn-client-session.c:374
+#: ../src/mn-client-session.c:392
 #, c-format
 msgid "unable to set the SSL/TLS file descriptor: %s"
 msgstr "није могуће поставити SSL/TLS опис за датотеку: %s"
 
-#: ../src/mn-client-session.c:380
+#: ../src/mn-client-session.c:398
 #, c-format
 msgid "unable to perform the SSL/TLS handshake: %s"
 msgstr "није могуће обавити SSL/TLS контакт: %s"
 
-#: ../src/mn-client-session.c:386
+#: ../src/mn-client-session.c:404
 msgid "untrusted server"
 msgstr "непроверен сервер"
 
-#: ../src/mn-client-session.c:390
+#: ../src/mn-client-session.c:408
 #, 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:437
+#: ../src/mn-client-session.c:455
 #, c-format
 msgid "%s, fingerprint: %s"
 msgstr "%s, отисак: %s"
 
-#: ../src/mn-client-session.c:466
+#: ../src/mn-client-session.c:484
 msgid "missing certificate"
 msgstr "недостаје сертификат"
 
-#: ../src/mn-client-session.c:492
+#: ../src/mn-client-session.c:510
 #, c-format
 msgid ""
 "Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -560,313 +448,343 @@ msgstr ""
 "са \"%s\". Ако одлучите да се повежете на сервер, ова порука неће поново "
 "бити приказана."
 
-#: ../src/mn-client-session.c:507
+#: ../src/mn-client-session.c:525
 msgid "Connect to untrusted server?"
 msgstr "Да ли да се повежем на непроверени сервер?"
 
-#: ../src/mn-client-session.c:571
+#: ../src/mn-client-session.c:590
 #, c-format
 msgid "response \"%s\" is not valid in current context"
 msgstr "одговор \"%s\" није исправан у тренутно важећем контексту"
 
-#: ../src/mn-client-session.c:599
+#: ../src/mn-client-session.c:619
 #, c-format
 msgid "unable to parse response \"%s\""
 msgstr "није могуће обрадити одговор \"%s\""
 
-#: ../src/mn-client-session.c:649 ../src/mn-client-session.c:656
+#: ../src/mn-client-session.c:669 ../src/mn-client-session.c:676
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "Није могуће читање са сервера: %s"
 
-#: ../src/mn-client-session.c:654
+#: ../src/mn-client-session.c:674
 msgid "unable to read from server: EOF"
 msgstr "Није могуће читање са сервера: EOF"
 
-#: ../src/mn-client-session.c:666
+#: ../src/mn-client-session.c:686
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr "Не могу се декодовати подаци путем SASL: %s"
 
-#: ../src/mn-client-session.c:811
+#: ../src/mn-client-session.c:831
 #, c-format
 msgid "unable to encode data using SASL: %s"
 msgstr "није могуће кодирати податке уз помоћ SASL: %s"
 
-#: ../src/mn-client-session.c:842 ../src/mn-client-session.c:849
+#: ../src/mn-client-session.c:862 ../src/mn-client-session.c:869
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "није могућ упис на сервер: %s"
 
-#: ../src/mn-client-session.c:847
+#: ../src/mn-client-session.c:867
 msgid "unable to write to server: EOF"
 msgstr "није могућ упис на сервер: EOF"
 
-#: ../src/mn-client-session.c:878 ../src/mn-pop3-mailbox.gob:468
+#: ../src/mn-client-session.c:898 ../src/mn-pop3-mailbox.gob:433
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "није могуће кодирати Base64: %s"
 
-#: ../src/mn-client-session.c:1056
+#: ../src/mn-client-session.c:1075
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "не може се покренути SASL библиотека: %s"
 
-#: ../src/mn-client-session.c:1068
+#: ../src/mn-client-session.c:1087
 #, c-format
 msgid "unable to retrieve local address of socket: %s"
 msgstr "не може да се добави локална адреса утичнице: %s"
 
-#: ../src/mn-client-session.c:1074
+#: ../src/mn-client-session.c:1093
 #, c-format
 msgid "unable to retrieve remote address of socket: %s"
 msgstr "не може да се добави удаљена адреса утичнице: %s"
 
-#: ../src/mn-client-session.c:1108
+#: ../src/mn-client-session.c:1127
 #, c-format
 msgid "unable to set SASL security properties: %s"
 msgstr "није могуће поставити SASL сигурносне поставке: %s"
 
-#: ../src/mn-client-session.c:1132
+#: ../src/mn-client-session.c:1151
 msgid ""
 "unable to start SASL authentication: SASL asked for something we did not know"
 msgstr "не може се покренути SASL пријава: SASL тражи податке које немамо"
 
-#: ../src/mn-client-session.c:1151
+#: ../src/mn-client-session.c:1170
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "не може се покренути SASL пријава: %s"
 
-#: ../src/mn-client-session.c:1155
+#: ../src/mn-client-session.c:1174
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "није могуће успоставити SASL везу: %s"
 
-#: ../src/mn-client-session.c:1202
+#: ../src/mn-client-session.c:1221
 msgid "SASL asked for something we did not know, aborting SASL authentication"
 msgstr "SASL је тражио нама непознате податке, обустављам SASL пријаву"
 
-#: ../src/mn-client-session.c:1219
+#: ../src/mn-client-session.c:1238
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, обустављам SASL пријаву"
 
 #. compliance error
-#: ../src/mn-client-session.c:1224
+#: ../src/mn-client-session.c:1243
 #, c-format
 msgid "unable to decode Base64 input from server: %s"
 msgstr "није могуће декодовати Base64 улаз са сервера: %s"
 
-#: ../src/mn-client-session.c:1260
+#: ../src/mn-client-session.c:1279
 #, 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:1265
+#: ../src/mn-client-session.c:1284
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
 msgstr "не могу да прочитам поставку SASL_MAXOUTBUF: %s"
 
-#: ../src/mn-client-session.c:1271
+#: ../src/mn-client-session.c:1290
 #, c-format
 msgid "warning: unable to get SASL_SSF property: %s"
 msgstr "упозорење: не могу да прочитам поставку SASL_SSF: %s"
 
-#: ../src/mn-conf.c:240
+#: ../src/mn-client-session.c:1449
+msgid "unknown server error"
+msgstr "непозната грешка на серверу"
+
+#: ../src/mn-compact-message-view.gob:45
+msgid "Mailbox"
+msgstr "Сандуче"
+
+#: ../src/mn-compact-message-view.gob:46
+msgid "From"
+msgstr "Од"
+
+#: ../src/mn-compact-message-view.gob:47
+msgid "Subject"
+msgstr "Тема"
+
+#: ../src/mn-compact-message-view.gob:48
+msgid "Sent"
+msgstr "Послато"
+
+#: ../src/mn-conf.c:262
 msgid "A directory creation error has occurred"
 msgstr "Дошло је до грешке при прављењу директоријума"
 
-#: ../src/mn-conf.c:241
+#: ../src/mn-conf.c:263
 #, c-format
 msgid "Unable to create directory \"%s\": %s."
 msgstr "Није могуће направити директоријум ?%s?: %s."
 
-#: ../src/mn-conf.c:317
+#: ../src/mn-conf.c:402
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "рекурзивно поништавам %s"
 
-#: ../src/mn-conf.c:321
+#: ../src/mn-conf.c:406
 msgid "syncing the GConf database"
 msgstr "усклађујем GConf базу података"
 
-#: ../src/mn-conf.c:324
+#: ../src/mn-conf.c:409
 msgid "completed"
 msgstr "урађено"
 
+#: ../src/mn-conf.c:1137
+msgid "A command error has occurred in Mail Notification"
+msgstr "Дошло је до грешке у командама"
+
+#: ../src/mn-conf.c:1138
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "Није могуће извршити %s: %s"
+
 #: ../src/mn-custom-vfs-mailbox.gob:76
 msgid "invalid location"
 msgstr "неважеће место"
 
-#: ../src/mn-evolution-folder-tree-control.c:86
+#: ../src/mn-evolution-folder-tree-control.c:91
 msgid "The currently selected URI"
 msgstr "Тренутно изабран URI"
 
-#: ../src/mn-evolution-mailbox-properties.gob:67
+#. translators: header capitalization
+#: ../src/mn-evolution-mailbox-properties.gob:68
 msgid "Folder"
-msgstr "Директоријум"
+msgstr "Фасцикла"
 
-#: ../src/mn-evolution-mailbox-properties.gob:169
+#: ../src/mn-evolution-mailbox-properties.gob:159
 msgid ""
 "Mail Notification can not contact Evolution. Make sure that Evolution is "
 "running and that the Evolution Mail Notification plugin is loaded."
-msgstr "Дојава поште не може да се повеже са Еволуцијом. Покрените Еволуцију и укључите додатак за повезивање са Дојавом поште."
+msgstr ""
+"Дојава поште не може да се повеже са Еволуцијом. Покрените Еволуцију и "
+"укључите додатак за повезивање са Дојавом поште."
 
-#: ../src/mn-evolution-mailbox.gob:61
+#: ../src/mn-evolution-mailbox.gob:75
 msgid "folder not found"
-msgstr "директоријум није нађен"
+msgstr "фасцикла није нађена"
 
-#: ../src/mn-evolution-mailbox.gob:182
+#: ../src/mn-evolution-mailbox.gob:216
 msgid "unable to contact Evolution"
 msgstr "није могуће повезати се са Еволуцијом"
 
-#: ../src/mn-evolution-plugin.c:130 ../src/mn-evolution-plugin.c:134
+#: ../src/mn-evolution-plugin.c:136 ../src/mn-evolution-plugin.c:140
 msgid "Unable to activate the Mail Notification plugin"
 msgstr "Није могуће укључити прикључак за Дојаву поште"
 
-#: ../src/mn-evolution-plugin.c:130
+#: ../src/mn-evolution-plugin.c:136
 #, c-format
 msgid ""
 "Bonobo could not locate the %s server. Please check your Mail Notification "
 "installation."
-msgstr "Бонобо није успео да пронађе %s сервер. Молим проверите инсталацију Дојаве поште."
+msgstr ""
+"Бонобо није успео да пронађе %s сервер. Молим проверите инсталацију Дојаве "
+"поште."
 
-#: ../src/mn-evolution-plugin.c:134 ../src/mn-main.c:427
+#: ../src/mn-evolution-plugin.c:140 ../src/mn-main.c:460
 #, c-format
 msgid ""
 "Bonobo was unable to register the %s server. Please check your Mail "
 "Notification installation."
-msgstr "Бонобо није успео да забележи %s сервер. Молим проверите инсталацију Дојаве поште."
+msgstr ""
+"Бонобо није успео да забележи %s сервер. Молим проверите инсталацију Дојаве "
+"поште."
 
-#: ../src/mn-gmail-mailbox.gob:111
+#: ../src/mn-gmail-mailbox.gob:103
 msgid "invalid feed location"
 msgstr "место довода није исправно наведено"
 
-#: ../src/mn-gmail-mailbox.gob:125
+#: ../src/mn-gmail-mailbox.gob:117
 #, c-format
 msgid "retrieving feed from %s"
 msgstr "преузимање извора са %s"
 
-#: ../src/mn-gmail-mailbox.gob:132
+#: ../src/mn-gmail-mailbox.gob:124
 #, c-format
 msgid "unable to retrieve feed: %s"
 msgstr "није могуће пронаћи довод: %s"
 
-#: ../src/mn-gmail-mailbox.gob:147 ../src/mn-gmail-mailbox.gob:194
+#: ../src/mn-gmail-mailbox.gob:139 ../src/mn-gmail-mailbox.gob:187
 msgid "unable to parse feed"
 msgstr "није могуће обрадити довод"
 
-#: ../src/mn-gmime-stream-vfs.gob:49
-#: ../src/mn-sylpheed-mailbox-backend.gob:152
+#: ../src/mn-gmime-stream-vfs.gob:50
+#: ../src/mn-sylpheed-mailbox-backend.gob:205
 #, c-format
 msgid "unable to read %s: %s"
 msgstr "Није могуће прочитати %s: %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:51
+#: ../src/mn-gmime-stream-vfs.gob:52
 #, c-format
 msgid "unable to write to %s: %s"
 msgstr "није могућ упис на %s: %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:53
+#: ../src/mn-gmime-stream-vfs.gob:54
 #, c-format
 msgid "unable to seek in %s: %s"
 msgstr "Није могуће пронаћи у %s: %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:55
+#: ../src/mn-gmime-stream-vfs.gob:56
 #, c-format
 msgid "unable to tell position of %s: %s"
 msgstr "није могуће сазнати положај за %s: %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:57 ../src/mn-mh-mailbox-backend.gob:158
+#: ../src/mn-gmime-stream-vfs.gob:58 ../src/mn-mh-mailbox-backend.gob:164
 #, c-format
 msgid "unable to close %s: %s"
 msgstr "није могуће затворити %s: %s"
 
-#: ../src/mn-imap-mailbox-properties.gob:113
+#: ../src/mn-imap-mailbox-properties.gob:114
+#: ../src/mn-standard-message-view.gob:62
 msgid "Mailbox:"
 msgstr "Сандуче:"
 
-#: ../src/mn-imap-mailbox-properties.gob:117
+#: ../src/mn-imap-mailbox-properties.gob:118
 msgid "in_box"
 msgstr "in_box"
 
-#: ../src/mn-imap-mailbox-properties.gob:128
+#: ../src/mn-imap-mailbox-properties.gob:129
 msgid "oth_er:"
 msgstr "_друго:"
 
-#: ../src/mn-imap-mailbox-properties.gob:139
+#: ../src/mn-imap-mailbox-properties.gob:140
 msgid "ne_ver"
 msgstr "ни_кад"
 
-#: ../src/mn-imap-mailbox-properties.gob:140
+#: ../src/mn-imap-mailbox-properties.gob:141
 msgid "au_todetect"
 msgstr "а_утодетекција"
 
-#: ../src/mn-imap-mailbox-properties.gob:141
+#: ../src/mn-imap-mailbox-properties.gob:142
 msgid "al_ways"
 msgstr "_увек"
 
-#: ../src/mn-imap-mailbox-properties.gob:173
+#: ../src/mn-imap-mailbox-properties.gob:174
 msgid "Use the <span style=\"italic\">IDLE</span> extension:"
 msgstr "Користи <span style=\"italic\">IDLE</span> продужетак:"
 
-#: ../src/mn-imap-mailbox.gob:390
+#: ../src/mn-imap-mailbox.gob:384
 msgid "server did not send capabilities"
 msgstr "сервер није обавестио о својим могућностима"
 
-#: ../src/mn-imap-mailbox.gob:573
+#: ../src/mn-imap-mailbox.gob:551
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr "сервер је дојавио LOGINDISABLED, LOGIN пријавa неће бити коришћена"
 
-#: ../src/mn-imap-mailbox.gob:574
+#: ../src/mn-imap-mailbox.gob:552
 msgid "unable to login"
 msgstr "пријава није могућа"
 
 #. compliance error
-#: ../src/mn-imap-mailbox.gob:714
-msgid "server did not send search results"
-msgstr "сервер није послао резултате претраге"
-
-#. compliance error
-#: ../src/mn-imap-mailbox.gob:792
+#: ../src/mn-imap-mailbox.gob:752
 msgid "server did not send all the messages we requested"
 msgstr "сервер није послао све тражене поруке"
 
-#: ../src/mn-imap-mailbox.gob:859
+#: ../src/mn-imap-mailbox.gob:822
 msgid "unable to fetch message"
 msgstr "није могуће добавити поруку"
 
-#: ../src/mn-imap-mailbox.gob:875
+#: ../src/mn-imap-mailbox.gob:847
 msgid ""
 "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, "
 "logging out"
-msgstr "„Користи IDLE проширење“ је постављено на „никад“ у поставкама сандучића, одјављујем се"
+msgstr ""
+"„Користи IDLE проширење“ је постављено на „никад“ у поставкама сандучића, "
+"одјављујем се"
 
-#: ../src/mn-imap-mailbox.gob:886
+#: ../src/mn-imap-mailbox.gob:858
 #, c-format
 msgid "the remote server runs %s, not using the IDLE extension"
 msgstr "удаљени сервер користи %s, не користим IDLE продужетак"
 
-#: ../src/mn-imap-mailbox.gob:891
+#: ../src/mn-imap-mailbox.gob:863
 #, c-format
 msgid ""
 "the remote server runs %s, the IDLE extension might not function properly"
 msgstr "удаљени сервер користи %s, IDLE проширење можда неће исправно радити"
 
-#: ../src/mn-imap-mailbox.gob:900
+#: ../src/mn-imap-mailbox.gob:872
 msgid "the remote server does not support the IDLE extension, logging out"
 msgstr "удаљени сервер не подржава IDLE проширење, одјављујем се"
 
-#: ../src/mn-imap-mailbox.gob:1251 ../src/mn-pop3-mailbox.gob:1124
-msgid "unknown server error"
-msgstr "непозната грешка на серверу"
-
-#: ../src/mn-imap-mailbox.gob:1357 ../src/mn-pop3-mailbox.gob:311
+#: ../src/mn-imap-mailbox.gob:1377 ../src/mn-pop3-mailbox.gob:296
 msgid "server does not support in-band SSL/TLS"
 msgstr "сервер не подржава заштиту путем SSL/TLS"
 
-#: ../src/mn-imap-mailbox.gob:1381 ../src/mn-pop3-mailbox.gob:997
+#: ../src/mn-imap-mailbox.gob:1401 ../src/mn-pop3-mailbox.gob:947
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -874,145 +792,183 @@ msgstr ""
 "изабран је механизам за пријаву који користи SASL али подршка за SASL није "
 "уграђена у програм"
 
-#: ../src/mn-imap-mailbox.gob:1391 ../src/mn-pop3-mailbox.gob:1017
+#: ../src/mn-imap-mailbox.gob:1411 ../src/mn-pop3-mailbox.gob:967
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "непознат механизам за пријаву \"%s\""
 
-#: ../src/mn-imap-mailbox.gob:1423 ../src/mn-pop3-mailbox.gob:1053
+#: ../src/mn-imap-mailbox.gob:1443 ../src/mn-pop3-mailbox.gob:1003
 #, c-format
 msgid "disabling mechanism \"%s\" and retrying SASL authentication"
 msgstr "искључујем механизам „%s“ и покушавам SASL пријаву"
 
-#: ../src/mn-imap-mailbox.gob:1435
+#: ../src/mn-imap-mailbox.gob:1455
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "повратак на  IMAP LOGIN пријаву"
 
-#: ../src/mn-imap-mailbox.gob:1447 ../src/mn-pop3-mailbox.gob:1082
+#: ../src/mn-imap-mailbox.gob:1467 ../src/mn-pop3-mailbox.gob:1032
 msgid "authentication failed"
 msgstr "пријава није успела"
 
-#: ../src/mn-mail-icon.gob:91
-msgid "Main _Window"
-msgstr "Главни _прозор"
+#. success; caller must switch state itself
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:1528
+msgid "server did not send search results"
+msgstr "сервер није послао резултате претраге"
 
-#: ../src/mn-mail-icon.gob:92 ../src/mn-main-window.gob:165
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:89
 msgid "_Mail Reader"
 msgstr "_Читач поште"
 
-#: ../src/mn-mail-icon.gob:93 ../src/mn-main-window.gob:173
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:91 ../src/mn-mailbox-view.gob:312
 msgid "_Update"
 msgstr "_Освежи"
 
-#: ../src/mn-mail-icon.gob:99
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:98
 msgid "R_emove From Notification Area"
 msgstr "_Уклони са обавештајне зоне"
 
-#: ../src/mn-mailbox-properties-dialog.gob:88
+#. translators: header capitalization
+#: ../src/mn-mail-summary-popup.gob:270
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Сажетак порука</span>"
+
+#. translators: header capitalization
+#: ../src/mn-mail-summary-popup.gob:277
+msgid "<span weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Сажетак порука</span>"
+
+#. translators: header capitalization
+#: ../src/mn-mailbox-properties-dialog.gob:89
 #, c-format
 msgid "%s Properties"
 msgstr "Поставке за %s"
 
-#: ../src/mn-mailbox-properties-dialog.gob:205
+#. translators: header capitalization
+#: ../src/mn-mailbox-properties-dialog.gob:232
 msgid "Add a Mailbox"
 msgstr "Додај сандуче"
 
-#: ../src/mn-mailbox-view.gob:179
+#: ../src/mn-mailbox-view.gob:248
 msgid "A paste error has occurred"
 msgstr "Дошло је до грешке приликом налепљивања"
 
-#: ../src/mn-mailbox-view.gob:320 ../src/mn-message-view.gob:313
-msgid "Mailbox"
-msgstr "Сандуче"
-
-#: ../src/mn-mailbox-view.gob:523
+#: ../src/mn-mailbox-view.gob:557
 #, c-format
 msgid "unhandled %s mailbox (%s)"
 msgstr "необрађено %s сандуче (%s)"
 
-#: ../src/mn-mailbox-view.gob:528
+#: ../src/mn-mailbox-view.gob:562
 #, c-format
 msgid "%s mailbox"
 msgstr "%s сандуче"
 
-#: ../src/mn-mailbox-view.gob:543
+#: ../src/mn-mailbox-view.gob:577
 msgid "detecting mailbox type..."
 msgstr "препознајем врсту сандучета..."
 
-#: ../src/mn-mailbox.gob:278
+#: ../src/mn-mailbox.gob:472
 msgid "\"type\" attribute missing"
 msgstr "недостаје атрибут „врста“"
 
-#: ../src/mn-mailbox.gob:285
+#: ../src/mn-mailbox.gob:479
 #, c-format
 msgid "unknown mailbox type \"%s\""
 msgstr "непозната врста сандучета „%s“"
 
-#: ../src/mn-mailbox.gob:305
+#: ../src/mn-mailbox.gob:499
 #, c-format
 msgid ""
 "property \"%s\": unable to transform string \"%s\" into a value of type \"%s"
 "\""
 msgstr "особина „%s“: није могуће пребацити ниску „%s“ у вредност врсте „%s“"
 
-#: ../src/mn-mailbox.gob:744
+#: ../src/mn-mailbox.gob:948
 #, c-format
 msgid "property \"%s\" has no value"
 msgstr "особина „%s“ нема постављену вредност"
 
-#: ../src/mn-mailboxes.gob:203
+#: ../src/mn-mailboxes.gob:239
 msgid "An error has occurred while importing old mailboxes"
 msgstr "Дошло је до грешке приликом увожења старих сандучића"
 
-#: ../src/mn-mailboxes.gob:248
+#: ../src/mn-mailboxes.gob:265
 msgid "Unable to load the mailboxes configuration"
 msgstr "Није могуће увести подешавања сандучића"
 
-#: ../src/mn-mailboxes.gob:294
+#: ../src/mn-mailboxes.gob:311
 msgid "Unable to parse the XML document."
 msgstr "није могуће обрадити XML документ."
 
-#: ../src/mn-mailboxes.gob:301
+#: ../src/mn-mailboxes.gob:318
 msgid "The root element is missing."
 msgstr "Недостаје корени елемент."
 
-#: ../src/mn-mailboxes.gob:307
+#: ../src/mn-mailboxes.gob:324
 #, c-format
 msgid "The root element \"%s\" is invalid."
 msgstr "Корени елемент „%s“ је неважећи."
 
-#: ../src/mn-mailboxes.gob:330
+#: ../src/mn-mailboxes.gob:347
 #, c-format
 msgid "On line %i: %s."
 msgstr "У линији %i: %s."
 
-#: ../src/mn-mailboxes.gob:335
+#: ../src/mn-mailboxes.gob:352
 #, c-format
 msgid "On line %i: unknown element \"%s\"."
 msgstr "У линији %i: непознати елемент „%s“."
 
-#: ../src/mn-mailboxes.gob:346
+#: ../src/mn-mailboxes.gob:361
 msgid "An error has occurred while loading the mailboxes configuration"
 msgid_plural "Errors have occurred while loading the mailboxes configuration"
 msgstr[0] "Дошло је до грешке приликом учитавања подешавања сандучића"
 msgstr[1] "Дошло је до грешака приликом учитавања подешавања сандучића"
 msgstr[2] "Дошло је до грешака приликом учитавања подешавања сандучића"
 
-#: ../src/mn-mailboxes.gob:371
+#: ../src/mn-mailboxes.gob:386
 msgid "Unable to save the mailboxes configuration"
 msgstr "Није могуће сачувати подешавања сандучића"
 
-#: ../src/mn-mailboxes.gob:417
+#: ../src/mn-mailboxes.gob:428
+#, c-format
+msgid "Unable to remove %s: %s."
+msgstr "Није могуће уклонити %s: %s"
+
+#: ../src/mn-mailboxes.gob:436
+#, c-format
+msgid "Unable to create %s: %s."
+msgstr "Није могуће направити %s: %s"
+
+#: ../src/mn-mailboxes.gob:443
+#, c-format
+msgid "Unable to open %s for writing: %s."
+msgstr "Није могуће отворити %s за упис: %s"
+
+#: ../src/mn-mailboxes.gob:450
 msgid "Unable to write the XML document."
-msgstr "Нијем могуће записати XML документ."
+msgstr "Није могуће записати XML документ."
+
+#: ../src/mn-mailboxes.gob:456
+#, c-format
+msgid "Unable to close %s: %s."
+msgstr "Није могуће затворити %s: %s"
+
+#: ../src/mn-mailboxes.gob:466 ../src/mn-mailboxes.gob:473
+#, c-format
+msgid "Unable to rename %s to %s: %s."
+msgstr "Није могуће преименовати %s у %s: %s"
 
 #. non fatal
-#: ../src/mn-mailboxes.gob:433
+#: ../src/mn-mailboxes.gob:479
 #, c-format
 msgid "unable to delete %s: %s"
 msgstr "није могуће обрисати %s: %s"
 
-#: ../src/mn-mailboxes.gob:457
+#: ../src/mn-mailboxes.gob:509
 #, c-format
 msgid "%s has %i new message"
 msgid_plural "%s has %i new messages"
@@ -1020,230 +976,98 @@ msgstr[0] "Сандуче %s има %i нову поруку"
 msgstr[1] "Сандуче %s има %i нове поруке"
 msgstr[2] "Сандуче %s има %i нових порука"
 
-#: ../src/mn-mailboxes.gob:483
+#: ../src/mn-mailboxes.gob:535
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s је дојавио грешку: %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:111
+#: ../src/mn-maildir-mailbox-backend.gob:125
 #, c-format
-msgid "unable to open folder \"new\": %s"
-msgstr "није могуће отворити директоријум \"new\": %s"
+msgid "unable to open folder \"%s\": %s"
+msgstr "није могуће отворити фасциклу „%s?: %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:144
+#: ../src/mn-maildir-mailbox-backend.gob:173
 #, c-format
-msgid "unable to close folder \"new\": %s"
-msgstr "није могуће затворити директоријум \"new\": %s"
+msgid "unable to close folder \"%s\": %s"
+msgstr "није могуће затворити фасциклу „%s?: %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:147
+#: ../src/mn-maildir-mailbox-backend.gob:176
 #, c-format
-msgid "error while reading folder \"new\": %s"
-msgstr "грешка при читању директоријума \"new\": %s"
-
-#: ../src/mn-main-window.gob:106
-msgid "Help messages"
-msgstr "Поруке за помоћ"
-
-#: ../src/mn-main-window.gob:107
-msgid "Count messages"
-msgstr "Преброј поруке"
-
-#. Toplevel
-#: ../src/mn-main-window.gob:156
-msgid "_Mail"
-msgstr "_Пошта"
-
-#: ../src/mn-main-window.gob:157
-msgid "_Edit"
-msgstr "_Уреди"
-
-#: ../src/mn-main-window.gob:158
-msgid "_View"
-msgstr "_Преглед"
-
-#: ../src/mn-main-window.gob:159
-msgid "_Help"
-msgstr "П_омоћ"
-
-#: ../src/mn-main-window.gob:167
-msgid "Launch the mail reader"
-msgstr "П_окрени читач поште"
-
-#. Reload
-#: ../src/mn-main-window.gob:175 ../src/mn-main.c:248
-msgid "Update the mail status"
-msgstr "Освежи податке о пошти"
-
-#: ../src/mn-main-window.gob:181
-msgid "_Close"
-msgstr "_Затвори"
-
-#: ../src/mn-main-window.gob:183
-msgid "Close this window"
-msgstr "Затвори овај прозор"
-
-#: ../src/mn-main-window.gob:189
-msgid "_Quit"
-msgstr "_Крај"
-
-#: ../src/mn-main-window.gob:191 ../src/mn-main.c:266
-msgid "Quit Mail Notification"
-msgstr "Угаси дојаву поште"
-
-#: ../src/mn-main-window.gob:199 ../src/mn-main-window.gob:247
-msgid "_Toolbars"
-msgstr "_Алатне траке"
-
-#: ../src/mn-main-window.gob:201
-msgid "Customize the toolbars"
-msgstr "Уреди алатне траке"
-
-#: ../src/mn-main-window.gob:207
-msgid "_Preferences"
-msgstr "_Поставке"
-
-#: ../src/mn-main-window.gob:217
-msgid "Toolbars Styl_e"
-msgstr "Стил алатних _трака"
-
-#: ../src/mn-main-window.gob:219
-msgid "Customize the toolbars style"
-msgstr "Прилагоди стил алатних трака"
-
-#: ../src/mn-main-window.gob:227
-msgid "_Contents"
-msgstr "_Садржај"
-
-#: ../src/mn-main-window.gob:229
-msgid "Display help"
-msgstr "Прикажи помоћ"
-
-#: ../src/mn-main-window.gob:235
-msgid "_About"
-msgstr "_О програму"
-
-#: ../src/mn-main-window.gob:237
-msgid "Display credits"
-msgstr "Прикажи заслуге"
-
-#: ../src/mn-main-window.gob:249
-msgid "Show or hide the toolbars"
-msgstr "Прикажи или уклони алатну траку"
-
-#: ../src/mn-main-window.gob:256
-msgid "_Statusbar"
-msgstr "_Статусна трака"
-
-#: ../src/mn-main-window.gob:258
-msgid "Show or hide the statusbar"
-msgstr "Прикажи или уклони статусну траку"
-
-#: ../src/mn-main-window.gob:269
-msgid "_Desktop Default"
-msgstr "_Подразумевано у окружењу"
-
-#: ../src/mn-main-window.gob:271
-msgid "Set the toolbars style to the desktop default setting"
-msgstr "Постави стилове трака на стил који важи у целом радном окружењу"
+msgid "error while reading folder \"%s\": %s"
+msgstr "грешка при читању фасцикле „%s?: %s"
 
-#: ../src/mn-main-window.gob:277
-msgid "I_cons Only"
-msgstr "Само _слике"
+#: ../src/mn-main.c:100
+msgid "yes"
+msgstr "да"
 
-#: ../src/mn-main-window.gob:279
-msgid "Only display the toolbars icons"
-msgstr "Прикажи само слике у статусној траци"
+#: ../src/mn-main.c:100
+msgid "no"
+msgstr "не"
 
-#: ../src/mn-main-window.gob:285
-msgid "_Text Only"
-msgstr "Само _текст"
-
-#: ../src/mn-main-window.gob:287
-msgid "Only display the toolbars text"
-msgstr "Прикажи само текст у алатној траци"
-
-#: ../src/mn-main-window.gob:293
-msgid "Text Belo_w Icons"
-msgstr "Текст _испод слика"
-
-#: ../src/mn-main-window.gob:295
-msgid "Display the toolbars text below the icons"
-msgstr "Прикажи текст испод одговарајуће слике у алатној траци"
-
-#: ../src/mn-main-window.gob:301
-msgid "Text Be_side Icons"
-msgstr "Текст _поред слика"
+#: ../src/mn-main.c:132
+#, c-format
+msgid "%s version %s\n"
+msgstr "%s издање %s\n"
 
-#: ../src/mn-main-window.gob:303
-msgid "Display the toolbars text beside the icons"
-msgstr "Прикажи текст поред одговарајуће слике у алатној траци"
+#: ../src/mn-main.c:137
+msgid "Mailbox backends:\n"
+msgstr "Подржани сандучићи:\n"
 
-#: ../src/mn-main-window.gob:345
-#, c-format
-msgid "unable to load menus.xml: %s"
-msgstr "Није могуће прочитати menus.xml: %s"
+#: ../src/mn-main.c:142
+msgid "POP3 and IMAP features:\n"
+msgstr "Могућности за POP3 и IMAP:\n"
 
-#: ../src/mn-main-window.gob:388
-msgid "unable to load toolbars.xml"
-msgstr "није могуће учитати toolbars.xml: %s"
+# FIXME: избаци латинични назив када буде време
+#: ../src/mn-main.c:147
+msgid "Sylpheed features:\n"
+msgstr "Особине Силфида (Sylpheed):\n"
 
-#: ../src/mn-main-window.gob:439
+#: ../src/mn-main.c:198
 #, c-format
-msgid "%i new message"
-msgid_plural "%i new messages"
-msgstr[0] "%i нова порука"
-msgstr[1] "%i нове поруке"
-msgstr[2] "%i нових порука"
-
-#.
-#. * Here and everywhere else, we order the backends by descending
-#. * order of (believed) popularity.
-#.
-#: ../src/mn-main.c:96
-msgid "Compiled-in mailbox backends: "
-msgstr "Уграђене могућности за сандучиће:"
+msgid "A Bonobo exception (%s) has occurred in %s()."
+msgstr "Десио се Бонобов изузетак (%s) у %s()."
 
-#: ../src/mn-main.c:124
-msgid "Compiled-in POP3 and IMAP features: "
-msgstr "Уграђене могућности за POP3 и IMAP: "
+#: ../src/mn-main.c:220
+msgid "Show version information"
+msgstr "Прикажи податке о издању"
 
-#: ../src/mn-main.c:194
+#: ../src/mn-main.c:229
 msgid "Enable informational output"
 msgstr "Дозволи речитији излаз"
 
-#: ../src/mn-main.c:203
-msgid "List the compiled-in features"
-msgstr "Испиши уграђене могућности"
-
-#: ../src/mn-main.c:212
-msgid "Display the main window"
-msgstr "Прикажи главни прозор"
-
-#: ../src/mn-main.c:221
+#: ../src/mn-main.c:238
 msgid "Display the properties dialog"
 msgstr "Прикажи прозор са поставкама"
 
-#: ../src/mn-main.c:230
+#: ../src/mn-main.c:247
 msgid "Display the about dialog"
 msgstr "Прикажи податке о програму"
 
-#: ../src/mn-main.c:239
+#: ../src/mn-main.c:256
 msgid "Close the mail summary popup"
 msgstr "Затвори прозор са сажетком порука"
 
-#: ../src/mn-main.c:257
+#: ../src/mn-main.c:265
+msgid "Update the mail status"
+msgstr "Освежи податке о пошти"
+
+#: ../src/mn-main.c:274
 msgid "Unset obsolete GConf configuration"
 msgstr "Поништи застарела GConf подешавања"
 
-#.
-#. * We can't use mn_error_dialog() because gtk_init() has not been
-#. * called yet.
-#.
-#: ../src/mn-main.c:293
+#: ../src/mn-main.c:283
+msgid "Quit Mail Notification"
+msgstr "Угаси дојаву поште"
+
+#.
+#. * We cannot use mn_fatal_error_dialog() because gtk_init() has
+#. * not been called yet.
+#.
+#: ../src/mn-main.c:310
 msgid "multi-threading is not available"
 msgstr "вишенитни рад није подржан"
 
-#: ../src/mn-main.c:355
+#: ../src/mn-main.c:365
 msgid ""
 "Bonobo could not locate the automation object. Please check your Mail "
 "Notification installation."
@@ -1253,122 +1077,64 @@ msgstr ""
 "Бонобо у Гному 2.6, када инсталирате програм за обавештења, треба да се "
 "одјавите и поново пријавите на систем да би све почело да ради)"
 
-#: ../src/mn-main.c:361
+#: ../src/mn-main.c:371
 msgid "quitting Mail Notification"
 msgstr "Гасим дојаву поште"
 
-#: ../src/mn-main.c:365
+#: ../src/mn-main.c:375
 msgid "Mail Notification is not running"
 msgstr "Програм за дојаву поште није покренут."
 
-#: ../src/mn-main.c:372
+#: ../src/mn-main.c:390
 msgid "Unable to initialize the GnomeVFS library."
 msgstr "Није могуће покренути библиотеку GnomeVFS."
 
-#: ../src/mn-main.c:404
+#: ../src/mn-main.c:438
 msgid "updating the mail status"
 msgstr "Проверавам пошту"
 
-#: ../src/mn-main.c:413
+#: ../src/mn-main.c:446
 msgid "Mail Notification is already running"
 msgstr "Програм за дојаву поште је већ покренут."
 
-#: ../src/mn-main.c:423
+#: ../src/mn-main.c:456
 #, c-format
 msgid ""
 "Bonobo could not locate the %s file. Please check your Mail Notification "
 "installation."
-msgstr "Бонобо није могао да пронађе датотеку %s. Молимо проверите подешавања Дојаве поште."
+msgstr ""
+"Бонобо није могао да пронађе датотеку %s. Молимо проверите подешавања Дојаве "
+"поште."
 
-#: ../src/mn-mbox-mailbox-backend.gob:209
+#: ../src/mn-mbox-mailbox-backend.gob:281
 #, c-format
 msgid "unable to close file: %s"
 msgstr "није могуће затворити датотеку: %s"
 
-#: ../src/mn-mbox-mailbox-backend.gob:222
+#: ../src/mn-mbox-mailbox-backend.gob:298
 #, c-format
 msgid "unable to open mailbox: %s"
 msgstr "није могуће отворити сандуче: %s"
 
-#: ../src/mn-message-mime.c:104
+#: ../src/mn-message-mime.c:121
 msgid "unable to parse MIME message"
 msgstr "није могуће обрадити MIME поруку"
 
-#: ../src/mn-message-view.gob:82
-msgid "You have no new mail."
-msgstr "Нема поште."
-
-#: ../src/mn-message-view.gob:322
-msgid "Unreadable message"
-msgstr "Нечитљива порука"
-
-#: ../src/mn-message-view.gob:330
-msgid "From"
-msgstr "Од"
-
-#: ../src/mn-message-view.gob:338
-msgid "Subject"
-msgstr "Тема"
-
-#: ../src/mn-message-view.gob:349
-msgid "Sent"
-msgstr "Послато"
-
-#: ../src/mn-message.gob:99
+#: ../src/mn-message.gob:111
 msgid "Unknown"
 msgstr "Непознато"
 
-#: ../src/mn-message.gob:124
-#, c-format
-msgid "%i second ago"
-msgid_plural "%i seconds ago"
-msgstr[0] "пре %i секунду"
-msgstr[1] "пре %i секунде"
-msgstr[2] "пре %i секунди"
-
-#: ../src/mn-message.gob:128
-#, c-format
-msgid "about %i minute ago"
-msgid_plural "about %i minutes ago"
-msgstr[0] "пре око %i минут"
-msgstr[1] "пре око %i минута"
-msgstr[2] "пре око %i минута"
-
-#: ../src/mn-message.gob:133
-#, c-format
-msgid "about %i hour ago"
-msgid_plural "about %i hours ago"
-msgstr[0] "пре око %i сат"
-msgstr[1] "пре око %i сата"
-msgstr[2] "пре око %i сати"
-
-#: ../src/mn-message.gob:138
-#, c-format
-msgid "about %i day ago"
-msgid_plural "about %i days ago"
-msgstr[0] "пре око %i дан"
-msgstr[1] "пре око %i дана"
-msgstr[2] "пре око %i дана"
-
-#: ../src/mn-message.gob:143
-#, c-format
-msgid "about %i week ago"
-msgid_plural "about %i weeks ago"
-msgstr[0] "пре око %i недељу"
-msgstr[1] "пре око %i недеље"
-msgstr[2] "пре око %i недеља"
-
 #. translators: "none" is used like "Mailbox: none"
-#: ../src/mn-message.gob:163
+#: ../src/mn-message.gob:130
 msgid "none"
 msgstr "ниједно"
 
-#: ../src/mn-mh-mailbox-backend.gob:161
+#: ../src/mn-mh-mailbox-backend.gob:167
 #, c-format
 msgid "error while reading %s: %s"
 msgstr "грешка при читању %s: %s"
 
-#: ../src/mn-mh-mailbox-backend.gob:174
+#: ../src/mn-mh-mailbox-backend.gob:180
 #, c-format
 msgid "unable to open %s: %s"
 msgstr "није могуће отворити %s: %s"
@@ -1378,38 +1144,63 @@ msgid "sta_ndard"
 msgstr "_стандард"
 
 #: ../src/mn-pi-mailbox-properties.gob:68
-msgid "_in-band SSL/TLS"
-msgstr "_уграђени SSL/TLS"
+msgid "in-band SS_L/TLS"
+msgstr "уграђени SSL/TLS"
 
 #: ../src/mn-pi-mailbox-properties.gob:69
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS на посебном порту"
 
 #: ../src/mn-pi-mailbox-properties.gob:73
-msgid "_Hostname:"
+msgid "Ho_stname:"
 msgstr "_Рачунар:"
 
-#: ../src/mn-pi-mailbox-properties.gob:93
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox-properties.gob:94
 msgid "_Details"
 msgstr "_Детаљи"
 
-#: ../src/mn-pi-mailbox-properties.gob:148
+#: ../src/mn-pi-mailbox-properties.gob:149
 msgid "Connection type:"
 msgstr "Врста везе:"
 
-#: ../src/mn-pi-mailbox-properties.gob:155
+#: ../src/mn-pi-mailbox-properties.gob:156
 msgid "Port:"
 msgstr "Порт:"
 
-#: ../src/mn-pi-mailbox-properties.gob:178
-msgid "_Authentication mechanism:"
+#: ../src/mn-pi-mailbox-properties.gob:179
+msgid "Authent_ication mechanism:"
 msgstr "_Начин пријаве:"
 
-#: ../src/mn-pi-mailbox.gob:113
+#: ../src/mn-pi-mailbox.gob:151
 msgid "SSL/TLS support has not been compiled in"
 msgstr "Подршка за SSL/TLS није уграђена"
 
-#: ../src/mn-pop3-mailbox.gob:359
+#: ../src/mn-pi-mailbox.gob:317
+#, c-format
+msgid ""
+"Mail Notification was unable to log into %s mailbox %s, possibly because the "
+"credentials you have entered are invalid.\n"
+"\n"
+"Please re-enter your credentials."
+msgstr ""
+"Није могуће пријавити се за читање %s сандучета %s, највероватније зато што "
+"унета лозинка није исправна.\n"
+"\n"
+"Молим унесите поново лозинку."
+
+#: ../src/mn-pi-mailbox.gob:318
+#, c-format
+msgid "Enter your credentials for %s mailbox %s."
+msgstr "Унесите лозинку за %s сандуче %s."
+
+#. keep the title in sync with gnome-authentication-manager
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox.gob:361
+msgid "Authentication Required"
+msgstr "Потребна је пријава"
+
+#: ../src/mn-pop3-mailbox.gob:344
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "параметри за могућност LOGIN-DELAY нису исправно постављени"
 
@@ -1419,17 +1210,19 @@ msgstr "параметри за могућност LOGIN-DELAY нису испр
 #. * servers nevertheless, by retrying without the SASL
 #. * initial client response.
 #.
-#: ../src/mn-pop3-mailbox.gob:519
+#: ../src/mn-pop3-mailbox.gob:485
 msgid ""
 "SASL authentication with initial client response failed, retrying without "
 "initial client response"
-msgstr "SASL аутентификација са почетним клијентским одговором није успела, покушавам поново без почетног клијентског одговора"
+msgstr ""
+"SASL аутентификација са почетним клијентским одговором није успела, "
+"покушавам поново без почетног клијентског одговора"
 
-#: ../src/mn-pop3-mailbox.gob:733
+#: ../src/mn-pop3-mailbox.gob:696
 msgid "unknown error"
 msgstr "непозната грешка"
 
-#: ../src/mn-pop3-mailbox.gob:828
+#: ../src/mn-pop3-mailbox.gob:791
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
@@ -1437,19 +1230,20 @@ msgstr[0] "тражен је застој при пријави, паузира
 msgstr[1] "тражен је застој при пријави, паузирам %i секундe"
 msgstr[2] "тражен је застој при пријави, паузирам %i секунди"
 
-#: ../src/mn-pop3-mailbox.gob:1009
+#: ../src/mn-pop3-mailbox.gob:959
 msgid "server does not support APOP authentication"
 msgstr "сервер не подржава пријаву коришћењем механизма APOP"
 
-#: ../src/mn-pop3-mailbox.gob:1065
+#: ../src/mn-pop3-mailbox.gob:1015
 msgid "falling back to APOP authentication"
 msgstr "прелазим на  APOP пријаву"
 
-#: ../src/mn-pop3-mailbox.gob:1070
+#: ../src/mn-pop3-mailbox.gob:1020
 msgid "falling back to USER/PASS authentication"
 msgstr "прелазим на пријаву помоћу имена и лозинке"
 
-#: ../src/mn-properties-dialog.gob:170 ../ui/properties-dialog.glade.h:10
+#. translators: header capitalization
+#: ../src/mn-properties-dialog.gob:173 ../ui/properties-dialog.glade.h:23
 msgid "Mail Notification Properties"
 msgstr "Поставке за дојаву"
 
@@ -1469,11 +1263,11 @@ msgstr "доле-лево"
 msgid "bottom right"
 msgstr "доле-десно"
 
-#: ../src/mn-properties-dialog.gob:329
+#: ../src/mn-properties-dialog.gob:332
 msgid "No mailbox selected."
 msgstr "Ниједно сандуче није изабрано."
 
-#: ../src/mn-properties-dialog.gob:334
+#: ../src/mn-properties-dialog.gob:337
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
@@ -1481,143 +1275,169 @@ msgstr[0] "Изабрано %i сандуче"
 msgstr[1] "Изабрана %i сандучета"
 msgstr[2] "Изабрано %i сандучета"
 
-#: ../src/mn-properties-dialog.gob:465
+#: ../src/mn-properties-dialog.gob:456
 #, c-format
 msgid "Test message #%i"
 msgstr "Текст поруке #%i"
 
-#: ../src/mn-properties-dialog.gob:470
+#. translators: header capitalization
+#: ../src/mn-properties-dialog.gob:462
 msgid "Mail Notification Properties Dialog"
 msgstr "Дијалог за поставке Дојаве поште"
 
-#: ../src/mn-shell.gob:109
-msgid "You have new mail."
-msgstr "Имате нову пошту."
-
-#: ../src/mn-shell.gob:374
+#. translators: header capitalization
+#: ../src/mn-shell.gob:381
 msgid "Mailboxes Having New Mail"
 msgstr "Сандучићи са новом поштом"
 
-#: ../src/mn-shell.gob:393
+#. translators: header capitalization
+#: ../src/mn-shell.gob:400
 msgid "Errors"
 msgstr "Грешке"
 
-#: ../src/mn-shell.gob:408
+#. translators: header capitalization
+#: ../src/mn-shell.gob:416
 msgid "Mail Summary"
 msgstr "Сажетак порука"
 
+#: ../src/mn-shell.gob:445
+msgid "You have no new mail."
+msgstr "Нема нових порука."
+
 #: ../src/mn-ssl.c:76
 msgid "unknown SSL/TLS error"
-msgstr "непозната грешка у  SSL/TLS"
+msgstr "непозната грешка са ССЛ/ТЛС"
 
-#: ../src/mn-stock.c:28
-msgid "Select _All"
-msgstr "Изабери _све"
+#: ../src/mn-standard-message-view.gob:64
+msgid "Unreadable message:"
+msgstr "Нечитљива порука:"
+
+#: ../src/mn-standard-message-view.gob:67
+msgid "From:"
+msgstr "Шаље:"
+
+#: ../src/mn-standard-message-view.gob:68
+msgid "Subject:"
+msgstr "Тема:"
 
+#: ../src/mn-standard-message-view.gob:72
+msgid "Sent:"
+msgstr "Послато:"
+
+#. translators: header capitalization
 #: ../src/mn-stock.c:29
-msgid "Leave Fullscreen"
-msgstr "Остави на целом екрану"
+msgid "Select _All"
+msgstr "Изабери _све"
 
-#: ../src/mn-stock.c:30
+#. translators: header capitalization
+#. translators: header capitalization
+#: ../src/mn-stock.c:32
 msgid "Co_nnect"
 msgstr "_Повежи се"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:170
+#: ../src/mn-sylpheed-mailbox-backend.gob:223
 #, c-format
 msgid "unable to open folder: %s"
-msgstr "није могуће отворити директоријум: %s"
+msgstr "није могуће отворити фасциклу: %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:209
+#: ../src/mn-sylpheed-mailbox-backend.gob:276
 #, c-format
 msgid "unable to close folder: %s"
-msgstr "није могуће затворити директоријум: %s"
+msgstr "није могуће затворити фасциклу: %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:212
+#: ../src/mn-sylpheed-mailbox-backend.gob:279
 #, c-format
 msgid "error while reading folder: %s"
-msgstr "грешка при читању директоријума: %s"
+msgstr "грешка при читању фасциклу: %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:255
+#: ../src/mn-sylpheed-mailbox-backend.gob:420
 msgid "unexpected end of file"
 msgstr "неочекивани крај датотеке"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:269
+#: ../src/mn-sylpheed-mailbox-backend.gob:438
 #, c-format
 msgid "incompatible file version \"%i\""
 msgstr "издање датотеке није сагласно „%i“"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:272
+#: ../src/mn-sylpheed-mailbox-backend.gob:441
 msgid "file version missing"
 msgstr "недостаје издање датотеке"
 
-#: ../src/mn-system-vfs-mailbox-properties.gob:39
-#: ../src/mn-system-vfs-mailbox-properties.gob:47
+#: ../src/mn-system-vfs-mailbox-properties.gob:40
+#: ../src/mn-system-vfs-mailbox-properties.gob:48
 #: ../src/mn-system-vfs-mailbox.gob:45
 msgid "System mailbox"
 msgstr "Системско сандуче"
 
-#: ../src/mn-system-vfs-mailbox-properties.gob:68
+#: ../src/mn-system-vfs-mailbox-properties.gob:70
 #, c-format
 msgid "Your system mailbox is <span weight=\"bold\">%s</span>."
 msgstr "Ваше системско сандуче је <span weight=\"bold\">%s</span>."
 
-#: ../src/mn-system-vfs-mailbox-properties.gob:75
+#: ../src/mn-system-vfs-mailbox-properties.gob:77
 msgid ""
 "The location of your system mailbox could not be detected. Check the MAIL "
 "environment variable."
 msgstr "Место системског сандучета није пронађено. Проверите променљиву MAIL."
 
 #: ../src/mn-system-vfs-mailbox.gob:72
-msgid "MAIL environment variable not defined"
-msgstr "променљива MAIL није дефинисана"
+msgid "system mailbox not found"
+msgstr "системско сандуче није пронађено"
 
-#: ../src/mn-util.c:281
+#: ../src/mn-util.c:349
 #, c-format
 msgid "error loading image: %s"
 msgstr "грешка при учитавању слике: %s"
 
-#: ../src/mn-util.c:298
+#: ../src/mn-util.c:365
 #, c-format
-msgid "widget \"%s\" not found in interface \"%s\""
-msgstr "елемент ?%s? није пронађен у сучељу ?%s?"
+msgid ""
+"Unable to load interface \"%s\". Please check your Mail Notification "
+"installation."
+msgstr "Није могуће учитати сучеље „%s?. Молимо проверите инсталацију Дојаве поште."
 
-#: ../src/mn-util.c:398
+#: ../src/mn-util.c:380
 #, c-format
-msgid "unable to open self as a module: %s"
-msgstr "није могуће отворити као модул: %s"
+msgid ""
+"Widget \"%s\" not found in interface \"%s\". Please check your Mail "
+"Notification installation."
+msgstr "Компонента „%s? није пронађена у сучељу „%s?. Молимо проверите инсталацију Дојаве поште."
+
+#: ../src/mn-util.c:449
+#, c-format
+msgid "Unable to open self as a module (%s)."
+msgstr "није могуће отворити себе као модул (%s)."
 
-#: ../src/mn-util.c:403
+#: ../src/mn-util.c:454
 #, c-format
-msgid "signal handler \"%s\" not found"
-msgstr "обрађивач сигнала „%s“ није пронађен"
+msgid ""
+"Signal handler \"%s\" not found. Please check your Mail Notification "
+"installation."
+msgstr "Обрађивач сигнала „%s? није пронађен. Молимо проверите инсталацију Дојаве поште."
 
-#: ../src/mn-util.c:556 ../src/mn-util.c:579 ../src/mn-util.c:601
-#: ../src/mn-util.c:623
+#: ../src/mn-util.c:605 ../src/mn-util.c:628 ../src/mn-util.c:648
+#: ../src/mn-util.c:670
 msgid "A drag and drop error has occurred"
 msgstr "Дошло је до грешке при превлачењу/пуштању"
 
-#: ../src/mn-util.c:557
+#: ../src/mn-util.c:606
 msgid "An invalid location list has been received."
 msgstr "Примљен је неважећи списак места."
 
-#: ../src/mn-util.c:602
+#: ../src/mn-util.c:649
 msgid "An invalid Mozilla location has been received."
 msgstr "Примљен је неважећи Мозилин списак места."
 
-#: ../src/mn-util.c:678
+#: ../src/mn-util.c:725
 msgid "Unable to display help"
 msgstr "Није могуће приказати помоћ"
 
-#: ../src/mn-util.c:692
+#: ../src/mn-util.c:739
 #, c-format
 msgid "Unable to create a thread: %s."
 msgstr "Није могуће покренути нит: %s."
 
-#: ../src/mn-util.c:782
-msgid "_Do not show this message again"
-msgstr "_Не приказуј више ову поруку"
-
-#: ../src/mn-util.c:892
+#: ../src/mn-util.c:899
 #, c-format
 msgid ""
 "The following location is invalid:\n"
@@ -1627,285 +1447,587 @@ msgid_plural ""
 "The following locations are invalid:\n"
 "\n"
 "%s"
-msgstr[0] "Следеће место је неважеће:\n"
+msgstr[0] ""
+"Следеће место је неважеће:\n"
 "\n"
 "%s"
-msgstr[1] "Следећа места су неважећа:\n"
+msgstr[1] ""
+"Следећа места су неважећа:\n"
 "\n"
 "%s"
-msgstr[2] "Следећа места су неважећа:\n"
+msgstr[2] ""
+"Следећа места су неважећа:\n"
 "\n"
 "%s"
 
-#: ../src/mn-util.c:912
+#: ../src/mn-util.c:919
 msgid "A fatal error has occurred in Mail Notification"
 msgstr "Дошло је до кобне грешке у програму за дојаву поште"
 
-#: ../src/mn-util.c:951
+#: ../src/mn-util.c:958
 #, c-format
 msgid "unable to get current time: %s"
 msgstr "није могуће добавити тренутно време: %s"
 
-#: ../src/mn-util.c:1013
+#: ../src/mn-util.c:1250
 #, c-format
-msgid "invalid signal specification \"%s\""
-msgstr "неважећа одредница за сигнал ?%s?"
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] "пре %i секунду"
+msgstr[1] "пре %i секунде"
+msgstr[2] "пре %i секунди"
 
-#: ../src/mn-util.c:1052
-msgid "A command error has occurred in Mail Notification"
-msgstr "Дошло је до грешке у командама"
+#: ../src/mn-util.c:1254
+#, c-format
+msgid "about %i minute ago"
+msgid_plural "about %i minutes ago"
+msgstr[0] "пре око %i минут"
+msgstr[1] "пре око %i минута"
+msgstr[2] "пре око %i минута"
 
-#: ../src/mn-util.c:1053
+#: ../src/mn-util.c:1259
 #, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "Није могуће извршити %s: %s"
+msgid "about %i hour ago"
+msgid_plural "about %i hours ago"
+msgstr[0] "пре око %i сат"
+msgstr[1] "пре око %i сата"
+msgstr[2] "пре око %i сати"
 
-#: ../src/mn-util.c:1311
+#: ../src/mn-util.c:1264
 #, c-format
-msgid "unable to rename %s to %s: %s"
-msgstr "Није могуће преименовати %s у %s: %s"
+msgid "about %i day ago"
+msgid_plural "about %i days ago"
+msgstr[0] "пре око %i дан"
+msgstr[1] "пре око %i дана"
+msgstr[2] "пре око %i дана"
 
-#: ../src/mn-vfs-mailbox-backend.gob:117
+#: ../src/mn-util.c:1269
 #, c-format
-msgid "unable to monitor mailbox contents (%s), poll mode activated"
-msgstr "није могуће надгледати садржај сандучета (%s), упити су активирани"
+msgid "about %i week ago"
+msgid_plural "about %i weeks ago"
+msgstr[0] "пре око %i недељу"
+msgstr[1] "пре око %i недеље"
+msgstr[2] "пре око %i недеља"
+
+#: ../src/mn-util.c:1282
+msgid "unknown date"
+msgstr "непознат датум"
 
-#: ../src/mn-vfs-mailbox.gob:238
+#: ../src/mn-vfs-mailbox.gob:221
 #, c-format
-msgid "unable to monitor mailbox type (%s), poll mode activated"
-msgstr "није могуће надгледати садржај сандучета (%s), упити су активирани"
+msgid "unable to monitor %s (%s), poll mode activated"
+msgstr "није могуће надгледати %s (%s), упити су активирани"
 
-#: ../src/mn-vfs-mailbox.gob:307
+#: ../src/mn-vfs-mailbox.gob:385
 msgid "unknown mailbox format"
 msgstr "формат сандучета није препознат"
 
-#: ../src/mn-vfs-mailbox.gob:307
+#: ../src/mn-vfs-mailbox.gob:385
 msgid "does not exist"
 msgstr "не постоји"
 
-#: ../src/mn-vfs-mailbox.gob:377
-#, 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] ""
-"Пошто нема друге могућности, биће проверавани сваку %i секунду  (ово кашњење "
-"се може променити из прозора са поставкама)"
-msgstr[1] ""
-"Пошто нема друге могућности, биће проверавани сваке %i секунде (ово кашњење "
-"се може променити из прозора са поставкама)"
-msgstr[2] ""
-"Пошто нема друге могућности, биће проверавани сваких %i секунди (ово кашњење "
-"се може променити из прозора са поставкама)"
-
-#: ../src/mn-vfs-mailbox.gob:388
-#, 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-vfs-mailbox.gob:399
-#, 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 минута (ово кашњење "
-"се може променити из прозора са поставкама)"
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:2 ../ui/properties-dialog.glade.h:8
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Опште</span>"
 
-#: ../src/mn-vfs-mailbox.gob:415
-msgid "A monitoring error has occurred"
-msgstr "Дошло је до грешке при мотрењу"
+#: ../ui/mailbox-properties-dialog.glade.h:3
+msgid "Delay between mail chec_ks:"
+msgstr "_Пауза између провера поште:"
 
-#: ../src/mn-vfs-mailbox.gob:416
-#, c-format
-msgid ""
-"Mail Notification was unable to enable immediate notification for one or "
-"more mailboxes. %s"
-msgstr ""
-"Није могуће наместити непосредну дојаву нове поште за један или више "
-"сандучића. %s"
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "Mailbox _name:"
+msgstr "_Име сандучета:"
 
-#: ../ui/edit-toolbars-dialog.glade.h:1
-msgid "Edit Toolbars"
-msgstr "Уреди алатне траке"
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:6
+msgid "Use De_fault"
+msgstr "_Користи подразумевано"
 
-#: ../ui/edit-toolbars-dialog.glade.h:2
-msgid "_Add a New Toolbar"
-msgstr "_Додај нову алатну траку"
+#: ../ui/mailbox-properties-dialog.glade.h:7
+msgid "_Mailbox type:"
+msgstr "_Врста сандучета:"
 
-#: ../ui/edit-toolbars-dialog.glade.h:3
-#: ../ui/mailbox-properties-dialog.glade.h:4
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:9
 msgid "_Use Default"
 msgstr "_Користи подразумевано"
 
-#: ../ui/mail-summary-popup.glade.h:1
-msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
-msgstr "<span weight=\"bold\">Сажетак порука</span>"
-
-#: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
-msgstr "<span weight=\"bold\">Опште</span>"
+#: ../ui/mailbox-properties-dialog.glade.h:10
+#: ../ui/properties-dialog.glade.h:48
+msgid "minutes"
+msgstr "минута"
 
-#: ../ui/mailbox-properties-dialog.glade.h:2
-msgid "Mailbox _name:"
-msgstr "_Име сандучета:"
+#: ../ui/mailbox-properties-dialog.glade.h:11
+#: ../ui/properties-dialog.glade.h:52
+msgid "seconds"
+msgstr "секунди"
 
-#: ../ui/mailbox-properties-dialog.glade.h:3
-msgid "Mailbox _type:"
-msgstr "_Врста сандучета:"
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:2
+msgid "<span weight=\"bold\">Click Action</span>"
+msgstr "<span weight=\"bold\">Наредба за притисак</span>"
 
-#: ../ui/properties-dialog.glade.h:1
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:4
 msgid "<span weight=\"bold\">Commands</span>"
 msgstr "<span weight=\"bold\">Наредбе</span>"
 
-#: ../ui/properties-dialog.glade.h:2
-msgid "<span weight=\"bold\">Double-click Action</span>"
-msgstr "<span weight=\"bold\">Наредба за дупли клик</span>"
-
-#: ../ui/properties-dialog.glade.h:3
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:6
 msgid "<span weight=\"bold\">Fonts</span>"
 msgstr "<span weight=\"bold\">Писма</span>"
 
-#: ../ui/properties-dialog.glade.h:5
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:10
+msgid "<span weight=\"bold\">Layout</span>"
+msgstr "<span weight=\"bold\">Изглед</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:12
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Сандучићи</span>"
 
-#: ../ui/properties-dialog.glade.h:6
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:14
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Место</span>"
 
-#: ../ui/properties-dialog.glade.h:7
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:16
+msgid "<span weight=\"bold\">Tooltip Mail Summary</span>"
+msgstr "<span weight=\"bold\">Сажетак порука у облачићу</span>"
+
+#: ../ui/properties-dialog.glade.h:17
 msgid "Co_ntents:"
 msgstr "_Садржај:"
 
-#: ../ui/properties-dialog.glade.h:8
-msgid "Dis_play mail summary in tooltip"
-msgstr "Прикажи прозор са сажетком порука у облачићу"
-
-#: ../ui/properties-dialog.glade.h:9
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:19
 msgid "General"
 msgstr "Опште"
 
-#: ../ui/properties-dialog.glade.h:11
+#: ../ui/properties-dialog.glade.h:20
+msgid "Hide p_reviously displayed mail"
+msgstr "Са_криј претходно приказане поруке"
+
+#: ../ui/properties-dialog.glade.h:21
+msgid "Hori_zontal offset:"
+msgstr "_Хоризонтални помак:"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:25
 msgid "Mail Summary Popup"
 msgstr "Сажетак порука"
 
-#: ../ui/properties-dialog.glade.h:12
-msgid "Mailboxes"
-msgstr "Сандучићи"
-
-#: ../ui/properties-dialog.glade.h:13
-msgid "Only display _recent mail"
-msgstr "Прикажи само скорашње поруке"
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:27
+msgid "Status Icon"
+msgstr "Статусна сличица"
 
-#: ../ui/properties-dialog.glade.h:14
+#: ../ui/properties-dialog.glade.h:28
 msgid "Use these _fonts:"
 msgstr "Користи ова _писма:"
 
-#: ../ui/properties-dialog.glade.h:15
-msgid "When _all mail has been read:"
-msgstr "Када је _сва пошта прочитана:"
-
-#: ../ui/properties-dialog.glade.h:16
+#: ../ui/properties-dialog.glade.h:29
 msgid "When _new mail arrives:"
 msgstr "Када _стигне нова пошта:"
 
-#: ../ui/properties-dialog.glade.h:17
+#: ../ui/properties-dialog.glade.h:30
+msgid "When all mail has _been read:"
+msgstr "Када је _сва пошта прочитана:"
+
+#: ../ui/properties-dialog.glade.h:31
+msgid "_Always display"
+msgstr "_Увек приказуј"
+
+#: ../ui/properties-dialog.glade.h:32
 msgid "_Automatically close after:"
 msgstr "_Аутоматски затвори после:"
 
-#: ../ui/properties-dialog.glade.h:18
+#: ../ui/properties-dialog.glade.h:33
 msgid "_Blink on errors"
 msgstr "_Трепери при грешкама"
 
-#: ../ui/properties-dialog.glade.h:19
-msgid "_Delay between mail checks:"
-msgstr "_Пауза између провера:"
-
-#: ../ui/properties-dialog.glade.h:20
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:35
 msgid "_Display a Test Popup"
 msgstr "Прикажи пробно прозорче"
 
-#: ../ui/properties-dialog.glade.h:21
-msgid "_Display the main window"
-msgstr "_Прикажи главни прозор"
+#: ../ui/properties-dialog.glade.h:36
+msgid "_Display seen mail"
+msgstr "_Прикажи прегледане поруке"
+
+#: ../ui/properties-dialog.glade.h:37
+msgid "_Display this dialog"
+msgstr "При_кажи овај прозор"
 
-#: ../ui/properties-dialog.glade.h:22
+#: ../ui/properties-dialog.glade.h:38
 msgid "_Enable mail summary popup"
 msgstr "Дозволи приказ сажетка порука"
 
-#: ../ui/properties-dialog.glade.h:23
-msgid "_Horizontal offset:"
-msgstr "_Хоризонтални помак:"
-
-#: ../ui/properties-dialog.glade.h:24
+#: ../ui/properties-dialog.glade.h:39
 msgid "_Launch the mail reader"
 msgstr "П_окрени читач поште"
 
-#: ../ui/properties-dialog.glade.h:25
-msgid "_Mail reader:"
-msgstr "_Читач поште:"
+#: ../ui/properties-dialog.glade.h:40
+msgid "_None"
+msgstr "_Ниједно"
 
-#: ../ui/properties-dialog.glade.h:26
+#: ../ui/properties-dialog.glade.h:41
 msgid "_Position:"
 msgstr "_Место:"
 
-#: ../ui/properties-dialog.glade.h:27
-msgid "_Start Mail Notification on GNOME login"
-msgstr "Покрени _дојаву при пријави"
-
-#: ../ui/properties-dialog.glade.h:28
+#: ../ui/properties-dialog.glade.h:42
 msgid "_Title:"
 msgstr "_Наслов:"
 
-#: ../ui/properties-dialog.glade.h:29
+#: ../ui/properties-dialog.glade.h:43
 msgid "_Update the mail status"
 msgstr "_Освежи податке о пошти"
 
-#: ../ui/properties-dialog.glade.h:30
+#: ../ui/properties-dialog.glade.h:44
 msgid "_Use fonts from theme"
 msgstr "Користи писма из _теме"
 
-#: ../ui/properties-dialog.glade.h:31
+#: ../ui/properties-dialog.glade.h:45
 msgid "_Vertical offset:"
 msgstr "_Вертикални помак:"
 
-#: ../ui/properties-dialog.glade.h:32
-msgid "minutes"
-msgstr "минута"
+#: ../ui/properties-dialog.glade.h:46
+msgid "icon tooltip's mail summary layout|Co_mpact"
+msgstr "_Скраћен"
 
-#: ../ui/properties-dialog.glade.h:33
+#: ../ui/properties-dialog.glade.h:47
+msgid "icon tooltip's mail summary layout|_Standard"
+msgstr "_Обичан"
+
+#: ../ui/properties-dialog.glade.h:49
 msgid "pixels"
 msgstr "тачака"
 
-#: ../ui/properties-dialog.glade.h:34
-msgid "seconds"
-msgstr "секунди"
+#: ../ui/properties-dialog.glade.h:50
+msgid "popup's mail summary layout|Co_mpact"
+msgstr "С_краћен"
+
+#: ../ui/properties-dialog.glade.h:51
+msgid "popup's mail summary layout|_Standard"
+msgstr "О_бичан"
+
+#~ msgid "Delay between mail checks (minutes part)."
+#~ msgstr "Размак између две провере (минути)"
+
+#~ msgid "Delay between mail checks (seconds part)."
+#~ msgstr "Размак између две провере (секунде)."
+
+#~ msgid "Display mail summary in tooltip"
+#~ msgstr "Прикажи сажетат порука у облачићу"
+
+#~ msgid "Do not show the immediate notification error dialog"
+#~ msgstr "Не показуј прозор са обавештењем о грешкама"
+
+#~ msgid "Height of edit toolbars dialog"
+#~ msgstr "Висина прозора за уређивање алатних трака"
+
+#~ msgid "Height of main window"
+#~ msgstr "Висина главног прозора"
+
+#~ msgid "Mail reader command"
+#~ msgstr "Команда за читање поште"
+
+#~ msgid "Minutes between mail checks"
+#~ msgstr "Минута између две провере"
+
+#~ msgid "Seconds between mail checks"
+#~ msgstr "Секунди између две провере"
+
+#~ msgid "Set a mail reader"
+#~ msgstr "Изаберите читач поште"
+
+#~ msgid "The command to run to launch the mail reader."
+#~ msgstr "Команда којом се покреће читач поште"
+
+#~ msgid "The height of the edit toolbars dialog in pixels."
+#~ msgstr "Висина прозора за уређивање статусних трака, изражена у тачкама."
+
+#~ msgid "The height of the main window in pixels."
+#~ msgstr "Висина главног прозора изражена у тачкама."
+
+#~ msgid ""
+#~ "The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text"
+#~ "\", \"both\" or \"both-horiz\"."
+#~ msgstr ""
+#~ "Стил алатних трака. Може бити: ?подразумеван?, ?слике?, ?текст?, ?оба?, ?"
+#~ "оба-водоравно?."
+
+#~ msgid "The width of the edit toolbars dialog in pixels."
+#~ msgstr "Ширина прозора за уређивање статусних трака, изражена у тачкама."
+
+#~ msgid "The width of the main window in pixels."
+#~ msgstr "Ширина прозора главног прозора изражена у тачкама."
+
+#~ msgid "Toolbars style"
+#~ msgstr "Стил алатне траке"
+
+#~ msgid "View statusbar"
+#~ msgstr "Прикажи статусну траку"
+
+#~ msgid "View toolbars"
+#~ msgstr "Прикажи алатну траку"
+
+#~ msgid "Whether the statusbar should be visible or not."
+#~ msgstr "Да ли статусна линија треба да се види или не."
+
+#~ msgid "Whether the toolbars should be visible or not."
+#~ msgstr "Да ли алатне траке треба да се виде или не"
+
+#~ msgid ""
+#~ "Whether to display the mail summary in the status icon tooltip or not."
+#~ msgstr ""
+#~ "Да ли треба приказати сажетак порука у облачићу статусне сличице или не."
+
+#~ msgid ""
+#~ "Whether to prevent the immediate notification error dialog from being "
+#~ "displayed or not."
+#~ msgstr "Да ли треба или не треба спречити појаву прозора са описом грешака."
+
+#~ msgid "Whether to set a mail reader or not."
+#~ msgstr "Да ли треба поставити читач поште или не."
+
+#~ msgid "Width of edit toolbars dialog"
+#~ msgstr "Ширина прозора за уређивање статусних трака"
+
+#~ msgid "Width of main window"
+#~ msgstr "Ширина главног прозора"
+
+#~ msgid "New Mail"
+#~ msgstr "Нова пошта"
+
+#~ msgid "_Remove Toolbar"
+#~ msgstr "_Уклони алатну траку"
+
+#~ msgid "Separator"
+#~ msgstr "Граничник"
+
+#~ msgid "Main _Window"
+#~ msgstr "Главни _прозор"
+
+#~ msgid "Help messages"
+#~ msgstr "Поруке за помоћ"
+
+#~ msgid "Count messages"
+#~ msgstr "Преброј поруке"
+
+#~ msgid "_Mail"
+#~ msgstr "_Пошта"
+
+#~ msgid "_Edit"
+#~ msgstr "_Уреди"
+
+#~ msgid "_View"
+#~ msgstr "_Преглед"
+
+#~ msgid "_Help"
+#~ msgstr "П_омоћ"
+
+#~ msgid "Launch the mail reader"
+#~ msgstr "П_окрени читач поште"
+
+#~ msgid "_Close"
+#~ msgstr "_Затвори"
+
+#~ msgid "Close this window"
+#~ msgstr "Затвори овај прозор"
+
+#~ msgid "_Quit"
+#~ msgstr "_Крај"
+
+#~ msgid "_Toolbars"
+#~ msgstr "_Алатне траке"
+
+#~ msgid "Customize the toolbars"
+#~ msgstr "Уреди алатне траке"
+
+#~ msgid "_Preferences"
+#~ msgstr "_Поставке"
+
+#~ msgid "Toolbars Styl_e"
+#~ msgstr "Стил алатних _трака"
+
+#~ msgid "Customize the toolbars style"
+#~ msgstr "Прилагоди стил алатних трака"
+
+#~ msgid "_Contents"
+#~ msgstr "_Садржај"
+
+#~ msgid "Display help"
+#~ msgstr "Прикажи помоћ"
+
+#~ msgid "_About"
+#~ msgstr "_О програму"
+
+#~ msgid "Display credits"
+#~ msgstr "Прикажи заслуге"
+
+#~ msgid "Show or hide the toolbars"
+#~ msgstr "Прикажи или уклони алатну траку"
+
+#~ msgid "_Statusbar"
+#~ msgstr "_Статусна трака"
+
+#~ msgid "Show or hide the statusbar"
+#~ msgstr "Прикажи или уклони статусну траку"
+
+#~ msgid "_Desktop Default"
+#~ msgstr "_Подразумевано у окружењу"
+
+#~ msgid "Set the toolbars style to the desktop default setting"
+#~ msgstr "Постави стилове трака на стил који важи у целом радном окружењу"
+
+#~ msgid "I_cons Only"
+#~ msgstr "Само _слике"
+
+#~ msgid "_Text Only"
+#~ msgstr "Само _текст"
+
+#~ msgid "Only display the toolbars text"
+#~ msgstr "Прика�и само текст у алатној траци"
+
+#~ msgid "Text Belo_w Icons"
+#~ msgstr "Текст _испод слика"
+
+#~ msgid "Display the toolbars text below the icons"
+#~ msgstr "Прикажи текст испод одговарајуће слике у алатној траци"
+
+#~ msgid "Text Be_side Icons"
+#~ msgstr "Текст _поред слика"
+
+#~ msgid "Display the toolbars text beside the icons"
+#~ msgstr "Прикажи текст поред одговарајуће слике у алатној траци"
+
+#~ msgid "unable to load menus.xml: %s"
+#~ msgstr "Није могуће прочитати menus.xml: %s"
+
+#~ msgid "unable to load toolbars.xml"
+#~ msgstr "није могуће учитати toolbars.xml: %s"
+
+#~ msgid "%i new message"
+#~ msgid_plural "%i new messages"
+#~ msgstr[0] "%i нова порука"
+#~ msgstr[1] "%i нове поруке"
+#~ msgstr[2] "%i нових порука"
+
+#~ msgid "Compiled-in mailbox backends: "
+#~ msgstr "Уграђене могућности за сандучиће:"
+
+#~ msgid "List the compiled-in features"
+#~ msgstr "Испиши уграђене могућности"
+
+#~ msgid "Display the main window"
+#~ msgstr "Прикажи главни прозор"
+
+#~ msgid "You have new mail."
+#~ msgstr "Имате нову пошту."
+
+#~ msgid "Leave Fullscreen"
+#~ msgstr "Остави на целом екрану"
+
+#~ msgid "MAIL environment variable not defined"
+#~ msgstr "променљива MAIL није дефинисана"
+
+#~ msgid "widget \"%s\" not found in interface \"%s\""
+#~ msgstr "елемент ?%s? није пронађен у сучељу ?%s?"
+
+#~ msgid "signal handler \"%s\" not found"
+#~ msgstr "обрађивач сигнала „%s“ није пронађен"
+
+#~ msgid "_Do not show this message again"
+#~ msgstr "_Не приказуј више ову поруку"
+
+#~ msgid "invalid signal specification \"%s\""
+#~ msgstr "неважећа одредница за сигнал ?%s?"
+
+#~ msgid "unable to monitor mailbox contents (%s), poll mode activated"
+#~ msgstr "није могуће надгледати садржај сандучета (%s), упити су активирани"
+
+#~ 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] ""
+#~ "Пошто нема друге могућности, биће проверавани сваку %i секунду  (ово "
+#~ "кашњење се може променити из прозора са поставкама)"
+#~ msgstr[1] ""
+#~ "Пошто нема друге могућности, биће проверавани сваке %i секунде (ово "
+#~ "кашњење се може променити из прозора са поставкама)"
+#~ msgstr[2] ""
+#~ "Пошто нема друге могућности, биће проверавани сваких %i секунди (ово "
+#~ "кашњење се може променити из прозора са поставкама)"
+
+#~ 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 минута (ово "
+#~ "кашњење се може променити из прозора са поставкама)"
+
+#~ 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 минута (ово "
+#~ "кашњење се може променити из прозора са поставкама)"
+
+#~ msgid "A monitoring error has occurred"
+#~ msgstr "Дошло је до грешке при мотрењу"
+
+#~ msgid ""
+#~ "Mail Notification was unable to enable immediate notification for one or "
+#~ "more mailboxes. %s"
+#~ msgstr ""
+#~ "Није могуће наместити непосредну дојаву нове поште за један или више "
+#~ "сандучића. %s"
+
+#~ msgid "Edit Toolbars"
+#~ msgstr "Уреди алатне траке"
+
+#~ msgid "_Add a New Toolbar"
+#~ msgstr "_Додај нову алатну траку"
+
+#~ msgid "Dis_play mail summary in tooltip"
+#~ msgstr "Прикажи прозор са сажетком порука у облачићу"
+
+#~ msgid "Mailboxes"
+#~ msgstr "Сандучићи"
+
+#~ msgid "_Display the main window"
+#~ msgstr "_Прикажи главни прозор"
+
+#~ msgid "_Mail reader:"
+#~ msgstr "_Читач поште:"
+
+#~ msgid "_Start Mail Notification on GNOME login"
+#~ msgstr "Покрени _дојаву при пријави"
 
 #~ msgid "Has already been run"
 #~ msgstr "Већ је покренут"
@@ -2187,9 +2309,6 @@ msgstr "секунди"
 #~ msgstr ""
 #~ "Да ли треба или не треба приказивати сажетак порука када стигне нова пошта"
 
-#~ msgid "Whether to hide previously displayed mail or not"
-#~ msgstr "Да ли треба приказивати претходно приказане поруке или не"
-
 #~ msgid "Whether to run a command when all mail is read or not"
 #~ msgstr "Да ли се покреће или не покреће команда када је сва пошта прочитана"
 
diff --git a/po/sr@Latn.po b/po/sr@Latn.po
@@ -4,17 +4,17 @@
 # This file is distributed under the same license as the
 # mail-notification package.
 #
-# Filip Miletic <filmil@gmail.com>, 2004, 2005.
+# Filip Miletic <filmil@gmail.com>, 2004-2006.
 #
 # Both Serbian Cyrillic and Serbian Latin files should
 # be available.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: mail-notification 2.0\n"
+"Project-Id-Version: mail-notification 3.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-07-31 04:17+0200\n"
-"PO-Revision-Date: 2005-07-31 11:13+0100\n"
+"POT-Creation-Date: 2006-06-25 01:00+0200\n"
+"PO-Revision-Date: 2006-11-21 17:41+0100\n"
 "Last-Translator: Filip Miletić <filmil@gmail.com>\n"
 "Language-Team: Serbian (sr) <gnu@prevod.org>\n"
 "MIME-Version: 1.0\n"
@@ -32,11 +32,11 @@ msgstr "Fabrika za dojavu prispeća pošte"
 
 #: ../data/GNOME_MailNotification_Evolution.server.in.h:1
 msgid "Evolution folder tree control"
-msgstr "Upravljanje Evolucijinim drvetom direktorijuma"
+msgstr "Upravljanje stablom fascikli u programu Evolucija"
 
 #: ../data/GNOME_MailNotification_Evolution.server.in.h:2
 msgid "Evolution folder tree control factory"
-msgstr "Fabrika za upravljač Evolucijinim drvetom direktorijuma"
+msgstr "Fabrika za upravljanje stablom fascikli u programu Evolucija"
 
 #: ../data/GNOME_MailNotification_Evolution.server.in.h:3
 msgid "Mail Notification / Evolution glue"
@@ -47,14 +47,12 @@ msgid "Mail Notification / Evolution glue factory"
 msgstr "Fabrika za Dojavu pošte i Evoluciju"
 
 #: ../data/mail-notification-properties.desktop.in.h:1
-#: ../src/mn-main-window.gob:209
 msgid "Configure Mail Notification"
 msgstr "Podesi dojavu prispeća pošte"
 
 #: ../data/mail-notification-properties.desktop.in.h:2
-#: ../data/mail-notification.desktop.in.h:2
-#: ../data/mail-notification.soundlist.in.h:1 ../src/mn-mail-icon.gob:223
-#: ../src/mn-main.c:285 ../src/mn-main.c:301
+#: ../data/mail-notification.desktop.in.h:2 ../src/mn-mail-icon.gob:227
+#: ../src/mn-main.c:132 ../src/mn-main.c:302 ../src/mn-main.c:318
 msgid "Mail Notification"
 msgstr "Dojava pošte"
 
@@ -63,196 +61,149 @@ msgid "Get notified when new mail arrives"
 msgstr "Obavesti kada stigne nova pošta"
 
 #: ../data/mail-notification.schemas.in.h:1
+msgid "Always display an icon"
+msgstr "Uvek prikazuj sličicu"
+
+#: ../data/mail-notification.schemas.in.h:2
 msgid "Automatically close the mail summary popup"
 msgstr "Automatski zatvori prozor sa sažetkom poruka"
 
-#: ../data/mail-notification.schemas.in.h:2
+#: ../data/mail-notification.schemas.in.h:3
 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)."
+msgid "Click action"
+msgstr "Dejstvo pri pritisku"
 
 #: ../data/mail-notification.schemas.in.h:5
-msgid "Display mail summary in tooltip"
-msgstr "Prikaži sažetat poruka u oblačiću"
+msgid "Display seen mail"
+msgstr "Prikaži pregledane poruke"
 
 #: ../data/mail-notification.schemas.in.h:6
-msgid "Do not show the immediate notification error dialog"
-msgstr "Ne pokazuj prozor sa obaveštenjem o greškama"
-
-#: ../data/mail-notification.schemas.in.h:7
-msgid "Double-click action"
-msgstr "Izvrši na dvostruki klik"
-
-#: ../data/mail-notification.schemas.in.h:8
 msgid "Enable mail summary popup"
 msgstr "Dozvoli prikaz sažetka poruka"
 
-#: ../data/mail-notification.schemas.in.h:9
+#: ../data/mail-notification.schemas.in.h:7
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Otisci proverenih X509 sertifikata"
 
-#: ../data/mail-notification.schemas.in.h:10
-msgid "Height of edit toolbars dialog"
-msgstr "Visina prozora za uređivanje alatnih traka"
-
-#: ../data/mail-notification.schemas.in.h:11
-msgid "Height of main window"
-msgstr "Visina glavnog prozora"
-
-#: ../data/mail-notification.schemas.in.h:12
+#: ../data/mail-notification.schemas.in.h:8
 msgid "Height of properties dialog"
 msgstr "Visina prozora sa postavkama"
 
-#: ../data/mail-notification.schemas.in.h:13
+#: ../data/mail-notification.schemas.in.h:9
 msgid "Mail read command"
 msgstr "Komanda za čitanje pošte"
 
-#: ../data/mail-notification.schemas.in.h:14
-msgid "Mail reader command"
-msgstr "Komanda za čitanje pošte"
-
-#: ../data/mail-notification.schemas.in.h:15
+#: ../data/mail-notification.schemas.in.h:10
 msgid "Mail summary popup contents font"
 msgstr "Pismo koje se koristi za sadržaj prozora sa sažetkom poruka"
 
-#: ../data/mail-notification.schemas.in.h:16
+#: ../data/mail-notification.schemas.in.h:11
 msgid "Mail summary popup fonts aspect source"
 msgstr "Izvor za aspekt za pismo u prozoru za sažetak (???)"
 
-#: ../data/mail-notification.schemas.in.h:17
+#: ../data/mail-notification.schemas.in.h:12
 msgid "Mail summary popup horizontal offset"
 msgstr "Pomeraj horizontalnih tačaka za prozor sa sažetkom poruka"
 
-#: ../data/mail-notification.schemas.in.h:18
+#: ../data/mail-notification.schemas.in.h:13
 msgid "Mail summary popup position"
 msgstr "Broj horizontalnih tačaka za prozor sa sažetkom poruka"
 
-#: ../data/mail-notification.schemas.in.h:19
+#: ../data/mail-notification.schemas.in.h:14
 msgid "Mail summary popup title font"
 msgstr "Pismo koje se koristi za naslov prozora sa sažetkom poruka"
 
-#: ../data/mail-notification.schemas.in.h:20
+#: ../data/mail-notification.schemas.in.h:15
 msgid "Mail summary popup vertical offset"
 msgstr "Pomeraj vertikalnih tačaka ѕa prozor sa sažetkom poruka"
 
-#: ../data/mail-notification.schemas.in.h:21
-msgid "Minutes between mail checks"
-msgstr "Minuta između dve provere"
-
-#: ../data/mail-notification.schemas.in.h:22
+#: ../data/mail-notification.schemas.in.h:16
 msgid "Minutes to wait before closing the mail summary popup"
 msgstr ""
 "Broj minuta koji treba da protekne pre zatvaranja prozora sa sažetkom poruka"
 
-#: ../data/mail-notification.schemas.in.h:23
+#: ../data/mail-notification.schemas.in.h:17
 msgid "New mail command"
 msgstr "Izvrši kada pošta stigne"
 
-#: ../data/mail-notification.schemas.in.h:24
+#: ../data/mail-notification.schemas.in.h:18
 msgid "Only display recent mail in mail summary popup"
 msgstr "Prikaži samo skoro prispele poruke u sažetku"
 
-#: ../data/mail-notification.schemas.in.h:25
+#: ../data/mail-notification.schemas.in.h:19
 msgid "Run a command when all mail is read"
 msgstr "Pokreni komandu kada je sva pošta pročitana"
 
-#: ../data/mail-notification.schemas.in.h:26
+#: ../data/mail-notification.schemas.in.h:20
 msgid "Run a command when new mail arrives"
 msgstr "Pokreni komandu kada stigne nova pošta"
 
-#: ../data/mail-notification.schemas.in.h:27
-msgid "Seconds between mail checks"
-msgstr "Sekundi između dve provere"
-
-#: ../data/mail-notification.schemas.in.h:28
+#: ../data/mail-notification.schemas.in.h:21
 msgid "Seconds to wait before closing the mail summary popup"
 msgstr "Broj sekundi koji treba da protekne pre zatvaranja sažetka poruka"
 
-#: ../data/mail-notification.schemas.in.h:29
-msgid "Set a mail reader"
-msgstr "Izaberite čitač pošte"
-
-#: ../data/mail-notification.schemas.in.h:30
+#: ../data/mail-notification.schemas.in.h:22
 msgid ""
-"The action to perform when the icon is double-clicked. Must be \"display-"
-"main-window\", \"launch-mail-reader\" or \"update-mail-status\"."
-msgstr ""
-"Postavljanje naredbe koja se izvršava pri dvostrukom kliku na sličicu. Mogući "
-"izbori su: ?glavni-prozor?, ?pokreni-čitač-pošte? ili ?ažuriraj-status-"
-"pošte?."
+"The action to perform when the icon is clicked. Must be \"display-properties-"
+"dialog\", \"launch-mail-reader\" or \"update-mail-status\"."
+msgstr "Postavljanje naredbe koja se izvršava pri pritisku na sličicu. Mogući izbori su: „glavni-prozor?, „pokreni-čitač-pošte? ili „ažuriraj-status-pošte?."
 
-#: ../data/mail-notification.schemas.in.h:31
+#: ../data/mail-notification.schemas.in.h:23
 msgid ""
 "The amount of time to wait before closing the mail summary popup (minutes "
 "part)."
 msgstr "Pauza pre zatvaranja prozora sa sažetkom poruka (minuti)."
 
-#: ../data/mail-notification.schemas.in.h:32
+#: ../data/mail-notification.schemas.in.h:24
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
 msgstr "Pauza pre zatvaranja prozora sa sažetkom poruka (sekunde)."
 
-#: ../data/mail-notification.schemas.in.h:33
+#: ../data/mail-notification.schemas.in.h:25
 msgid ""
 "The aspect source of the mail summary popup fonts. Must be \"theme\" or "
 "\"custom\"."
 msgstr "Izvor za podešavanja pisma. Može biti: ?tema? ili ?poseban?."
 
-#: ../data/mail-notification.schemas.in.h:34
-msgid "The command to run to launch the mail reader."
-msgstr "Komanda kojom se pokreće čitač pošte"
-
-#: ../data/mail-notification.schemas.in.h:35
+#: ../data/mail-notification.schemas.in.h:26
 msgid "The command to run when all mail is read."
 msgstr "Komanda koju treba pokrenuti kada je sva pošta pročitana."
 
-#: ../data/mail-notification.schemas.in.h:36
+#: ../data/mail-notification.schemas.in.h:27
 msgid "The command to run when new mail arrives."
 msgstr "Pokreni ovu komandu kada stigne nova pošta."
 
-#: ../data/mail-notification.schemas.in.h:37
+#: ../data/mail-notification.schemas.in.h:28
 msgid "The custom font to use for the contents of the mail summary popup."
 msgstr ""
 "Posebno pismo koje se koristi za ispis sadržaja prozora sa sažetkom poruka."
 
-#: ../data/mail-notification.schemas.in.h:38
+#: ../data/mail-notification.schemas.in.h:29
 msgid "The custom font to use for the title of the mail summary popup."
 msgstr ""
 "Posebno pismo koje se koristi za ispis naslova prozora sa sažetkom poruka."
 
-#: ../data/mail-notification.schemas.in.h:39
-msgid "The height of the edit toolbars dialog in pixels."
-msgstr "Visina prozora za uređivanje statusnih traka, izražena u tačkama."
-
-#: ../data/mail-notification.schemas.in.h:40
-msgid "The height of the main window in pixels."
-msgstr "Visina glavnog prozora izražena u tačkama."
-
-#: ../data/mail-notification.schemas.in.h:41
+#: ../data/mail-notification.schemas.in.h:30
 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:42
+#: ../data/mail-notification.schemas.in.h:31
 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:43
+#: ../data/mail-notification.schemas.in.h:32
 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:44
+#: ../data/mail-notification.schemas.in.h:33
 msgid ""
 "The number of pixels to leave between the left or right side of the screen "
 "and the mail summary popup."
@@ -260,7 +211,7 @@ msgstr ""
 "Broj tačaka koje treba ostaviti između leve, odn. desne strane ekrana i "
 "prozora sa sažetkom poruka."
 
-#: ../data/mail-notification.schemas.in.h:45
+#: ../data/mail-notification.schemas.in.h:34
 msgid ""
 "The number of pixels to leave between the top or bottom side of the screen "
 "and the mail summary popup."
@@ -268,7 +219,7 @@ msgstr ""
 "Broj tačaka koje treba ostaviti između vrha, odn. dna ekrana i prozora sa "
 "sažetkom poruka."
 
-#: ../data/mail-notification.schemas.in.h:46
+#: ../data/mail-notification.schemas.in.h:35
 msgid ""
 "The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
 "\"bottom-left\" or \"bottom-right\"."
@@ -276,126 +227,74 @@ msgstr ""
 "Položaj prozora sa sažetkom poruka. Može biti: ?gore-levo?, ?gore-desno?, ?"
 "dole-levo? ili ?dole-desno?."
 
-#: ../data/mail-notification.schemas.in.h:47
+#: ../data/mail-notification.schemas.in.h:36
 msgid ""
-"The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text\", "
-"\"both\" or \"both-horiz\"."
-msgstr ""
-"Stil alatnih traka. Može biti: ?podrazumevan?, ?slike?, ?tekst?, ?oba?, ?oba-"
-"vodoravno?."
-
-#: ../data/mail-notification.schemas.in.h:48
-msgid "The width of the edit toolbars dialog in pixels."
-msgstr "Širina prozora za uređivanje statusnih traka, izražena u tačkama."
-
-#: ../data/mail-notification.schemas.in.h:49
-msgid "The width of the main window in pixels."
-msgstr "Širina prozora glavnog prozora izražena u tačkama."
+"The type of mail summary to display in the icon's tooltip. Must be \"standard"
+"\", \"compact\" or \"none\"."
+msgstr "Vrsta sažetka pošte koji se prikazuje u oblačiću.  Može biti „običan?, „kratak? ili „nijedan?."
 
-#: ../data/mail-notification.schemas.in.h:50
+#: ../data/mail-notification.schemas.in.h:37
 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:51
-msgid "Toolbars style"
-msgstr "Stil alatne trake"
+#: ../data/mail-notification.schemas.in.h:38
+msgid "Tooltip mail summary"
+msgstr "Oblačić sa sažetkom poruka"
 
-#: ../data/mail-notification.schemas.in.h:52
+#: ../data/mail-notification.schemas.in.h:39
 msgid "Trusted servers list"
 msgstr "Spisak proverenih servera"
 
-#: ../data/mail-notification.schemas.in.h:53
-msgid "View statusbar"
-msgstr "Prikaži statusnu traku"
-
-#: ../data/mail-notification.schemas.in.h:54
-msgid "View toolbars"
-msgstr "Prikaži alatnu traku"
-
-#: ../data/mail-notification.schemas.in.h:55
+#: ../data/mail-notification.schemas.in.h:40
 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:56
-msgid "Whether the statusbar should be visible or not."
-msgstr "Da li statusna linija treba da se vidi ili ne."
-
-#: ../data/mail-notification.schemas.in.h:57
-msgid "Whether the toolbars should be visible or not."
-msgstr "Da li alatne trake treba da se vide ili ne"
-
-#: ../data/mail-notification.schemas.in.h:58
+#: ../data/mail-notification.schemas.in.h:41
 msgid "Whether to automatically close the mail summary popup or not."
 msgstr ""
 "Da li treba ili ne treba automatski zatvoriti prozor sa sažetkom pošte."
 
-#: ../data/mail-notification.schemas.in.h:59
-msgid "Whether to display the mail summary in the status icon tooltip or not."
-msgstr ""
-"Da li treba prikazati sažetak poruka u oblačiću statusne sličice ili ne."
+#: ../data/mail-notification.schemas.in.h:42
+msgid "Whether to display an icon when there is no new mail or not."
+msgstr "Da li se prikazuje sličica kada nema nove pošte."
+
+#: ../data/mail-notification.schemas.in.h:43
+msgid "Whether to display seen mail or not."
+msgstr "Da li treba prikazivati pregledanu poštu ili ne."
 
-#: ../data/mail-notification.schemas.in.h:60
+#: ../data/mail-notification.schemas.in.h:44
 msgid "Whether to display the mail summary popup when new mail arrives or not."
 msgstr "Da li treba prikazati sažetak poruka kada stigne nova pošta."
 
-#: ../data/mail-notification.schemas.in.h:61
+#: ../data/mail-notification.schemas.in.h:45
 msgid ""
 "Whether to hide previously displayed mail in the mail summary popup or not."
 msgstr ""
 "Da li iz sažetka treba ukloniti poruke koje su se u njemu već pre pojavile."
 
-#: ../data/mail-notification.schemas.in.h:62
-msgid ""
-"Whether to prevent the immediate notification error dialog from being "
-"displayed or not."
-msgstr "Da li treba ili ne treba sprečiti pojavu prozora sa opisom grešaka."
-
-#: ../data/mail-notification.schemas.in.h:63
+#: ../data/mail-notification.schemas.in.h:46
 msgid "Whether to run a command when all mail is read or not."
 msgstr ""
 "Da li treba ili ne treba pokrenuti neku komandu kada je sva pošta pročitana."
 
-#: ../data/mail-notification.schemas.in.h:64
+#: ../data/mail-notification.schemas.in.h:47
 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:65
-msgid "Whether to set a mail reader or not."
-msgstr "Da li treba postaviti čitač pošte ili ne."
-
-#: ../data/mail-notification.schemas.in.h:66
-msgid "Width of edit toolbars dialog"
-msgstr "Širina prozora za uređivanje statusnih traka"
-
-#: ../data/mail-notification.schemas.in.h:67
-msgid "Width of main window"
-msgstr "Širina glavnog prozora"
-
-#: ../data/mail-notification.schemas.in.h:68
+#: ../data/mail-notification.schemas.in.h:48
 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/egg-editable-toolbar.c:534
-msgid "_Remove Toolbar"
-msgstr "_Ukloni alatnu traku"
-
-#: ../src/egg-toolbar-editor.c:555
-msgid "Separator"
-msgstr "Graničnik"
-
-#: ../src/eggtrayicon.c:128
+#: ../src/eggtrayicon.c:132
 msgid "Orientation"
 msgstr "Orijentacija"
 
-#: ../src/eggtrayicon.c:129
+#: ../src/eggtrayicon.c:133
 msgid "The orientation of the tray."
 msgstr "Orijentacija obaveštajne zone."
 
-#: ../src/mn-about-dialog.gob:48
+#. translators: header capitalization
+#: ../src/mn-about-dialog.gob:49
 msgid "A Mail Notification Icon"
 msgstr "Sličica za dojavu prispeća pošte"
 
@@ -403,16 +302,16 @@ msgstr "Sličica za dojavu prispeća pošte"
 #. * translators: Your Name <your-email>
 #. * optionally followed by one or more: \nOther Contributor's Name <his-email>
 #.
-#: ../src/mn-about-dialog.gob:56
+#: ../src/mn-about-dialog.gob:57
 msgid "translator-credits"
 msgstr "Filip Miletić <filmil@gmail.com>"
 
-#: ../src/mn-about-dialog.gob:78
+#: ../src/mn-about-dialog.gob:79
 msgid "Unable to open link"
 msgstr "nije moguće otvoriti vezu"
 
 #: ../src/mn-auth-combo-box.gob:103
-#: ../src/mn-autodetect-mailbox-properties.gob:92
+#: ../src/mn-autodetect-mailbox-properties.gob:109
 msgid "<span style=\"italic\">autodetect</span>"
 msgstr "<span style=\"italic\">sam pronađi</span>"
 
@@ -424,124 +323,113 @@ msgstr "_Kor.ime:"
 msgid "_Password:"
 msgstr "_Lozinka:"
 
-#: ../src/mn-authenticated-mailbox.gob:152
-#, c-format
-msgid ""
-"Mail Notification was unable to log into %s mailbox %s, possibly because the "
-"credentials you have entered are invalid.\n"
-"\n"
-"Please re-enter your credentials."
-msgstr ""
-"Nije moguće prijaviti se za čitanje %s sandučeta %s, najverovatnije zato što "
-"uneta lozinka nije ispravna.\n"
-"\n"
-"Molim unesite ponovo lozinku."
-
-#: ../src/mn-authenticated-mailbox.gob:153
-#, c-format
-msgid "Enter your credentials for %s mailbox %s."
-msgstr "Unesite lozinku za %s sanduče %s."
-
-#. keep the title in sync with gnome-authentication-manager
-#: ../src/mn-authenticated-mailbox.gob:195
-msgid "Authentication Required"
-msgstr "Potrebna je prijava"
-
-#: ../src/mn-autodetect-mailbox-properties.gob:93
+#: ../src/mn-autodetect-mailbox-properties.gob:110
 msgid "Location"
 msgstr "Mesto"
 
-#: ../src/mn-autodetect-mailbox-properties.gob:103
+#: ../src/mn-autodetect-mailbox-properties.gob:122
 msgid "_Location:"
 msgstr "_Mesto:"
 
-#: ../src/mn-autodetect-mailbox-properties.gob:110
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:130
 msgid "_Browse..."
 msgstr "_Pregledaj..."
 
-#: ../src/mn-autodetect-mailbox-properties.gob:149
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:172
 msgid "Select a File or Folder"
-msgstr "Izaberite datoteku ili direktorijum"
+msgstr "Izaberite datoteku ili fasciklu"
 
-#: ../src/mn-client-session.c:248
+#: ../src/mn-client-session.c:247
 #, c-format
 msgid "resolving %s"
 msgstr "pronalazim %s"
 
-#: ../src/mn-client-session.c:264
+#: ../src/mn-client-session.c:263
 #, c-format
 msgid "unable to resolve %s: %s"
 msgstr "Nije moguće pronaći %s: %s"
 
-#: ../src/mn-client-session.c:308
+#: ../src/mn-client-session.c:304
+#, c-format
+msgid "network address #%i"
+msgstr "mrežna adresa #%i"
+
+#: ../src/mn-client-session.c:307
+#, c-format
+msgid "unable to convert network address #%i into textual form: %s"
+msgstr "mrežna adresa #%i se ne može prebaciti u tekstualni oblik: %s"
+
+#: ../src/mn-client-session.c:318
 #, c-format
 msgid "%s: unsupported address family"
 msgstr "%s: ova vrsta adrese nije podržana"
 
-#: ../src/mn-client-session.c:315
+#: ../src/mn-client-session.c:325
 #, c-format
 msgid "%s: unable to create socket: %s"
 msgstr "%s: nije moguće napraviti utičnicu: %s"
 
-#: ../src/mn-client-session.c:319
+#: ../src/mn-client-session.c:329
 #, c-format
 msgid "connecting to %s (%s) port %i"
 msgstr "povezujem se sa %s (%s) port %i"
 
-#: ../src/mn-client-session.c:322
+#: ../src/mn-client-session.c:332
 #, c-format
 msgid "unable to connect: %s"
 msgstr "nije moguće povezati se sa: %s"
 
-#: ../src/mn-client-session.c:327
+#: ../src/mn-client-session.c:337
 msgid "connected successfully"
 msgstr "povezivanje je uspelo"
 
 #. if reached, we couldn't find a working address
-#: ../src/mn-client-session.c:333
+#: ../src/mn-client-session.c:351
 #, c-format
 msgid "unable to connect to %s"
 msgstr "nije moguće povezati se sa %s"
 
-#: ../src/mn-client-session.c:360
+#: ../src/mn-client-session.c:378
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
 msgstr "nije moguće pokrenuti OpenSSL biblioteku: %s"
 
-#: ../src/mn-client-session.c:368
+#: ../src/mn-client-session.c:386
 #, 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:374
+#: ../src/mn-client-session.c:392
 #, 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:380
+#: ../src/mn-client-session.c:398
 #, 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:386
+#: ../src/mn-client-session.c:404
 msgid "untrusted server"
 msgstr "neproveren server"
 
-#: ../src/mn-client-session.c:390
+#: ../src/mn-client-session.c:408
 #, 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:437
+#: ../src/mn-client-session.c:455
 #, c-format
 msgid "%s, fingerprint: %s"
 msgstr "%s, otisak: %s"
 
-#: ../src/mn-client-session.c:466
+#: ../src/mn-client-session.c:484
 msgid "missing certificate"
 msgstr "nedostaje sertifikat"
 
-#: ../src/mn-client-session.c:492
+#: ../src/mn-client-session.c:510
 #, c-format
 msgid ""
 "Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -560,313 +448,343 @@ msgstr ""
 "sa \"%s\". Ako odlučite da se povežete na server, ova poruka neće ponovo "
 "biti prikazana."
 
-#: ../src/mn-client-session.c:507
+#: ../src/mn-client-session.c:525
 msgid "Connect to untrusted server?"
 msgstr "Da li da se povežem na neprovereni server?"
 
-#: ../src/mn-client-session.c:571
+#: ../src/mn-client-session.c:590
 #, 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:599
+#: ../src/mn-client-session.c:619
 #, c-format
 msgid "unable to parse response \"%s\""
 msgstr "nije moguće obraditi odgovor \"%s\""
 
-#: ../src/mn-client-session.c:649 ../src/mn-client-session.c:656
+#: ../src/mn-client-session.c:669 ../src/mn-client-session.c:676
 #, c-format
 msgid "unable to read from server: %s"
 msgstr "Nije moguće čitanje sa servera: %s"
 
-#: ../src/mn-client-session.c:654
+#: ../src/mn-client-session.c:674
 msgid "unable to read from server: EOF"
 msgstr "Nije moguće čitanje sa servera: EOF"
 
-#: ../src/mn-client-session.c:666
+#: ../src/mn-client-session.c:686
 #, c-format
 msgid "unable to decode data using SASL: %s"
 msgstr "Ne mogu se dekodovati podaci putem SASL: %s"
 
-#: ../src/mn-client-session.c:811
+#: ../src/mn-client-session.c:831
 #, 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:842 ../src/mn-client-session.c:849
+#: ../src/mn-client-session.c:862 ../src/mn-client-session.c:869
 #, c-format
 msgid "unable to write to server: %s"
 msgstr "nije moguć upis na server: %s"
 
-#: ../src/mn-client-session.c:847
+#: ../src/mn-client-session.c:867
 msgid "unable to write to server: EOF"
 msgstr "nije moguć upis na server: EOF"
 
-#: ../src/mn-client-session.c:878 ../src/mn-pop3-mailbox.gob:468
+#: ../src/mn-client-session.c:898 ../src/mn-pop3-mailbox.gob:433
 #, c-format
 msgid "unable to encode Base64: %s"
 msgstr "nije moguće kodirati Base64: %s"
 
-#: ../src/mn-client-session.c:1056
+#: ../src/mn-client-session.c:1075
 #, c-format
 msgid "unable to initialize the SASL library: %s"
 msgstr "ne može se pokrenuti SASL biblioteka: %s"
 
-#: ../src/mn-client-session.c:1068
+#: ../src/mn-client-session.c:1087
 #, 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:1074
+#: ../src/mn-client-session.c:1093
 #, 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:1108
+#: ../src/mn-client-session.c:1127
 #, c-format
 msgid "unable to set SASL security properties: %s"
 msgstr "nije moguće postaviti SASL sigurnosne postavke: %s"
 
-#: ../src/mn-client-session.c:1132
+#: ../src/mn-client-session.c:1151
 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:1151
+#: ../src/mn-client-session.c:1170
 #, c-format
 msgid "unable to start SASL authentication: %s"
 msgstr "ne može se pokrenuti SASL prijava: %s"
 
-#: ../src/mn-client-session.c:1155
+#: ../src/mn-client-session.c:1174
 #, c-format
 msgid "unable to create a SASL connection: %s"
 msgstr "nije moguće uspostaviti SASL vezu: %s"
 
-#: ../src/mn-client-session.c:1202
+#: ../src/mn-client-session.c:1221
 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:1219
+#: ../src/mn-client-session.c:1238
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, obustavljam SASL prijavu"
 
 #. compliance error
-#: ../src/mn-client-session.c:1224
+#: ../src/mn-client-session.c:1243
 #, 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:1260
+#: ../src/mn-client-session.c:1279
 #, 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:1265
+#: ../src/mn-client-session.c:1284
 #, 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:1271
+#: ../src/mn-client-session.c:1290
 #, 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:240
+#: ../src/mn-client-session.c:1449
+msgid "unknown server error"
+msgstr "nepoznata greška na serveru"
+
+#: ../src/mn-compact-message-view.gob:45
+msgid "Mailbox"
+msgstr "Sanduče"
+
+#: ../src/mn-compact-message-view.gob:46
+msgid "From"
+msgstr "Od"
+
+#: ../src/mn-compact-message-view.gob:47
+msgid "Subject"
+msgstr "Tema"
+
+#: ../src/mn-compact-message-view.gob:48
+msgid "Sent"
+msgstr "Poslato"
+
+#: ../src/mn-conf.c:262
 msgid "A directory creation error has occurred"
 msgstr "Došlo je do greške pri pravljenju direktorijuma"
 
-#: ../src/mn-conf.c:241
+#: ../src/mn-conf.c:263
 #, c-format
 msgid "Unable to create directory \"%s\": %s."
 msgstr "Nije moguće napraviti direktorijum ?%s?: %s."
 
-#: ../src/mn-conf.c:317
+#: ../src/mn-conf.c:402
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "rekurzivno poništavam %s"
 
-#: ../src/mn-conf.c:321
+#: ../src/mn-conf.c:406
 msgid "syncing the GConf database"
 msgstr "usklađujem GConf bazu podataka"
 
-#: ../src/mn-conf.c:324
+#: ../src/mn-conf.c:409
 msgid "completed"
 msgstr "urađeno"
 
+#: ../src/mn-conf.c:1137
+msgid "A command error has occurred in Mail Notification"
+msgstr "Došlo je do greške u komandama"
+
+#: ../src/mn-conf.c:1138
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "Nije moguće izvršiti %s: %s"
+
 #: ../src/mn-custom-vfs-mailbox.gob:76
 msgid "invalid location"
 msgstr "nevažeće mesto"
 
-#: ../src/mn-evolution-folder-tree-control.c:86
+#: ../src/mn-evolution-folder-tree-control.c:91
 msgid "The currently selected URI"
 msgstr "Trenutno izabran URI"
 
-#: ../src/mn-evolution-mailbox-properties.gob:67
+#. translators: header capitalization
+#: ../src/mn-evolution-mailbox-properties.gob:68
 msgid "Folder"
-msgstr "Direktorijum"
+msgstr "Fascikla"
 
-#: ../src/mn-evolution-mailbox-properties.gob:169
+#: ../src/mn-evolution-mailbox-properties.gob:159
 msgid ""
 "Mail Notification can not contact Evolution. Make sure that Evolution is "
 "running and that the Evolution Mail Notification plugin is loaded."
-msgstr "Dojava pošte ne može da se poveže sa Evolucijom. Pokrenite Evoluciju i uključite dodatak za povezivanje sa Dojavom pošte."
+msgstr ""
+"Dojava pošte ne može da se poveže sa Evolucijom. Pokrenite Evoluciju i "
+"uključite dodatak za povezivanje sa Dojavom pošte."
 
-#: ../src/mn-evolution-mailbox.gob:61
+#: ../src/mn-evolution-mailbox.gob:75
 msgid "folder not found"
-msgstr "direktorijum nije nađen"
+msgstr "fascikla nije nađena"
 
-#: ../src/mn-evolution-mailbox.gob:182
+#: ../src/mn-evolution-mailbox.gob:216
 msgid "unable to contact Evolution"
 msgstr "nije moguće povezati se sa Evolucijom"
 
-#: ../src/mn-evolution-plugin.c:130 ../src/mn-evolution-plugin.c:134
+#: ../src/mn-evolution-plugin.c:136 ../src/mn-evolution-plugin.c:140
 msgid "Unable to activate the Mail Notification plugin"
 msgstr "Nije moguće uključiti priključak za Dojavu pošte"
 
-#: ../src/mn-evolution-plugin.c:130
+#: ../src/mn-evolution-plugin.c:136
 #, c-format
 msgid ""
 "Bonobo could not locate the %s server. Please check your Mail Notification "
 "installation."
-msgstr "Bonobo nije uspeo da pronađe %s server. Molim proverite instalaciju Dojave pošte."
+msgstr ""
+"Bonobo nije uspeo da pronađe %s server. Molim proverite instalaciju Dojave "
+"pošte."
 
-#: ../src/mn-evolution-plugin.c:134 ../src/mn-main.c:427
+#: ../src/mn-evolution-plugin.c:140 ../src/mn-main.c:460
 #, c-format
 msgid ""
 "Bonobo was unable to register the %s server. Please check your Mail "
 "Notification installation."
-msgstr "Bonobo nije uspeo da zabeleži %s server. Molim proverite instalaciju Dojave pošte."
+msgstr ""
+"Bonobo nije uspeo da zabeleži %s server. Molim proverite instalaciju Dojave "
+"pošte."
 
-#: ../src/mn-gmail-mailbox.gob:111
+#: ../src/mn-gmail-mailbox.gob:103
 msgid "invalid feed location"
 msgstr "mesto dovoda nije ispravno navedeno"
 
-#: ../src/mn-gmail-mailbox.gob:125
+#: ../src/mn-gmail-mailbox.gob:117
 #, c-format
 msgid "retrieving feed from %s"
 msgstr "preuzimanje izvora sa %s"
 
-#: ../src/mn-gmail-mailbox.gob:132
+#: ../src/mn-gmail-mailbox.gob:124
 #, c-format
 msgid "unable to retrieve feed: %s"
 msgstr "nije moguće pronaći dovod: %s"
 
-#: ../src/mn-gmail-mailbox.gob:147 ../src/mn-gmail-mailbox.gob:194
+#: ../src/mn-gmail-mailbox.gob:139 ../src/mn-gmail-mailbox.gob:187
 msgid "unable to parse feed"
 msgstr "nije moguće obraditi dovod"
 
-#: ../src/mn-gmime-stream-vfs.gob:49
-#: ../src/mn-sylpheed-mailbox-backend.gob:152
+#: ../src/mn-gmime-stream-vfs.gob:50
+#: ../src/mn-sylpheed-mailbox-backend.gob:205
 #, c-format
 msgid "unable to read %s: %s"
 msgstr "Nije moguće pročitati %s: %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:51
+#: ../src/mn-gmime-stream-vfs.gob:52
 #, c-format
 msgid "unable to write to %s: %s"
 msgstr "nije moguć upis na %s: %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:53
+#: ../src/mn-gmime-stream-vfs.gob:54
 #, c-format
 msgid "unable to seek in %s: %s"
 msgstr "Nije moguće pronaći u %s: %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:55
+#: ../src/mn-gmime-stream-vfs.gob:56
 #, c-format
 msgid "unable to tell position of %s: %s"
 msgstr "nije moguće saznati položaj za %s: %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:57 ../src/mn-mh-mailbox-backend.gob:158
+#: ../src/mn-gmime-stream-vfs.gob:58 ../src/mn-mh-mailbox-backend.gob:164
 #, c-format
 msgid "unable to close %s: %s"
 msgstr "nije moguće zatvoriti %s: %s"
 
-#: ../src/mn-imap-mailbox-properties.gob:113
+#: ../src/mn-imap-mailbox-properties.gob:114
+#: ../src/mn-standard-message-view.gob:62
 msgid "Mailbox:"
 msgstr "Sanduče:"
 
-#: ../src/mn-imap-mailbox-properties.gob:117
+#: ../src/mn-imap-mailbox-properties.gob:118
 msgid "in_box"
 msgstr "in_box"
 
-#: ../src/mn-imap-mailbox-properties.gob:128
+#: ../src/mn-imap-mailbox-properties.gob:129
 msgid "oth_er:"
 msgstr "_drugo:"
 
-#: ../src/mn-imap-mailbox-properties.gob:139
+#: ../src/mn-imap-mailbox-properties.gob:140
 msgid "ne_ver"
 msgstr "ni_kad"
 
-#: ../src/mn-imap-mailbox-properties.gob:140
+#: ../src/mn-imap-mailbox-properties.gob:141
 msgid "au_todetect"
 msgstr "a_utodetekcija"
 
-#: ../src/mn-imap-mailbox-properties.gob:141
+#: ../src/mn-imap-mailbox-properties.gob:142
 msgid "al_ways"
 msgstr "_uvek"
 
-#: ../src/mn-imap-mailbox-properties.gob:173
+#: ../src/mn-imap-mailbox-properties.gob:174
 msgid "Use the <span style=\"italic\">IDLE</span> extension:"
 msgstr "Koristi <span style=\"italic\">IDLE</span> produžetak:"
 
-#: ../src/mn-imap-mailbox.gob:390
+#: ../src/mn-imap-mailbox.gob:384
 msgid "server did not send capabilities"
 msgstr "server nije obavestio o svojim mogućnostima"
 
-#: ../src/mn-imap-mailbox.gob:573
+#: ../src/mn-imap-mailbox.gob:551
 msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
 msgstr "server je dojavio LOGINDISABLED, LOGIN prijava neće biti korišćena"
 
-#: ../src/mn-imap-mailbox.gob:574
+#: ../src/mn-imap-mailbox.gob:552
 msgid "unable to login"
 msgstr "prijava nije moguća"
 
 #. compliance error
-#: ../src/mn-imap-mailbox.gob:714
-msgid "server did not send search results"
-msgstr "server nije poslao rezultate pretrage"
-
-#. compliance error
-#: ../src/mn-imap-mailbox.gob:792
+#: ../src/mn-imap-mailbox.gob:752
 msgid "server did not send all the messages we requested"
 msgstr "server nije poslao sve tražene poruke"
 
-#: ../src/mn-imap-mailbox.gob:859
+#: ../src/mn-imap-mailbox.gob:822
 msgid "unable to fetch message"
 msgstr "nije moguće dobaviti poruku"
 
-#: ../src/mn-imap-mailbox.gob:875
+#: ../src/mn-imap-mailbox.gob:847
 msgid ""
 "\"Use the IDLE extension\" set to \"never\" in the mailbox properties, "
 "logging out"
-msgstr "„Koristi IDLE proširenje“ je postavljeno na „nikad“ u postavkama sandučića, odjavljujem se"
+msgstr ""
+"„Koristi IDLE proširenje“ je postavljeno na „nikad“ u postavkama sandučića, "
+"odjavljujem se"
 
-#: ../src/mn-imap-mailbox.gob:886
+#: ../src/mn-imap-mailbox.gob:858
 #, c-format
 msgid "the remote server runs %s, not using the IDLE extension"
 msgstr "udaljeni server koristi %s, ne koristim IDLE produžetak"
 
-#: ../src/mn-imap-mailbox.gob:891
+#: ../src/mn-imap-mailbox.gob:863
 #, c-format
 msgid ""
 "the remote server runs %s, the IDLE extension might not function properly"
 msgstr "udaljeni server koristi %s, IDLE proširenje možda neće ispravno raditi"
 
-#: ../src/mn-imap-mailbox.gob:900
+#: ../src/mn-imap-mailbox.gob:872
 msgid "the remote server does not support the IDLE extension, logging out"
 msgstr "udaljeni server ne podržava IDLE proširenje, odjavljujem se"
 
-#: ../src/mn-imap-mailbox.gob:1251 ../src/mn-pop3-mailbox.gob:1124
-msgid "unknown server error"
-msgstr "nepoznata greška na serveru"
-
-#: ../src/mn-imap-mailbox.gob:1357 ../src/mn-pop3-mailbox.gob:311
+#: ../src/mn-imap-mailbox.gob:1377 ../src/mn-pop3-mailbox.gob:296
 msgid "server does not support in-band SSL/TLS"
 msgstr "server ne podržava zaštitu putem SSL/TLS"
 
-#: ../src/mn-imap-mailbox.gob:1381 ../src/mn-pop3-mailbox.gob:997
+#: ../src/mn-imap-mailbox.gob:1401 ../src/mn-pop3-mailbox.gob:947
 msgid ""
 "a SASL authentication mechanism was selected but SASL support has not been "
 "compiled in"
@@ -874,145 +792,183 @@ msgstr ""
 "izabran je mehanizam za prijavu koji koristi SASL ali podrška za SASL nije "
 "ugrađena u program"
 
-#: ../src/mn-imap-mailbox.gob:1391 ../src/mn-pop3-mailbox.gob:1017
+#: ../src/mn-imap-mailbox.gob:1411 ../src/mn-pop3-mailbox.gob:967
 #, c-format
 msgid "unknown authentication mechanism \"%s\""
 msgstr "nepoznat mehanizam za prijavu \"%s\""
 
-#: ../src/mn-imap-mailbox.gob:1423 ../src/mn-pop3-mailbox.gob:1053
+#: ../src/mn-imap-mailbox.gob:1443 ../src/mn-pop3-mailbox.gob:1003
 #, c-format
 msgid "disabling mechanism \"%s\" and retrying SASL authentication"
 msgstr "isključujem mehanizam „%s“ i pokušavam SASL prijavu"
 
-#: ../src/mn-imap-mailbox.gob:1435
+#: ../src/mn-imap-mailbox.gob:1455
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "povratak na  IMAP LOGIN prijavu"
 
-#: ../src/mn-imap-mailbox.gob:1447 ../src/mn-pop3-mailbox.gob:1082
+#: ../src/mn-imap-mailbox.gob:1467 ../src/mn-pop3-mailbox.gob:1032
 msgid "authentication failed"
 msgstr "prijava nije uspela"
 
-#: ../src/mn-mail-icon.gob:91
-msgid "Main _Window"
-msgstr "Glavni _prozor"
+#. success; caller must switch state itself
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:1528
+msgid "server did not send search results"
+msgstr "server nije poslao rezultate pretrage"
 
-#: ../src/mn-mail-icon.gob:92 ../src/mn-main-window.gob:165
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:89
 msgid "_Mail Reader"
 msgstr "_Čitač pošte"
 
-#: ../src/mn-mail-icon.gob:93 ../src/mn-main-window.gob:173
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:91 ../src/mn-mailbox-view.gob:312
 msgid "_Update"
 msgstr "_Osveži"
 
-#: ../src/mn-mail-icon.gob:99
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:98
 msgid "R_emove From Notification Area"
 msgstr "_Ukloni sa obaveštajne zone"
 
-#: ../src/mn-mailbox-properties-dialog.gob:88
+#. translators: header capitalization
+#: ../src/mn-mail-summary-popup.gob:270
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Sažetak poruka</span>"
+
+#. translators: header capitalization
+#: ../src/mn-mail-summary-popup.gob:277
+msgid "<span weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Sažetak poruka</span>"
+
+#. translators: header capitalization
+#: ../src/mn-mailbox-properties-dialog.gob:89
 #, c-format
 msgid "%s Properties"
 msgstr "Postavke za %s"
 
-#: ../src/mn-mailbox-properties-dialog.gob:205
+#. translators: header capitalization
+#: ../src/mn-mailbox-properties-dialog.gob:232
 msgid "Add a Mailbox"
 msgstr "Dodaj sanduče"
 
-#: ../src/mn-mailbox-view.gob:179
+#: ../src/mn-mailbox-view.gob:248
 msgid "A paste error has occurred"
 msgstr "Došlo je do greške prilikom nalepljivanja"
 
-#: ../src/mn-mailbox-view.gob:320 ../src/mn-message-view.gob:313
-msgid "Mailbox"
-msgstr "Sanduče"
-
-#: ../src/mn-mailbox-view.gob:523
+#: ../src/mn-mailbox-view.gob:557
 #, c-format
 msgid "unhandled %s mailbox (%s)"
 msgstr "neobrađeno %s sanduče (%s)"
 
-#: ../src/mn-mailbox-view.gob:528
+#: ../src/mn-mailbox-view.gob:562
 #, c-format
 msgid "%s mailbox"
 msgstr "%s sanduče"
 
-#: ../src/mn-mailbox-view.gob:543
+#: ../src/mn-mailbox-view.gob:577
 msgid "detecting mailbox type..."
 msgstr "prepoznajem vrstu sandučeta..."
 
-#: ../src/mn-mailbox.gob:278
+#: ../src/mn-mailbox.gob:472
 msgid "\"type\" attribute missing"
 msgstr "nedostaje atribut „vrsta“"
 
-#: ../src/mn-mailbox.gob:285
+#: ../src/mn-mailbox.gob:479
 #, c-format
 msgid "unknown mailbox type \"%s\""
 msgstr "nepoznata vrsta sandučeta „%s“"
 
-#: ../src/mn-mailbox.gob:305
+#: ../src/mn-mailbox.gob:499
 #, c-format
 msgid ""
 "property \"%s\": unable to transform string \"%s\" into a value of type \"%s"
 "\""
 msgstr "osobina „%s“: nije moguće prebaciti nisku „%s“ u vrednost vrste „%s“"
 
-#: ../src/mn-mailbox.gob:744
+#: ../src/mn-mailbox.gob:948
 #, c-format
 msgid "property \"%s\" has no value"
 msgstr "osobina „%s“ nema postavljenu vrednost"
 
-#: ../src/mn-mailboxes.gob:203
+#: ../src/mn-mailboxes.gob:239
 msgid "An error has occurred while importing old mailboxes"
 msgstr "Došlo je do greške prilikom uvoženja starih sandučića"
 
-#: ../src/mn-mailboxes.gob:248
+#: ../src/mn-mailboxes.gob:265
 msgid "Unable to load the mailboxes configuration"
 msgstr "Nije moguće uvesti podešavanja sandučića"
 
-#: ../src/mn-mailboxes.gob:294
+#: ../src/mn-mailboxes.gob:311
 msgid "Unable to parse the XML document."
 msgstr "nije moguće obraditi XML dokument."
 
-#: ../src/mn-mailboxes.gob:301
+#: ../src/mn-mailboxes.gob:318
 msgid "The root element is missing."
 msgstr "Nedostaje koreni element."
 
-#: ../src/mn-mailboxes.gob:307
+#: ../src/mn-mailboxes.gob:324
 #, c-format
 msgid "The root element \"%s\" is invalid."
 msgstr "Koreni element „%s“ je nevažeći."
 
-#: ../src/mn-mailboxes.gob:330
+#: ../src/mn-mailboxes.gob:347
 #, c-format
 msgid "On line %i: %s."
 msgstr "U liniji %i: %s."
 
-#: ../src/mn-mailboxes.gob:335
+#: ../src/mn-mailboxes.gob:352
 #, c-format
 msgid "On line %i: unknown element \"%s\"."
 msgstr "U liniji %i: nepoznati element „%s“."
 
-#: ../src/mn-mailboxes.gob:346
+#: ../src/mn-mailboxes.gob:361
 msgid "An error has occurred while loading the mailboxes configuration"
 msgid_plural "Errors have occurred while loading the mailboxes configuration"
 msgstr[0] "Došlo je do greške prilikom učitavanja podešavanja sandučića"
 msgstr[1] "Došlo je do grešaka prilikom učitavanja podešavanja sandučića"
 msgstr[2] "Došlo je do grešaka prilikom učitavanja podešavanja sandučića"
 
-#: ../src/mn-mailboxes.gob:371
+#: ../src/mn-mailboxes.gob:386
 msgid "Unable to save the mailboxes configuration"
 msgstr "Nije moguće sačuvati podešavanja sandučića"
 
-#: ../src/mn-mailboxes.gob:417
+#: ../src/mn-mailboxes.gob:428
+#, c-format
+msgid "Unable to remove %s: %s."
+msgstr "Nije moguće ukloniti %s: %s"
+
+#: ../src/mn-mailboxes.gob:436
+#, c-format
+msgid "Unable to create %s: %s."
+msgstr "Nije moguće napraviti %s: %s"
+
+#: ../src/mn-mailboxes.gob:443
+#, c-format
+msgid "Unable to open %s for writing: %s."
+msgstr "Nije moguće otvoriti %s za upis: %s"
+
+#: ../src/mn-mailboxes.gob:450
 msgid "Unable to write the XML document."
-msgstr "Nijem moguće zapisati XML dokument."
+msgstr "Nije moguće zapisati XML dokument."
+
+#: ../src/mn-mailboxes.gob:456
+#, c-format
+msgid "Unable to close %s: %s."
+msgstr "Nije moguće zatvoriti %s: %s"
+
+#: ../src/mn-mailboxes.gob:466 ../src/mn-mailboxes.gob:473
+#, c-format
+msgid "Unable to rename %s to %s: %s."
+msgstr "Nije moguće preimenovati %s u %s: %s"
 
 #. non fatal
-#: ../src/mn-mailboxes.gob:433
+#: ../src/mn-mailboxes.gob:479
 #, c-format
 msgid "unable to delete %s: %s"
 msgstr "nije moguće obrisati %s: %s"
 
-#: ../src/mn-mailboxes.gob:457
+#: ../src/mn-mailboxes.gob:509
 #, c-format
 msgid "%s has %i new message"
 msgid_plural "%s has %i new messages"
@@ -1020,230 +976,98 @@ msgstr[0] "Sanduče %s ima %i novu poruku"
 msgstr[1] "Sanduče %s ima %i nove poruke"
 msgstr[2] "Sanduče %s ima %i novih poruka"
 
-#: ../src/mn-mailboxes.gob:483
+#: ../src/mn-mailboxes.gob:535
 #, c-format
 msgid "%s reported an error: %s"
 msgstr "%s je dojavio grešku: %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:111
+#: ../src/mn-maildir-mailbox-backend.gob:125
 #, c-format
-msgid "unable to open folder \"new\": %s"
-msgstr "nije moguće otvoriti direktorijum \"new\": %s"
+msgid "unable to open folder \"%s\": %s"
+msgstr "nije moguće otvoriti fasciklu „%s?: %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:144
+#: ../src/mn-maildir-mailbox-backend.gob:173
 #, c-format
-msgid "unable to close folder \"new\": %s"
-msgstr "nije moguće zatvoriti direktorijum \"new\": %s"
+msgid "unable to close folder \"%s\": %s"
+msgstr "nije moguće zatvoriti fasciklu „%s?: %s"
 
-#: ../src/mn-maildir-mailbox-backend.gob:147
+#: ../src/mn-maildir-mailbox-backend.gob:176
 #, c-format
-msgid "error while reading folder \"new\": %s"
-msgstr "greška pri čitanju direktorijuma \"new\": %s"
-
-#: ../src/mn-main-window.gob:106
-msgid "Help messages"
-msgstr "Poruke za pomoć"
-
-#: ../src/mn-main-window.gob:107
-msgid "Count messages"
-msgstr "Prebroj poruke"
-
-#. Toplevel
-#: ../src/mn-main-window.gob:156
-msgid "_Mail"
-msgstr "_Pošta"
-
-#: ../src/mn-main-window.gob:157
-msgid "_Edit"
-msgstr "_Uredi"
-
-#: ../src/mn-main-window.gob:158
-msgid "_View"
-msgstr "_Pregled"
-
-#: ../src/mn-main-window.gob:159
-msgid "_Help"
-msgstr "P_omoć"
-
-#: ../src/mn-main-window.gob:167
-msgid "Launch the mail reader"
-msgstr "P_okreni čitač pošte"
-
-#. Reload
-#: ../src/mn-main-window.gob:175 ../src/mn-main.c:248
-msgid "Update the mail status"
-msgstr "Osveži podatke o pošti"
-
-#: ../src/mn-main-window.gob:181
-msgid "_Close"
-msgstr "_Zatvori"
-
-#: ../src/mn-main-window.gob:183
-msgid "Close this window"
-msgstr "Zatvori ovaj prozor"
-
-#: ../src/mn-main-window.gob:189
-msgid "_Quit"
-msgstr "_Kraj"
-
-#: ../src/mn-main-window.gob:191 ../src/mn-main.c:266
-msgid "Quit Mail Notification"
-msgstr "Ugasi dojavu pošte"
-
-#: ../src/mn-main-window.gob:199 ../src/mn-main-window.gob:247
-msgid "_Toolbars"
-msgstr "_Alatne trake"
-
-#: ../src/mn-main-window.gob:201
-msgid "Customize the toolbars"
-msgstr "Uredi alatne trake"
-
-#: ../src/mn-main-window.gob:207
-msgid "_Preferences"
-msgstr "_Postavke"
-
-#: ../src/mn-main-window.gob:217
-msgid "Toolbars Styl_e"
-msgstr "Stil alatnih _traka"
-
-#: ../src/mn-main-window.gob:219
-msgid "Customize the toolbars style"
-msgstr "Prilagodi stil alatnih traka"
-
-#: ../src/mn-main-window.gob:227
-msgid "_Contents"
-msgstr "_Sadržaj"
-
-#: ../src/mn-main-window.gob:229
-msgid "Display help"
-msgstr "Prikaži pomoć"
-
-#: ../src/mn-main-window.gob:235
-msgid "_About"
-msgstr "_O programu"
-
-#: ../src/mn-main-window.gob:237
-msgid "Display credits"
-msgstr "Prikaži zasluge"
-
-#: ../src/mn-main-window.gob:249
-msgid "Show or hide the toolbars"
-msgstr "Prikaži ili ukloni alatnu traku"
-
-#: ../src/mn-main-window.gob:256
-msgid "_Statusbar"
-msgstr "_Statusna traka"
-
-#: ../src/mn-main-window.gob:258
-msgid "Show or hide the statusbar"
-msgstr "Prikaži ili ukloni statusnu traku"
-
-#: ../src/mn-main-window.gob:269
-msgid "_Desktop Default"
-msgstr "_Podrazumevano u okruženju"
-
-#: ../src/mn-main-window.gob:271
-msgid "Set the toolbars style to the desktop default setting"
-msgstr "Postavi stilove traka na stil koji važi u celom radnom okruženju"
+msgid "error while reading folder \"%s\": %s"
+msgstr "greška pri čitanju fascikle „%s?: %s"
 
-#: ../src/mn-main-window.gob:277
-msgid "I_cons Only"
-msgstr "Samo _slike"
+#: ../src/mn-main.c:100
+msgid "yes"
+msgstr "da"
 
-#: ../src/mn-main-window.gob:279
-msgid "Only display the toolbars icons"
-msgstr "Prikaži samo slike u statusnoj traci"
+#: ../src/mn-main.c:100
+msgid "no"
+msgstr "ne"
 
-#: ../src/mn-main-window.gob:285
-msgid "_Text Only"
-msgstr "Samo _tekst"
-
-#: ../src/mn-main-window.gob:287
-msgid "Only display the toolbars text"
-msgstr "Prikaži samo tekst u alatnoj traci"
-
-#: ../src/mn-main-window.gob:293
-msgid "Text Belo_w Icons"
-msgstr "Tekst _ispod slika"
-
-#: ../src/mn-main-window.gob:295
-msgid "Display the toolbars text below the icons"
-msgstr "Prikaži tekst ispod odgovarajuće slike u alatnoj traci"
-
-#: ../src/mn-main-window.gob:301
-msgid "Text Be_side Icons"
-msgstr "Tekst _pored slika"
+#: ../src/mn-main.c:132
+#, c-format
+msgid "%s version %s\n"
+msgstr "%s izdanje %s\n"
 
-#: ../src/mn-main-window.gob:303
-msgid "Display the toolbars text beside the icons"
-msgstr "Prikaži tekst pored odgovarajuće slike u alatnoj traci"
+#: ../src/mn-main.c:137
+msgid "Mailbox backends:\n"
+msgstr "Podržani sandučići:\n"
 
-#: ../src/mn-main-window.gob:345
-#, c-format
-msgid "unable to load menus.xml: %s"
-msgstr "Nije moguće pročitati menus.xml: %s"
+#: ../src/mn-main.c:142
+msgid "POP3 and IMAP features:\n"
+msgstr "Mogućnosti za POP3 i IMAP:\n"
 
-#: ../src/mn-main-window.gob:388
-msgid "unable to load toolbars.xml"
-msgstr "nije moguće učitati toolbars.xml: %s"
+# FIXME: izbaci latinični naziv kada bude vreme
+#: ../src/mn-main.c:147
+msgid "Sylpheed features:\n"
+msgstr "Osobine Silfida (Sylpheed):\n"
 
-#: ../src/mn-main-window.gob:439
+#: ../src/mn-main.c:198
 #, c-format
-msgid "%i new message"
-msgid_plural "%i new messages"
-msgstr[0] "%i nova poruka"
-msgstr[1] "%i nove poruke"
-msgstr[2] "%i novih poruka"
-
-#.
-#. * Here and everywhere else, we order the backends by descending
-#. * order of (believed) popularity.
-#.
-#: ../src/mn-main.c:96
-msgid "Compiled-in mailbox backends: "
-msgstr "Ugrađene mogućnosti za sandučiće:"
+msgid "A Bonobo exception (%s) has occurred in %s()."
+msgstr "Desio se Bonobov izuzetak (%s) u %s()."
 
-#: ../src/mn-main.c:124
-msgid "Compiled-in POP3 and IMAP features: "
-msgstr "Ugrađene mogućnosti za POP3 i IMAP: "
+#: ../src/mn-main.c:220
+msgid "Show version information"
+msgstr "Prikaži podatke o izdanju"
 
-#: ../src/mn-main.c:194
+#: ../src/mn-main.c:229
 msgid "Enable informational output"
 msgstr "Dozvoli rečitiji izlaz"
 
-#: ../src/mn-main.c:203
-msgid "List the compiled-in features"
-msgstr "Ispiši ugrađene mogućnosti"
-
-#: ../src/mn-main.c:212
-msgid "Display the main window"
-msgstr "Prikaži glavni prozor"
-
-#: ../src/mn-main.c:221
+#: ../src/mn-main.c:238
 msgid "Display the properties dialog"
 msgstr "Prikaži prozor sa postavkama"
 
-#: ../src/mn-main.c:230
+#: ../src/mn-main.c:247
 msgid "Display the about dialog"
 msgstr "Prikaži podatke o programu"
 
-#: ../src/mn-main.c:239
+#: ../src/mn-main.c:256
 msgid "Close the mail summary popup"
 msgstr "Zatvori prozor sa sažetkom poruka"
 
-#: ../src/mn-main.c:257
+#: ../src/mn-main.c:265
+msgid "Update the mail status"
+msgstr "Osveži podatke o pošti"
+
+#: ../src/mn-main.c:274
 msgid "Unset obsolete GConf configuration"
 msgstr "Poništi zastarela GConf podešavanja"
 
-#.
-#. * We can't use mn_error_dialog() because gtk_init() has not been
-#. * called yet.
-#.
-#: ../src/mn-main.c:293
+#: ../src/mn-main.c:283
+msgid "Quit Mail Notification"
+msgstr "Ugasi dojavu pošte"
+
+#.
+#. * We cannot use mn_fatal_error_dialog() because gtk_init() has
+#. * not been called yet.
+#.
+#: ../src/mn-main.c:310
 msgid "multi-threading is not available"
 msgstr "višenitni rad nije podržan"
 
-#: ../src/mn-main.c:355
+#: ../src/mn-main.c:365
 msgid ""
 "Bonobo could not locate the automation object. Please check your Mail "
 "Notification installation."
@@ -1253,122 +1077,64 @@ msgstr ""
 "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:361
+#: ../src/mn-main.c:371
 msgid "quitting Mail Notification"
 msgstr "Gasim dojavu pošte"
 
-#: ../src/mn-main.c:365
+#: ../src/mn-main.c:375
 msgid "Mail Notification is not running"
 msgstr "Program za dojavu pošte nije pokrenut."
 
-#: ../src/mn-main.c:372
+#: ../src/mn-main.c:390
 msgid "Unable to initialize the GnomeVFS library."
 msgstr "Nije moguće pokrenuti biblioteku GnomeVFS."
 
-#: ../src/mn-main.c:404
+#: ../src/mn-main.c:438
 msgid "updating the mail status"
 msgstr "Proveravam poštu"
 
-#: ../src/mn-main.c:413
+#: ../src/mn-main.c:446
 msgid "Mail Notification is already running"
 msgstr "Program za dojavu pošte je već pokrenut."
 
-#: ../src/mn-main.c:423
+#: ../src/mn-main.c:456
 #, c-format
 msgid ""
 "Bonobo could not locate the %s file. Please check your Mail Notification "
 "installation."
-msgstr "Bonobo nije mogao da pronađe datoteku %s. Molimo proverite podešavanja Dojave pošte."
+msgstr ""
+"Bonobo nije mogao da pronađe datoteku %s. Molimo proverite podešavanja Dojave "
+"pošte."
 
-#: ../src/mn-mbox-mailbox-backend.gob:209
+#: ../src/mn-mbox-mailbox-backend.gob:281
 #, c-format
 msgid "unable to close file: %s"
 msgstr "nije moguće zatvoriti datoteku: %s"
 
-#: ../src/mn-mbox-mailbox-backend.gob:222
+#: ../src/mn-mbox-mailbox-backend.gob:298
 #, c-format
 msgid "unable to open mailbox: %s"
 msgstr "nije moguće otvoriti sanduče: %s"
 
-#: ../src/mn-message-mime.c:104
+#: ../src/mn-message-mime.c:121
 msgid "unable to parse MIME message"
 msgstr "nije moguće obraditi MIME poruku"
 
-#: ../src/mn-message-view.gob:82
-msgid "You have no new mail."
-msgstr "Nema pošte."
-
-#: ../src/mn-message-view.gob:322
-msgid "Unreadable message"
-msgstr "Nečitljiva poruka"
-
-#: ../src/mn-message-view.gob:330
-msgid "From"
-msgstr "Od"
-
-#: ../src/mn-message-view.gob:338
-msgid "Subject"
-msgstr "Tema"
-
-#: ../src/mn-message-view.gob:349
-msgid "Sent"
-msgstr "Poslato"
-
-#: ../src/mn-message.gob:99
+#: ../src/mn-message.gob:111
 msgid "Unknown"
 msgstr "Nepoznato"
 
-#: ../src/mn-message.gob:124
-#, c-format
-msgid "%i second ago"
-msgid_plural "%i seconds ago"
-msgstr[0] "pre %i sekundu"
-msgstr[1] "pre %i sekunde"
-msgstr[2] "pre %i sekundi"
-
-#: ../src/mn-message.gob:128
-#, c-format
-msgid "about %i minute ago"
-msgid_plural "about %i minutes ago"
-msgstr[0] "pre oko %i minut"
-msgstr[1] "pre oko %i minuta"
-msgstr[2] "pre oko %i minuta"
-
-#: ../src/mn-message.gob:133
-#, c-format
-msgid "about %i hour ago"
-msgid_plural "about %i hours ago"
-msgstr[0] "pre oko %i sat"
-msgstr[1] "pre oko %i sata"
-msgstr[2] "pre oko %i sati"
-
-#: ../src/mn-message.gob:138
-#, c-format
-msgid "about %i day ago"
-msgid_plural "about %i days ago"
-msgstr[0] "pre oko %i dan"
-msgstr[1] "pre oko %i dana"
-msgstr[2] "pre oko %i dana"
-
-#: ../src/mn-message.gob:143
-#, c-format
-msgid "about %i week ago"
-msgid_plural "about %i weeks ago"
-msgstr[0] "pre oko %i nedelju"
-msgstr[1] "pre oko %i nedelje"
-msgstr[2] "pre oko %i nedelja"
-
 #. translators: "none" is used like "Mailbox: none"
-#: ../src/mn-message.gob:163
+#: ../src/mn-message.gob:130
 msgid "none"
 msgstr "nijedno"
 
-#: ../src/mn-mh-mailbox-backend.gob:161
+#: ../src/mn-mh-mailbox-backend.gob:167
 #, c-format
 msgid "error while reading %s: %s"
 msgstr "greška pri čitanju %s: %s"
 
-#: ../src/mn-mh-mailbox-backend.gob:174
+#: ../src/mn-mh-mailbox-backend.gob:180
 #, c-format
 msgid "unable to open %s: %s"
 msgstr "nije moguće otvoriti %s: %s"
@@ -1378,38 +1144,63 @@ msgid "sta_ndard"
 msgstr "_standard"
 
 #: ../src/mn-pi-mailbox-properties.gob:68
-msgid "_in-band SSL/TLS"
-msgstr "_ugrađeni SSL/TLS"
+msgid "in-band SS_L/TLS"
+msgstr "ugrađeni SSL/TLS"
 
 #: ../src/mn-pi-mailbox-properties.gob:69
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS na posebnom portu"
 
 #: ../src/mn-pi-mailbox-properties.gob:73
-msgid "_Hostname:"
+msgid "Ho_stname:"
 msgstr "_Računar:"
 
-#: ../src/mn-pi-mailbox-properties.gob:93
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox-properties.gob:94
 msgid "_Details"
 msgstr "_Detalji"
 
-#: ../src/mn-pi-mailbox-properties.gob:148
+#: ../src/mn-pi-mailbox-properties.gob:149
 msgid "Connection type:"
 msgstr "Vrsta veze:"
 
-#: ../src/mn-pi-mailbox-properties.gob:155
+#: ../src/mn-pi-mailbox-properties.gob:156
 msgid "Port:"
 msgstr "Port:"
 
-#: ../src/mn-pi-mailbox-properties.gob:178
-msgid "_Authentication mechanism:"
+#: ../src/mn-pi-mailbox-properties.gob:179
+msgid "Authent_ication mechanism:"
 msgstr "_Način prijave:"
 
-#: ../src/mn-pi-mailbox.gob:113
+#: ../src/mn-pi-mailbox.gob:151
 msgid "SSL/TLS support has not been compiled in"
 msgstr "Podrška za SSL/TLS nije ugrađena"
 
-#: ../src/mn-pop3-mailbox.gob:359
+#: ../src/mn-pi-mailbox.gob:317
+#, c-format
+msgid ""
+"Mail Notification was unable to log into %s mailbox %s, possibly because the "
+"credentials you have entered are invalid.\n"
+"\n"
+"Please re-enter your credentials."
+msgstr ""
+"Nije moguće prijaviti se za čitanje %s sandučeta %s, najverovatnije zato što "
+"uneta lozinka nije ispravna.\n"
+"\n"
+"Molim unesite ponovo lozinku."
+
+#: ../src/mn-pi-mailbox.gob:318
+#, c-format
+msgid "Enter your credentials for %s mailbox %s."
+msgstr "Unesite lozinku za %s sanduče %s."
+
+#. keep the title in sync with gnome-authentication-manager
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox.gob:361
+msgid "Authentication Required"
+msgstr "Potrebna je prijava"
+
+#: ../src/mn-pop3-mailbox.gob:344
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "parametri za mogućnost LOGIN-DELAY nisu ispravno postavljeni"
 
@@ -1419,17 +1210,19 @@ msgstr "parametri za mogućnost LOGIN-DELAY nisu ispravno postavljeni"
 #. * servers nevertheless, by retrying without the SASL
 #. * initial client response.
 #.
-#: ../src/mn-pop3-mailbox.gob:519
+#: ../src/mn-pop3-mailbox.gob:485
 msgid ""
 "SASL authentication with initial client response failed, retrying without "
 "initial client response"
-msgstr "SASL autentifikacija sa početnim klijentskim odgovorom nije uspela, pokušavam ponovo bez početnog klijentskog odgovora"
+msgstr ""
+"SASL autentifikacija sa početnim klijentskim odgovorom nije uspela, "
+"pokušavam ponovo bez početnog klijentskog odgovora"
 
-#: ../src/mn-pop3-mailbox.gob:733
+#: ../src/mn-pop3-mailbox.gob:696
 msgid "unknown error"
 msgstr "nepoznata greška"
 
-#: ../src/mn-pop3-mailbox.gob:828
+#: ../src/mn-pop3-mailbox.gob:791
 #, c-format
 msgid "honouring LOGIN-DELAY, sleeping for %i second"
 msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
@@ -1437,19 +1230,20 @@ 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:1009
+#: ../src/mn-pop3-mailbox.gob:959
 msgid "server does not support APOP authentication"
 msgstr "server ne podržava prijavu korišćenjem mehanizma APOP"
 
-#: ../src/mn-pop3-mailbox.gob:1065
+#: ../src/mn-pop3-mailbox.gob:1015
 msgid "falling back to APOP authentication"
 msgstr "prelazim na  APOP prijavu"
 
-#: ../src/mn-pop3-mailbox.gob:1070
+#: ../src/mn-pop3-mailbox.gob:1020
 msgid "falling back to USER/PASS authentication"
 msgstr "prelazim na prijavu pomoću imena i lozinke"
 
-#: ../src/mn-properties-dialog.gob:170 ../ui/properties-dialog.glade.h:10
+#. translators: header capitalization
+#: ../src/mn-properties-dialog.gob:173 ../ui/properties-dialog.glade.h:23
 msgid "Mail Notification Properties"
 msgstr "Postavke za dojavu"
 
@@ -1469,11 +1263,11 @@ msgstr "dole-levo"
 msgid "bottom right"
 msgstr "dole-desno"
 
-#: ../src/mn-properties-dialog.gob:329
+#: ../src/mn-properties-dialog.gob:332
 msgid "No mailbox selected."
 msgstr "Nijedno sanduče nije izabrano."
 
-#: ../src/mn-properties-dialog.gob:334
+#: ../src/mn-properties-dialog.gob:337
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
@@ -1481,143 +1275,169 @@ msgstr[0] "Izabrano %i sanduče"
 msgstr[1] "Izabrana %i sandučeta"
 msgstr[2] "Izabrano %i sandučeta"
 
-#: ../src/mn-properties-dialog.gob:465
+#: ../src/mn-properties-dialog.gob:456
 #, c-format
 msgid "Test message #%i"
 msgstr "Tekst poruke #%i"
 
-#: ../src/mn-properties-dialog.gob:470
+#. translators: header capitalization
+#: ../src/mn-properties-dialog.gob:462
 msgid "Mail Notification Properties Dialog"
 msgstr "Dijalog za postavke Dojave pošte"
 
-#: ../src/mn-shell.gob:109
-msgid "You have new mail."
-msgstr "Imate novu poštu."
-
-#: ../src/mn-shell.gob:374
+#. translators: header capitalization
+#: ../src/mn-shell.gob:381
 msgid "Mailboxes Having New Mail"
 msgstr "Sandučići sa novom poštom"
 
-#: ../src/mn-shell.gob:393
+#. translators: header capitalization
+#: ../src/mn-shell.gob:400
 msgid "Errors"
 msgstr "Greške"
 
-#: ../src/mn-shell.gob:408
+#. translators: header capitalization
+#: ../src/mn-shell.gob:416
 msgid "Mail Summary"
 msgstr "Sažetak poruka"
 
+#: ../src/mn-shell.gob:445
+msgid "You have no new mail."
+msgstr "Nema novih poruka."
+
 #: ../src/mn-ssl.c:76
 msgid "unknown SSL/TLS error"
-msgstr "nepoznata greška u  SSL/TLS"
+msgstr "nepoznata greška sa SSL/TLS"
 
-#: ../src/mn-stock.c:28
-msgid "Select _All"
-msgstr "Izaberi _sve"
+#: ../src/mn-standard-message-view.gob:64
+msgid "Unreadable message:"
+msgstr "Nečitljiva poruka:"
+
+#: ../src/mn-standard-message-view.gob:67
+msgid "From:"
+msgstr "Šalje:"
+
+#: ../src/mn-standard-message-view.gob:68
+msgid "Subject:"
+msgstr "Tema:"
 
+#: ../src/mn-standard-message-view.gob:72
+msgid "Sent:"
+msgstr "Poslato:"
+
+#. translators: header capitalization
 #: ../src/mn-stock.c:29
-msgid "Leave Fullscreen"
-msgstr "Ostavi na celom ekranu"
+msgid "Select _All"
+msgstr "Izaberi _sve"
 
-#: ../src/mn-stock.c:30
+#. translators: header capitalization
+#. translators: header capitalization
+#: ../src/mn-stock.c:32
 msgid "Co_nnect"
 msgstr "_Poveži se"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:170
+#: ../src/mn-sylpheed-mailbox-backend.gob:223
 #, c-format
 msgid "unable to open folder: %s"
-msgstr "nije moguće otvoriti direktorijum: %s"
+msgstr "nije moguće otvoriti fasciklu: %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:209
+#: ../src/mn-sylpheed-mailbox-backend.gob:276
 #, c-format
 msgid "unable to close folder: %s"
-msgstr "nije moguće zatvoriti direktorijum: %s"
+msgstr "nije moguće zatvoriti fasciklu: %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:212
+#: ../src/mn-sylpheed-mailbox-backend.gob:279
 #, c-format
 msgid "error while reading folder: %s"
-msgstr "greška pri čitanju direktorijuma: %s"
+msgstr "greška pri čitanju fasciklu: %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:255
+#: ../src/mn-sylpheed-mailbox-backend.gob:420
 msgid "unexpected end of file"
 msgstr "neočekivani kraj datoteke"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:269
+#: ../src/mn-sylpheed-mailbox-backend.gob:438
 #, c-format
 msgid "incompatible file version \"%i\""
 msgstr "izdanje datoteke nije saglasno „%i“"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:272
+#: ../src/mn-sylpheed-mailbox-backend.gob:441
 msgid "file version missing"
 msgstr "nedostaje izdanje datoteke"
 
-#: ../src/mn-system-vfs-mailbox-properties.gob:39
-#: ../src/mn-system-vfs-mailbox-properties.gob:47
+#: ../src/mn-system-vfs-mailbox-properties.gob:40
+#: ../src/mn-system-vfs-mailbox-properties.gob:48
 #: ../src/mn-system-vfs-mailbox.gob:45
 msgid "System mailbox"
 msgstr "Sistemsko sanduče"
 
-#: ../src/mn-system-vfs-mailbox-properties.gob:68
+#: ../src/mn-system-vfs-mailbox-properties.gob:70
 #, c-format
 msgid "Your system mailbox is <span weight=\"bold\">%s</span>."
 msgstr "Vaše sistemsko sanduče je <span weight=\"bold\">%s</span>."
 
-#: ../src/mn-system-vfs-mailbox-properties.gob:75
+#: ../src/mn-system-vfs-mailbox-properties.gob:77
 msgid ""
 "The location of your system mailbox could not be detected. Check the MAIL "
 "environment variable."
 msgstr "Mesto sistemskog sandučeta nije pronađeno. Proverite promenljivu MAIL."
 
 #: ../src/mn-system-vfs-mailbox.gob:72
-msgid "MAIL environment variable not defined"
-msgstr "promenljiva MAIL nije definisana"
+msgid "system mailbox not found"
+msgstr "sistemsko sanduče nije pronađeno"
 
-#: ../src/mn-util.c:281
+#: ../src/mn-util.c:349
 #, c-format
 msgid "error loading image: %s"
 msgstr "greška pri učitavanju slike: %s"
 
-#: ../src/mn-util.c:298
+#: ../src/mn-util.c:365
 #, c-format
-msgid "widget \"%s\" not found in interface \"%s\""
-msgstr "element ?%s? nije pronađen u sučelju ?%s?"
+msgid ""
+"Unable to load interface \"%s\". Please check your Mail Notification "
+"installation."
+msgstr "Nije moguće učitati sučelje „%s?. Molimo proverite instalaciju Dojave pošte."
 
-#: ../src/mn-util.c:398
+#: ../src/mn-util.c:380
 #, c-format
-msgid "unable to open self as a module: %s"
-msgstr "nije moguće otvoriti kao modul: %s"
+msgid ""
+"Widget \"%s\" not found in interface \"%s\". Please check your Mail "
+"Notification installation."
+msgstr "Komponenta „%s? nije pronađena u sučelju „%s?. Molimo proverite instalaciju Dojave pošte."
+
+#: ../src/mn-util.c:449
+#, c-format
+msgid "Unable to open self as a module (%s)."
+msgstr "nije moguće otvoriti sebe kao modul (%s)."
 
-#: ../src/mn-util.c:403
+#: ../src/mn-util.c:454
 #, c-format
-msgid "signal handler \"%s\" not found"
-msgstr "obrađivač signala „%s“ nije pronađen"
+msgid ""
+"Signal handler \"%s\" not found. Please check your Mail Notification "
+"installation."
+msgstr "Obrađivač signala „%s? nije pronađen. Molimo proverite instalaciju Dojave pošte."
 
-#: ../src/mn-util.c:556 ../src/mn-util.c:579 ../src/mn-util.c:601
-#: ../src/mn-util.c:623
+#: ../src/mn-util.c:605 ../src/mn-util.c:628 ../src/mn-util.c:648
+#: ../src/mn-util.c:670
 msgid "A drag and drop error has occurred"
 msgstr "Došlo je do greške pri prevlačenju/puštanju"
 
-#: ../src/mn-util.c:557
+#: ../src/mn-util.c:606
 msgid "An invalid location list has been received."
 msgstr "Primljen je nevažeći spisak mesta."
 
-#: ../src/mn-util.c:602
+#: ../src/mn-util.c:649
 msgid "An invalid Mozilla location has been received."
 msgstr "Primljen je nevažeći Mozilin spisak mesta."
 
-#: ../src/mn-util.c:678
+#: ../src/mn-util.c:725
 msgid "Unable to display help"
 msgstr "Nije moguće prikazati pomoć"
 
-#: ../src/mn-util.c:692
+#: ../src/mn-util.c:739
 #, c-format
 msgid "Unable to create a thread: %s."
 msgstr "Nije moguće pokrenuti nit: %s."
 
-#: ../src/mn-util.c:782
-msgid "_Do not show this message again"
-msgstr "_Ne prikazuj više ovu poruku"
-
-#: ../src/mn-util.c:892
+#: ../src/mn-util.c:899
 #, c-format
 msgid ""
 "The following location is invalid:\n"
@@ -1627,285 +1447,587 @@ msgid_plural ""
 "The following locations are invalid:\n"
 "\n"
 "%s"
-msgstr[0] "Sledeće mesto je nevažeće:\n"
+msgstr[0] ""
+"Sledeće mesto je nevažeće:\n"
 "\n"
 "%s"
-msgstr[1] "Sledeća mesta su nevažeća:\n"
+msgstr[1] ""
+"Sledeća mesta su nevažeća:\n"
 "\n"
 "%s"
-msgstr[2] "Sledeća mesta su nevažeća:\n"
+msgstr[2] ""
+"Sledeća mesta su nevažeća:\n"
 "\n"
 "%s"
 
-#: ../src/mn-util.c:912
+#: ../src/mn-util.c:919
 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:951
+#: ../src/mn-util.c:958
 #, c-format
 msgid "unable to get current time: %s"
 msgstr "nije moguće dobaviti trenutno vreme: %s"
 
-#: ../src/mn-util.c:1013
+#: ../src/mn-util.c:1250
 #, c-format
-msgid "invalid signal specification \"%s\""
-msgstr "nevažeća odrednica za signal ?%s?"
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] "pre %i sekundu"
+msgstr[1] "pre %i sekunde"
+msgstr[2] "pre %i sekundi"
 
-#: ../src/mn-util.c:1052
-msgid "A command error has occurred in Mail Notification"
-msgstr "Došlo je do greške u komandama"
+#: ../src/mn-util.c:1254
+#, c-format
+msgid "about %i minute ago"
+msgid_plural "about %i minutes ago"
+msgstr[0] "pre oko %i minut"
+msgstr[1] "pre oko %i minuta"
+msgstr[2] "pre oko %i minuta"
 
-#: ../src/mn-util.c:1053
+#: ../src/mn-util.c:1259
 #, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "Nije moguće izvršiti %s: %s"
+msgid "about %i hour ago"
+msgid_plural "about %i hours ago"
+msgstr[0] "pre oko %i sat"
+msgstr[1] "pre oko %i sata"
+msgstr[2] "pre oko %i sati"
 
-#: ../src/mn-util.c:1311
+#: ../src/mn-util.c:1264
 #, c-format
-msgid "unable to rename %s to %s: %s"
-msgstr "Nije moguće preimenovati %s u %s: %s"
+msgid "about %i day ago"
+msgid_plural "about %i days ago"
+msgstr[0] "pre oko %i dan"
+msgstr[1] "pre oko %i dana"
+msgstr[2] "pre oko %i dana"
 
-#: ../src/mn-vfs-mailbox-backend.gob:117
+#: ../src/mn-util.c:1269
 #, c-format
-msgid "unable to monitor mailbox contents (%s), poll mode activated"
-msgstr "nije moguće nadgledati sadržaj sandučeta (%s), upiti su aktivirani"
+msgid "about %i week ago"
+msgid_plural "about %i weeks ago"
+msgstr[0] "pre oko %i nedelju"
+msgstr[1] "pre oko %i nedelje"
+msgstr[2] "pre oko %i nedelja"
+
+#: ../src/mn-util.c:1282
+msgid "unknown date"
+msgstr "nepoznat datum"
 
-#: ../src/mn-vfs-mailbox.gob:238
+#: ../src/mn-vfs-mailbox.gob:221
 #, c-format
-msgid "unable to monitor mailbox type (%s), poll mode activated"
-msgstr "nije moguće nadgledati sadržaj sandučeta (%s), upiti su aktivirani"
+msgid "unable to monitor %s (%s), poll mode activated"
+msgstr "nije moguće nadgledati %s (%s), upiti su aktivirani"
 
-#: ../src/mn-vfs-mailbox.gob:307
+#: ../src/mn-vfs-mailbox.gob:385
 msgid "unknown mailbox format"
 msgstr "format sandučeta nije prepoznat"
 
-#: ../src/mn-vfs-mailbox.gob:307
+#: ../src/mn-vfs-mailbox.gob:385
 msgid "does not exist"
 msgstr "ne postoji"
 
-#: ../src/mn-vfs-mailbox.gob:377
-#, 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] ""
-"Pošto nema druge mogućnosti, biće proveravani svaku %i sekundu  (ovo kašnjenje "
-"se može promeniti iz prozora sa postavkama)"
-msgstr[1] ""
-"Pošto nema druge mogućnosti, biće proveravani svake %i sekunde (ovo kašnjenje "
-"se može promeniti iz prozora sa postavkama)"
-msgstr[2] ""
-"Pošto nema druge mogućnosti, biće proveravani svakih %i sekundi (ovo kašnjenje "
-"se može promeniti iz prozora sa postavkama)"
-
-#: ../src/mn-vfs-mailbox.gob:388
-#, 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-vfs-mailbox.gob:399
-#, 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)"
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:2 ../ui/properties-dialog.glade.h:8
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Opšte</span>"
 
-#: ../src/mn-vfs-mailbox.gob:415
-msgid "A monitoring error has occurred"
-msgstr "Došlo je do greške pri motrenju"
+#: ../ui/mailbox-properties-dialog.glade.h:3
+msgid "Delay between mail chec_ks:"
+msgstr "_Pauza između provera pošte:"
 
-#: ../src/mn-vfs-mailbox.gob:416
-#, 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"
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "Mailbox _name:"
+msgstr "_Ime sandučeta:"
 
-#: ../ui/edit-toolbars-dialog.glade.h:1
-msgid "Edit Toolbars"
-msgstr "Uredi alatne trake"
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:6
+msgid "Use De_fault"
+msgstr "_Koristi podrazumevano"
 
-#: ../ui/edit-toolbars-dialog.glade.h:2
-msgid "_Add a New Toolbar"
-msgstr "_Dodaj novu alatnu traku"
+#: ../ui/mailbox-properties-dialog.glade.h:7
+msgid "_Mailbox type:"
+msgstr "_Vrsta sandučeta:"
 
-#: ../ui/edit-toolbars-dialog.glade.h:3
-#: ../ui/mailbox-properties-dialog.glade.h:4
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:9
 msgid "_Use Default"
 msgstr "_Koristi podrazumevano"
 
-#: ../ui/mail-summary-popup.glade.h:1
-msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
-msgstr "<span weight=\"bold\">Sažetak poruka</span>"
-
-#: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
-msgstr "<span weight=\"bold\">Opšte</span>"
+#: ../ui/mailbox-properties-dialog.glade.h:10
+#: ../ui/properties-dialog.glade.h:48
+msgid "minutes"
+msgstr "minuta"
 
-#: ../ui/mailbox-properties-dialog.glade.h:2
-msgid "Mailbox _name:"
-msgstr "_Ime sandučeta:"
+#: ../ui/mailbox-properties-dialog.glade.h:11
+#: ../ui/properties-dialog.glade.h:52
+msgid "seconds"
+msgstr "sekundi"
 
-#: ../ui/mailbox-properties-dialog.glade.h:3
-msgid "Mailbox _type:"
-msgstr "_Vrsta sandučeta:"
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:2
+msgid "<span weight=\"bold\">Click Action</span>"
+msgstr "<span weight=\"bold\">Naredba za pritisak</span>"
 
-#: ../ui/properties-dialog.glade.h:1
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:4
 msgid "<span weight=\"bold\">Commands</span>"
 msgstr "<span weight=\"bold\">Naredbe</span>"
 
-#: ../ui/properties-dialog.glade.h:2
-msgid "<span weight=\"bold\">Double-click Action</span>"
-msgstr "<span weight=\"bold\">Naredba za dupli klik</span>"
-
-#: ../ui/properties-dialog.glade.h:3
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:6
 msgid "<span weight=\"bold\">Fonts</span>"
 msgstr "<span weight=\"bold\">Pisma</span>"
 
-#: ../ui/properties-dialog.glade.h:5
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:10
+msgid "<span weight=\"bold\">Layout</span>"
+msgstr "<span weight=\"bold\">Izgled</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:12
 msgid "<span weight=\"bold\">Mailbox List</span>"
 msgstr "<span weight=\"bold\">Sandučići</span>"
 
-#: ../ui/properties-dialog.glade.h:6
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:14
 msgid "<span weight=\"bold\">Position</span>"
 msgstr "<span weight=\"bold\">Mesto</span>"
 
-#: ../ui/properties-dialog.glade.h:7
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:16
+msgid "<span weight=\"bold\">Tooltip Mail Summary</span>"
+msgstr "<span weight=\"bold\">Sažetak poruka u oblačiću</span>"
+
+#: ../ui/properties-dialog.glade.h:17
 msgid "Co_ntents:"
 msgstr "_Sadržaj:"
 
-#: ../ui/properties-dialog.glade.h:8
-msgid "Dis_play mail summary in tooltip"
-msgstr "Prikaži prozor sa sažetkom poruka u oblačiću"
-
-#: ../ui/properties-dialog.glade.h:9
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:19
 msgid "General"
 msgstr "Opšte"
 
-#: ../ui/properties-dialog.glade.h:11
+#: ../ui/properties-dialog.glade.h:20
+msgid "Hide p_reviously displayed mail"
+msgstr "Sa_krij prethodno prikazane poruke"
+
+#: ../ui/properties-dialog.glade.h:21
+msgid "Hori_zontal offset:"
+msgstr "_Horizontalni pomak:"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:25
 msgid "Mail Summary Popup"
 msgstr "Sažetak poruka"
 
-#: ../ui/properties-dialog.glade.h:12
-msgid "Mailboxes"
-msgstr "Sandučići"
-
-#: ../ui/properties-dialog.glade.h:13
-msgid "Only display _recent mail"
-msgstr "Prikaži samo skorašnje poruke"
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:27
+msgid "Status Icon"
+msgstr "Statusna sličica"
 
-#: ../ui/properties-dialog.glade.h:14
+#: ../ui/properties-dialog.glade.h:28
 msgid "Use these _fonts:"
 msgstr "Koristi ova _pisma:"
 
-#: ../ui/properties-dialog.glade.h:15
-msgid "When _all mail has been read:"
-msgstr "Kada je _sva pošta pročitana:"
-
-#: ../ui/properties-dialog.glade.h:16
+#: ../ui/properties-dialog.glade.h:29
 msgid "When _new mail arrives:"
 msgstr "Kada _stigne nova pošta:"
 
-#: ../ui/properties-dialog.glade.h:17
+#: ../ui/properties-dialog.glade.h:30
+msgid "When all mail has _been read:"
+msgstr "Kada je _sva pošta pročitana:"
+
+#: ../ui/properties-dialog.glade.h:31
+msgid "_Always display"
+msgstr "_Uvek prikazuj"
+
+#: ../ui/properties-dialog.glade.h:32
 msgid "_Automatically close after:"
 msgstr "_Automatski zatvori posle:"
 
-#: ../ui/properties-dialog.glade.h:18
+#: ../ui/properties-dialog.glade.h:33
 msgid "_Blink on errors"
 msgstr "_Treperi pri greškama"
 
-#: ../ui/properties-dialog.glade.h:19
-msgid "_Delay between mail checks:"
-msgstr "_Pauza između provera:"
-
-#: ../ui/properties-dialog.glade.h:20
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:35
 msgid "_Display a Test Popup"
 msgstr "Prikaži probno prozorče"
 
-#: ../ui/properties-dialog.glade.h:21
-msgid "_Display the main window"
-msgstr "_Prikaži glavni prozor"
+#: ../ui/properties-dialog.glade.h:36
+msgid "_Display seen mail"
+msgstr "_Prikaži pregledane poruke"
+
+#: ../ui/properties-dialog.glade.h:37
+msgid "_Display this dialog"
+msgstr "Pri_kaži ovaj prozor"
 
-#: ../ui/properties-dialog.glade.h:22
+#: ../ui/properties-dialog.glade.h:38
 msgid "_Enable mail summary popup"
 msgstr "Dozvoli prikaz sažetka poruka"
 
-#: ../ui/properties-dialog.glade.h:23
-msgid "_Horizontal offset:"
-msgstr "_Horizontalni pomak:"
-
-#: ../ui/properties-dialog.glade.h:24
+#: ../ui/properties-dialog.glade.h:39
 msgid "_Launch the mail reader"
 msgstr "P_okreni čitač pošte"
 
-#: ../ui/properties-dialog.glade.h:25
-msgid "_Mail reader:"
-msgstr "_Čitač pošte:"
+#: ../ui/properties-dialog.glade.h:40
+msgid "_None"
+msgstr "_Nijedno"
 
-#: ../ui/properties-dialog.glade.h:26
+#: ../ui/properties-dialog.glade.h:41
 msgid "_Position:"
 msgstr "_Mesto:"
 
-#: ../ui/properties-dialog.glade.h:27
-msgid "_Start Mail Notification on GNOME login"
-msgstr "Pokreni _dojavu pri prijavi"
-
-#: ../ui/properties-dialog.glade.h:28
+#: ../ui/properties-dialog.glade.h:42
 msgid "_Title:"
 msgstr "_Naslov:"
 
-#: ../ui/properties-dialog.glade.h:29
+#: ../ui/properties-dialog.glade.h:43
 msgid "_Update the mail status"
 msgstr "_Osveži podatke o pošti"
 
-#: ../ui/properties-dialog.glade.h:30
+#: ../ui/properties-dialog.glade.h:44
 msgid "_Use fonts from theme"
 msgstr "Koristi pisma iz _teme"
 
-#: ../ui/properties-dialog.glade.h:31
+#: ../ui/properties-dialog.glade.h:45
 msgid "_Vertical offset:"
 msgstr "_Vertikalni pomak:"
 
-#: ../ui/properties-dialog.glade.h:32
-msgid "minutes"
-msgstr "minuta"
+#: ../ui/properties-dialog.glade.h:46
+msgid "icon tooltip's mail summary layout|Co_mpact"
+msgstr "_Skraćen"
 
-#: ../ui/properties-dialog.glade.h:33
+#: ../ui/properties-dialog.glade.h:47
+msgid "icon tooltip's mail summary layout|_Standard"
+msgstr "_Običan"
+
+#: ../ui/properties-dialog.glade.h:49
 msgid "pixels"
 msgstr "tačaka"
 
-#: ../ui/properties-dialog.glade.h:34
-msgid "seconds"
-msgstr "sekundi"
+#: ../ui/properties-dialog.glade.h:50
+msgid "popup's mail summary layout|Co_mpact"
+msgstr "S_kraćen"
+
+#: ../ui/properties-dialog.glade.h:51
+msgid "popup's mail summary layout|_Standard"
+msgstr "O_bičan"
+
+#~ msgid "Delay between mail checks (minutes part)."
+#~ msgstr "Razmak između dve provere (minuti)"
+
+#~ msgid "Delay between mail checks (seconds part)."
+#~ msgstr "Razmak između dve provere (sekunde)."
+
+#~ msgid "Display mail summary in tooltip"
+#~ msgstr "Prikaži sažetat poruka u oblačiću"
+
+#~ msgid "Do not show the immediate notification error dialog"
+#~ msgstr "Ne pokazuj prozor sa obaveštenjem o greškama"
+
+#~ msgid "Height of edit toolbars dialog"
+#~ msgstr "Visina prozora za uređivanje alatnih traka"
+
+#~ msgid "Height of main window"
+#~ msgstr "Visina glavnog prozora"
+
+#~ msgid "Mail reader command"
+#~ msgstr "Komanda za čitanje pošte"
+
+#~ msgid "Minutes between mail checks"
+#~ msgstr "Minuta između dve provere"
+
+#~ msgid "Seconds between mail checks"
+#~ msgstr "Sekundi između dve provere"
+
+#~ msgid "Set a mail reader"
+#~ msgstr "Izaberite čitač pošte"
+
+#~ msgid "The command to run to launch the mail reader."
+#~ msgstr "Komanda kojom se pokreće čitač pošte"
+
+#~ msgid "The height of the edit toolbars dialog in pixels."
+#~ msgstr "Visina prozora za uređivanje statusnih traka, izražena u tačkama."
+
+#~ msgid "The height of the main window in pixels."
+#~ msgstr "Visina glavnog prozora izražena u tačkama."
+
+#~ msgid ""
+#~ "The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text"
+#~ "\", \"both\" or \"both-horiz\"."
+#~ msgstr ""
+#~ "Stil alatnih traka. Može biti: ?podrazumevan?, ?slike?, ?tekst?, ?oba?, ?"
+#~ "oba-vodoravno?."
+
+#~ msgid "The width of the edit toolbars dialog in pixels."
+#~ msgstr "Širina prozora za uređivanje statusnih traka, izražena u tačkama."
+
+#~ msgid "The width of the main window in pixels."
+#~ msgstr "Širina prozora glavnog prozora izražena u tačkama."
+
+#~ msgid "Toolbars style"
+#~ msgstr "Stil alatne trake"
+
+#~ msgid "View statusbar"
+#~ msgstr "Prikaži statusnu traku"
+
+#~ msgid "View toolbars"
+#~ msgstr "Prikaži alatnu traku"
+
+#~ msgid "Whether the statusbar should be visible or not."
+#~ msgstr "Da li statusna linija treba da se vidi ili ne."
+
+#~ msgid "Whether the toolbars should be visible or not."
+#~ msgstr "Da li alatne trake treba da se vide ili ne"
+
+#~ msgid ""
+#~ "Whether to display the mail summary in the status icon tooltip or not."
+#~ msgstr ""
+#~ "Da li treba prikazati sažetak poruka u oblačiću statusne sličice ili ne."
+
+#~ msgid ""
+#~ "Whether to prevent the immediate notification error dialog from being "
+#~ "displayed or not."
+#~ msgstr "Da li treba ili ne treba sprečiti pojavu prozora sa opisom grešaka."
+
+#~ msgid "Whether to set a mail reader or not."
+#~ msgstr "Da li treba postaviti čitač pošte ili ne."
+
+#~ msgid "Width of edit toolbars dialog"
+#~ msgstr "Širina prozora za uređivanje statusnih traka"
+
+#~ msgid "Width of main window"
+#~ msgstr "Širina glavnog prozora"
+
+#~ msgid "New Mail"
+#~ msgstr "Nova pošta"
+
+#~ msgid "_Remove Toolbar"
+#~ msgstr "_Ukloni alatnu traku"
+
+#~ msgid "Separator"
+#~ msgstr "Graničnik"
+
+#~ msgid "Main _Window"
+#~ msgstr "Glavni _prozor"
+
+#~ msgid "Help messages"
+#~ msgstr "Poruke za pomoć"
+
+#~ msgid "Count messages"
+#~ msgstr "Prebroj poruke"
+
+#~ msgid "_Mail"
+#~ msgstr "_Pošta"
+
+#~ msgid "_Edit"
+#~ msgstr "_Uredi"
+
+#~ msgid "_View"
+#~ msgstr "_Pregled"
+
+#~ msgid "_Help"
+#~ msgstr "P_omoć"
+
+#~ msgid "Launch the mail reader"
+#~ msgstr "P_okreni čitač pošte"
+
+#~ msgid "_Close"
+#~ msgstr "_Zatvori"
+
+#~ msgid "Close this window"
+#~ msgstr "Zatvori ovaj prozor"
+
+#~ msgid "_Quit"
+#~ msgstr "_Kraj"
+
+#~ msgid "_Toolbars"
+#~ msgstr "_Alatne trake"
+
+#~ msgid "Customize the toolbars"
+#~ msgstr "Uredi alatne trake"
+
+#~ msgid "_Preferences"
+#~ msgstr "_Postavke"
+
+#~ msgid "Toolbars Styl_e"
+#~ msgstr "Stil alatnih _traka"
+
+#~ msgid "Customize the toolbars style"
+#~ msgstr "Prilagodi stil alatnih traka"
+
+#~ msgid "_Contents"
+#~ msgstr "_Sadržaj"
+
+#~ msgid "Display help"
+#~ msgstr "Prikaži pomoć"
+
+#~ msgid "_About"
+#~ msgstr "_O programu"
+
+#~ msgid "Display credits"
+#~ msgstr "Prikaži zasluge"
+
+#~ msgid "Show or hide the toolbars"
+#~ msgstr "Prikaži ili ukloni alatnu traku"
+
+#~ msgid "_Statusbar"
+#~ msgstr "_Statusna traka"
+
+#~ msgid "Show or hide the statusbar"
+#~ msgstr "Prikaži ili ukloni statusnu traku"
+
+#~ msgid "_Desktop Default"
+#~ msgstr "_Podrazumevano u okruženju"
+
+#~ msgid "Set the toolbars style to the desktop default setting"
+#~ msgstr "Postavi stilove traka na stil koji važi u celom radnom okruženju"
+
+#~ msgid "I_cons Only"
+#~ msgstr "Samo _slike"
+
+#~ msgid "_Text Only"
+#~ msgstr "Samo _tekst"
+
+#~ msgid "Only display the toolbars text"
+#~ msgstr "Prikaži samo tekst u alatnoj traci"
+
+#~ msgid "Text Belo_w Icons"
+#~ msgstr "Tekst _ispod slika"
+
+#~ msgid "Display the toolbars text below the icons"
+#~ msgstr "Prikaži tekst ispod odgovarajuće slike u alatnoj traci"
+
+#~ msgid "Text Be_side Icons"
+#~ msgstr "Tekst _pored slika"
+
+#~ msgid "Display the toolbars text beside the icons"
+#~ msgstr "Prikaži tekst pored odgovarajuće slike u alatnoj traci"
+
+#~ msgid "unable to load menus.xml: %s"
+#~ msgstr "Nije moguće pročitati menus.xml: %s"
+
+#~ msgid "unable to load toolbars.xml"
+#~ msgstr "nije moguće učitati toolbars.xml: %s"
+
+#~ msgid "%i new message"
+#~ msgid_plural "%i new messages"
+#~ msgstr[0] "%i nova poruka"
+#~ msgstr[1] "%i nove poruke"
+#~ msgstr[2] "%i novih poruka"
+
+#~ msgid "Compiled-in mailbox backends: "
+#~ msgstr "Ugrađene mogućnosti za sandučiće:"
+
+#~ msgid "List the compiled-in features"
+#~ msgstr "Ispiši ugrađene mogućnosti"
+
+#~ msgid "Display the main window"
+#~ msgstr "Prikaži glavni prozor"
+
+#~ msgid "You have new mail."
+#~ msgstr "Imate novu poštu."
+
+#~ msgid "Leave Fullscreen"
+#~ msgstr "Ostavi na celom ekranu"
+
+#~ msgid "MAIL environment variable not defined"
+#~ msgstr "promenljiva MAIL nije definisana"
+
+#~ msgid "widget \"%s\" not found in interface \"%s\""
+#~ msgstr "element ?%s? nije pronađen u sučelju ?%s?"
+
+#~ msgid "signal handler \"%s\" not found"
+#~ msgstr "obrađivač signala „%s“ nije pronađen"
+
+#~ msgid "_Do not show this message again"
+#~ msgstr "_Ne prikazuj više ovu poruku"
+
+#~ msgid "invalid signal specification \"%s\""
+#~ msgstr "nevažeća odrednica za signal ?%s?"
+
+#~ msgid "unable to monitor mailbox contents (%s), poll mode activated"
+#~ msgstr "nije moguće nadgledati sadržaj sandučeta (%s), upiti su aktivirani"
+
+#~ 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] ""
+#~ "Pošto nema druge mogućnosti, biće proveravani svaku %i sekundu  (ovo "
+#~ "kašnjenje se može promeniti iz prozora sa postavkama)"
+#~ msgstr[1] ""
+#~ "Pošto nema druge mogućnosti, biće proveravani svake %i sekunde (ovo "
+#~ "kašnjenje se može promeniti iz prozora sa postavkama)"
+#~ msgstr[2] ""
+#~ "Pošto nema druge mogućnosti, biće proveravani svakih %i sekundi (ovo "
+#~ "kašnjenje se može promeniti iz prozora sa postavkama)"
+
+#~ 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)"
+
+#~ 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)"
+
+#~ msgid "A monitoring error has occurred"
+#~ msgstr "Došlo je do greške pri motrenju"
+
+#~ 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"
+
+#~ msgid "Edit Toolbars"
+#~ msgstr "Uredi alatne trake"
+
+#~ msgid "_Add a New Toolbar"
+#~ msgstr "_Dodaj novu alatnu traku"
+
+#~ msgid "Dis_play mail summary in tooltip"
+#~ msgstr "Prikaži prozor sa sažetkom poruka u oblačiću"
+
+#~ msgid "Mailboxes"
+#~ msgstr "Sandučići"
+
+#~ msgid "_Display the main window"
+#~ msgstr "_Prikaži glavni prozor"
+
+#~ msgid "_Mail reader:"
+#~ msgstr "_Čitač pošte:"
+
+#~ msgid "_Start Mail Notification on GNOME login"
+#~ msgstr "Pokreni _dojavu pri prijavi"
 
 #~ msgid "Has already been run"
 #~ msgstr "Već je pokrenut"
@@ -2187,9 +2309,6 @@ msgstr "sekundi"
 #~ msgstr ""
 #~ "Da li treba ili ne treba prikazivati sažetak poruka kada stigne nova pošta"
 
-#~ msgid "Whether to hide previously displayed mail or not"
-#~ msgstr "Da li treba prikazivati prethodno prikazane poruke ili ne"
-
 #~ msgid "Whether to run a command when all mail is read or not"
 #~ msgstr "Da li se pokreće ili ne pokreće komanda kada je sva pošta pročitana"
 
diff --git a/src/GNOME_MailNotification.idl b/src/GNOME_MailNotification.idl
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include <Bonobo.idl>
@@ -25,10 +26,10 @@ module GNOME
     interface Automation : Bonobo::Unknown 
     {
       boolean hasMailboxes ();
+      string getSummary ();
       void update ();
       void displayProperties ();
       void displayAbout ();
-      void closePopup ();
       void quit ();
     };
   };
diff --git a/src/GNOME_MailNotification_Evolution.idl b/src/GNOME_MailNotification_Evolution.idl
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include <Bonobo.idl>
@@ -28,6 +29,7 @@ module GNOME
 
       struct Message
       {
+	string	uid;
 	time_t	sent_time;
 	time_t	received_time;
 	string	id;
@@ -39,12 +41,21 @@ module GNOME
       interface Glue : Bonobo::Unknown
       {
 	exception FolderNotFound {};
+	exception MessageNotFound {};
 
 	MessageSeq getUnseenMessages (in string folder_uri)
 	  raises (FolderNotFound);
 
 	string getFolderName (in string folder_uri)
 	  raises (FolderNotFound);
+
+	void openMessage (in string folder_uri, in string message_uid)
+	  raises (FolderNotFound);
+
+	void setMessageFlags (in string folder_uri,
+			      in string message_uid,
+			      in unsigned long flags)
+	  raises (FolderNotFound);
       };
     };
   };
diff --git a/src/Makefile.am b/src/Makefile.am
@@ -29,6 +29,8 @@ mail_notification_SOURCES += mn-util.c
 mail_notification_SOURCES += mn-util.h
 mail_notification_SOURCES += mn-vfs.c
 mail_notification_SOURCES += mn-vfs.h
+mail_notification_SOURCES += mn-xml.c
+mail_notification_SOURCES += mn-xml.h
 mail_notification_SOURCES += nautilus-cell-renderer-pixbuf-emblem.c
 mail_notification_SOURCES += nautilus-cell-renderer-pixbuf-emblem.h
 mail_notification_SOURCES += mn-about-dialog.gob mn-about-dialog.gob.stamp
@@ -66,11 +68,6 @@ mail_notification_SOURCES += mn-mail-icon-private.h mn-mail-icon.c mn-mail-icon.
 BUILT_SOURCES += mn-mail-icon.gob.stamp
 MAINTAINERCLEANFILES += mn-mail-icon.gob.stamp
 MAINTAINERCLEANFILES += mn-mail-icon-private.h mn-mail-icon.c mn-mail-icon.h
-mail_notification_SOURCES += mn-mail-summary-popup.gob mn-mail-summary-popup.gob.stamp
-mail_notification_SOURCES += mn-mail-summary-popup-private.h mn-mail-summary-popup.c mn-mail-summary-popup.h
-BUILT_SOURCES += mn-mail-summary-popup.gob.stamp
-MAINTAINERCLEANFILES += mn-mail-summary-popup.gob.stamp
-MAINTAINERCLEANFILES += mn-mail-summary-popup-private.h mn-mail-summary-popup.c mn-mail-summary-popup.h
 mail_notification_SOURCES += mn-mailbox.gob mn-mailbox.gob.stamp
 mail_notification_SOURCES += mn-mailbox-private.h mn-mailbox.c mn-mailbox.h
 BUILT_SOURCES += mn-mailbox.gob.stamp
@@ -106,6 +103,16 @@ mail_notification_SOURCES += mn-message-view-private.h mn-message-view.c mn-mess
 BUILT_SOURCES += mn-message-view.gob.stamp
 MAINTAINERCLEANFILES += mn-message-view.gob.stamp
 MAINTAINERCLEANFILES += mn-message-view-private.h mn-message-view.c mn-message-view.h
+mail_notification_SOURCES += mn-popup.gob mn-popup.gob.stamp
+mail_notification_SOURCES += mn-popup-private.h mn-popup.c mn-popup.h
+BUILT_SOURCES += mn-popup.gob.stamp
+MAINTAINERCLEANFILES += mn-popup.gob.stamp
+MAINTAINERCLEANFILES += mn-popup-private.h mn-popup.c mn-popup.h
+mail_notification_SOURCES += mn-popups.gob mn-popups.gob.stamp
+mail_notification_SOURCES += mn-popups-private.h mn-popups.c mn-popups.h
+BUILT_SOURCES += mn-popups.gob.stamp
+MAINTAINERCLEANFILES += mn-popups.gob.stamp
+MAINTAINERCLEANFILES += mn-popups-private.h mn-popups.c mn-popups.h
 mail_notification_SOURCES += mn-properties-dialog.gob mn-properties-dialog.gob.stamp
 mail_notification_SOURCES += mn-properties-dialog-private.h mn-properties-dialog.c mn-properties-dialog.h
 BUILT_SOURCES += mn-properties-dialog.gob.stamp
@@ -121,6 +128,11 @@ mail_notification_SOURCES += mn-standard-message-view-private.h mn-standard-mess
 BUILT_SOURCES += mn-standard-message-view.gob.stamp
 MAINTAINERCLEANFILES += mn-standard-message-view.gob.stamp
 MAINTAINERCLEANFILES += mn-standard-message-view-private.h mn-standard-message-view.c mn-standard-message-view.h
+mail_notification_SOURCES += mn-test-mailbox.gob mn-test-mailbox.gob.stamp
+mail_notification_SOURCES += mn-test-mailbox-private.h mn-test-mailbox.c mn-test-mailbox.h
+BUILT_SOURCES += mn-test-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-test-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-test-mailbox-private.h mn-test-mailbox.c mn-test-mailbox.h
 mail_notification_SOURCES += mn-text-table.gob mn-text-table.gob.stamp
 mail_notification_SOURCES += mn-text-table-private.h mn-text-table.c mn-text-table.h
 BUILT_SOURCES += mn-text-table.gob.stamp
@@ -142,6 +154,20 @@ BUILT_SOURCES += mn-mbox-mailbox-backend.gob.stamp
 MAINTAINERCLEANFILES += mn-mbox-mailbox-backend.gob.stamp
 MAINTAINERCLEANFILES += mn-mbox-mailbox-backend-private.h mn-mbox-mailbox-backend.c mn-mbox-mailbox-backend.h
 endif
+if WITH_MOZILLA
+mail_notification_SOURCES += mn-mozilla-mailbox-backend.gob mn-mozilla-mailbox-backend.gob.stamp
+mail_notification_SOURCES += mn-mozilla-mailbox-backend-private.h mn-mozilla-mailbox-backend.c mn-mozilla-mailbox-backend.h
+BUILT_SOURCES += mn-mozilla-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-mozilla-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-mozilla-mailbox-backend-private.h mn-mozilla-mailbox-backend.c mn-mozilla-mailbox-backend.h
+endif
+if WITH_MBOX_OR_MOZILLA
+mail_notification_SOURCES += mn-base-mbox-mailbox-backend.gob mn-base-mbox-mailbox-backend.gob.stamp
+mail_notification_SOURCES += mn-base-mbox-mailbox-backend-private.h mn-base-mbox-mailbox-backend.c mn-base-mbox-mailbox-backend.h
+BUILT_SOURCES += mn-base-mbox-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-base-mbox-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-base-mbox-mailbox-backend-private.h mn-base-mbox-mailbox-backend.c mn-base-mbox-mailbox-backend.h
+endif
 if WITH_MH
 mail_notification_SOURCES += mn-mh-mailbox-backend.gob mn-mh-mailbox-backend.gob.stamp
 mail_notification_SOURCES += mn-mh-mailbox-backend-private.h mn-mh-mailbox-backend.c mn-mh-mailbox-backend.h
@@ -232,7 +258,7 @@ BUILT_SOURCES += mn-gmail-mailbox-properties.gob.stamp
 MAINTAINERCLEANFILES += mn-gmail-mailbox-properties.gob.stamp
 MAINTAINERCLEANFILES += mn-gmail-mailbox-properties-private.h mn-gmail-mailbox-properties.c mn-gmail-mailbox-properties.h
 endif
-if WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED
+if WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED
 mail_notification_SOURCES += mn-custom-vfs-mailbox.gob mn-custom-vfs-mailbox.gob.stamp
 mail_notification_SOURCES += mn-custom-vfs-mailbox-private.h mn-custom-vfs-mailbox.c mn-custom-vfs-mailbox.h
 BUILT_SOURCES += mn-custom-vfs-mailbox.gob.stamp
@@ -258,8 +284,13 @@ mail_notification_SOURCES += mn-vfs-mailbox-backend-private.h mn-vfs-mailbox-bac
 BUILT_SOURCES += mn-vfs-mailbox-backend.gob.stamp
 MAINTAINERCLEANFILES += mn-vfs-mailbox-backend.gob.stamp
 MAINTAINERCLEANFILES += mn-vfs-mailbox-backend-private.h mn-vfs-mailbox-backend.c mn-vfs-mailbox-backend.h
+mail_notification_SOURCES += mn-vfs-message.gob mn-vfs-message.gob.stamp
+mail_notification_SOURCES += mn-vfs-message-private.h mn-vfs-message.c mn-vfs-message.h
+BUILT_SOURCES += mn-vfs-message.gob.stamp
+MAINTAINERCLEANFILES += mn-vfs-message.gob.stamp
+MAINTAINERCLEANFILES += mn-vfs-message-private.h mn-vfs-message.c mn-vfs-message.h
 endif
-if WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION
+if WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION
 mail_notification_SOURCES += mn-reentrant-mailbox.gob mn-reentrant-mailbox.gob.stamp
 mail_notification_SOURCES += mn-reentrant-mailbox-private.h mn-reentrant-mailbox.c mn-reentrant-mailbox.h
 BUILT_SOURCES += mn-reentrant-mailbox.gob.stamp
@@ -290,12 +321,15 @@ mail_notification_SOURCES += mn-sasl.c
 mail_notification_SOURCES += mn-sasl.h
 endif
 if WITH_EVOLUTION
+mail_notification_CPPFLAGS += $(EVOLUTION_PLUGIN_CFLAGS)
 mail_notification_SOURCES += mn-evolution.h
-mail_notification_SOURCES += mn-corba-object.gob mn-corba-object.gob.stamp
-mail_notification_SOURCES += mn-corba-object-private.h mn-corba-object.c mn-corba-object.h
-BUILT_SOURCES += mn-corba-object.gob.stamp
-MAINTAINERCLEANFILES += mn-corba-object.gob.stamp
-MAINTAINERCLEANFILES += mn-corba-object-private.h mn-corba-object.c mn-corba-object.h
+mail_notification_SOURCES += mn-evolution-glue-client.c
+mail_notification_SOURCES += mn-evolution-glue-client.h
+mail_notification_SOURCES += mn-bonobo-unknown.gob mn-bonobo-unknown.gob.stamp
+mail_notification_SOURCES += mn-bonobo-unknown-private.h mn-bonobo-unknown.c mn-bonobo-unknown.h
+BUILT_SOURCES += mn-bonobo-unknown.gob.stamp
+MAINTAINERCLEANFILES += mn-bonobo-unknown.gob.stamp
+MAINTAINERCLEANFILES += mn-bonobo-unknown-private.h mn-bonobo-unknown.c mn-bonobo-unknown.h
 mail_notification_SOURCES += mn-evolution-mailbox.gob mn-evolution-mailbox.gob.stamp
 mail_notification_SOURCES += mn-evolution-mailbox-private.h mn-evolution-mailbox.c mn-evolution-mailbox.h
 BUILT_SOURCES += mn-evolution-mailbox.gob.stamp
@@ -306,6 +340,11 @@ mail_notification_SOURCES += mn-evolution-mailbox-properties-private.h mn-evolut
 BUILT_SOURCES += mn-evolution-mailbox-properties.gob.stamp
 MAINTAINERCLEANFILES += mn-evolution-mailbox-properties.gob.stamp
 MAINTAINERCLEANFILES += mn-evolution-mailbox-properties-private.h mn-evolution-mailbox-properties.c mn-evolution-mailbox-properties.h
+mail_notification_SOURCES += mn-evolution-message.gob mn-evolution-message.gob.stamp
+mail_notification_SOURCES += mn-evolution-message-private.h mn-evolution-message.c mn-evolution-message.h
+BUILT_SOURCES += mn-evolution-message.gob.stamp
+MAINTAINERCLEANFILES += mn-evolution-message.gob.stamp
+MAINTAINERCLEANFILES += mn-evolution-message-private.h mn-evolution-message.c mn-evolution-message.h
 mail_notification_SOURCES += GNOME_MailNotification_Evolution.idl
 nodist_mail_notification_SOURCES += GNOME_MailNotification_Evolution-common.c GNOME_MailNotification_Evolution-skels.c GNOME_MailNotification_Evolution-stubs.c GNOME_MailNotification_Evolution.h
 BUILT_SOURCES += GNOME_MailNotification_Evolution-common.c GNOME_MailNotification_Evolution-skels.c GNOME_MailNotification_Evolution-stubs.c GNOME_MailNotification_Evolution.h
@@ -322,8 +361,11 @@ liborg_gnome_mail_notification_la_CPPFLAGS += $(EVOLUTION_PLUGIN_CFLAGS)
 liborg_gnome_mail_notification_la_LDFLAGS += $(EVOLUTION_PLUGIN_LIBS)
 liborg_gnome_mail_notification_la_SOURCES = mn-evolution-plugin.c
 liborg_gnome_mail_notification_la_SOURCES += mn-evolution.h
-liborg_gnome_mail_notification_la_SOURCES += mn-evolution-folder-tree-control.c
-liborg_gnome_mail_notification_la_SOURCES += mn-evolution-folder-tree-control.h
+liborg_gnome_mail_notification_la_SOURCES += mn-evolution-folder-tree-control.gob mn-evolution-folder-tree-control.gob.stamp
+liborg_gnome_mail_notification_la_SOURCES += mn-evolution-folder-tree-control-private.h mn-evolution-folder-tree-control.c mn-evolution-folder-tree-control.h
+BUILT_SOURCES += mn-evolution-folder-tree-control.gob.stamp
+MAINTAINERCLEANFILES += mn-evolution-folder-tree-control.gob.stamp
+MAINTAINERCLEANFILES += mn-evolution-folder-tree-control-private.h mn-evolution-folder-tree-control.c mn-evolution-folder-tree-control.h
 liborg_gnome_mail_notification_la_SOURCES += mn-evolution-glue.gob mn-evolution-glue.gob.stamp
 liborg_gnome_mail_notification_la_SOURCES += mn-evolution-glue-private.h mn-evolution-glue.c mn-evolution-glue.h
 BUILT_SOURCES += mn-evolution-glue.gob.stamp
diff --git a/src/Makefile.in b/src/Makefile.in
@@ -52,26 +52,48 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_MBOX_TRUE@	mn-mbox-mailbox-backend-private.h \
 @WITH_MBOX_TRUE@	mn-mbox-mailbox-backend.c \
 @WITH_MBOX_TRUE@	mn-mbox-mailbox-backend.h
-@WITH_MH_TRUE@am__append_4 = mn-mh-mailbox-backend.gob \
+@WITH_MOZILLA_TRUE@am__append_4 = mn-mozilla-mailbox-backend.gob \
+@WITH_MOZILLA_TRUE@	mn-mozilla-mailbox-backend.gob.stamp \
+@WITH_MOZILLA_TRUE@	mn-mozilla-mailbox-backend-private.h \
+@WITH_MOZILLA_TRUE@	mn-mozilla-mailbox-backend.c \
+@WITH_MOZILLA_TRUE@	mn-mozilla-mailbox-backend.h
+@WITH_MOZILLA_TRUE@am__append_5 = mn-mozilla-mailbox-backend.gob.stamp
+@WITH_MOZILLA_TRUE@am__append_6 =  \
+@WITH_MOZILLA_TRUE@	mn-mozilla-mailbox-backend.gob.stamp \
+@WITH_MOZILLA_TRUE@	mn-mozilla-mailbox-backend-private.h \
+@WITH_MOZILLA_TRUE@	mn-mozilla-mailbox-backend.c \
+@WITH_MOZILLA_TRUE@	mn-mozilla-mailbox-backend.h
+@WITH_MBOX_OR_MOZILLA_TRUE@am__append_7 =  \
+@WITH_MBOX_OR_MOZILLA_TRUE@	mn-base-mbox-mailbox-backend.gob \
+@WITH_MBOX_OR_MOZILLA_TRUE@	mn-base-mbox-mailbox-backend.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_TRUE@	mn-base-mbox-mailbox-backend-private.h \
+@WITH_MBOX_OR_MOZILLA_TRUE@	mn-base-mbox-mailbox-backend.c \
+@WITH_MBOX_OR_MOZILLA_TRUE@	mn-base-mbox-mailbox-backend.h
+@WITH_MBOX_OR_MOZILLA_TRUE@am__append_8 = mn-base-mbox-mailbox-backend.gob.stamp
+@WITH_MBOX_OR_MOZILLA_TRUE@am__append_9 = mn-base-mbox-mailbox-backend.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_TRUE@	mn-base-mbox-mailbox-backend-private.h \
+@WITH_MBOX_OR_MOZILLA_TRUE@	mn-base-mbox-mailbox-backend.c \
+@WITH_MBOX_OR_MOZILLA_TRUE@	mn-base-mbox-mailbox-backend.h
+@WITH_MH_TRUE@am__append_10 = mn-mh-mailbox-backend.gob \
 @WITH_MH_TRUE@	mn-mh-mailbox-backend.gob.stamp \
 @WITH_MH_TRUE@	mn-mh-mailbox-backend-private.h \
 @WITH_MH_TRUE@	mn-mh-mailbox-backend.c mn-mh-mailbox-backend.h
-@WITH_MH_TRUE@am__append_5 = mn-mh-mailbox-backend.gob.stamp
-@WITH_MH_TRUE@am__append_6 = mn-mh-mailbox-backend.gob.stamp \
+@WITH_MH_TRUE@am__append_11 = mn-mh-mailbox-backend.gob.stamp
+@WITH_MH_TRUE@am__append_12 = mn-mh-mailbox-backend.gob.stamp \
 @WITH_MH_TRUE@	mn-mh-mailbox-backend-private.h \
 @WITH_MH_TRUE@	mn-mh-mailbox-backend.c mn-mh-mailbox-backend.h
-@WITH_MAILDIR_TRUE@am__append_7 = mn-maildir-mailbox-backend.gob \
+@WITH_MAILDIR_TRUE@am__append_13 = mn-maildir-mailbox-backend.gob \
 @WITH_MAILDIR_TRUE@	mn-maildir-mailbox-backend.gob.stamp \
 @WITH_MAILDIR_TRUE@	mn-maildir-mailbox-backend-private.h \
 @WITH_MAILDIR_TRUE@	mn-maildir-mailbox-backend.c \
 @WITH_MAILDIR_TRUE@	mn-maildir-mailbox-backend.h
-@WITH_MAILDIR_TRUE@am__append_8 = mn-maildir-mailbox-backend.gob.stamp
-@WITH_MAILDIR_TRUE@am__append_9 =  \
+@WITH_MAILDIR_TRUE@am__append_14 = mn-maildir-mailbox-backend.gob.stamp
+@WITH_MAILDIR_TRUE@am__append_15 =  \
 @WITH_MAILDIR_TRUE@	mn-maildir-mailbox-backend.gob.stamp \
 @WITH_MAILDIR_TRUE@	mn-maildir-mailbox-backend-private.h \
 @WITH_MAILDIR_TRUE@	mn-maildir-mailbox-backend.c \
 @WITH_MAILDIR_TRUE@	mn-maildir-mailbox-backend.h
-@WITH_POP3_TRUE@am__append_10 = mn-md5.c mn-md5.h mn-pop3-mailbox.gob \
+@WITH_POP3_TRUE@am__append_16 = mn-md5.c mn-md5.h mn-pop3-mailbox.gob \
 @WITH_POP3_TRUE@	mn-pop3-mailbox.gob.stamp \
 @WITH_POP3_TRUE@	mn-pop3-mailbox-private.h mn-pop3-mailbox.c \
 @WITH_POP3_TRUE@	mn-pop3-mailbox.h \
@@ -80,16 +102,16 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_POP3_TRUE@	mn-pop3-mailbox-properties-private.h \
 @WITH_POP3_TRUE@	mn-pop3-mailbox-properties.c \
 @WITH_POP3_TRUE@	mn-pop3-mailbox-properties.h
-@WITH_POP3_TRUE@am__append_11 = mn-pop3-mailbox.gob.stamp \
+@WITH_POP3_TRUE@am__append_17 = mn-pop3-mailbox.gob.stamp \
 @WITH_POP3_TRUE@	mn-pop3-mailbox-properties.gob.stamp
-@WITH_POP3_TRUE@am__append_12 = mn-pop3-mailbox.gob.stamp \
+@WITH_POP3_TRUE@am__append_18 = mn-pop3-mailbox.gob.stamp \
 @WITH_POP3_TRUE@	mn-pop3-mailbox-private.h mn-pop3-mailbox.c \
 @WITH_POP3_TRUE@	mn-pop3-mailbox.h \
 @WITH_POP3_TRUE@	mn-pop3-mailbox-properties.gob.stamp \
 @WITH_POP3_TRUE@	mn-pop3-mailbox-properties-private.h \
 @WITH_POP3_TRUE@	mn-pop3-mailbox-properties.c \
 @WITH_POP3_TRUE@	mn-pop3-mailbox-properties.h
-@WITH_IMAP_TRUE@am__append_13 = mn-imap-mailbox.gob \
+@WITH_IMAP_TRUE@am__append_19 = mn-imap-mailbox.gob \
 @WITH_IMAP_TRUE@	mn-imap-mailbox.gob.stamp \
 @WITH_IMAP_TRUE@	mn-imap-mailbox-private.h mn-imap-mailbox.c \
 @WITH_IMAP_TRUE@	mn-imap-mailbox.h \
@@ -98,16 +120,16 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_IMAP_TRUE@	mn-imap-mailbox-properties-private.h \
 @WITH_IMAP_TRUE@	mn-imap-mailbox-properties.c \
 @WITH_IMAP_TRUE@	mn-imap-mailbox-properties.h
-@WITH_IMAP_TRUE@am__append_14 = mn-imap-mailbox.gob.stamp \
+@WITH_IMAP_TRUE@am__append_20 = mn-imap-mailbox.gob.stamp \
 @WITH_IMAP_TRUE@	mn-imap-mailbox-properties.gob.stamp
-@WITH_IMAP_TRUE@am__append_15 = mn-imap-mailbox.gob.stamp \
+@WITH_IMAP_TRUE@am__append_21 = mn-imap-mailbox.gob.stamp \
 @WITH_IMAP_TRUE@	mn-imap-mailbox-private.h mn-imap-mailbox.c \
 @WITH_IMAP_TRUE@	mn-imap-mailbox.h \
 @WITH_IMAP_TRUE@	mn-imap-mailbox-properties.gob.stamp \
 @WITH_IMAP_TRUE@	mn-imap-mailbox-properties-private.h \
 @WITH_IMAP_TRUE@	mn-imap-mailbox-properties.c \
 @WITH_IMAP_TRUE@	mn-imap-mailbox-properties.h
-@WITH_POP3_OR_IMAP_TRUE@am__append_16 = mn-client-session.c \
+@WITH_POP3_OR_IMAP_TRUE@am__append_22 = mn-client-session.c \
 @WITH_POP3_OR_IMAP_TRUE@	mn-client-session.h \
 @WITH_POP3_OR_IMAP_TRUE@	mn-auth-combo-box.gob \
 @WITH_POP3_OR_IMAP_TRUE@	mn-auth-combo-box.gob.stamp \
@@ -122,10 +144,10 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties-private.h \
 @WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties.c \
 @WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties.h
-@WITH_POP3_OR_IMAP_TRUE@am__append_17 = mn-auth-combo-box.gob.stamp \
+@WITH_POP3_OR_IMAP_TRUE@am__append_23 = mn-auth-combo-box.gob.stamp \
 @WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox.gob.stamp \
 @WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties.gob.stamp
-@WITH_POP3_OR_IMAP_TRUE@am__append_18 = mn-auth-combo-box.gob.stamp \
+@WITH_POP3_OR_IMAP_TRUE@am__append_24 = mn-auth-combo-box.gob.stamp \
 @WITH_POP3_OR_IMAP_TRUE@	mn-auth-combo-box-private.h \
 @WITH_POP3_OR_IMAP_TRUE@	mn-auth-combo-box.c \
 @WITH_POP3_OR_IMAP_TRUE@	mn-auth-combo-box.h \
@@ -136,7 +158,7 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties-private.h \
 @WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties.c \
 @WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties.h
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@am__append_19 =  \
+@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@am__append_25 =  \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox.gob \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox.gob.stamp \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-private.h \
@@ -147,9 +169,9 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties-private.h \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties.c \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties.h
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@am__append_20 = mn-authenticated-mailbox.gob.stamp \
+@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@am__append_26 = mn-authenticated-mailbox.gob.stamp \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties.gob.stamp
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@am__append_21 = mn-authenticated-mailbox.gob.stamp \
+@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@am__append_27 = mn-authenticated-mailbox.gob.stamp \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-private.h \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox.c \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox.h \
@@ -157,18 +179,18 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties-private.h \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties.c \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties.h
-@WITH_SYLPHEED_TRUE@am__append_22 = mn-sylpheed-mailbox-backend.gob \
+@WITH_SYLPHEED_TRUE@am__append_28 = mn-sylpheed-mailbox-backend.gob \
 @WITH_SYLPHEED_TRUE@	mn-sylpheed-mailbox-backend.gob.stamp \
 @WITH_SYLPHEED_TRUE@	mn-sylpheed-mailbox-backend-private.h \
 @WITH_SYLPHEED_TRUE@	mn-sylpheed-mailbox-backend.c \
 @WITH_SYLPHEED_TRUE@	mn-sylpheed-mailbox-backend.h
-@WITH_SYLPHEED_TRUE@am__append_23 = mn-sylpheed-mailbox-backend.gob.stamp
-@WITH_SYLPHEED_TRUE@am__append_24 =  \
+@WITH_SYLPHEED_TRUE@am__append_29 = mn-sylpheed-mailbox-backend.gob.stamp
+@WITH_SYLPHEED_TRUE@am__append_30 =  \
 @WITH_SYLPHEED_TRUE@	mn-sylpheed-mailbox-backend.gob.stamp \
 @WITH_SYLPHEED_TRUE@	mn-sylpheed-mailbox-backend-private.h \
 @WITH_SYLPHEED_TRUE@	mn-sylpheed-mailbox-backend.c \
 @WITH_SYLPHEED_TRUE@	mn-sylpheed-mailbox-backend.h
-@WITH_GMAIL_TRUE@am__append_25 = mn-gmail-mailbox.gob \
+@WITH_GMAIL_TRUE@am__append_31 = mn-gmail-mailbox.gob \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox.gob.stamp \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-private.h mn-gmail-mailbox.c \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox.h \
@@ -177,97 +199,110 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties-private.h \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties.c \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties.h
-@WITH_GMAIL_TRUE@am__append_26 = mn-gmail-mailbox.gob.stamp \
+@WITH_GMAIL_TRUE@am__append_32 = mn-gmail-mailbox.gob.stamp \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties.gob.stamp
-@WITH_GMAIL_TRUE@am__append_27 = mn-gmail-mailbox.gob.stamp \
+@WITH_GMAIL_TRUE@am__append_33 = mn-gmail-mailbox.gob.stamp \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-private.h mn-gmail-mailbox.c \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox.h \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties.gob.stamp \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties-private.h \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties.c \
 @WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties.h
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@am__append_28 = mn-custom-vfs-mailbox.gob \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.gob \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.gob \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.gob \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.gob \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.h
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@am__append_29 = mn-custom-vfs-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.gob.stamp
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@am__append_30 = mn-custom-vfs-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.h
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@am__append_31 = mn-reentrant-mailbox.gob \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.h
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@am__append_32 = mn-reentrant-mailbox.gob.stamp
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@am__append_33 = mn-reentrant-mailbox.gob.stamp \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox-private.h \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.c \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.h
-@WITH_MIME_TRUE@am__append_34 = $(GMIME_CFLAGS)
-@WITH_MIME_TRUE@am__append_35 = $(GMIME_LIBS)
-@WITH_MIME_TRUE@am__append_36 = mn-message-mime.c mn-message-mime.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@am__append_34 = mn-custom-vfs-mailbox.gob \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.gob \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.gob \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.gob \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.gob \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message.gob \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message.h
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@am__append_35 = mn-custom-vfs-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message.gob.stamp
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@am__append_36 = mn-custom-vfs-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-system-vfs-mailbox-properties.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-mailbox-backend.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-vfs-message.h
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@am__append_37 = mn-reentrant-mailbox.gob \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.h
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@am__append_38 = mn-reentrant-mailbox.gob.stamp
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@am__append_39 = mn-reentrant-mailbox.gob.stamp \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox-private.h \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.c \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@	mn-reentrant-mailbox.h
+@WITH_MIME_TRUE@am__append_40 = $(GMIME_CFLAGS)
+@WITH_MIME_TRUE@am__append_41 = $(GMIME_LIBS)
+@WITH_MIME_TRUE@am__append_42 = mn-message-mime.c mn-message-mime.h \
 @WITH_MIME_TRUE@	mn-gmime-stream-vfs.gob \
 @WITH_MIME_TRUE@	mn-gmime-stream-vfs.gob.stamp \
 @WITH_MIME_TRUE@	mn-gmime-stream-vfs-private.h \
 @WITH_MIME_TRUE@	mn-gmime-stream-vfs.c mn-gmime-stream-vfs.h
-@WITH_MIME_TRUE@am__append_37 = mn-gmime-stream-vfs.gob.stamp
-@WITH_MIME_TRUE@am__append_38 = mn-gmime-stream-vfs.gob.stamp \
+@WITH_MIME_TRUE@am__append_43 = mn-gmime-stream-vfs.gob.stamp
+@WITH_MIME_TRUE@am__append_44 = mn-gmime-stream-vfs.gob.stamp \
 @WITH_MIME_TRUE@	mn-gmime-stream-vfs-private.h \
 @WITH_MIME_TRUE@	mn-gmime-stream-vfs.c mn-gmime-stream-vfs.h
-@WITH_SSL_TRUE@am__append_39 = $(OPENSSL_CFLAGS)
-@WITH_SSL_TRUE@am__append_40 = $(OPENSSL_LIBS)
-@WITH_SSL_TRUE@am__append_41 = mn-ssl.c mn-ssl.h
-@WITH_SASL_TRUE@am__append_42 = $(SASL_CFLAGS)
-@WITH_SASL_TRUE@am__append_43 = $(SASL_LIBS)
-@WITH_SASL_TRUE@am__append_44 = mn-sasl.c mn-sasl.h
-@WITH_EVOLUTION_TRUE@am__append_45 = mn-evolution.h \
-@WITH_EVOLUTION_TRUE@	mn-corba-object.gob \
-@WITH_EVOLUTION_TRUE@	mn-corba-object.gob.stamp \
-@WITH_EVOLUTION_TRUE@	mn-corba-object-private.h \
-@WITH_EVOLUTION_TRUE@	mn-corba-object.c mn-corba-object.h \
+@WITH_SSL_TRUE@am__append_45 = $(OPENSSL_CFLAGS)
+@WITH_SSL_TRUE@am__append_46 = $(OPENSSL_LIBS)
+@WITH_SSL_TRUE@am__append_47 = mn-ssl.c mn-ssl.h
+@WITH_SASL_TRUE@am__append_48 = $(SASL_CFLAGS)
+@WITH_SASL_TRUE@am__append_49 = $(SASL_LIBS)
+@WITH_SASL_TRUE@am__append_50 = mn-sasl.c mn-sasl.h
+@WITH_EVOLUTION_TRUE@am__append_51 = $(EVOLUTION_PLUGIN_CFLAGS)
+@WITH_EVOLUTION_TRUE@am__append_52 = mn-evolution.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-glue-client.c \
+@WITH_EVOLUTION_TRUE@	mn-evolution-glue-client.h \
+@WITH_EVOLUTION_TRUE@	mn-bonobo-unknown.gob \
+@WITH_EVOLUTION_TRUE@	mn-bonobo-unknown.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-bonobo-unknown-private.h \
+@WITH_EVOLUTION_TRUE@	mn-bonobo-unknown.c mn-bonobo-unknown.h \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.gob \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.gob.stamp \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-private.h \
@@ -278,22 +313,29 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties-private.h \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.c \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message.gob \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message-private.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message.c \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message.h \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution.idl
-@WITH_EVOLUTION_TRUE@am__append_46 = mn-corba-object.gob.stamp \
+@WITH_EVOLUTION_TRUE@am__append_53 = mn-bonobo-unknown.gob.stamp \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.gob.stamp \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message.gob.stamp \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-common.c \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-skels.c \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-stubs.c \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.gob.stamp \
 @WITH_EVOLUTION_TRUE@	mn-evolution-glue.gob.stamp \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-common.c \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-skels.c \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-stubs.c \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution.h
-@WITH_EVOLUTION_TRUE@am__append_47 = mn-corba-object.gob.stamp \
-@WITH_EVOLUTION_TRUE@	mn-corba-object-private.h \
-@WITH_EVOLUTION_TRUE@	mn-corba-object.c mn-corba-object.h \
+@WITH_EVOLUTION_TRUE@am__append_54 = mn-bonobo-unknown.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-bonobo-unknown-private.h \
+@WITH_EVOLUTION_TRUE@	mn-bonobo-unknown.c mn-bonobo-unknown.h \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.gob.stamp \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-private.h \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.c \
@@ -302,11 +344,19 @@ bin_PROGRAMS = mail-notification$(EXEEXT)
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties-private.h \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.c \
 @WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message-private.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message.c \
+@WITH_EVOLUTION_TRUE@	mn-evolution-message.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control-private.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.c \
+@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.h \
 @WITH_EVOLUTION_TRUE@	mn-evolution-glue.gob.stamp \
 @WITH_EVOLUTION_TRUE@	mn-evolution-glue-private.h \
 @WITH_EVOLUTION_TRUE@	mn-evolution-glue.c mn-evolution-glue.h
-@WITH_EVOLUTION_TRUE@am__append_48 = GNOME_MailNotification_Evolution-common.c GNOME_MailNotification_Evolution-skels.c GNOME_MailNotification_Evolution-stubs.c GNOME_MailNotification_Evolution.h
-@WITH_EVOLUTION_TRUE@am__append_49 = GNOME_MailNotification_Evolution-common.c \
+@WITH_EVOLUTION_TRUE@am__append_55 = GNOME_MailNotification_Evolution-common.c GNOME_MailNotification_Evolution-skels.c GNOME_MailNotification_Evolution-stubs.c GNOME_MailNotification_Evolution.h
+@WITH_EVOLUTION_TRUE@am__append_56 = GNOME_MailNotification_Evolution-common.c \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-skels.c \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-stubs.c \
 @WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution.h \
@@ -340,6 +390,9 @@ LTLIBRARIES = $(evolution_plugin_LTLIBRARIES)
 liborg_gnome_mail_notification_la_LIBADD =
 am__liborg_gnome_mail_notification_la_SOURCES_DIST =  \
 	mn-evolution-plugin.c mn-evolution.h \
+	mn-evolution-folder-tree-control.gob \
+	mn-evolution-folder-tree-control.gob.stamp \
+	mn-evolution-folder-tree-control-private.h \
 	mn-evolution-folder-tree-control.c \
 	mn-evolution-folder-tree-control.h mn-evolution-glue.gob \
 	mn-evolution-glue.gob.stamp mn-evolution-glue-private.h \
@@ -361,7 +414,8 @@ PROGRAMS = $(bin_PROGRAMS)
 am__mail_notification_SOURCES_DIST = mn-main.c eggtrayicon.c \
 	eggtrayicon.h mn-conf.c mn-conf.h mn-locked-callback.c \
 	mn-locked-callback.h mn-stock.c mn-stock.h mn-util.c mn-util.h \
-	mn-vfs.c mn-vfs.h nautilus-cell-renderer-pixbuf-emblem.c \
+	mn-vfs.c mn-vfs.h mn-xml.c mn-xml.h \
+	nautilus-cell-renderer-pixbuf-emblem.c \
 	nautilus-cell-renderer-pixbuf-emblem.h mn-about-dialog.gob \
 	mn-about-dialog.gob.stamp mn-about-dialog-private.h \
 	mn-about-dialog.c mn-about-dialog.h \
@@ -379,10 +433,7 @@ am__mail_notification_SOURCES_DIST = mn-main.c eggtrayicon.c \
 	mn-compact-message-view.h mn-dialog.gob mn-dialog.gob.stamp \
 	mn-dialog-private.h mn-dialog.c mn-dialog.h mn-mail-icon.gob \
 	mn-mail-icon.gob.stamp mn-mail-icon-private.h mn-mail-icon.c \
-	mn-mail-icon.h mn-mail-summary-popup.gob \
-	mn-mail-summary-popup.gob.stamp \
-	mn-mail-summary-popup-private.h mn-mail-summary-popup.c \
-	mn-mail-summary-popup.h mn-mailbox.gob mn-mailbox.gob.stamp \
+	mn-mail-icon.h mn-mailbox.gob mn-mailbox.gob.stamp \
 	mn-mailbox-private.h mn-mailbox.c mn-mailbox.h \
 	mn-mailbox-properties.gob mn-mailbox-properties.gob.stamp \
 	mn-mailbox-properties-private.h mn-mailbox-properties.c \
@@ -397,6 +448,9 @@ am__mail_notification_SOURCES_DIST = mn-main.c eggtrayicon.c \
 	mn-message.gob.stamp mn-message-private.h mn-message.c \
 	mn-message.h mn-message-view.gob mn-message-view.gob.stamp \
 	mn-message-view-private.h mn-message-view.c mn-message-view.h \
+	mn-popup.gob mn-popup.gob.stamp mn-popup-private.h mn-popup.c \
+	mn-popup.h mn-popups.gob mn-popups.gob.stamp \
+	mn-popups-private.h mn-popups.c mn-popups.h \
 	mn-properties-dialog.gob mn-properties-dialog.gob.stamp \
 	mn-properties-dialog-private.h mn-properties-dialog.c \
 	mn-properties-dialog.h mn-shell.gob mn-shell.gob.stamp \
@@ -404,15 +458,24 @@ am__mail_notification_SOURCES_DIST = mn-main.c eggtrayicon.c \
 	mn-standard-message-view.gob \
 	mn-standard-message-view.gob.stamp \
 	mn-standard-message-view-private.h mn-standard-message-view.c \
-	mn-standard-message-view.h mn-text-table.gob \
+	mn-standard-message-view.h mn-test-mailbox.gob \
+	mn-test-mailbox.gob.stamp mn-test-mailbox-private.h \
+	mn-test-mailbox.c mn-test-mailbox.h mn-text-table.gob \
 	mn-text-table.gob.stamp mn-text-table-private.h \
 	mn-text-table.c mn-text-table.h mn-tooltips.gob \
 	mn-tooltips.gob.stamp mn-tooltips-private.h mn-tooltips.c \
 	mn-tooltips.h GNOME_MailNotification.idl \
 	mn-mbox-mailbox-backend.gob mn-mbox-mailbox-backend.gob.stamp \
 	mn-mbox-mailbox-backend-private.h mn-mbox-mailbox-backend.c \
-	mn-mbox-mailbox-backend.h mn-mh-mailbox-backend.gob \
-	mn-mh-mailbox-backend.gob.stamp \
+	mn-mbox-mailbox-backend.h mn-mozilla-mailbox-backend.gob \
+	mn-mozilla-mailbox-backend.gob.stamp \
+	mn-mozilla-mailbox-backend-private.h \
+	mn-mozilla-mailbox-backend.c mn-mozilla-mailbox-backend.h \
+	mn-base-mbox-mailbox-backend.gob \
+	mn-base-mbox-mailbox-backend.gob.stamp \
+	mn-base-mbox-mailbox-backend-private.h \
+	mn-base-mbox-mailbox-backend.c mn-base-mbox-mailbox-backend.h \
+	mn-mh-mailbox-backend.gob mn-mh-mailbox-backend.gob.stamp \
 	mn-mh-mailbox-backend-private.h mn-mh-mailbox-backend.c \
 	mn-mh-mailbox-backend.h mn-maildir-mailbox-backend.gob \
 	mn-maildir-mailbox-backend.gob.stamp \
@@ -471,56 +534,66 @@ am__mail_notification_SOURCES_DIST = mn-main.c eggtrayicon.c \
 	mn-vfs-mailbox.c mn-vfs-mailbox.h mn-vfs-mailbox-backend.gob \
 	mn-vfs-mailbox-backend.gob.stamp \
 	mn-vfs-mailbox-backend-private.h mn-vfs-mailbox-backend.c \
-	mn-vfs-mailbox-backend.h mn-reentrant-mailbox.gob \
+	mn-vfs-mailbox-backend.h mn-vfs-message.gob \
+	mn-vfs-message.gob.stamp mn-vfs-message-private.h \
+	mn-vfs-message.c mn-vfs-message.h mn-reentrant-mailbox.gob \
 	mn-reentrant-mailbox.gob.stamp mn-reentrant-mailbox-private.h \
 	mn-reentrant-mailbox.c mn-reentrant-mailbox.h \
 	mn-message-mime.c mn-message-mime.h mn-gmime-stream-vfs.gob \
 	mn-gmime-stream-vfs.gob.stamp mn-gmime-stream-vfs-private.h \
 	mn-gmime-stream-vfs.c mn-gmime-stream-vfs.h mn-ssl.c mn-ssl.h \
-	mn-sasl.c mn-sasl.h mn-evolution.h mn-corba-object.gob \
-	mn-corba-object.gob.stamp mn-corba-object-private.h \
-	mn-corba-object.c mn-corba-object.h mn-evolution-mailbox.gob \
-	mn-evolution-mailbox.gob.stamp mn-evolution-mailbox-private.h \
-	mn-evolution-mailbox.c mn-evolution-mailbox.h \
-	mn-evolution-mailbox-properties.gob \
+	mn-sasl.c mn-sasl.h mn-evolution.h mn-evolution-glue-client.c \
+	mn-evolution-glue-client.h mn-bonobo-unknown.gob \
+	mn-bonobo-unknown.gob.stamp mn-bonobo-unknown-private.h \
+	mn-bonobo-unknown.c mn-bonobo-unknown.h \
+	mn-evolution-mailbox.gob mn-evolution-mailbox.gob.stamp \
+	mn-evolution-mailbox-private.h mn-evolution-mailbox.c \
+	mn-evolution-mailbox.h mn-evolution-mailbox-properties.gob \
 	mn-evolution-mailbox-properties.gob.stamp \
 	mn-evolution-mailbox-properties-private.h \
 	mn-evolution-mailbox-properties.c \
-	mn-evolution-mailbox-properties.h \
+	mn-evolution-mailbox-properties.h mn-evolution-message.gob \
+	mn-evolution-message.gob.stamp mn-evolution-message-private.h \
+	mn-evolution-message.c mn-evolution-message.h \
 	GNOME_MailNotification_Evolution.idl
 @WITH_MBOX_TRUE@am__objects_1 = mail_notification-mn-mbox-mailbox-backend.$(OBJEXT)
-@WITH_MH_TRUE@am__objects_2 = mail_notification-mn-mh-mailbox-backend.$(OBJEXT)
-@WITH_MAILDIR_TRUE@am__objects_3 = mail_notification-mn-maildir-mailbox-backend.$(OBJEXT)
-@WITH_POP3_TRUE@am__objects_4 = mail_notification-mn-md5.$(OBJEXT) \
+@WITH_MOZILLA_TRUE@am__objects_2 = mail_notification-mn-mozilla-mailbox-backend.$(OBJEXT)
+@WITH_MBOX_OR_MOZILLA_TRUE@am__objects_3 = mail_notification-mn-base-mbox-mailbox-backend.$(OBJEXT)
+@WITH_MH_TRUE@am__objects_4 = mail_notification-mn-mh-mailbox-backend.$(OBJEXT)
+@WITH_MAILDIR_TRUE@am__objects_5 = mail_notification-mn-maildir-mailbox-backend.$(OBJEXT)
+@WITH_POP3_TRUE@am__objects_6 = mail_notification-mn-md5.$(OBJEXT) \
 @WITH_POP3_TRUE@	mail_notification-mn-pop3-mailbox.$(OBJEXT) \
 @WITH_POP3_TRUE@	mail_notification-mn-pop3-mailbox-properties.$(OBJEXT)
-@WITH_IMAP_TRUE@am__objects_5 =  \
+@WITH_IMAP_TRUE@am__objects_7 =  \
 @WITH_IMAP_TRUE@	mail_notification-mn-imap-mailbox.$(OBJEXT) \
 @WITH_IMAP_TRUE@	mail_notification-mn-imap-mailbox-properties.$(OBJEXT)
-@WITH_POP3_OR_IMAP_TRUE@am__objects_6 = mail_notification-mn-client-session.$(OBJEXT) \
+@WITH_POP3_OR_IMAP_TRUE@am__objects_8 = mail_notification-mn-client-session.$(OBJEXT) \
 @WITH_POP3_OR_IMAP_TRUE@	mail_notification-mn-auth-combo-box.$(OBJEXT) \
 @WITH_POP3_OR_IMAP_TRUE@	mail_notification-mn-pi-mailbox.$(OBJEXT) \
 @WITH_POP3_OR_IMAP_TRUE@	mail_notification-mn-pi-mailbox-properties.$(OBJEXT)
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@am__objects_7 = mail_notification-mn-authenticated-mailbox.$(OBJEXT) \
+@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@am__objects_9 = mail_notification-mn-authenticated-mailbox.$(OBJEXT) \
 @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mail_notification-mn-authenticated-mailbox-properties.$(OBJEXT)
-@WITH_SYLPHEED_TRUE@am__objects_8 = mail_notification-mn-sylpheed-mailbox-backend.$(OBJEXT)
-@WITH_GMAIL_TRUE@am__objects_9 =  \
+@WITH_SYLPHEED_TRUE@am__objects_10 = mail_notification-mn-sylpheed-mailbox-backend.$(OBJEXT)
+@WITH_GMAIL_TRUE@am__objects_11 =  \
 @WITH_GMAIL_TRUE@	mail_notification-mn-gmail-mailbox.$(OBJEXT) \
 @WITH_GMAIL_TRUE@	mail_notification-mn-gmail-mailbox-properties.$(OBJEXT)
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@am__objects_10 = mail_notification-mn-custom-vfs-mailbox.$(OBJEXT) \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-system-vfs-mailbox.$(OBJEXT) \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-system-vfs-mailbox-properties.$(OBJEXT) \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-vfs-mailbox.$(OBJEXT) \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-vfs-mailbox-backend.$(OBJEXT)
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@am__objects_11 = mail_notification-mn-reentrant-mailbox.$(OBJEXT)
-@WITH_MIME_TRUE@am__objects_12 =  \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@am__objects_12 = mail_notification-mn-custom-vfs-mailbox.$(OBJEXT) \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-system-vfs-mailbox.$(OBJEXT) \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-system-vfs-mailbox-properties.$(OBJEXT) \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-vfs-mailbox.$(OBJEXT) \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-vfs-mailbox-backend.$(OBJEXT) \
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-vfs-message.$(OBJEXT)
+@WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@am__objects_13 = mail_notification-mn-reentrant-mailbox.$(OBJEXT)
+@WITH_MIME_TRUE@am__objects_14 =  \
 @WITH_MIME_TRUE@	mail_notification-mn-message-mime.$(OBJEXT) \
 @WITH_MIME_TRUE@	mail_notification-mn-gmime-stream-vfs.$(OBJEXT)
-@WITH_SSL_TRUE@am__objects_13 = mail_notification-mn-ssl.$(OBJEXT)
-@WITH_SASL_TRUE@am__objects_14 = mail_notification-mn-sasl.$(OBJEXT)
-@WITH_EVOLUTION_TRUE@am__objects_15 = mail_notification-mn-corba-object.$(OBJEXT) \
+@WITH_SSL_TRUE@am__objects_15 = mail_notification-mn-ssl.$(OBJEXT)
+@WITH_SASL_TRUE@am__objects_16 = mail_notification-mn-sasl.$(OBJEXT)
+@WITH_EVOLUTION_TRUE@am__objects_17 = mail_notification-mn-evolution-glue-client.$(OBJEXT) \
+@WITH_EVOLUTION_TRUE@	mail_notification-mn-bonobo-unknown.$(OBJEXT) \
 @WITH_EVOLUTION_TRUE@	mail_notification-mn-evolution-mailbox.$(OBJEXT) \
-@WITH_EVOLUTION_TRUE@	mail_notification-mn-evolution-mailbox-properties.$(OBJEXT)
+@WITH_EVOLUTION_TRUE@	mail_notification-mn-evolution-mailbox-properties.$(OBJEXT) \
+@WITH_EVOLUTION_TRUE@	mail_notification-mn-evolution-message.$(OBJEXT)
 am_mail_notification_OBJECTS = mail_notification-mn-main.$(OBJEXT) \
 	mail_notification-eggtrayicon.$(OBJEXT) \
 	mail_notification-mn-conf.$(OBJEXT) \
@@ -528,6 +601,7 @@ am_mail_notification_OBJECTS = mail_notification-mn-main.$(OBJEXT) \
 	mail_notification-mn-stock.$(OBJEXT) \
 	mail_notification-mn-util.$(OBJEXT) \
 	mail_notification-mn-vfs.$(OBJEXT) \
+	mail_notification-mn-xml.$(OBJEXT) \
 	mail_notification-nautilus-cell-renderer-pixbuf-emblem.$(OBJEXT) \
 	mail_notification-mn-about-dialog.$(OBJEXT) \
 	mail_notification-mn-autodetect-mailbox-properties.$(OBJEXT) \
@@ -536,7 +610,6 @@ am_mail_notification_OBJECTS = mail_notification-mn-main.$(OBJEXT) \
 	mail_notification-mn-compact-message-view.$(OBJEXT) \
 	mail_notification-mn-dialog.$(OBJEXT) \
 	mail_notification-mn-mail-icon.$(OBJEXT) \
-	mail_notification-mn-mail-summary-popup.$(OBJEXT) \
 	mail_notification-mn-mailbox.$(OBJEXT) \
 	mail_notification-mn-mailbox-properties.$(OBJEXT) \
 	mail_notification-mn-mailbox-properties-dialog.$(OBJEXT) \
@@ -544,24 +617,28 @@ am_mail_notification_OBJECTS = mail_notification-mn-main.$(OBJEXT) \
 	mail_notification-mn-mailboxes.$(OBJEXT) \
 	mail_notification-mn-message.$(OBJEXT) \
 	mail_notification-mn-message-view.$(OBJEXT) \
+	mail_notification-mn-popup.$(OBJEXT) \
+	mail_notification-mn-popups.$(OBJEXT) \
 	mail_notification-mn-properties-dialog.$(OBJEXT) \
 	mail_notification-mn-shell.$(OBJEXT) \
 	mail_notification-mn-standard-message-view.$(OBJEXT) \
+	mail_notification-mn-test-mailbox.$(OBJEXT) \
 	mail_notification-mn-text-table.$(OBJEXT) \
 	mail_notification-mn-tooltips.$(OBJEXT) $(am__objects_1) \
 	$(am__objects_2) $(am__objects_3) $(am__objects_4) \
 	$(am__objects_5) $(am__objects_6) $(am__objects_7) \
 	$(am__objects_8) $(am__objects_9) $(am__objects_10) \
 	$(am__objects_11) $(am__objects_12) $(am__objects_13) \
-	$(am__objects_14) $(am__objects_15)
-@WITH_EVOLUTION_TRUE@am__objects_16 = mail_notification-GNOME_MailNotification_Evolution-common.$(OBJEXT) \
+	$(am__objects_14) $(am__objects_15) $(am__objects_16) \
+	$(am__objects_17)
+@WITH_EVOLUTION_TRUE@am__objects_18 = mail_notification-GNOME_MailNotification_Evolution-common.$(OBJEXT) \
 @WITH_EVOLUTION_TRUE@	mail_notification-GNOME_MailNotification_Evolution-skels.$(OBJEXT) \
 @WITH_EVOLUTION_TRUE@	mail_notification-GNOME_MailNotification_Evolution-stubs.$(OBJEXT)
 nodist_mail_notification_OBJECTS =  \
 	mail_notification-GNOME_MailNotification-common.$(OBJEXT) \
 	mail_notification-GNOME_MailNotification-skels.$(OBJEXT) \
 	mail_notification-GNOME_MailNotification-stubs.$(OBJEXT) \
-	$(am__objects_16)
+	$(am__objects_18)
 mail_notification_OBJECTS = $(am_mail_notification_OBJECTS) \
 	$(nodist_mail_notification_OBJECTS)
 mail_notification_LDADD = $(LDADD)
@@ -588,6 +665,7 @@ ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AML = @AML@
@@ -717,15 +795,19 @@ WITH_IMAP_TRUE = @WITH_IMAP_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_FALSE = @WITH_MBOX_OR_MOZILLA_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_TRUE = @WITH_MBOX_OR_MOZILLA_TRUE@
 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_MOZILLA_FALSE = @WITH_MOZILLA_FALSE@
+WITH_MOZILLA_TRUE = @WITH_MOZILLA_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
@@ -766,7 +848,6 @@ build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
 evolution_plugindir = @evolution_plugindir@
-evolution_source_dir = @evolution_source_dir@
 exec_prefix = @exec_prefix@
 gnome_cappletdir = @gnome_cappletdir@
 gnome_prefix = @gnome_prefix@
@@ -802,13 +883,14 @@ mail_notification_CPPFLAGS = $(WARN_CFLAGS) $(DEBUG_CFLAGS) \
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
 	-DGNOMEPIXMAPSDIR="\"$(datadir)/pixmaps\"" \
 	-DUIDIR="\"$(pkgdatadir)/ui\"" $(GNOME_CFLAGS) \
-	$(am__append_34) $(am__append_39) $(am__append_42)
+	$(am__append_40) $(am__append_45) $(am__append_48) \
+	$(am__append_51)
 mail_notification_LDFLAGS = -export-dynamic $(INTLLIBS) $(GNOME_LIBS) \
-	$(am__append_35) $(am__append_40) $(am__append_43)
+	$(am__append_41) $(am__append_46) $(am__append_49)
 mail_notification_SOURCES = mn-main.c eggtrayicon.c eggtrayicon.h \
 	mn-conf.c mn-conf.h mn-locked-callback.c mn-locked-callback.h \
 	mn-stock.c mn-stock.h mn-util.c mn-util.h mn-vfs.c mn-vfs.h \
-	nautilus-cell-renderer-pixbuf-emblem.c \
+	mn-xml.c mn-xml.h nautilus-cell-renderer-pixbuf-emblem.c \
 	nautilus-cell-renderer-pixbuf-emblem.h mn-about-dialog.gob \
 	mn-about-dialog.gob.stamp mn-about-dialog-private.h \
 	mn-about-dialog.c mn-about-dialog.h \
@@ -826,10 +908,7 @@ mail_notification_SOURCES = mn-main.c eggtrayicon.c eggtrayicon.h \
 	mn-compact-message-view.h mn-dialog.gob mn-dialog.gob.stamp \
 	mn-dialog-private.h mn-dialog.c mn-dialog.h mn-mail-icon.gob \
 	mn-mail-icon.gob.stamp mn-mail-icon-private.h mn-mail-icon.c \
-	mn-mail-icon.h mn-mail-summary-popup.gob \
-	mn-mail-summary-popup.gob.stamp \
-	mn-mail-summary-popup-private.h mn-mail-summary-popup.c \
-	mn-mail-summary-popup.h mn-mailbox.gob mn-mailbox.gob.stamp \
+	mn-mail-icon.h mn-mailbox.gob mn-mailbox.gob.stamp \
 	mn-mailbox-private.h mn-mailbox.c mn-mailbox.h \
 	mn-mailbox-properties.gob mn-mailbox-properties.gob.stamp \
 	mn-mailbox-properties-private.h mn-mailbox-properties.c \
@@ -844,6 +923,9 @@ mail_notification_SOURCES = mn-main.c eggtrayicon.c eggtrayicon.h \
 	mn-message.gob.stamp mn-message-private.h mn-message.c \
 	mn-message.h mn-message-view.gob mn-message-view.gob.stamp \
 	mn-message-view-private.h mn-message-view.c mn-message-view.h \
+	mn-popup.gob mn-popup.gob.stamp mn-popup-private.h mn-popup.c \
+	mn-popup.h mn-popups.gob mn-popups.gob.stamp \
+	mn-popups-private.h mn-popups.c mn-popups.h \
 	mn-properties-dialog.gob mn-properties-dialog.gob.stamp \
 	mn-properties-dialog-private.h mn-properties-dialog.c \
 	mn-properties-dialog.h mn-shell.gob mn-shell.gob.stamp \
@@ -851,7 +933,9 @@ mail_notification_SOURCES = mn-main.c eggtrayicon.c eggtrayicon.h \
 	mn-standard-message-view.gob \
 	mn-standard-message-view.gob.stamp \
 	mn-standard-message-view-private.h mn-standard-message-view.c \
-	mn-standard-message-view.h mn-text-table.gob \
+	mn-standard-message-view.h mn-test-mailbox.gob \
+	mn-test-mailbox.gob.stamp mn-test-mailbox-private.h \
+	mn-test-mailbox.c mn-test-mailbox.h mn-text-table.gob \
 	mn-text-table.gob.stamp mn-text-table-private.h \
 	mn-text-table.c mn-text-table.h mn-tooltips.gob \
 	mn-tooltips.gob.stamp mn-tooltips-private.h mn-tooltips.c \
@@ -859,26 +943,29 @@ mail_notification_SOURCES = mn-main.c eggtrayicon.c eggtrayicon.h \
 	$(am__append_4) $(am__append_7) $(am__append_10) \
 	$(am__append_13) $(am__append_16) $(am__append_19) \
 	$(am__append_22) $(am__append_25) $(am__append_28) \
-	$(am__append_31) $(am__append_36) $(am__append_41) \
-	$(am__append_44) $(am__append_45)
+	$(am__append_31) $(am__append_34) $(am__append_37) \
+	$(am__append_42) $(am__append_47) $(am__append_50) \
+	$(am__append_52)
 BUILT_SOURCES = mn-about-dialog.gob.stamp \
 	mn-autodetect-mailbox-properties.gob.stamp \
 	mn-automation.gob.stamp mn-blinking-image.gob.stamp \
 	mn-compact-message-view.gob.stamp mn-dialog.gob.stamp \
-	mn-mail-icon.gob.stamp mn-mail-summary-popup.gob.stamp \
-	mn-mailbox.gob.stamp mn-mailbox-properties.gob.stamp \
+	mn-mail-icon.gob.stamp mn-mailbox.gob.stamp \
+	mn-mailbox-properties.gob.stamp \
 	mn-mailbox-properties-dialog.gob.stamp \
 	mn-mailbox-view.gob.stamp mn-mailboxes.gob.stamp \
 	mn-message.gob.stamp mn-message-view.gob.stamp \
+	mn-popup.gob.stamp mn-popups.gob.stamp \
 	mn-properties-dialog.gob.stamp mn-shell.gob.stamp \
-	mn-standard-message-view.gob.stamp mn-text-table.gob.stamp \
-	mn-tooltips.gob.stamp GNOME_MailNotification-common.c \
-	GNOME_MailNotification-skels.c GNOME_MailNotification-stubs.c \
-	GNOME_MailNotification.h $(am__append_2) $(am__append_5) \
-	$(am__append_8) $(am__append_11) $(am__append_14) \
-	$(am__append_17) $(am__append_20) $(am__append_23) \
-	$(am__append_26) $(am__append_29) $(am__append_32) \
-	$(am__append_37) $(am__append_46)
+	mn-standard-message-view.gob.stamp mn-test-mailbox.gob.stamp \
+	mn-text-table.gob.stamp mn-tooltips.gob.stamp \
+	GNOME_MailNotification-common.c GNOME_MailNotification-skels.c \
+	GNOME_MailNotification-stubs.c GNOME_MailNotification.h \
+	$(am__append_2) $(am__append_5) $(am__append_8) \
+	$(am__append_11) $(am__append_14) $(am__append_17) \
+	$(am__append_20) $(am__append_23) $(am__append_26) \
+	$(am__append_29) $(am__append_32) $(am__append_35) \
+	$(am__append_38) $(am__append_43) $(am__append_53)
 MAINTAINERCLEANFILES = mn-about-dialog.gob.stamp \
 	mn-about-dialog-private.h mn-about-dialog.c mn-about-dialog.h \
 	mn-autodetect-mailbox-properties.gob.stamp \
@@ -893,11 +980,8 @@ MAINTAINERCLEANFILES = mn-about-dialog.gob.stamp \
 	mn-compact-message-view.h mn-dialog.gob.stamp \
 	mn-dialog-private.h mn-dialog.c mn-dialog.h \
 	mn-mail-icon.gob.stamp mn-mail-icon-private.h mn-mail-icon.c \
-	mn-mail-icon.h mn-mail-summary-popup.gob.stamp \
-	mn-mail-summary-popup-private.h mn-mail-summary-popup.c \
-	mn-mail-summary-popup.h mn-mailbox.gob.stamp \
-	mn-mailbox-private.h mn-mailbox.c mn-mailbox.h \
-	mn-mailbox-properties.gob.stamp \
+	mn-mail-icon.h mn-mailbox.gob.stamp mn-mailbox-private.h \
+	mn-mailbox.c mn-mailbox.h mn-mailbox-properties.gob.stamp \
 	mn-mailbox-properties-private.h mn-mailbox-properties.c \
 	mn-mailbox-properties.h mn-mailbox-properties-dialog.gob.stamp \
 	mn-mailbox-properties-dialog-private.h \
@@ -908,25 +992,29 @@ MAINTAINERCLEANFILES = mn-about-dialog.gob.stamp \
 	mn-message.gob.stamp mn-message-private.h mn-message.c \
 	mn-message.h mn-message-view.gob.stamp \
 	mn-message-view-private.h mn-message-view.c mn-message-view.h \
-	mn-properties-dialog.gob.stamp mn-properties-dialog-private.h \
-	mn-properties-dialog.c mn-properties-dialog.h \
-	mn-shell.gob.stamp mn-shell-private.h mn-shell.c mn-shell.h \
-	mn-standard-message-view.gob.stamp \
+	mn-popup.gob.stamp mn-popup-private.h mn-popup.c mn-popup.h \
+	mn-popups.gob.stamp mn-popups-private.h mn-popups.c \
+	mn-popups.h mn-properties-dialog.gob.stamp \
+	mn-properties-dialog-private.h mn-properties-dialog.c \
+	mn-properties-dialog.h mn-shell.gob.stamp mn-shell-private.h \
+	mn-shell.c mn-shell.h mn-standard-message-view.gob.stamp \
 	mn-standard-message-view-private.h mn-standard-message-view.c \
-	mn-standard-message-view.h mn-text-table.gob.stamp \
-	mn-text-table-private.h mn-text-table.c mn-text-table.h \
-	mn-tooltips.gob.stamp mn-tooltips-private.h mn-tooltips.c \
-	mn-tooltips.h $(am__append_3) $(am__append_6) $(am__append_9) \
+	mn-standard-message-view.h mn-test-mailbox.gob.stamp \
+	mn-test-mailbox-private.h mn-test-mailbox.c mn-test-mailbox.h \
+	mn-text-table.gob.stamp mn-text-table-private.h \
+	mn-text-table.c mn-text-table.h mn-tooltips.gob.stamp \
+	mn-tooltips-private.h mn-tooltips.c mn-tooltips.h \
+	$(am__append_3) $(am__append_6) $(am__append_9) \
 	$(am__append_12) $(am__append_15) $(am__append_18) \
 	$(am__append_21) $(am__append_24) $(am__append_27) \
-	$(am__append_30) $(am__append_33) $(am__append_38) \
-	$(am__append_47)
+	$(am__append_30) $(am__append_33) $(am__append_36) \
+	$(am__append_39) $(am__append_44) $(am__append_54)
 nodist_mail_notification_SOURCES = GNOME_MailNotification-common.c \
 	GNOME_MailNotification-skels.c GNOME_MailNotification-stubs.c \
-	GNOME_MailNotification.h $(am__append_48)
+	GNOME_MailNotification.h $(am__append_55)
 CLEANFILES = GNOME_MailNotification-common.c \
 	GNOME_MailNotification-skels.c GNOME_MailNotification-stubs.c \
-	GNOME_MailNotification.h $(am__append_49) $(evolution_eplug)
+	GNOME_MailNotification.h $(am__append_56) $(evolution_eplug)
 @WITH_EVOLUTION_TRUE@evolution_plugin_LTLIBRARIES = liborg-gnome-mail-notification.la
 @WITH_EVOLUTION_TRUE@liborg_gnome_mail_notification_la_CPPFLAGS =  \
 @WITH_EVOLUTION_TRUE@	$(WARN_CFLAGS) $(DEBUG_CFLAGS) \
@@ -938,6 +1026,9 @@ CLEANFILES = GNOME_MailNotification-common.c \
 @WITH_EVOLUTION_TRUE@	$(EVOLUTION_PLUGIN_LIBS)
 @WITH_EVOLUTION_TRUE@liborg_gnome_mail_notification_la_SOURCES =  \
 @WITH_EVOLUTION_TRUE@	mn-evolution-plugin.c mn-evolution.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.gob \
+@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control-private.h \
 @WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.c \
 @WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.h \
 @WITH_EVOLUTION_TRUE@	mn-evolution-glue.gob \
@@ -1070,15 +1161,18 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-automation.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-base-mbox-mailbox-backend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-blinking-image.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-bonobo-unknown.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-client-session.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-compact-message-view.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-conf.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-corba-object.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-dialog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-evolution-glue-client.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-evolution-mailbox.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-evolution-message.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-gmail-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Po@am__quote@
@@ -1086,7 +1180,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-imap-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-locked-callback.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mail-icon.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mail-summary-popup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mailbox-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mailbox-view.Po@am__quote@
@@ -1100,10 +1193,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-message-view.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-message.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mh-mailbox-backend.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mozilla-mailbox-backend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-pi-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-pop3-mailbox.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-popup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-popups.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-properties-dialog.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-reentrant-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-sasl.Po@am__quote@
@@ -1114,12 +1210,15 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-test-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-text-table.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-tooltips.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-util.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-vfs-mailbox.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-vfs-message.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-vfs.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-xml.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-nautilus-cell-renderer-pixbuf-emblem.Po@am__quote@
 
 .c.o:
@@ -1283,6 +1382,20 @@ mail_notification-mn-vfs.obj: mn-vfs.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-vfs.obj `if test -f 'mn-vfs.c'; then $(CYGPATH_W) 'mn-vfs.c'; else $(CYGPATH_W) '$(srcdir)/mn-vfs.c'; fi`
 
+mail_notification-mn-xml.o: mn-xml.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-xml.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-xml.Tpo" -c -o mail_notification-mn-xml.o `test -f 'mn-xml.c' || echo '$(srcdir)/'`mn-xml.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-xml.Tpo" "$(DEPDIR)/mail_notification-mn-xml.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-xml.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-xml.c' object='mail_notification-mn-xml.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-xml.o `test -f 'mn-xml.c' || echo '$(srcdir)/'`mn-xml.c
+
+mail_notification-mn-xml.obj: mn-xml.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-xml.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-xml.Tpo" -c -o mail_notification-mn-xml.obj `if test -f 'mn-xml.c'; then $(CYGPATH_W) 'mn-xml.c'; else $(CYGPATH_W) '$(srcdir)/mn-xml.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-xml.Tpo" "$(DEPDIR)/mail_notification-mn-xml.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-xml.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-xml.c' object='mail_notification-mn-xml.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-xml.obj `if test -f 'mn-xml.c'; then $(CYGPATH_W) 'mn-xml.c'; else $(CYGPATH_W) '$(srcdir)/mn-xml.c'; fi`
+
 mail_notification-nautilus-cell-renderer-pixbuf-emblem.o: nautilus-cell-renderer-pixbuf-emblem.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-nautilus-cell-renderer-pixbuf-emblem.o -MD -MP -MF "$(DEPDIR)/mail_notification-nautilus-cell-renderer-pixbuf-emblem.Tpo" -c -o mail_notification-nautilus-cell-renderer-pixbuf-emblem.o `test -f 'nautilus-cell-renderer-pixbuf-emblem.c' || echo '$(srcdir)/'`nautilus-cell-renderer-pixbuf-emblem.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-nautilus-cell-renderer-pixbuf-emblem.Tpo" "$(DEPDIR)/mail_notification-nautilus-cell-renderer-pixbuf-emblem.Po"; else rm -f "$(DEPDIR)/mail_notification-nautilus-cell-renderer-pixbuf-emblem.Tpo"; exit 1; fi
@@ -1395,20 +1508,6 @@ mail_notification-mn-mail-icon.obj: mn-mail-icon.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mail-icon.obj `if test -f 'mn-mail-icon.c'; then $(CYGPATH_W) 'mn-mail-icon.c'; else $(CYGPATH_W) '$(srcdir)/mn-mail-icon.c'; fi`
 
-mail_notification-mn-mail-summary-popup.o: mn-mail-summary-popup.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mail-summary-popup.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mail-summary-popup.Tpo" -c -o mail_notification-mn-mail-summary-popup.o `test -f 'mn-mail-summary-popup.c' || echo '$(srcdir)/'`mn-mail-summary-popup.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mail-summary-popup.Tpo" "$(DEPDIR)/mail_notification-mn-mail-summary-popup.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mail-summary-popup.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mail-summary-popup.c' object='mail_notification-mn-mail-summary-popup.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mail-summary-popup.o `test -f 'mn-mail-summary-popup.c' || echo '$(srcdir)/'`mn-mail-summary-popup.c
-
-mail_notification-mn-mail-summary-popup.obj: mn-mail-summary-popup.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mail-summary-popup.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mail-summary-popup.Tpo" -c -o mail_notification-mn-mail-summary-popup.obj `if test -f 'mn-mail-summary-popup.c'; then $(CYGPATH_W) 'mn-mail-summary-popup.c'; else $(CYGPATH_W) '$(srcdir)/mn-mail-summary-popup.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mail-summary-popup.Tpo" "$(DEPDIR)/mail_notification-mn-mail-summary-popup.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mail-summary-popup.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mail-summary-popup.c' object='mail_notification-mn-mail-summary-popup.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mail-summary-popup.obj `if test -f 'mn-mail-summary-popup.c'; then $(CYGPATH_W) 'mn-mail-summary-popup.c'; else $(CYGPATH_W) '$(srcdir)/mn-mail-summary-popup.c'; fi`
-
 mail_notification-mn-mailbox.o: mn-mailbox.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox.Tpo" -c -o mail_notification-mn-mailbox.o `test -f 'mn-mailbox.c' || echo '$(srcdir)/'`mn-mailbox.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox.Tpo"; exit 1; fi
@@ -1507,6 +1606,34 @@ mail_notification-mn-message-view.obj: mn-message-view.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-message-view.obj `if test -f 'mn-message-view.c'; then $(CYGPATH_W) 'mn-message-view.c'; else $(CYGPATH_W) '$(srcdir)/mn-message-view.c'; fi`
 
+mail_notification-mn-popup.o: mn-popup.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-popup.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-popup.Tpo" -c -o mail_notification-mn-popup.o `test -f 'mn-popup.c' || echo '$(srcdir)/'`mn-popup.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-popup.Tpo" "$(DEPDIR)/mail_notification-mn-popup.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-popup.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-popup.c' object='mail_notification-mn-popup.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-popup.o `test -f 'mn-popup.c' || echo '$(srcdir)/'`mn-popup.c
+
+mail_notification-mn-popup.obj: mn-popup.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-popup.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-popup.Tpo" -c -o mail_notification-mn-popup.obj `if test -f 'mn-popup.c'; then $(CYGPATH_W) 'mn-popup.c'; else $(CYGPATH_W) '$(srcdir)/mn-popup.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-popup.Tpo" "$(DEPDIR)/mail_notification-mn-popup.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-popup.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-popup.c' object='mail_notification-mn-popup.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-popup.obj `if test -f 'mn-popup.c'; then $(CYGPATH_W) 'mn-popup.c'; else $(CYGPATH_W) '$(srcdir)/mn-popup.c'; fi`
+
+mail_notification-mn-popups.o: mn-popups.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-popups.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-popups.Tpo" -c -o mail_notification-mn-popups.o `test -f 'mn-popups.c' || echo '$(srcdir)/'`mn-popups.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-popups.Tpo" "$(DEPDIR)/mail_notification-mn-popups.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-popups.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-popups.c' object='mail_notification-mn-popups.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-popups.o `test -f 'mn-popups.c' || echo '$(srcdir)/'`mn-popups.c
+
+mail_notification-mn-popups.obj: mn-popups.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-popups.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-popups.Tpo" -c -o mail_notification-mn-popups.obj `if test -f 'mn-popups.c'; then $(CYGPATH_W) 'mn-popups.c'; else $(CYGPATH_W) '$(srcdir)/mn-popups.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-popups.Tpo" "$(DEPDIR)/mail_notification-mn-popups.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-popups.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-popups.c' object='mail_notification-mn-popups.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-popups.obj `if test -f 'mn-popups.c'; then $(CYGPATH_W) 'mn-popups.c'; else $(CYGPATH_W) '$(srcdir)/mn-popups.c'; fi`
+
 mail_notification-mn-properties-dialog.o: mn-properties-dialog.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-properties-dialog.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-properties-dialog.Tpo" -c -o mail_notification-mn-properties-dialog.o `test -f 'mn-properties-dialog.c' || echo '$(srcdir)/'`mn-properties-dialog.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-properties-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-properties-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-properties-dialog.Tpo"; exit 1; fi
@@ -1549,6 +1676,20 @@ mail_notification-mn-standard-message-view.obj: mn-standard-message-view.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-standard-message-view.obj `if test -f 'mn-standard-message-view.c'; then $(CYGPATH_W) 'mn-standard-message-view.c'; else $(CYGPATH_W) '$(srcdir)/mn-standard-message-view.c'; fi`
 
+mail_notification-mn-test-mailbox.o: mn-test-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-test-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-test-mailbox.Tpo" -c -o mail_notification-mn-test-mailbox.o `test -f 'mn-test-mailbox.c' || echo '$(srcdir)/'`mn-test-mailbox.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-test-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-test-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-test-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-test-mailbox.c' object='mail_notification-mn-test-mailbox.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-test-mailbox.o `test -f 'mn-test-mailbox.c' || echo '$(srcdir)/'`mn-test-mailbox.c
+
+mail_notification-mn-test-mailbox.obj: mn-test-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-test-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-test-mailbox.Tpo" -c -o mail_notification-mn-test-mailbox.obj `if test -f 'mn-test-mailbox.c'; then $(CYGPATH_W) 'mn-test-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-test-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-test-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-test-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-test-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-test-mailbox.c' object='mail_notification-mn-test-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-test-mailbox.obj `if test -f 'mn-test-mailbox.c'; then $(CYGPATH_W) 'mn-test-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-test-mailbox.c'; fi`
+
 mail_notification-mn-text-table.o: mn-text-table.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-text-table.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-text-table.Tpo" -c -o mail_notification-mn-text-table.o `test -f 'mn-text-table.c' || echo '$(srcdir)/'`mn-text-table.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-text-table.Tpo" "$(DEPDIR)/mail_notification-mn-text-table.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-text-table.Tpo"; exit 1; fi
@@ -1591,6 +1732,34 @@ mail_notification-mn-mbox-mailbox-backend.obj: mn-mbox-mailbox-backend.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mbox-mailbox-backend.obj `if test -f 'mn-mbox-mailbox-backend.c'; then $(CYGPATH_W) 'mn-mbox-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-mbox-mailbox-backend.c'; fi`
 
+mail_notification-mn-mozilla-mailbox-backend.o: mn-mozilla-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mozilla-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mozilla-mailbox-backend.Tpo" -c -o mail_notification-mn-mozilla-mailbox-backend.o `test -f 'mn-mozilla-mailbox-backend.c' || echo '$(srcdir)/'`mn-mozilla-mailbox-backend.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mozilla-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-mozilla-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mozilla-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mozilla-mailbox-backend.c' object='mail_notification-mn-mozilla-mailbox-backend.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mozilla-mailbox-backend.o `test -f 'mn-mozilla-mailbox-backend.c' || echo '$(srcdir)/'`mn-mozilla-mailbox-backend.c
+
+mail_notification-mn-mozilla-mailbox-backend.obj: mn-mozilla-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mozilla-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mozilla-mailbox-backend.Tpo" -c -o mail_notification-mn-mozilla-mailbox-backend.obj `if test -f 'mn-mozilla-mailbox-backend.c'; then $(CYGPATH_W) 'mn-mozilla-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-mozilla-mailbox-backend.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mozilla-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-mozilla-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mozilla-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mozilla-mailbox-backend.c' object='mail_notification-mn-mozilla-mailbox-backend.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mozilla-mailbox-backend.obj `if test -f 'mn-mozilla-mailbox-backend.c'; then $(CYGPATH_W) 'mn-mozilla-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-mozilla-mailbox-backend.c'; fi`
+
+mail_notification-mn-base-mbox-mailbox-backend.o: mn-base-mbox-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-base-mbox-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-base-mbox-mailbox-backend.Tpo" -c -o mail_notification-mn-base-mbox-mailbox-backend.o `test -f 'mn-base-mbox-mailbox-backend.c' || echo '$(srcdir)/'`mn-base-mbox-mailbox-backend.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-base-mbox-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-base-mbox-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-base-mbox-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-base-mbox-mailbox-backend.c' object='mail_notification-mn-base-mbox-mailbox-backend.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-base-mbox-mailbox-backend.o `test -f 'mn-base-mbox-mailbox-backend.c' || echo '$(srcdir)/'`mn-base-mbox-mailbox-backend.c
+
+mail_notification-mn-base-mbox-mailbox-backend.obj: mn-base-mbox-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-base-mbox-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-base-mbox-mailbox-backend.Tpo" -c -o mail_notification-mn-base-mbox-mailbox-backend.obj `if test -f 'mn-base-mbox-mailbox-backend.c'; then $(CYGPATH_W) 'mn-base-mbox-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-base-mbox-mailbox-backend.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-base-mbox-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-base-mbox-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-base-mbox-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-base-mbox-mailbox-backend.c' object='mail_notification-mn-base-mbox-mailbox-backend.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-base-mbox-mailbox-backend.obj `if test -f 'mn-base-mbox-mailbox-backend.c'; then $(CYGPATH_W) 'mn-base-mbox-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-base-mbox-mailbox-backend.c'; fi`
+
 mail_notification-mn-mh-mailbox-backend.o: mn-mh-mailbox-backend.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mh-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mh-mailbox-backend.Tpo" -c -o mail_notification-mn-mh-mailbox-backend.o `test -f 'mn-mh-mailbox-backend.c' || echo '$(srcdir)/'`mn-mh-mailbox-backend.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mh-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-mh-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mh-mailbox-backend.Tpo"; exit 1; fi
@@ -1885,6 +2054,20 @@ mail_notification-mn-vfs-mailbox-backend.obj: mn-vfs-mailbox-backend.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-vfs-mailbox-backend.obj `if test -f 'mn-vfs-mailbox-backend.c'; then $(CYGPATH_W) 'mn-vfs-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-vfs-mailbox-backend.c'; fi`
 
+mail_notification-mn-vfs-message.o: mn-vfs-message.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-message.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-message.Tpo" -c -o mail_notification-mn-vfs-message.o `test -f 'mn-vfs-message.c' || echo '$(srcdir)/'`mn-vfs-message.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-message.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-message.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-message.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-message.c' object='mail_notification-mn-vfs-message.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-vfs-message.o `test -f 'mn-vfs-message.c' || echo '$(srcdir)/'`mn-vfs-message.c
+
+mail_notification-mn-vfs-message.obj: mn-vfs-message.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-message.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-message.Tpo" -c -o mail_notification-mn-vfs-message.obj `if test -f 'mn-vfs-message.c'; then $(CYGPATH_W) 'mn-vfs-message.c'; else $(CYGPATH_W) '$(srcdir)/mn-vfs-message.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-message.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-message.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-message.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-message.c' object='mail_notification-mn-vfs-message.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-vfs-message.obj `if test -f 'mn-vfs-message.c'; then $(CYGPATH_W) 'mn-vfs-message.c'; else $(CYGPATH_W) '$(srcdir)/mn-vfs-message.c'; fi`
+
 mail_notification-mn-reentrant-mailbox.o: mn-reentrant-mailbox.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-reentrant-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-reentrant-mailbox.Tpo" -c -o mail_notification-mn-reentrant-mailbox.o `test -f 'mn-reentrant-mailbox.c' || echo '$(srcdir)/'`mn-reentrant-mailbox.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-reentrant-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-reentrant-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-reentrant-mailbox.Tpo"; exit 1; fi
@@ -1955,19 +2138,33 @@ mail_notification-mn-sasl.obj: mn-sasl.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-sasl.obj `if test -f 'mn-sasl.c'; then $(CYGPATH_W) 'mn-sasl.c'; else $(CYGPATH_W) '$(srcdir)/mn-sasl.c'; fi`
 
-mail_notification-mn-corba-object.o: mn-corba-object.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-corba-object.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-corba-object.Tpo" -c -o mail_notification-mn-corba-object.o `test -f 'mn-corba-object.c' || echo '$(srcdir)/'`mn-corba-object.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-corba-object.Tpo" "$(DEPDIR)/mail_notification-mn-corba-object.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-corba-object.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-corba-object.c' object='mail_notification-mn-corba-object.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-evolution-glue-client.o: mn-evolution-glue-client.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-evolution-glue-client.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-glue-client.Tpo" -c -o mail_notification-mn-evolution-glue-client.o `test -f 'mn-evolution-glue-client.c' || echo '$(srcdir)/'`mn-evolution-glue-client.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-glue-client.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-glue-client.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-glue-client.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-glue-client.c' object='mail_notification-mn-evolution-glue-client.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-evolution-glue-client.o `test -f 'mn-evolution-glue-client.c' || echo '$(srcdir)/'`mn-evolution-glue-client.c
+
+mail_notification-mn-evolution-glue-client.obj: mn-evolution-glue-client.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-evolution-glue-client.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-glue-client.Tpo" -c -o mail_notification-mn-evolution-glue-client.obj `if test -f 'mn-evolution-glue-client.c'; then $(CYGPATH_W) 'mn-evolution-glue-client.c'; else $(CYGPATH_W) '$(srcdir)/mn-evolution-glue-client.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-glue-client.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-glue-client.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-glue-client.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-glue-client.c' object='mail_notification-mn-evolution-glue-client.obj' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-corba-object.o `test -f 'mn-corba-object.c' || echo '$(srcdir)/'`mn-corba-object.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-evolution-glue-client.obj `if test -f 'mn-evolution-glue-client.c'; then $(CYGPATH_W) 'mn-evolution-glue-client.c'; else $(CYGPATH_W) '$(srcdir)/mn-evolution-glue-client.c'; fi`
 
-mail_notification-mn-corba-object.obj: mn-corba-object.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-corba-object.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-corba-object.Tpo" -c -o mail_notification-mn-corba-object.obj `if test -f 'mn-corba-object.c'; then $(CYGPATH_W) 'mn-corba-object.c'; else $(CYGPATH_W) '$(srcdir)/mn-corba-object.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-corba-object.Tpo" "$(DEPDIR)/mail_notification-mn-corba-object.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-corba-object.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-corba-object.c' object='mail_notification-mn-corba-object.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-bonobo-unknown.o: mn-bonobo-unknown.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-bonobo-unknown.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-bonobo-unknown.Tpo" -c -o mail_notification-mn-bonobo-unknown.o `test -f 'mn-bonobo-unknown.c' || echo '$(srcdir)/'`mn-bonobo-unknown.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-bonobo-unknown.Tpo" "$(DEPDIR)/mail_notification-mn-bonobo-unknown.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-bonobo-unknown.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-bonobo-unknown.c' object='mail_notification-mn-bonobo-unknown.o' libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-corba-object.obj `if test -f 'mn-corba-object.c'; then $(CYGPATH_W) 'mn-corba-object.c'; else $(CYGPATH_W) '$(srcdir)/mn-corba-object.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-bonobo-unknown.o `test -f 'mn-bonobo-unknown.c' || echo '$(srcdir)/'`mn-bonobo-unknown.c
+
+mail_notification-mn-bonobo-unknown.obj: mn-bonobo-unknown.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-bonobo-unknown.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-bonobo-unknown.Tpo" -c -o mail_notification-mn-bonobo-unknown.obj `if test -f 'mn-bonobo-unknown.c'; then $(CYGPATH_W) 'mn-bonobo-unknown.c'; else $(CYGPATH_W) '$(srcdir)/mn-bonobo-unknown.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-bonobo-unknown.Tpo" "$(DEPDIR)/mail_notification-mn-bonobo-unknown.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-bonobo-unknown.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-bonobo-unknown.c' object='mail_notification-mn-bonobo-unknown.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-bonobo-unknown.obj `if test -f 'mn-bonobo-unknown.c'; then $(CYGPATH_W) 'mn-bonobo-unknown.c'; else $(CYGPATH_W) '$(srcdir)/mn-bonobo-unknown.c'; fi`
 
 mail_notification-mn-evolution-mailbox.o: mn-evolution-mailbox.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-evolution-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo" -c -o mail_notification-mn-evolution-mailbox.o `test -f 'mn-evolution-mailbox.c' || echo '$(srcdir)/'`mn-evolution-mailbox.c; \
@@ -1997,6 +2194,20 @@ mail_notification-mn-evolution-mailbox-properties.obj: mn-evolution-mailbox-prop
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-evolution-mailbox-properties.obj `if test -f 'mn-evolution-mailbox-properties.c'; then $(CYGPATH_W) 'mn-evolution-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-evolution-mailbox-properties.c'; fi`
 
+mail_notification-mn-evolution-message.o: mn-evolution-message.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-evolution-message.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-message.Tpo" -c -o mail_notification-mn-evolution-message.o `test -f 'mn-evolution-message.c' || echo '$(srcdir)/'`mn-evolution-message.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-message.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-message.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-message.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-message.c' object='mail_notification-mn-evolution-message.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-evolution-message.o `test -f 'mn-evolution-message.c' || echo '$(srcdir)/'`mn-evolution-message.c
+
+mail_notification-mn-evolution-message.obj: mn-evolution-message.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-evolution-message.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-message.Tpo" -c -o mail_notification-mn-evolution-message.obj `if test -f 'mn-evolution-message.c'; then $(CYGPATH_W) 'mn-evolution-message.c'; else $(CYGPATH_W) '$(srcdir)/mn-evolution-message.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-message.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-message.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-message.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-message.c' object='mail_notification-mn-evolution-message.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-evolution-message.obj `if test -f 'mn-evolution-message.c'; then $(CYGPATH_W) 'mn-evolution-message.c'; else $(CYGPATH_W) '$(srcdir)/mn-evolution-message.c'; fi`
+
 mail_notification-GNOME_MailNotification-common.o: GNOME_MailNotification-common.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification-common.o -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-common.Tpo" -c -o mail_notification-GNOME_MailNotification-common.o `test -f 'GNOME_MailNotification-common.c' || echo '$(srcdir)/'`GNOME_MailNotification-common.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-common.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification-common.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-common.Tpo"; exit 1; fi
diff --git a/src/mn-about-dialog.c b/src/mn-about-dialog.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-about-dialog.gob"
+#line 27 "mn-about-dialog.gob"
 
 #include <gnome.h>
 #include "mn-util.h"
@@ -93,7 +93,7 @@ GET_NEW_VARG (const char *first, ...)
 	return ret;
 }
 
-#line 33 "mn-about-dialog.gob"
+#line 34 "mn-about-dialog.gob"
 static void 
 mn_about_dialog_class_init (MNAboutDialogClass * class G_GNUC_UNUSED)
 #line 100 "mn-about-dialog.c"
@@ -103,7 +103,7 @@ mn_about_dialog_class_init (MNAboutDialogClass * class G_GNUC_UNUSED)
 	parent_class = g_type_class_ref (GTK_TYPE_ABOUT_DIALOG);
 
  {
-#line 34 "mn-about-dialog.gob"
+#line 35 "mn-about-dialog.gob"
 
     gtk_about_dialog_set_email_hook(self_activate_link_cb, "mailto:", NULL);
     gtk_about_dialog_set_url_hook(self_activate_link_cb, NULL, NULL);
@@ -112,18 +112,18 @@ mn_about_dialog_class_init (MNAboutDialogClass * class G_GNUC_UNUSED)
  }
 }
 #undef __GOB_FUNCTION__
-#line 39 "mn-about-dialog.gob"
+#line 40 "mn-about-dialog.gob"
 static void 
 mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
 #line 119 "mn-about-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:About:Dialog::init"
  {
-#line 40 "mn-about-dialog.gob"
+#line 41 "mn-about-dialog.gob"
 
     GtkAboutDialog *about = GTK_ABOUT_DIALOG(self);
-    const char *authors[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
-    const char *documenters[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
+    static const char *authors[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
+    static const char *documenters[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
     GdkPixbuf *logo;
 
     gtk_about_dialog_set_version(about, VERSION);
@@ -145,34 +145,31 @@ mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
 	gtk_about_dialog_set_logo(about, logo);
 	g_object_unref(logo);
       }
+
+    g_signal_connect(self, "response", G_CALLBACK(gtk_widget_destroy), NULL);
   
-#line 150 "mn-about-dialog.c"
+#line 152 "mn-about-dialog.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 67 "mn-about-dialog.gob"
+#line 70 "mn-about-dialog.gob"
 static void 
 mn_about_dialog_activate_link_cb (GtkAboutDialog * about, const char * link, gpointer data)
-#line 160 "mn-about-dialog.c"
+#line 162 "mn-about-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:About:Dialog::activate_link_cb"
 {
-#line 71 "mn-about-dialog.gob"
+#line 74 "mn-about-dialog.gob"
 	
-    GError *err = NULL;
     const char *prefix = data;
     char *url;
 
     url = prefix ? g_strconcat(prefix, link, NULL) : g_strdup(link);
-    if (! gnome_url_show(url, &err))
-      {
-        mn_error_dialog(GTK_WINDOW(about), _("Unable to open link"), "%s", err->message);
-	g_error_free(err);
-      }
+    mn_open_link(GTK_WINDOW(about), url);
     g_free(url);
   }}
-#line 178 "mn-about-dialog.c"
+#line 175 "mn-about-dialog.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-about-dialog.gob b/src/mn-about-dialog.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -39,8 +40,8 @@ class MN:About:Dialog from Gtk:About:Dialog
   init (self)
   {
     GtkAboutDialog *about = GTK_ABOUT_DIALOG(self);
-    const char *authors[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
-    const char *documenters[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
+    static const char *authors[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
+    static const char *documenters[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
     GdkPixbuf *logo;
 
     gtk_about_dialog_set_version(about, VERSION);
@@ -62,6 +63,8 @@ class MN:About:Dialog from Gtk:About:Dialog
 	gtk_about_dialog_set_logo(about, logo);
 	g_object_unref(logo);
       }
+
+    g_signal_connect(self, "response", G_CALLBACK(gtk_widget_destroy), NULL);
   }
 
   private void
@@ -69,16 +72,11 @@ class MN:About:Dialog from Gtk:About:Dialog
 		      const char *link,
 		      gpointer data)
   {
-    GError *err = NULL;
     const char *prefix = data;
     char *url;
 
     url = prefix ? g_strconcat(prefix, link, NULL) : g_strdup(link);
-    if (! gnome_url_show(url, &err))
-      {
-        mn_error_dialog(GTK_WINDOW(about), _("Unable to open link"), "%s", err->message);
-	g_error_free(err);
-      }
+    mn_open_link(GTK_WINDOW(about), url);
     g_free(url);
   }
 }
diff --git a/src/mn-auth-combo-box.c b/src/mn-auth-combo-box.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-auth-combo-box.gob"
+#line 26 "mn-auth-combo-box.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -141,14 +141,14 @@ mn_auth_combo_box_class_init (MNAuthComboBoxClass * c G_GNUC_UNUSED)
     }
 }
 #undef __GOB_FUNCTION__
-#line 88 "mn-auth-combo-box.gob"
+#line 89 "mn-auth-combo-box.gob"
 static void 
 mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
 #line 148 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::init"
  {
-#line 89 "mn-auth-combo-box.gob"
+#line 90 "mn-auth-combo-box.gob"
 
     GtkListStore *store;
     GtkCellRenderer *renderer;
@@ -160,10 +160,10 @@ mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
     renderer = gtk_cell_renderer_text_new();
     gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(self), renderer, TRUE);
     gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(self), renderer,
-				   "markup", COLUMN_LABEL,
+				   "text", COLUMN_LABEL,
 				   NULL);
 
-    self_append(self, NULL, _("<span style=\"italic\">autodetect</span>"));
+    self_append(self, NULL, _("Autodetect"));
 #if WITH_SASL
     if (mn_sasl_init(NULL))
       {
@@ -173,13 +173,8 @@ mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
 	if (mechanisms)
 	  {
 	    int i;
-
 	    for (i = 0; mechanisms[i]; i++)
-	      {
-		char *escaped = g_markup_escape_text(mechanisms[i], -1);
-		self_append(self, mechanisms[i], escaped);
-		g_free(escaped);
-	      }
+	      self_append(self, mechanisms[i], mechanisms[i]);
 	  }
       }
 #endif /* WITH_SASL */
@@ -189,7 +184,7 @@ mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
 
     self_set_active_mechanism(self, NULL);
   
-#line 193 "mn-auth-combo-box.c"
+#line 188 "mn-auth-combo-box.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -208,7 +203,7 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_ACTIVE_MECHANISM:
 		{
-#line 46 "mn-auth-combo-box.gob"
+#line 47 "mn-auth-combo-box.gob"
 
       const char *mechanism = g_value_get_string(VAL);
       GtkTreeModel *model;
@@ -237,7 +232,7 @@ ___object_set_property (GObject *object,
 	  valid = gtk_tree_model_iter_next(model, &iter);
 	}
     
-#line 241 "mn-auth-combo-box.c"
+#line 236 "mn-auth-combo-box.c"
 		}
 		break;
 	default:
@@ -266,7 +261,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_ACTIVE_MECHANISM:
 		{
-#line 75 "mn-auth-combo-box.gob"
+#line 76 "mn-auth-combo-box.gob"
 
       char *mechanism = NULL;
       GtkTreeIter iter;
@@ -279,7 +274,7 @@ ___object_get_property (GObject *object,
 
       g_value_take_string(VAL, mechanism);
     
-#line 283 "mn-auth-combo-box.c"
+#line 278 "mn-auth-combo-box.c"
 		}
 		break;
 	default:
@@ -295,41 +290,41 @@ ___object_get_property (GObject *object,
 #undef __GOB_FUNCTION__
 
 
-#line 75 "mn-auth-combo-box.gob"
+#line 76 "mn-auth-combo-box.gob"
 gchar * 
 mn_auth_combo_box_get_active_mechanism (MNAuthComboBox * self)
-#line 302 "mn-auth-combo-box.c"
+#line 297 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::get_active_mechanism"
 {
-#line 44 "mn-auth-combo-box.gob"
+#line 45 "mn-auth-combo-box.gob"
 		gchar* val; g_object_get (G_OBJECT (self), "active_mechanism", &val, NULL); return val;
 }}
-#line 309 "mn-auth-combo-box.c"
+#line 304 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
-#line 46 "mn-auth-combo-box.gob"
+#line 47 "mn-auth-combo-box.gob"
 void 
 mn_auth_combo_box_set_active_mechanism (MNAuthComboBox * self, gchar * val)
-#line 315 "mn-auth-combo-box.c"
+#line 310 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::set_active_mechanism"
 {
-#line 44 "mn-auth-combo-box.gob"
+#line 45 "mn-auth-combo-box.gob"
 		g_object_set (G_OBJECT (self), "active_mechanism", val, NULL);
 }}
-#line 322 "mn-auth-combo-box.c"
+#line 317 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
 
-#line 130 "mn-auth-combo-box.gob"
+#line 126 "mn-auth-combo-box.gob"
 static int 
 mn_auth_combo_box_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data)
-#line 329 "mn-auth-combo-box.c"
+#line 324 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::sort_cb"
 {
-#line 135 "mn-auth-combo-box.gob"
+#line 131 "mn-auth-combo-box.gob"
 	
     char *mechanism_a;
     char *label_a;
@@ -359,24 +354,24 @@ mn_auth_combo_box_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * 
 
     return coll;
   }}
-#line 363 "mn-auth-combo-box.c"
+#line 358 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
-#line 165 "mn-auth-combo-box.gob"
+#line 161 "mn-auth-combo-box.gob"
 void 
 mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const char * label)
-#line 369 "mn-auth-combo-box.c"
+#line 364 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::append"
-#line 165 "mn-auth-combo-box.gob"
+#line 161 "mn-auth-combo-box.gob"
 	g_return_if_fail (self != NULL);
-#line 165 "mn-auth-combo-box.gob"
+#line 161 "mn-auth-combo-box.gob"
 	g_return_if_fail (MN_IS_AUTH_COMBO_BOX (self));
-#line 165 "mn-auth-combo-box.gob"
+#line 161 "mn-auth-combo-box.gob"
 	g_return_if_fail (label != NULL);
-#line 378 "mn-auth-combo-box.c"
+#line 373 "mn-auth-combo-box.c"
 {
-#line 167 "mn-auth-combo-box.gob"
+#line 163 "mn-auth-combo-box.gob"
 	
     GtkTreeModel *model;
     GtkTreeIter iter;
@@ -389,19 +384,19 @@ mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const c
 		       COLUMN_LABEL, label,
 		       -1);
   }}
-#line 393 "mn-auth-combo-box.c"
+#line 388 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
-#line 180 "mn-auth-combo-box.gob"
+#line 176 "mn-auth-combo-box.gob"
 GtkWidget * 
 mn_auth_combo_box_new (void)
-#line 399 "mn-auth-combo-box.c"
+#line 394 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::new"
 {
-#line 182 "mn-auth-combo-box.gob"
+#line 178 "mn-auth-combo-box.gob"
 	
     return GTK_WIDGET(GET_NEW);
   }}
-#line 407 "mn-auth-combo-box.c"
+#line 402 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-auth-combo-box.gob b/src/mn-auth-combo-box.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -97,10 +98,10 @@ class MN:Auth:Combo:Box from Gtk:Combo:Box
     renderer = gtk_cell_renderer_text_new();
     gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(self), renderer, TRUE);
     gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(self), renderer,
-				   "markup", COLUMN_LABEL,
+				   "text", COLUMN_LABEL,
 				   NULL);
 
-    self_append(self, NULL, _("<span style=\"italic\">autodetect</span>"));
+    self_append(self, NULL, _("Autodetect"));
 #if WITH_SASL
     if (mn_sasl_init(NULL))
       {
@@ -110,13 +111,8 @@ class MN:Auth:Combo:Box from Gtk:Combo:Box
 	if (mechanisms)
 	  {
 	    int i;
-
 	    for (i = 0; mechanisms[i]; i++)
-	      {
-		char *escaped = g_markup_escape_text(mechanisms[i], -1);
-		self_append(self, mechanisms[i], escaped);
-		g_free(escaped);
-	      }
+	      self_append(self, mechanisms[i], mechanisms[i]);
 	  }
       }
 #endif /* WITH_SASL */
diff --git a/src/mn-authenticated-mailbox-private.h b/src/mn-authenticated-mailbox-private.h
@@ -10,7 +10,7 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNAuthenticatedMailboxPrivate {
-#line 39 "mn-authenticated-mailbox.gob"
+#line 40 "mn-authenticated-mailbox.gob"
 	gboolean checking;
 #line 16 "mn-authenticated-mailbox-private.h"
 };
diff --git a/src/mn-authenticated-mailbox-properties.c b/src/mn-authenticated-mailbox-properties.c
@@ -22,13 +22,14 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-authenticated-mailbox-properties.gob"
+#line 27 "mn-authenticated-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
 #include "mn-authenticated-mailbox.h"
+#include "mn-mailbox-properties-private.h"
 
-#line 32 "mn-authenticated-mailbox-properties.c"
+#line 33 "mn-authenticated-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_AUTHENTICATED_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_AUTHENTICATED_MAILBOX_PROPERTIES_CONST(x)
@@ -104,24 +105,28 @@ mn_authenticated_mailbox_properties_class_init (MNAuthenticatedMailboxProperties
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX_PROPERTIES);
 
-#line 90 "mn-authenticated-mailbox-properties.gob"
+#line 97 "mn-authenticated-mailbox-properties.gob"
 	mn_mailbox_properties_class->set_mailbox = ___3_mn_authenticated_mailbox_properties_set_mailbox;
-#line 100 "mn-authenticated-mailbox-properties.gob"
+#line 107 "mn-authenticated-mailbox-properties.gob"
 	mn_mailbox_properties_class->get_mailbox = ___4_mn_authenticated_mailbox_properties_get_mailbox;
-#line 112 "mn-authenticated-mailbox-properties.c"
+#line 113 "mn-authenticated-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
-#line 41 "mn-authenticated-mailbox-properties.gob"
+#line 44 "mn-authenticated-mailbox-properties.gob"
 static void 
 mn_authenticated_mailbox_properties_init (MNAuthenticatedMailboxProperties * self G_GNUC_UNUSED)
-#line 118 "mn-authenticated-mailbox-properties.c"
+#line 119 "mn-authenticated-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::init"
  {
-#line 42 "mn-authenticated-mailbox-properties.gob"
+#line 45 "mn-authenticated-mailbox-properties.gob"
 
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     const char *username;
 
+    /* translators: header capitalization */
+    self->account_vbox = mn_mailbox_properties_add_general_section(properties, _("Account"));
+
     self->username_vbox = self_field_new(self,
 					 _("_Username:"),
 					 &self->username_label,
@@ -138,30 +143,30 @@ mn_authenticated_mailbox_properties_init (MNAuthenticatedMailboxProperties * sel
 
     gtk_entry_set_visibility(GTK_ENTRY(self->password_entry), FALSE);
   
-#line 142 "mn-authenticated-mailbox-properties.c"
+#line 147 "mn-authenticated-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 62 "mn-authenticated-mailbox-properties.gob"
+#line 69 "mn-authenticated-mailbox-properties.gob"
 GtkWidget * 
 mn_authenticated_mailbox_properties_field_new (MNAuthenticatedMailboxProperties * self, const char * mnemonic, GtkWidget ** label, GtkWidget ** entry)
-#line 152 "mn-authenticated-mailbox-properties.c"
+#line 157 "mn-authenticated-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::field_new"
-#line 62 "mn-authenticated-mailbox-properties.gob"
+#line 69 "mn-authenticated-mailbox-properties.gob"
 	g_return_val_if_fail (self != NULL, (GtkWidget * )0);
-#line 62 "mn-authenticated-mailbox-properties.gob"
+#line 69 "mn-authenticated-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES (self), (GtkWidget * )0);
-#line 62 "mn-authenticated-mailbox-properties.gob"
+#line 69 "mn-authenticated-mailbox-properties.gob"
 	g_return_val_if_fail (mnemonic != NULL, (GtkWidget * )0);
-#line 62 "mn-authenticated-mailbox-properties.gob"
+#line 69 "mn-authenticated-mailbox-properties.gob"
 	g_return_val_if_fail (entry != NULL, (GtkWidget * )0);
-#line 163 "mn-authenticated-mailbox-properties.c"
+#line 168 "mn-authenticated-mailbox-properties.c"
 {
-#line 67 "mn-authenticated-mailbox-properties.gob"
+#line 74 "mn-authenticated-mailbox-properties.gob"
 	
     GtkWidget *hbox;
     GtkWidget *_label;
@@ -184,20 +189,20 @@ mn_authenticated_mailbox_properties_field_new (MNAuthenticatedMailboxProperties 
 
     return hbox;
   }}
-#line 188 "mn-authenticated-mailbox-properties.c"
+#line 193 "mn-authenticated-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 90 "mn-authenticated-mailbox-properties.gob"
+#line 97 "mn-authenticated-mailbox-properties.gob"
 static void 
 ___3_mn_authenticated_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 194 "mn-authenticated-mailbox-properties.c"
+#line 199 "mn-authenticated-mailbox-properties.c"
 #define PARENT_HANDLER(___properties,___mailbox) \
 	{ if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::set_mailbox"
 {
-#line 92 "mn-authenticated-mailbox-properties.gob"
+#line 99 "mn-authenticated-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(mailbox);
@@ -205,14 +210,14 @@ ___3_mn_authenticated_mailbox_properties_set_mailbox (MNMailboxProperties * prop
     gtk_entry_set_text(GTK_ENTRY(self->username_entry), auth_mailbox->username ? auth_mailbox->username : "");
     gtk_entry_set_text(GTK_ENTRY(self->password_entry), auth_mailbox->password ? auth_mailbox->password : "");
   }}
-#line 209 "mn-authenticated-mailbox-properties.c"
+#line 214 "mn-authenticated-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 100 "mn-authenticated-mailbox-properties.gob"
+#line 107 "mn-authenticated-mailbox-properties.gob"
 static MNMailbox * 
 ___4_mn_authenticated_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
-#line 216 "mn-authenticated-mailbox-properties.c"
+#line 221 "mn-authenticated-mailbox-properties.c"
 #define PARENT_HANDLER(___properties) \
 	((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \
@@ -220,7 +225,7 @@ ___4_mn_authenticated_mailbox_properties_get_mailbox (MNMailboxProperties * prop
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::get_mailbox"
 {
-#line 102 "mn-authenticated-mailbox-properties.gob"
+#line 109 "mn-authenticated-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNMailbox *mailbox;
@@ -239,23 +244,23 @@ ___4_mn_authenticated_mailbox_properties_get_mailbox (MNMailboxProperties * prop
 
     return mailbox;
   }}
-#line 243 "mn-authenticated-mailbox-properties.c"
+#line 248 "mn-authenticated-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 121 "mn-authenticated-mailbox-properties.gob"
+#line 128 "mn-authenticated-mailbox-properties.gob"
 void 
 mn_authenticated_mailbox_properties_get_contents (MNAuthenticatedMailboxProperties * self, const char ** username, const char ** password)
-#line 250 "mn-authenticated-mailbox-properties.c"
+#line 255 "mn-authenticated-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::get_contents"
-#line 121 "mn-authenticated-mailbox-properties.gob"
+#line 128 "mn-authenticated-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 121 "mn-authenticated-mailbox-properties.gob"
+#line 128 "mn-authenticated-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES (self));
-#line 257 "mn-authenticated-mailbox-properties.c"
+#line 262 "mn-authenticated-mailbox-properties.c"
 {
-#line 125 "mn-authenticated-mailbox-properties.gob"
+#line 132 "mn-authenticated-mailbox-properties.gob"
 	
     if (username)
       {
@@ -272,5 +277,5 @@ mn_authenticated_mailbox_properties_get_contents (MNAuthenticatedMailboxProperti
 	*password = *_password ? _password : NULL;
       }
   }}
-#line 276 "mn-authenticated-mailbox-properties.c"
+#line 281 "mn-authenticated-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-authenticated-mailbox-properties.gob b/src/mn-authenticated-mailbox-properties.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -27,10 +28,12 @@ requires 2.0.14
 #include "config.h"
 #include <glib/gi18n.h>
 #include "mn-authenticated-mailbox.h"
+#include "mn-mailbox-properties-private.h"
 %}
 
 class MN:Authenticated:Mailbox:Properties from MN:Mailbox:Properties (abstract)
 {
+  protected GtkWidget *account_vbox;
   protected GtkWidget *username_vbox;
   protected GtkWidget *username_label;
   protected GtkWidget *username_entry;
@@ -40,8 +43,12 @@ class MN:Authenticated:Mailbox:Properties from MN:Mailbox:Properties (abstract)
 
   init (self)
   {
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     const char *username;
 
+    /* translators: header capitalization */
+    self->account_vbox = mn_mailbox_properties_add_general_section(properties, _("Account"));
+
     self->username_vbox = self_field_new(self,
 					 _("_Username:"),
 					 &self->username_label,
diff --git a/src/mn-authenticated-mailbox-properties.h b/src/mn-authenticated-mailbox-properties.h
@@ -36,6 +36,7 @@ typedef struct _MNAuthenticatedMailboxProperties MNAuthenticatedMailboxPropertie
 struct _MNAuthenticatedMailboxProperties {
 	MNMailboxProperties __parent__;
 	/*< private >*/
+	GtkWidget * account_vbox; /* protected */
 	GtkWidget * username_vbox; /* protected */
 	GtkWidget * username_label; /* protected */
 	GtkWidget * username_entry; /* protected */
diff --git a/src/mn-authenticated-mailbox.c b/src/mn-authenticated-mailbox.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-authenticated-mailbox.gob"
+#line 26 "mn-authenticated-mailbox.gob"
 
 #include "config.h"
 #include "mn-mailbox-private.h"
@@ -114,10 +114,10 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 33 "mn-authenticated-mailbox.gob"
+#line 34 "mn-authenticated-mailbox.gob"
 	if(self->username) { g_free ((gpointer) self->username); self->username = NULL; }
 #line 120 "mn-authenticated-mailbox.c"
-#line 36 "mn-authenticated-mailbox.gob"
+#line 37 "mn-authenticated-mailbox.gob"
 	if(self->password) { g_free ((gpointer) self->password); self->password = NULL; }
 #line 123 "mn-authenticated-mailbox.c"
 }
@@ -141,7 +141,7 @@ mn_authenticated_mailbox_class_init (MNAuthenticatedMailboxClass * c G_GNUC_UNUS
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 41 "mn-authenticated-mailbox.gob"
+#line 42 "mn-authenticated-mailbox.gob"
 	mn_mailbox_class->check = ___1_mn_authenticated_mailbox_check;
 #line 147 "mn-authenticated-mailbox.c"
 	c->authenticated_check = NULL;
@@ -187,14 +187,14 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_USERNAME:
 		{
-#line 34 "mn-authenticated-mailbox.gob"
+#line 35 "mn-authenticated-mailbox.gob"
 { char *old = self->username; self->username = g_value_dup_string (VAL); g_free (old); }
 #line 193 "mn-authenticated-mailbox.c"
 		}
 		break;
 	case PROP_PASSWORD:
 		{
-#line 37 "mn-authenticated-mailbox.gob"
+#line 38 "mn-authenticated-mailbox.gob"
 { char *old = self->password; self->password = g_value_dup_string (VAL); g_free (old); }
 #line 200 "mn-authenticated-mailbox.c"
 		}
@@ -225,14 +225,14 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_USERNAME:
 		{
-#line 34 "mn-authenticated-mailbox.gob"
+#line 35 "mn-authenticated-mailbox.gob"
 g_value_set_string (VAL, self->username);
 #line 231 "mn-authenticated-mailbox.c"
 		}
 		break;
 	case PROP_PASSWORD:
 		{
-#line 37 "mn-authenticated-mailbox.gob"
+#line 38 "mn-authenticated-mailbox.gob"
 g_value_set_string (VAL, self->password);
 #line 238 "mn-authenticated-mailbox.c"
 		}
@@ -251,7 +251,7 @@ g_value_set_string (VAL, self->password);
 
 
 
-#line 41 "mn-authenticated-mailbox.gob"
+#line 42 "mn-authenticated-mailbox.gob"
 static void 
 ___1_mn_authenticated_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 258 "mn-authenticated-mailbox.c"
@@ -261,7 +261,7 @@ ___1_mn_authenticated_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::check"
 {
-#line 43 "mn-authenticated-mailbox.gob"
+#line 44 "mn-authenticated-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -280,19 +280,19 @@ ___1_mn_authenticated_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 58 "mn-authenticated-mailbox.gob"
+#line 59 "mn-authenticated-mailbox.gob"
 static void 
 mn_authenticated_mailbox_check_thread_cb (MNAuthenticatedMailbox * self)
 #line 287 "mn-authenticated-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::check_thread_cb"
-#line 58 "mn-authenticated-mailbox.gob"
+#line 59 "mn-authenticated-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 58 "mn-authenticated-mailbox.gob"
+#line 59 "mn-authenticated-mailbox.gob"
 	g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self));
 #line 294 "mn-authenticated-mailbox.c"
 {
-#line 60 "mn-authenticated-mailbox.gob"
+#line 61 "mn-authenticated-mailbox.gob"
 	
     self_authenticated_check(self);
 
@@ -307,15 +307,15 @@ mn_authenticated_mailbox_check_thread_cb (MNAuthenticatedMailbox * self)
 #line 308 "mn-authenticated-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 72 "mn-authenticated-mailbox.gob"
+#line 73 "mn-authenticated-mailbox.gob"
 static void 
 mn_authenticated_mailbox_authenticated_check (MNAuthenticatedMailbox * self)
 #line 314 "mn-authenticated-mailbox.c"
 {
 	MNAuthenticatedMailboxClass *klass;
-#line 72 "mn-authenticated-mailbox.gob"
+#line 73 "mn-authenticated-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 72 "mn-authenticated-mailbox.gob"
+#line 73 "mn-authenticated-mailbox.gob"
 	g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self));
 #line 321 "mn-authenticated-mailbox.c"
 	klass = MN_AUTHENTICATED_MAILBOX_GET_CLASS(self);
diff --git a/src/mn-authenticated-mailbox.gob b/src/mn-authenticated-mailbox.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
diff --git a/src/mn-autodetect-mailbox-properties-private.h b/src/mn-autodetect-mailbox-properties-private.h
@@ -10,9 +10,9 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNAutodetectMailboxPropertiesPrivate {
-#line 44 "mn-autodetect-mailbox-properties.gob"
-	GtkWidget * location_entry;
 #line 45 "mn-autodetect-mailbox-properties.gob"
+	GtkWidget * location_entry;
+#line 46 "mn-autodetect-mailbox-properties.gob"
 	GtkWidget * chooser;
 #line 18 "mn-autodetect-mailbox-properties-private.h"
 };
diff --git a/src/mn-autodetect-mailbox-properties.c b/src/mn-autodetect-mailbox-properties.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-autodetect-mailbox-properties.gob"
+#line 27 "mn-autodetect-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -31,7 +31,7 @@
 #include "mn-mailbox-properties-private.h"
 #include "mn-util.h"
 #include "mn-properties-dialog.h"
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-custom-vfs-mailbox.h"
 #endif
 #include "mn-stock.h"
@@ -130,7 +130,7 @@ ___finalize(GObject *obj_self)
 }
 #undef __GOB_FUNCTION__
 
-#line 103 "mn-autodetect-mailbox-properties.gob"
+#line 104 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_class_init (MNAutodetectMailboxPropertiesClass * class G_GNUC_UNUSED)
 #line 137 "mn-autodetect-mailbox-properties.c"
@@ -143,9 +143,9 @@ mn_autodetect_mailbox_properties_class_init (MNAutodetectMailboxPropertiesClass 
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX_PROPERTIES);
 
-#line 222 "mn-autodetect-mailbox-properties.gob"
+#line 226 "mn-autodetect-mailbox-properties.gob"
 	mn_mailbox_properties_class->set_mailbox = ___6_mn_autodetect_mailbox_properties_set_mailbox;
-#line 234 "mn-autodetect-mailbox-properties.gob"
+#line 238 "mn-autodetect-mailbox-properties.gob"
 	mn_mailbox_properties_class->get_mailbox = ___7_mn_autodetect_mailbox_properties_get_mailbox;
 #line 151 "mn-autodetect-mailbox-properties.c"
 	g_object_class->finalize = ___finalize;
@@ -162,24 +162,23 @@ mn_autodetect_mailbox_properties_class_init (MNAutodetectMailboxPropertiesClass 
 		"default_check_delay");
     }
  {
-#line 104 "mn-autodetect-mailbox-properties.gob"
+#line 105 "mn-autodetect-mailbox-properties.gob"
 
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
 
     p_class->type = "custom-vfs";
     p_class->stock_id = MN_STOCK_UNKNOWN;
-    p_class->combo_label = _("<span style=\"italic\">autodetect</span>");
-    p_class->section_label = _("Location");
+    p_class->combo_label = _("Autodetect");
     p_class->no_check_delay_unless_complete = TRUE;
   
-#line 176 "mn-autodetect-mailbox-properties.c"
+#line 175 "mn-autodetect-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
 #line 114 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * self G_GNUC_UNUSED)
-#line 183 "mn-autodetect-mailbox-properties.c"
+#line 182 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES,MNAutodetectMailboxPropertiesPrivate);
@@ -187,11 +186,15 @@ mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * self G_GN
 #line 115 "mn-autodetect-mailbox-properties.gob"
 
     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
+    GtkWidget *location_vbox;
     GtkWidget *outer_hbox;
     GtkWidget *hbox;
     GtkWidget *label;
     GtkWidget *button;
 
+    /* translators: header capitalization */
+    location_vbox = mn_mailbox_properties_add_general_section(properties, _("Location"));
+
     label = gtk_label_new_with_mnemonic(_("_Location:"));
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
 
@@ -210,7 +213,7 @@ mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * self G_GN
 
     gtk_box_pack_start(GTK_BOX(outer_hbox), label, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(outer_hbox), hbox, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(self), outer_hbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(location_vbox), outer_hbox, FALSE, FALSE, 0);
 
     gtk_widget_show_all(outer_hbox);
 
@@ -226,7 +229,7 @@ mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * self G_GN
 
     g_signal_connect(button, "clicked", G_CALLBACK(self_browse_clicked_h), self);
   
-#line 230 "mn-autodetect-mailbox-properties.c"
+#line 233 "mn-autodetect-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -245,7 +248,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 49 "mn-autodetect-mailbox-properties.gob"
+#line 50 "mn-autodetect-mailbox-properties.gob"
 
       const char *location;
       gboolean complete = FALSE;
@@ -265,12 +268,12 @@ ___object_get_property (GObject *object,
 
       g_value_set_boolean(VAL, complete);
     
-#line 269 "mn-autodetect-mailbox-properties.c"
+#line 272 "mn-autodetect-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_NAME:
 		{
-#line 71 "mn-autodetect-mailbox-properties.gob"
+#line 72 "mn-autodetect-mailbox-properties.gob"
 
       char *name = NULL;
       MNMailbox *mailbox;
@@ -285,12 +288,12 @@ ___object_get_property (GObject *object,
 
       g_value_take_string(VAL, name);
     
-#line 289 "mn-autodetect-mailbox-properties.c"
+#line 292 "mn-autodetect-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_CHECK_DELAY:
 		{
-#line 88 "mn-autodetect-mailbox-properties.gob"
+#line 89 "mn-autodetect-mailbox-properties.gob"
 
       int check_delay = -1;
       MNMailbox *mailbox;
@@ -305,7 +308,7 @@ ___object_get_property (GObject *object,
 
       g_value_set_int(VAL, check_delay);
     
-#line 309 "mn-autodetect-mailbox-properties.c"
+#line 312 "mn-autodetect-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -322,14 +325,14 @@ ___object_get_property (GObject *object,
 
 
 
-#line 157 "mn-autodetect-mailbox-properties.gob"
+#line 161 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer user_data)
-#line 329 "mn-autodetect-mailbox-properties.c"
+#line 332 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::browse_clicked_h"
 {
-#line 159 "mn-autodetect-mailbox-properties.gob"
+#line 163 "mn-autodetect-mailbox-properties.gob"
 	
     Self *self = user_data;
     GtkWidget *toplevel;
@@ -369,32 +372,32 @@ mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer 
 
     gtk_widget_show(selfp->chooser);
   }}
-#line 373 "mn-autodetect-mailbox-properties.c"
+#line 376 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 199 "mn-autodetect-mailbox-properties.gob"
+#line 203 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_current_folder_changed_h (GtkFileChooser * chooser, gpointer user_data)
-#line 379 "mn-autodetect-mailbox-properties.c"
+#line 382 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::current_folder_changed_h"
 {
-#line 201 "mn-autodetect-mailbox-properties.gob"
+#line 205 "mn-autodetect-mailbox-properties.gob"
 	
     g_free(current_folder_uri);
     current_folder_uri = gtk_file_chooser_get_current_folder_uri(chooser);
   }}
-#line 388 "mn-autodetect-mailbox-properties.c"
+#line 391 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 206 "mn-autodetect-mailbox-properties.gob"
+#line 210 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_chooser_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 394 "mn-autodetect-mailbox-properties.c"
+#line 397 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::chooser_response_h"
 {
-#line 208 "mn-autodetect-mailbox-properties.gob"
+#line 212 "mn-autodetect-mailbox-properties.gob"
 	
     if (response == 1)
       {
@@ -408,22 +411,22 @@ mn_autodetect_mailbox_properties_chooser_response_h (GtkDialog * dialog, int res
 
     gtk_widget_destroy(GTK_WIDGET(dialog));
   }}
-#line 412 "mn-autodetect-mailbox-properties.c"
+#line 415 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 222 "mn-autodetect-mailbox-properties.gob"
+#line 226 "mn-autodetect-mailbox-properties.gob"
 static void 
 ___6_mn_autodetect_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 418 "mn-autodetect-mailbox-properties.c"
+#line 421 "mn-autodetect-mailbox-properties.c"
 #define PARENT_HANDLER(___properties,___mailbox) \
 	{ if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::set_mailbox"
 {
-#line 224 "mn-autodetect-mailbox-properties.gob"
+#line 228 "mn-autodetect-mailbox-properties.gob"
 	
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     g_return_if_fail(MN_IS_CUSTOM_VFS_MAILBOX(mailbox));
 
     gtk_entry_set_text(GTK_ENTRY(SELF(properties)->_priv->location_entry), MN_CUSTOM_VFS_MAILBOX(mailbox)->uri);
@@ -431,14 +434,14 @@ ___6_mn_autodetect_mailbox_properties_set_mailbox (MNMailboxProperties * propert
     g_assert_not_reached();
 #endif
   }}
-#line 435 "mn-autodetect-mailbox-properties.c"
+#line 438 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 234 "mn-autodetect-mailbox-properties.gob"
+#line 238 "mn-autodetect-mailbox-properties.gob"
 static MNMailbox * 
 ___7_mn_autodetect_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
-#line 442 "mn-autodetect-mailbox-properties.c"
+#line 445 "mn-autodetect-mailbox-properties.c"
 #define PARENT_HANDLER(___properties) \
 	((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \
@@ -446,13 +449,13 @@ ___7_mn_autodetect_mailbox_properties_get_mailbox (MNMailboxProperties * propert
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::get_mailbox"
 {
-#line 236 "mn-autodetect-mailbox-properties.gob"
+#line 240 "mn-autodetect-mailbox-properties.gob"
 	
     const char *uri;
 
     uri = gtk_entry_get_text(GTK_ENTRY(SELF(properties)->_priv->location_entry));
     return mn_mailbox_new_from_uri(uri);
   }}
-#line 457 "mn-autodetect-mailbox-properties.c"
+#line 460 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-autodetect-mailbox-properties.gob b/src/mn-autodetect-mailbox-properties.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -31,7 +32,7 @@ requires 2.0.14
 #include "mn-mailbox-properties-private.h"
 #include "mn-util.h"
 #include "mn-properties-dialog.h"
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-custom-vfs-mailbox.h"
 #endif
 #include "mn-stock.h"
@@ -106,19 +107,22 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
 
     p_class->type = "custom-vfs";
     p_class->stock_id = MN_STOCK_UNKNOWN;
-    p_class->combo_label = _("<span style=\"italic\">autodetect</span>");
-    p_class->section_label = _("Location");
+    p_class->combo_label = _("Autodetect");
     p_class->no_check_delay_unless_complete = TRUE;
   }
 
   init (self)
   {
     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
+    GtkWidget *location_vbox;
     GtkWidget *outer_hbox;
     GtkWidget *hbox;
     GtkWidget *label;
     GtkWidget *button;
 
+    /* translators: header capitalization */
+    location_vbox = mn_mailbox_properties_add_general_section(properties, _("Location"));
+
     label = gtk_label_new_with_mnemonic(_("_Location:"));
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
 
@@ -137,7 +141,7 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
 
     gtk_box_pack_start(GTK_BOX(outer_hbox), label, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(outer_hbox), hbox, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(self), outer_hbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(location_vbox), outer_hbox, FALSE, FALSE, 0);
 
     gtk_widget_show_all(outer_hbox);
 
@@ -222,7 +226,7 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
   override (MN:Mailbox:Properties) void
     set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox)
   {
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     g_return_if_fail(MN_IS_CUSTOM_VFS_MAILBOX(mailbox));
 
     gtk_entry_set_text(GTK_ENTRY(SELF(properties)->_priv->location_entry), MN_CUSTOM_VFS_MAILBOX(mailbox)->uri);
diff --git a/src/mn-automation.c b/src/mn-automation.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-automation.gob"
+#line 27 "mn-automation.gob"
 
 #include "mn-shell.h"
 
@@ -44,10 +44,10 @@ typedef MNAutomationClass SelfClass;
 static void mn_automation_init (MNAutomation * o) G_GNUC_UNUSED;
 static void mn_automation_class_init (MNAutomationClass * c) G_GNUC_UNUSED;
 static CORBA_boolean mn_automation_hasMailboxes (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
+static CORBA_string mn_automation_getSummary (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
 static void mn_automation_update (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;
 static void mn_automation_quit (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
@@ -55,10 +55,10 @@ static BonoboObjectClass *parent_class = NULL;
 
 /* Short form macros */
 #define self_hasMailboxes mn_automation_hasMailboxes
+#define self_getSummary mn_automation_getSummary
 #define self_update mn_automation_update
 #define self_displayProperties mn_automation_displayProperties
 #define self_displayAbout mn_automation_displayAbout
-#define self_closePopup mn_automation_closePopup
 #define self_quit mn_automation_quit
 #define self_new mn_automation_new
 GType
@@ -120,17 +120,17 @@ mn_automation_class_init (MNAutomationClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT);
 
-#line 32 "mn-automation.gob"
+#line 33 "mn-automation.gob"
 	c->_epv.hasMailboxes = self_hasMailboxes;
-#line 39 "mn-automation.gob"
+#line 40 "mn-automation.gob"
+	c->_epv.getSummary = self_getSummary;
+#line 55 "mn-automation.gob"
 	c->_epv.update = self_update;
-#line 46 "mn-automation.gob"
+#line 62 "mn-automation.gob"
 	c->_epv.displayProperties = self_displayProperties;
-#line 53 "mn-automation.gob"
+#line 69 "mn-automation.gob"
 	c->_epv.displayAbout = self_displayAbout;
-#line 60 "mn-automation.gob"
-	c->_epv.closePopup = self_closePopup;
-#line 67 "mn-automation.gob"
+#line 76 "mn-automation.gob"
 	c->_epv.quit = self_quit;
 #line 136 "mn-automation.c"
 }
@@ -138,14 +138,14 @@ mn_automation_class_init (MNAutomationClass * c G_GNUC_UNUSED)
 
 
 
-#line 32 "mn-automation.gob"
+#line 33 "mn-automation.gob"
 static CORBA_boolean 
 mn_automation_hasMailboxes (PortableServer_Servant servant, CORBA_Environment * env)
 #line 145 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::hasMailboxes"
 {
-#line 34 "mn-automation.gob"
+#line 35 "mn-automation.gob"
 	
     g_assert(mn_shell != NULL);
     return mn_shell->mailboxes->list != NULL ? CORBA_TRUE : CORBA_FALSE;
@@ -153,91 +153,99 @@ mn_automation_hasMailboxes (PortableServer_Servant servant, CORBA_Environment * 
 #line 154 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
-#line 39 "mn-automation.gob"
+#line 40 "mn-automation.gob"
+static CORBA_string 
+mn_automation_getSummary (PortableServer_Servant servant, CORBA_Environment * env)
+#line 160 "mn-automation.c"
+{
+#define __GOB_FUNCTION__ "MN:Automation::getSummary"
+{
+#line 42 "mn-automation.gob"
+	
+    char *summary;
+    CORBA_string csummary;
+
+    g_assert(mn_shell != NULL);
+
+    summary = mn_shell_get_summary(mn_shell);
+    csummary = CORBA_string_dup(summary);
+    g_free(summary);
+
+    return csummary;
+  }}
+#line 177 "mn-automation.c"
+#undef __GOB_FUNCTION__
+
+#line 55 "mn-automation.gob"
 static void 
 mn_automation_update (PortableServer_Servant servant, CORBA_Environment * env)
-#line 160 "mn-automation.c"
+#line 183 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::update"
 {
-#line 41 "mn-automation.gob"
+#line 57 "mn-automation.gob"
 	
     g_assert(mn_shell != NULL);
     mn_mailboxes_check(mn_shell->mailboxes);
   }}
-#line 169 "mn-automation.c"
+#line 192 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
-#line 46 "mn-automation.gob"
+#line 62 "mn-automation.gob"
 static void 
 mn_automation_displayProperties (PortableServer_Servant servant, CORBA_Environment * env)
-#line 175 "mn-automation.c"
+#line 198 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::displayProperties"
 {
-#line 48 "mn-automation.gob"
+#line 64 "mn-automation.gob"
 	
     g_assert(mn_shell != NULL);
     mn_shell_display_properties_dialog(mn_shell);
   }}
-#line 184 "mn-automation.c"
+#line 207 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
-#line 53 "mn-automation.gob"
+#line 69 "mn-automation.gob"
 static void 
 mn_automation_displayAbout (PortableServer_Servant servant, CORBA_Environment * env)
-#line 190 "mn-automation.c"
+#line 213 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::displayAbout"
 {
-#line 55 "mn-automation.gob"
+#line 71 "mn-automation.gob"
 	
     g_assert(mn_shell != NULL);
     mn_shell_display_about_dialog(mn_shell);
   }}
-#line 199 "mn-automation.c"
+#line 222 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
-#line 60 "mn-automation.gob"
-static void 
-mn_automation_closePopup (PortableServer_Servant servant, CORBA_Environment * env)
-#line 205 "mn-automation.c"
-{
-#define __GOB_FUNCTION__ "MN:Automation::closePopup"
-{
-#line 62 "mn-automation.gob"
-	
-    g_assert(mn_shell != NULL);
-    mn_shell_close_mail_summary_popup(mn_shell);
-  }}
-#line 214 "mn-automation.c"
-#undef __GOB_FUNCTION__
-
-#line 67 "mn-automation.gob"
+#line 76 "mn-automation.gob"
 static void 
 mn_automation_quit (PortableServer_Servant servant, CORBA_Environment * env)
-#line 220 "mn-automation.c"
+#line 228 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::quit"
 {
-#line 69 "mn-automation.gob"
+#line 78 "mn-automation.gob"
 	
     g_assert(mn_shell != NULL);
     g_object_unref(mn_shell);
   }}
-#line 229 "mn-automation.c"
+#line 237 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
-#line 74 "mn-automation.gob"
+#line 83 "mn-automation.gob"
 MNAutomation * 
 mn_automation_new (void)
-#line 235 "mn-automation.c"
+#line 243 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::new"
 {
-#line 76 "mn-automation.gob"
+#line 85 "mn-automation.gob"
 	
     return GET_NEW;
   }}
-#line 243 "mn-automation.c"
+#line 251 "mn-automation.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-automation.gob b/src/mn-automation.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -36,6 +37,21 @@ class MN:Automation from Bonobo:Object (BonoboObject GNOME_MailNotification_Auto
     return mn_shell->mailboxes->list != NULL ? CORBA_TRUE : CORBA_FALSE;
   }
 
+  BonoboObject private CORBA_string
+    getSummary (PortableServer_Servant servant, CORBA_Environment *env)
+  {
+    char *summary;
+    CORBA_string csummary;
+
+    g_assert(mn_shell != NULL);
+
+    summary = mn_shell_get_summary(mn_shell);
+    csummary = CORBA_string_dup(summary);
+    g_free(summary);
+
+    return csummary;
+  }
+
   BonoboObject private void
     update (PortableServer_Servant servant, CORBA_Environment *env)
   {
@@ -58,13 +74,6 @@ class MN:Automation from Bonobo:Object (BonoboObject GNOME_MailNotification_Auto
   }
 
   BonoboObject private void
-    closePopup (PortableServer_Servant servant, CORBA_Environment *env)
-  {
-    g_assert(mn_shell != NULL);
-    mn_shell_close_mail_summary_popup(mn_shell);
-  }
-
-  BonoboObject private void
     quit (PortableServer_Servant servant, CORBA_Environment *env)
   {
     g_assert(mn_shell != NULL);
diff --git a/src/mn-base-mbox-mailbox-backend-private.h b/src/mn-base-mbox-mailbox-backend-private.h
@@ -0,0 +1,30 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_BASE_MBOX_MAILBOX_BACKEND_PRIVATE_H__
+#define __MN_BASE_MBOX_MAILBOX_BACKEND_PRIVATE_H__
+
+#include "mn-base-mbox-mailbox-backend.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct _MNBaseMboxMailboxBackendPrivate {
+#line 50 "mn-base-mbox-mailbox-backend.gob"
+	GnomeVFSURI * uri;
+#line 51 "mn-base-mbox-mailbox-backend.gob"
+	GnomeVFSFileSize last_size;
+#line 52 "mn-base-mbox-mailbox-backend.gob"
+	time_t last_mtime;
+#line 53 "mn-base-mbox-mailbox-backend.gob"
+	time_t last_ctime;
+#line 55 "mn-base-mbox-mailbox-backend.gob"
+	GMutex * mutex;
+#line 24 "mn-base-mbox-mailbox-backend-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-base-mbox-mailbox-backend.c b/src/mn-base-mbox-mailbox-backend.c
@@ -0,0 +1,596 @@
+/* Generated by GOB (v2.0.14)   (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 14
+
+#define selfp (self->_priv)
+
+#include "mn-base-mbox-mailbox-backend.h"
+
+#include "mn-base-mbox-mailbox-backend-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 28 "mn-base-mbox-mailbox-backend.gob"
+
+#include "config.h"
+#include <string.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include "mn-mailbox-private.h"
+#include "mn-reentrant-mailbox-private.h"
+#include "mn-vfs-mailbox-backend-private.h"
+#include "mn-message-mime.h"
+#include "mn-gmime-stream-vfs.h"
+#include "mn-util.h"
+#include "mn-vfs.h"
+#if WITH_MBOX
+#include "mn-mbox-mailbox-backend.h"
+#endif
+#if WITH_MOZILLA
+#include "mn-mozilla-mailbox-backend.h"
+#endif
+
+#line 44 "mn-base-mbox-mailbox-backend.c"
+/* self casting macros */
+#define SELF(x) MN_BASE_MBOX_MAILBOX_BACKEND(x)
+#define SELF_CONST(x) MN_BASE_MBOX_MAILBOX_BACKEND_CONST(x)
+#define IS_SELF(x) MN_IS_BASE_MBOX_MAILBOX_BACKEND(x)
+#define TYPE_SELF MN_TYPE_BASE_MBOX_MAILBOX_BACKEND
+#define SELF_CLASS(x) MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_BASE_MBOX_MAILBOX_BACKEND_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNBaseMboxMailboxBackend Self;
+typedef MNBaseMboxMailboxBackendClass SelfClass;
+
+/* here are local prototypes */
+static void mn_base_mbox_mailbox_backend_init (MNBaseMboxMailboxBackend * o) G_GNUC_UNUSED;
+static void mn_base_mbox_mailbox_backend_class_init (MNBaseMboxMailboxBackendClass * c) G_GNUC_UNUSED;
+static gboolean ___1_mn_base_mbox_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox) G_GNUC_UNUSED;
+static GType mn_base_mbox_mailbox_backend_get_mailbox_type (GnomeVFSURI * uri) G_GNUC_UNUSED;
+static GMimeParser * mn_base_mbox_mailbox_backend_parser_new (GnomeVFSURI * uri, GnomeVFSHandle ** handle, GnomeVFSResult * result) G_GNUC_UNUSED;
+static void ___4_mn_base_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend, unsigned long check_id) G_GNUC_UNUSED;
+static MNMessage * mn_base_mbox_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * self, GMimeMessage * mime_message) G_GNUC_UNUSED;
+static GnomeVFSURI * mn_base_mbox_mailbox_backend_get_uncompressed_uri (GnomeVFSURI * uri, GnomeVFSFileInfo * file_info) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static MNVFSMailboxBackendClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_get_mailbox_type mn_base_mbox_mailbox_backend_get_mailbox_type
+#define self_parser_new mn_base_mbox_mailbox_backend_parser_new
+#define self_get_new_message mn_base_mbox_mailbox_backend_get_new_message
+#define self_get_uncompressed_uri mn_base_mbox_mailbox_backend_get_uncompressed_uri
+GType
+mn_base_mbox_mailbox_backend_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNBaseMboxMailboxBackendClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_base_mbox_mailbox_backend_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNBaseMboxMailboxBackend),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_base_mbox_mailbox_backend_init,
+			NULL
+		};
+
+		type = g_type_register_static (MN_TYPE_VFS_MAILBOX_BACKEND, "MNBaseMboxMailboxBackend", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNBaseMboxMailboxBackend *)g_object_new(mn_base_mbox_mailbox_backend_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNBaseMboxMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNBaseMboxMailboxBackend *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNBaseMboxMailboxBackend *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNBaseMboxMailboxBackend *)g_object_new_valist (mn_base_mbox_mailbox_backend_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::dispose"
+	MNBaseMboxMailboxBackend *self G_GNUC_UNUSED = MN_BASE_MBOX_MAILBOX_BACKEND (obj_self);
+	if (G_OBJECT_CLASS (parent_class)->dispose) \
+		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
+#line 50 "mn-base-mbox-mailbox-backend.gob"
+	if(self->_priv->uri) { gnome_vfs_uri_unref ((gpointer) self->_priv->uri); self->_priv->uri = NULL; }
+#line 128 "mn-base-mbox-mailbox-backend.c"
+}
+#undef __GOB_FUNCTION__
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::finalize"
+	MNBaseMboxMailboxBackend *self G_GNUC_UNUSED = MN_BASE_MBOX_MAILBOX_BACKEND (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 55 "mn-base-mbox-mailbox-backend.gob"
+	if(self->_priv->mutex) { g_mutex_free ((gpointer) self->_priv->mutex); self->_priv->mutex = NULL; }
+#line 143 "mn-base-mbox-mailbox-backend.c"
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_base_mbox_mailbox_backend_init (MNBaseMboxMailboxBackend * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_BASE_MBOX_MAILBOX_BACKEND,MNBaseMboxMailboxBackendPrivate);
+#line 55 "mn-base-mbox-mailbox-backend.gob"
+	o->_priv->mutex = g_mutex_new();
+#line 154 "mn-base-mbox-mailbox-backend.c"
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_base_mbox_mailbox_backend_class_init (MNBaseMboxMailboxBackendClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+	MNVFSMailboxBackendClass *mn_vfs_mailbox_backend_class = (MNVFSMailboxBackendClass *)c;
+
+	g_type_class_add_private(c,sizeof(MNBaseMboxMailboxBackendPrivate));
+
+	parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND);
+
+#line 57 "mn-base-mbox-mailbox-backend.gob"
+	mn_vfs_mailbox_backend_class->is = ___1_mn_base_mbox_mailbox_backend_is;
+#line 192 "mn-base-mbox-mailbox-backend.gob"
+	mn_vfs_mailbox_backend_class->check = ___4_mn_base_mbox_mailbox_backend_check;
+#line 172 "mn-base-mbox-mailbox-backend.c"
+	c->get_new_message = NULL;
+	g_object_class->dispose = ___dispose;
+	g_object_class->finalize = ___finalize;
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 57 "mn-base-mbox-mailbox-backend.gob"
+static gboolean 
+___1_mn_base_mbox_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox)
+#line 184 "mn-base-mbox-mailbox-backend.c"
+#define PARENT_HANDLER(___dummy,___class,___mailbox) \
+	((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \
+		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___class,___mailbox): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::is"
+{
+#line 61 "mn-base-mbox-mailbox-backend.gob"
+	
+    gboolean is = FALSE;
+    GnomeVFSURI *uri;
+    GnomeVFSFileInfo *file_info;
+
+    uri = gnome_vfs_uri_ref(mailbox->vfs_uri);
+    file_info = gnome_vfs_file_info_new();
+
+    if (gnome_vfs_get_file_info_uri(uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK)
+      {
+	GnomeVFSURI *uncompressed_uri;
+
+	/* handle a compressed mailbox */
+	uncompressed_uri = self_get_uncompressed_uri(uri, file_info);
+	if (uncompressed_uri)
+	  {
+	    GnomeVFSFileInfo *uncompressed_file_info;
+
+	    uncompressed_file_info = gnome_vfs_file_info_new();
+	    if (gnome_vfs_get_file_info_uri(uncompressed_uri, uncompressed_file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK)
+	      {
+		gnome_vfs_file_info_unref(file_info);
+		file_info = uncompressed_file_info;
+
+		gnome_vfs_uri_unref(uri);
+		uri = uncompressed_uri;
+	      }
+	    else
+	      {
+		gnome_vfs_file_info_unref(uncompressed_file_info);
+		gnome_vfs_uri_unref(uncompressed_uri);
+	      }
+	  }
+
+	if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) != 0
+	    && file_info->type == GNOME_VFS_FILE_TYPE_REGULAR
+	    && self_get_mailbox_type(uri) == G_TYPE_FROM_CLASS(class))
+	  is = TRUE;
+      }
+
+    gnome_vfs_uri_unref(uri);
+    gnome_vfs_file_info_unref(file_info);
+
+    return is;
+  }}
+#line 238 "mn-base-mbox-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 107 "mn-base-mbox-mailbox-backend.gob"
+static GType 
+mn_base_mbox_mailbox_backend_get_mailbox_type (GnomeVFSURI * uri)
+#line 245 "mn-base-mbox-mailbox-backend.c"
+{
+#define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::get_mailbox_type"
+#line 107 "mn-base-mbox-mailbox-backend.gob"
+	g_return_val_if_fail (uri != NULL, (GType )0);
+#line 250 "mn-base-mbox-mailbox-backend.c"
+{
+#line 109 "mn-base-mbox-mailbox-backend.gob"
+	
+    GMimeParser *parser;
+    GnomeVFSHandle *handle;
+    GType type = 0;
+
+    parser = self_parser_new(uri, &handle, NULL);
+    if (parser != NULL)
+      {
+	if (g_mime_parser_eos(parser))
+	  /*
+	   * The file is empty. Treat it as a mbox mailbox for
+	   * now. Whenever the file grows, it will be checked again
+	   * and at that point we will decide whether it is a mbox
+	   * mailbox, a Mozilla mailbox or another type of file.
+	   */
+	  type = MN_TYPE_MBOX_MAILBOX_BACKEND;
+	else
+	  {
+	    /*
+	     * The file is not empty. Decide whether it is a Mozilla
+	     * mailbox or a mbox mailbox by checking if the first
+	     * message has a X-Mozilla-Status header. If the first
+	     * message cannot be parsed, then it is neither a Mozilla
+	     * mailbox nor a mbox mailbox.
+	     */
+
+	    GMimeMessage *mime_message;
+
+	    mime_message = g_mime_parser_construct_message(parser);
+	    if (mime_message)
+	      {
+		if (g_mime_message_get_header(mime_message, "X-Mozilla-Status"))
+		  {
+#if WITH_MOZILLA
+		    type = MN_TYPE_MOZILLA_MAILBOX_BACKEND;
+#endif
+		  }
+		else
+		  {
+#if WITH_MBOX
+		    type = MN_TYPE_MBOX_MAILBOX_BACKEND;
+#endif
+		  }
+		g_object_unref(mime_message);
+	      }
+	  }
+	g_object_unref(parser);
+	gnome_vfs_close(handle);
+      }
+
+    return type;
+  }}
+#line 305 "mn-base-mbox-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+
+#line 162 "mn-base-mbox-mailbox-backend.gob"
+static GMimeParser * 
+mn_base_mbox_mailbox_backend_parser_new (GnomeVFSURI * uri, GnomeVFSHandle ** handle, GnomeVFSResult * result)
+#line 311 "mn-base-mbox-mailbox-backend.c"
+{
+#define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::parser_new"
+#line 162 "mn-base-mbox-mailbox-backend.gob"
+	g_return_val_if_fail (uri != NULL, (GMimeParser * )0);
+#line 162 "mn-base-mbox-mailbox-backend.gob"
+	g_return_val_if_fail (handle != NULL, (GMimeParser * )0);
+#line 318 "mn-base-mbox-mailbox-backend.c"
+{
+#line 166 "mn-base-mbox-mailbox-backend.gob"
+	
+    GnomeVFSResult _result;
+    GMimeParser *parser = NULL;
+
+    _result = gnome_vfs_open_uri(handle, uri, GNOME_VFS_OPEN_READ);
+    if (_result == GNOME_VFS_OK)
+      {
+	GMimeStream *stream;
+
+	stream = mn_gmime_stream_vfs_new(*handle, uri, &_result);
+	if (stream)
+	  {
+	    parser = g_mime_parser_new_with_stream(stream);
+	    g_object_unref(stream);
+	    g_mime_parser_set_scan_from(parser, TRUE);
+	  }
+	else
+	  gnome_vfs_close(*handle);
+      }
+
+    if (result)
+      *result = _result;
+
+    return parser;
+  }}
+#line 346 "mn-base-mbox-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+
+#line 192 "mn-base-mbox-mailbox-backend.gob"
+static void 
+___4_mn_base_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, unsigned long check_id)
+#line 352 "mn-base-mbox-mailbox-backend.c"
+#define PARENT_HANDLER(___backend,___check_id) \
+	{ if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check) \
+		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check)(___backend,___check_id); }
+{
+#define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::check"
+{
+#line 194 "mn-base-mbox-mailbox-backend.gob"
+	
+    Self *self = SELF(backend);
+    gboolean aborted;
+    gboolean polled;
+    GMimeParser *parser;
+    GnomeVFSHandle *handle;
+    GnomeVFSResult result;
+    gboolean uri_set;
+
+    mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_FILE);
+
+    GDK_THREADS_ENTER();
+
+    if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+      aborted = TRUE;
+    else
+      {
+	aborted = FALSE;
+	polled = mn_mailbox_get_poll(MN_MAILBOX(backend->mailbox));
+      }
+
+    gdk_flush();
+    GDK_THREADS_LEAVE();
+
+    if (aborted)
+      return;
+
+    if (polled)
+      {
+	GnomeVFSFileInfo *file_info;
+	gboolean check;
+
+	/*
+	 * We are here because the mailbox has to be polled; only
+	 * check it if necessary.
+	 */
+
+	file_info = gnome_vfs_file_info_new();
+	result = gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
+
+	g_mutex_lock(selfp->mutex);
+
+	if (result == GNOME_VFS_OK
+	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) != 0
+	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MTIME) != 0
+	    && file_info->size == selfp->last_size
+	    && file_info->mtime == selfp->last_mtime)
+	  {
+	    if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_CTIME) != 0)
+	      check = file_info->ctime != selfp->last_ctime;
+	    else
+	      /*
+	       * The ctime is often missing for remote mailboxes;
+	       * since anyway the size and mtime do not have changed,
+	       * we do not check the mailbox.
+	       */
+	      check = FALSE;
+	  }
+	else
+	  check = TRUE;
+
+	if (check)
+	  {
+	    selfp->last_size = file_info->size;
+	    selfp->last_mtime = file_info->mtime;
+	    selfp->last_ctime = file_info->ctime;
+
+	    if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+	      check = FALSE;
+	  }
+
+	g_mutex_unlock(selfp->mutex);
+
+	gnome_vfs_file_info_unref(file_info);
+
+	if (! check)
+	  return;
+      }
+
+    g_mutex_lock(selfp->mutex);
+    uri_set = selfp->uri != NULL;
+    g_mutex_unlock(selfp->mutex);
+
+    if (! uri_set)
+      {
+	GnomeVFSFileInfo *file_info;
+	GnomeVFSURI *uri;
+
+	file_info = gnome_vfs_file_info_new();
+	if (gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK)
+	  uri = self_get_uncompressed_uri(backend->mailbox->vfs_uri, file_info);
+	gnome_vfs_file_info_unref(file_info);
+
+	if (! uri)
+	  uri = gnome_vfs_uri_ref(backend->mailbox->vfs_uri);
+
+	g_mutex_lock(selfp->mutex);
+
+	if (! selfp->uri)
+	  {
+	    selfp->uri = uri;
+	    uri = NULL;
+	  }
+	if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+	  aborted = TRUE;
+
+	g_mutex_unlock(selfp->mutex);
+
+	if (uri)
+	  gnome_vfs_uri_unref(uri);
+
+	if (aborted)
+	  return;
+      }
+
+    parser = self_parser_new(selfp->uri, &handle, &result);
+    if (parser)
+      {
+	GSList *messages = NULL;
+	GnomeVFSResult close_result;
+
+	while (! g_mime_parser_eos(parser))
+	  {
+	    GMimeMessage *mime_message;
+
+	    if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+	      break;
+
+	    mime_message = g_mime_parser_construct_message(parser);
+	    if (mime_message)
+	      {
+		MNMessage *message;
+
+		message = MN_BASE_MBOX_MAILBOX_BACKEND_GET_CLASS(self)->get_new_message(self, mime_message);
+		g_object_unref(mime_message);
+
+		if (message)
+		  messages = g_slist_prepend(messages, message);
+	      }
+	  }
+
+	g_object_unref(parser);
+	close_result = gnome_vfs_close(handle);
+
+	GDK_THREADS_ENTER();
+
+	if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+	  {
+	    if (close_result == GNOME_VFS_OK)
+	      mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages);
+	    else
+	      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close file: %s"), gnome_vfs_result_to_string(close_result));
+	  }
+
+	mn_g_object_slist_free(messages);
+
+	gdk_flush();
+	GDK_THREADS_LEAVE();
+
+	return;
+      }
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open mailbox: %s"), gnome_vfs_result_to_string(result));
+
+    gdk_flush();
+    GDK_THREADS_LEAVE();
+  }}
+#line 530 "mn-base-mbox-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 365 "mn-base-mbox-mailbox-backend.gob"
+static MNMessage * 
+mn_base_mbox_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * self, GMimeMessage * mime_message)
+#line 537 "mn-base-mbox-mailbox-backend.c"
+{
+	MNBaseMboxMailboxBackendClass *klass;
+#line 365 "mn-base-mbox-mailbox-backend.gob"
+	g_return_val_if_fail (self != NULL, (MNMessage * )0);
+#line 365 "mn-base-mbox-mailbox-backend.gob"
+	g_return_val_if_fail (MN_IS_BASE_MBOX_MAILBOX_BACKEND (self), (MNMessage * )0);
+#line 544 "mn-base-mbox-mailbox-backend.c"
+	klass = MN_BASE_MBOX_MAILBOX_BACKEND_GET_CLASS(self);
+
+	if(klass->get_new_message)
+		return (*klass->get_new_message)(self,mime_message);
+	else
+		return (MNMessage * )(0);
+}
+
+#line 368 "mn-base-mbox-mailbox-backend.gob"
+static GnomeVFSURI * 
+mn_base_mbox_mailbox_backend_get_uncompressed_uri (GnomeVFSURI * uri, GnomeVFSFileInfo * file_info)
+#line 556 "mn-base-mbox-mailbox-backend.c"
+{
+#define __GOB_FUNCTION__ "MN:Base:Mbox:Mailbox:Backend::get_uncompressed_uri"
+#line 368 "mn-base-mbox-mailbox-backend.gob"
+	g_return_val_if_fail (uri != NULL, (GnomeVFSURI * )0);
+#line 368 "mn-base-mbox-mailbox-backend.gob"
+	g_return_val_if_fail (file_info != NULL, (GnomeVFSURI * )0);
+#line 563 "mn-base-mbox-mailbox-backend.c"
+{
+#line 371 "mn-base-mbox-mailbox-backend.gob"
+	
+    if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE) != 0 && file_info->mime_type)
+      {
+	/* compression methods supported by GnomeVFS */
+	static const struct
+	{
+	  const char *mime_type;
+	  const char *method;
+	} compressions[] = {
+	  { "application/x-gzip", "gzip" },
+	  { "application/x-bzip", "bzip2" }
+	};
+	int i;
+
+	for (i = 0; i < G_N_ELEMENTS(compressions); i++)
+	  if (! strcmp(file_info->mime_type, compressions[i].mime_type))
+	    {
+	      char *str;
+	      GnomeVFSURI *uncompressed_uri;
+
+	      str = g_strdup_printf("%s%s:/", GNOME_VFS_URI_MAGIC_STR, compressions[i].method);
+	      uncompressed_uri = gnome_vfs_uri_append_string(uri, str);
+	      g_free(str);
+
+	      return uncompressed_uri;
+	    }
+      }
+
+    return NULL;
+  }}
+#line 596 "mn-base-mbox-mailbox-backend.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-base-mbox-mailbox-backend.gob b/src/mn-base-mbox-mailbox-backend.gob
@@ -0,0 +1,401 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+requires 2.0.14
+
+%headertop{
+#include <gmime/gmime.h>
+#include "mn-vfs-mailbox-backend.h"
+#include "mn-message.h"
+%}
+
+%{
+#include "config.h"
+#include <string.h>
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
+#include "mn-mailbox-private.h"
+#include "mn-reentrant-mailbox-private.h"
+#include "mn-vfs-mailbox-backend-private.h"
+#include "mn-message-mime.h"
+#include "mn-gmime-stream-vfs.h"
+#include "mn-util.h"
+#include "mn-vfs.h"
+#if WITH_MBOX
+#include "mn-mbox-mailbox-backend.h"
+#endif
+#if WITH_MOZILLA
+#include "mn-mozilla-mailbox-backend.h"
+#endif
+%}
+
+class MN:Base:Mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend (abstract)
+{
+  private GnomeVFSURI *uri unrefwith gnome_vfs_uri_unref;
+  private GnomeVFSFileSize last_size;
+  private time_t last_mtime;
+  private time_t last_ctime;
+
+  private GMutex *mutex = {g_mutex_new()} destroywith g_mutex_free;
+
+  override (MN:VFS:Mailbox:Backend) gboolean
+    is (MNVFSMailboxBackend *dummy,
+	MNVFSMailboxBackendClass *class,
+	MNVFSMailbox *mailbox)
+  {
+    gboolean is = FALSE;
+    GnomeVFSURI *uri;
+    GnomeVFSFileInfo *file_info;
+
+    uri = gnome_vfs_uri_ref(mailbox->vfs_uri);
+    file_info = gnome_vfs_file_info_new();
+
+    if (gnome_vfs_get_file_info_uri(uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK)
+      {
+	GnomeVFSURI *uncompressed_uri;
+
+	/* handle a compressed mailbox */
+	uncompressed_uri = self_get_uncompressed_uri(uri, file_info);
+	if (uncompressed_uri)
+	  {
+	    GnomeVFSFileInfo *uncompressed_file_info;
+
+	    uncompressed_file_info = gnome_vfs_file_info_new();
+	    if (gnome_vfs_get_file_info_uri(uncompressed_uri, uncompressed_file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK)
+	      {
+		gnome_vfs_file_info_unref(file_info);
+		file_info = uncompressed_file_info;
+
+		gnome_vfs_uri_unref(uri);
+		uri = uncompressed_uri;
+	      }
+	    else
+	      {
+		gnome_vfs_file_info_unref(uncompressed_file_info);
+		gnome_vfs_uri_unref(uncompressed_uri);
+	      }
+	  }
+
+	if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) != 0
+	    && file_info->type == GNOME_VFS_FILE_TYPE_REGULAR
+	    && self_get_mailbox_type(uri) == G_TYPE_FROM_CLASS(class))
+	  is = TRUE;
+      }
+
+    gnome_vfs_uri_unref(uri);
+    gnome_vfs_file_info_unref(file_info);
+
+    return is;
+  }
+
+  private GType
+    get_mailbox_type (GnomeVFSURI *uri (check null))
+  {
+    GMimeParser *parser;
+    GnomeVFSHandle *handle;
+    GType type = 0;
+
+    parser = self_parser_new(uri, &handle, NULL);
+    if (parser != NULL)
+      {
+	if (g_mime_parser_eos(parser))
+	  /*
+	   * The file is empty. Treat it as a mbox mailbox for
+	   * now. Whenever the file grows, it will be checked again
+	   * and at that point we will decide whether it is a mbox
+	   * mailbox, a Mozilla mailbox or another type of file.
+	   */
+	  type = MN_TYPE_MBOX_MAILBOX_BACKEND;
+	else
+	  {
+	    /*
+	     * The file is not empty. Decide whether it is a Mozilla
+	     * mailbox or a mbox mailbox by checking if the first
+	     * message has a X-Mozilla-Status header. If the first
+	     * message cannot be parsed, then it is neither a Mozilla
+	     * mailbox nor a mbox mailbox.
+	     */
+
+	    GMimeMessage *mime_message;
+
+	    mime_message = g_mime_parser_construct_message(parser);
+	    if (mime_message)
+	      {
+		if (g_mime_message_get_header(mime_message, "X-Mozilla-Status"))
+		  {
+#if WITH_MOZILLA
+		    type = MN_TYPE_MOZILLA_MAILBOX_BACKEND;
+#endif
+		  }
+		else
+		  {
+#if WITH_MBOX
+		    type = MN_TYPE_MBOX_MAILBOX_BACKEND;
+#endif
+		  }
+		g_object_unref(mime_message);
+	      }
+	  }
+	g_object_unref(parser);
+	gnome_vfs_close(handle);
+      }
+
+    return type;
+  }
+
+  private GMimeParser *
+    parser_new (GnomeVFSURI *uri (check null),
+		GnomeVFSHandle **handle (check null),
+		GnomeVFSResult *result)
+  {
+    GnomeVFSResult _result;
+    GMimeParser *parser = NULL;
+
+    _result = gnome_vfs_open_uri(handle, uri, GNOME_VFS_OPEN_READ);
+    if (_result == GNOME_VFS_OK)
+      {
+	GMimeStream *stream;
+
+	stream = mn_gmime_stream_vfs_new(*handle, uri, &_result);
+	if (stream)
+	  {
+	    parser = g_mime_parser_new_with_stream(stream);
+	    g_object_unref(stream);
+	    g_mime_parser_set_scan_from(parser, TRUE);
+	  }
+	else
+	  gnome_vfs_close(*handle);
+      }
+
+    if (result)
+      *result = _result;
+
+    return parser;
+  }
+
+  override (MN:VFS:Mailbox:Backend) void
+    check (MNVFSMailboxBackend *backend, unsigned long check_id)
+  {
+    Self *self = SELF(backend);
+    gboolean aborted;
+    gboolean polled;
+    GMimeParser *parser;
+    GnomeVFSHandle *handle;
+    GnomeVFSResult result;
+    gboolean uri_set;
+
+    mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_FILE);
+
+    GDK_THREADS_ENTER();
+
+    if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+      aborted = TRUE;
+    else
+      {
+	aborted = FALSE;
+	polled = mn_mailbox_get_poll(MN_MAILBOX(backend->mailbox));
+      }
+
+    gdk_flush();
+    GDK_THREADS_LEAVE();
+
+    if (aborted)
+      return;
+
+    if (polled)
+      {
+	GnomeVFSFileInfo *file_info;
+	gboolean check;
+
+	/*
+	 * We are here because the mailbox has to be polled; only
+	 * check it if necessary.
+	 */
+
+	file_info = gnome_vfs_file_info_new();
+	result = gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
+
+	g_mutex_lock(selfp->mutex);
+
+	if (result == GNOME_VFS_OK
+	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) != 0
+	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MTIME) != 0
+	    && file_info->size == selfp->last_size
+	    && file_info->mtime == selfp->last_mtime)
+	  {
+	    if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_CTIME) != 0)
+	      check = file_info->ctime != selfp->last_ctime;
+	    else
+	      /*
+	       * The ctime is often missing for remote mailboxes;
+	       * since anyway the size and mtime do not have changed,
+	       * we do not check the mailbox.
+	       */
+	      check = FALSE;
+	  }
+	else
+	  check = TRUE;
+
+	if (check)
+	  {
+	    selfp->last_size = file_info->size;
+	    selfp->last_mtime = file_info->mtime;
+	    selfp->last_ctime = file_info->ctime;
+
+	    if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+	      check = FALSE;
+	  }
+
+	g_mutex_unlock(selfp->mutex);
+
+	gnome_vfs_file_info_unref(file_info);
+
+	if (! check)
+	  return;
+      }
+
+    g_mutex_lock(selfp->mutex);
+    uri_set = selfp->uri != NULL;
+    g_mutex_unlock(selfp->mutex);
+
+    if (! uri_set)
+      {
+	GnomeVFSFileInfo *file_info;
+	GnomeVFSURI *uri;
+
+	file_info = gnome_vfs_file_info_new();
+	if (gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK)
+	  uri = self_get_uncompressed_uri(backend->mailbox->vfs_uri, file_info);
+	gnome_vfs_file_info_unref(file_info);
+
+	if (! uri)
+	  uri = gnome_vfs_uri_ref(backend->mailbox->vfs_uri);
+
+	g_mutex_lock(selfp->mutex);
+
+	if (! selfp->uri)
+	  {
+	    selfp->uri = uri;
+	    uri = NULL;
+	  }
+	if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+	  aborted = TRUE;
+
+	g_mutex_unlock(selfp->mutex);
+
+	if (uri)
+	  gnome_vfs_uri_unref(uri);
+
+	if (aborted)
+	  return;
+      }
+
+    parser = self_parser_new(selfp->uri, &handle, &result);
+    if (parser)
+      {
+	GSList *messages = NULL;
+	GnomeVFSResult close_result;
+
+	while (! g_mime_parser_eos(parser))
+	  {
+	    GMimeMessage *mime_message;
+
+	    if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+	      break;
+
+	    mime_message = g_mime_parser_construct_message(parser);
+	    if (mime_message)
+	      {
+		MNMessage *message;
+
+		message = MN_BASE_MBOX_MAILBOX_BACKEND_GET_CLASS(self)->get_new_message(self, mime_message);
+		g_object_unref(mime_message);
+
+		if (message)
+		  messages = g_slist_prepend(messages, message);
+	      }
+	  }
+
+	g_object_unref(parser);
+	close_result = gnome_vfs_close(handle);
+
+	GDK_THREADS_ENTER();
+
+	if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+	  {
+	    if (close_result == GNOME_VFS_OK)
+	      mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages);
+	    else
+	      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close file: %s"), gnome_vfs_result_to_string(close_result));
+	  }
+
+	mn_g_object_slist_free(messages);
+
+	gdk_flush();
+	GDK_THREADS_LEAVE();
+
+	return;
+      }
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open mailbox: %s"), gnome_vfs_result_to_string(result));
+
+    gdk_flush();
+    GDK_THREADS_LEAVE();
+  }
+
+  virtual private MNMessage *
+    get_new_message (self, GMimeMessage *mime_message);
+
+  private GnomeVFSURI *
+    get_uncompressed_uri (GnomeVFSURI *uri (check null),
+			  GnomeVFSFileInfo *file_info (check null))
+  {
+    if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE) != 0 && file_info->mime_type)
+      {
+	/* compression methods supported by GnomeVFS */
+	static const struct
+	{
+	  const char *mime_type;
+	  const char *method;
+	} compressions[] = {
+	  { "application/x-gzip", "gzip" },
+	  { "application/x-bzip", "bzip2" }
+	};
+	int i;
+
+	for (i = 0; i < G_N_ELEMENTS(compressions); i++)
+	  if (! strcmp(file_info->mime_type, compressions[i].mime_type))
+	    {
+	      char *str;
+	      GnomeVFSURI *uncompressed_uri;
+
+	      str = g_strdup_printf("%s%s:/", GNOME_VFS_URI_MAGIC_STR, compressions[i].method);
+	      uncompressed_uri = gnome_vfs_uri_append_string(uri, str);
+	      g_free(str);
+
+	      return uncompressed_uri;
+	    }
+      }
+
+    return NULL;
+  }
+}
diff --git a/src/mn-corba-object.gob.stamp b/src/mn-base-mbox-mailbox-backend.gob.stamp
diff --git a/src/mn-base-mbox-mailbox-backend.h b/src/mn-base-mbox-mailbox-backend.h
@@ -0,0 +1,65 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <gmime/gmime.h>
+#include "mn-vfs-mailbox-backend.h"
+#include "mn-message.h"
+
+#ifndef __MN_BASE_MBOX_MAILBOX_BACKEND_H__
+#define __MN_BASE_MBOX_MAILBOX_BACKEND_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_BASE_MBOX_MAILBOX_BACKEND	(mn_base_mbox_mailbox_backend_get_type())
+#define MN_BASE_MBOX_MAILBOX_BACKEND(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_base_mbox_mailbox_backend_get_type(), MNBaseMboxMailboxBackend)
+#define MN_BASE_MBOX_MAILBOX_BACKEND_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_base_mbox_mailbox_backend_get_type(), MNBaseMboxMailboxBackend const)
+#define MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_base_mbox_mailbox_backend_get_type(), MNBaseMboxMailboxBackendClass)
+#define MN_IS_BASE_MBOX_MAILBOX_BACKEND(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_base_mbox_mailbox_backend_get_type ())
+
+#define MN_BASE_MBOX_MAILBOX_BACKEND_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_base_mbox_mailbox_backend_get_type(), MNBaseMboxMailboxBackendClass)
+
+/* Private structure type */
+typedef struct _MNBaseMboxMailboxBackendPrivate MNBaseMboxMailboxBackendPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_BASE_MBOX_MAILBOX_BACKEND__
+#define __TYPEDEF_MN_BASE_MBOX_MAILBOX_BACKEND__
+typedef struct _MNBaseMboxMailboxBackend MNBaseMboxMailboxBackend;
+#endif
+struct _MNBaseMboxMailboxBackend {
+	MNVFSMailboxBackend __parent__;
+	/*< private >*/
+	MNBaseMboxMailboxBackendPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNBaseMboxMailboxBackendClass MNBaseMboxMailboxBackendClass;
+struct _MNBaseMboxMailboxBackendClass {
+	MNVFSMailboxBackendClass __parent__;
+	MNMessage * (* get_new_message) (MNBaseMboxMailboxBackend * self, GMimeMessage * mime_message);
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_base_mbox_mailbox_backend_get_type	(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-blinking-image-private.h b/src/mn-blinking-image-private.h
@@ -10,21 +10,21 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 25 "mn-blinking-image.gob"
+#line 26 "mn-blinking-image.gob"
 
 #include "mn-locked-callback.h"
 
 #line 18 "mn-blinking-image-private.h"
 struct _MNBlinkingImagePrivate {
-#line 36 "mn-blinking-image.gob"
+#line 37 "mn-blinking-image.gob"
 	gboolean blinking;
-#line 58 "mn-blinking-image.gob"
-	MNLockedGSource * timeout_source;
 #line 59 "mn-blinking-image.gob"
+	MNLockedGSource * timeout_source;
+#line 60 "mn-blinking-image.gob"
 	gboolean is_on;
-#line 61 "mn-blinking-image.gob"
-	char * stock_id;
 #line 62 "mn-blinking-image.gob"
+	char * stock_id;
+#line 63 "mn-blinking-image.gob"
 	GtkIconSize icon_size;
 #line 30 "mn-blinking-image-private.h"
 };
diff --git a/src/mn-blinking-image.c b/src/mn-blinking-image.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-blinking-image.gob"
+#line 30 "mn-blinking-image.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -114,10 +114,10 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Blinking:Image::finalize"
 	MNBlinkingImage *self G_GNUC_UNUSED = MN_BLINKING_IMAGE (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 64 "mn-blinking-image.gob"
+#line 65 "mn-blinking-image.gob"
 	___3_mn_blinking_image_finalize(obj_self);
 #line 120 "mn-blinking-image.c"
-#line 61 "mn-blinking-image.gob"
+#line 62 "mn-blinking-image.gob"
 	if(self->_priv->stock_id) { g_free ((gpointer) self->_priv->stock_id); self->_priv->stock_id = NULL; }
 #line 123 "mn-blinking-image.c"
 }
@@ -128,7 +128,7 @@ mn_blinking_image_init (MNBlinkingImage * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::init"
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_BLINKING_IMAGE,MNBlinkingImagePrivate);
-#line 54 "mn-blinking-image.gob"
+#line 55 "mn-blinking-image.gob"
 	o->_priv->is_on = TRUE;
 #line 134 "mn-blinking-image.c"
 }
@@ -143,7 +143,7 @@ mn_blinking_image_class_init (MNBlinkingImageClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (GTK_TYPE_IMAGE);
 
-#line 64 "mn-blinking-image.gob"
+#line 65 "mn-blinking-image.gob"
 	g_object_class->finalize = ___finalize;
 #line 149 "mn-blinking-image.c"
 	g_object_class->get_property = ___object_get_property;
@@ -178,7 +178,7 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_BLINKING:
 		{
-#line 39 "mn-blinking-image.gob"
+#line 40 "mn-blinking-image.gob"
 
       gboolean blinking = g_value_get_boolean(VAL);
       if (blinking != selfp->blinking)
@@ -222,7 +222,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_BLINKING:
 		{
-#line 54 "mn-blinking-image.gob"
+#line 55 "mn-blinking-image.gob"
 
       g_value_set_boolean(VAL, selfp->blinking);
     
@@ -243,33 +243,33 @@ ___object_get_property (GObject *object,
 
 
 
-#line 54 "mn-blinking-image.gob"
+#line 55 "mn-blinking-image.gob"
 gboolean 
 mn_blinking_image_get_blinking (MNBlinkingImage * self)
 #line 250 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::get_blinking"
 {
-#line 37 "mn-blinking-image.gob"
+#line 38 "mn-blinking-image.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "blinking", &val, NULL); return val;
 }}
 #line 257 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 39 "mn-blinking-image.gob"
+#line 40 "mn-blinking-image.gob"
 void 
 mn_blinking_image_set_blinking (MNBlinkingImage * self, gboolean val)
 #line 263 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::set_blinking"
 {
-#line 37 "mn-blinking-image.gob"
+#line 38 "mn-blinking-image.gob"
 		g_object_set (G_OBJECT (self), "blinking", val, NULL);
 }}
 #line 270 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 64 "mn-blinking-image.gob"
+#line 65 "mn-blinking-image.gob"
 static void 
 ___3_mn_blinking_image_finalize (GObject * object G_GNUC_UNUSED)
 #line 276 "mn-blinking-image.c"
@@ -279,7 +279,7 @@ ___3_mn_blinking_image_finalize (GObject * object G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::finalize"
 {
-#line 66 "mn-blinking-image.gob"
+#line 67 "mn-blinking-image.gob"
 	
     Self *self = SELF(object);
 
@@ -292,19 +292,19 @@ ___3_mn_blinking_image_finalize (GObject * object G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 75 "mn-blinking-image.gob"
+#line 76 "mn-blinking-image.gob"
 static void 
 mn_blinking_image_update (MNBlinkingImage * self, gboolean is_on)
 #line 299 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::update"
-#line 75 "mn-blinking-image.gob"
+#line 76 "mn-blinking-image.gob"
 	g_return_if_fail (self != NULL);
-#line 75 "mn-blinking-image.gob"
+#line 76 "mn-blinking-image.gob"
 	g_return_if_fail (MN_IS_BLINKING_IMAGE (self));
 #line 306 "mn-blinking-image.c"
 {
-#line 77 "mn-blinking-image.gob"
+#line 78 "mn-blinking-image.gob"
 	
     if (is_on)
       gtk_image_set_from_stock(GTK_IMAGE(self), selfp->stock_id, selfp->icon_size);
@@ -335,14 +335,14 @@ mn_blinking_image_update (MNBlinkingImage * self, gboolean is_on)
 #line 336 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 105 "mn-blinking-image.gob"
+#line 106 "mn-blinking-image.gob"
 static gboolean 
 mn_blinking_image_timeout_cb (gpointer data)
 #line 342 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::timeout_cb"
 {
-#line 107 "mn-blinking-image.gob"
+#line 108 "mn-blinking-image.gob"
 	
     Self *self = data;
 
@@ -353,35 +353,35 @@ mn_blinking_image_timeout_cb (gpointer data)
 #line 354 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 115 "mn-blinking-image.gob"
+#line 116 "mn-blinking-image.gob"
 GtkWidget * 
 mn_blinking_image_new (void)
 #line 360 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::new"
 {
-#line 117 "mn-blinking-image.gob"
+#line 118 "mn-blinking-image.gob"
 	
     return GTK_WIDGET(GET_NEW);
   }}
 #line 368 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 121 "mn-blinking-image.gob"
+#line 122 "mn-blinking-image.gob"
 void 
 mn_blinking_image_set_from_stock (MNBlinkingImage * self, const char * stock_id, GtkIconSize icon_size)
 #line 374 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::set_from_stock"
-#line 121 "mn-blinking-image.gob"
+#line 122 "mn-blinking-image.gob"
 	g_return_if_fail (self != NULL);
-#line 121 "mn-blinking-image.gob"
+#line 122 "mn-blinking-image.gob"
 	g_return_if_fail (MN_IS_BLINKING_IMAGE (self));
-#line 121 "mn-blinking-image.gob"
+#line 122 "mn-blinking-image.gob"
 	g_return_if_fail (stock_id != NULL);
 #line 383 "mn-blinking-image.c"
 {
-#line 125 "mn-blinking-image.gob"
+#line 126 "mn-blinking-image.gob"
 	
     g_free(selfp->stock_id);
     selfp->stock_id = g_strdup(stock_id);
diff --git a/src/mn-blinking-image.gob b/src/mn-blinking-image.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
diff --git a/src/mn-bonobo-unknown-private.h b/src/mn-bonobo-unknown-private.h
@@ -0,0 +1,32 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_BONOBO_UNKNOWN_PRIVATE_H__
+#define __MN_BONOBO_UNKNOWN_PRIVATE_H__
+
+#include "mn-bonobo-unknown.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#line 29 "mn-bonobo-unknown.gob"
+
+#include "mn-locked-callback.h"
+
+#line 18 "mn-bonobo-unknown-private.h"
+struct _MNBonoboUnknownPrivate {
+#line 39 "mn-bonobo-unknown.gob"
+	Bonobo_Unknown object;
+#line 53 "mn-bonobo-unknown.gob"
+	char * iid;
+#line 56 "mn-bonobo-unknown.gob"
+	MNLockedGSource * monitor_source;
+#line 26 "mn-bonobo-unknown-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-bonobo-unknown.c b/src/mn-bonobo-unknown.c
@@ -0,0 +1,421 @@
+/* Generated by GOB (v2.0.14)   (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 14
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-bonobo-unknown.h"
+
+#include "mn-bonobo-unknown-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 33 "mn-bonobo-unknown.gob"
+
+#include <gtk/gtk.h>
+
+#line 30 "mn-bonobo-unknown.c"
+/* self casting macros */
+#define SELF(x) MN_BONOBO_UNKNOWN(x)
+#define SELF_CONST(x) MN_BONOBO_UNKNOWN_CONST(x)
+#define IS_SELF(x) MN_IS_BONOBO_UNKNOWN(x)
+#define TYPE_SELF MN_TYPE_BONOBO_UNKNOWN
+#define SELF_CLASS(x) MN_BONOBO_UNKNOWN_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_BONOBO_UNKNOWN_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNBonoboUnknown Self;
+typedef MNBonoboUnknownClass 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_bonobo_unknown_init (MNBonoboUnknown * o) G_GNUC_UNUSED;
+static void mn_bonobo_unknown_class_init (MNBonoboUnknownClass * c) G_GNUC_UNUSED;
+static GObject * ___3_mn_bonobo_unknown_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void ___4_mn_bonobo_unknown_dispose (GObject * object) G_GNUC_UNUSED;
+static gboolean mn_bonobo_unknown_monitor_cb (gpointer data) G_GNUC_UNUSED;
+static void mn_bonobo_unknown_activate (MNBonoboUnknown * self) G_GNUC_UNUSED;
+
+enum {
+	PROP_0,
+	PROP_OBJECT,
+	PROP_IID
+};
+
+/* pointer to the class of our parent */
+static GObjectClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_get_object mn_bonobo_unknown_get_object
+#define self_set_object mn_bonobo_unknown_set_object
+#define self_monitor_cb mn_bonobo_unknown_monitor_cb
+#define self_activate mn_bonobo_unknown_activate
+#define self_new mn_bonobo_unknown_new
+GType
+mn_bonobo_unknown_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNBonoboUnknownClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_bonobo_unknown_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNBonoboUnknown),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_bonobo_unknown_init,
+			NULL
+		};
+
+		type = g_type_register_static (G_TYPE_OBJECT, "MNBonoboUnknown", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNBonoboUnknown *)g_object_new(mn_bonobo_unknown_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNBonoboUnknown * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNBonoboUnknown *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNBonoboUnknown *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNBonoboUnknown *)g_object_new_valist (mn_bonobo_unknown_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::dispose"
+	MNBonoboUnknown *self G_GNUC_UNUSED = MN_BONOBO_UNKNOWN (obj_self);
+#line 74 "mn-bonobo-unknown.gob"
+	___4_mn_bonobo_unknown_dispose(obj_self);
+#line 119 "mn-bonobo-unknown.c"
+#define object (self->_priv->object)
+#define VAR object
+	{
+#line 40 "mn-bonobo-unknown.gob"
+	 bonobo_object_release_unref(VAR, NULL); }
+#line 125 "mn-bonobo-unknown.c"
+	memset(&object, 0, sizeof(object));
+#undef VAR
+#undef object
+}
+#undef __GOB_FUNCTION__
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::finalize"
+	MNBonoboUnknown *self G_GNUC_UNUSED = MN_BONOBO_UNKNOWN (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 53 "mn-bonobo-unknown.gob"
+	if(self->_priv->iid) { g_free ((gpointer) self->_priv->iid); self->_priv->iid = NULL; }
+#line 143 "mn-bonobo-unknown.c"
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_bonobo_unknown_init (MNBonoboUnknown * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_BONOBO_UNKNOWN,MNBonoboUnknownPrivate);
+#line 33 "mn-bonobo-unknown.gob"
+	o->_priv->object = CORBA_OBJECT_NIL;
+#line 154 "mn-bonobo-unknown.c"
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_bonobo_unknown_class_init (MNBonoboUnknownClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+	g_type_class_add_private(c,sizeof(MNBonoboUnknownPrivate));
+
+	parent_class = g_type_class_ref (G_TYPE_OBJECT);
+
+#line 58 "mn-bonobo-unknown.gob"
+	g_object_class->constructor = ___3_mn_bonobo_unknown_constructor;
+#line 74 "mn-bonobo-unknown.gob"
+	g_object_class->dispose = ___dispose;
+#line 171 "mn-bonobo-unknown.c"
+	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_pointer
+		("object" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE));
+	g_object_class_install_property (g_object_class,
+		PROP_OBJECT,
+		param_spec);
+	param_spec = g_param_spec_string
+		("iid" /* 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_IID,
+		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:Bonobo:Unknown::set_property"
+{
+	MNBonoboUnknown *self G_GNUC_UNUSED;
+
+	self = MN_BONOBO_UNKNOWN (object);
+
+	switch (property_id) {
+	case PROP_OBJECT:
+		{
+#line 43 "mn-bonobo-unknown.gob"
+
+      bonobo_object_release_unref(selfp->object, NULL);
+      selfp->object = g_value_get_pointer(VAL);
+      bonobo_object_dup_ref(selfp->object, NULL);
+    
+#line 219 "mn-bonobo-unknown.c"
+		}
+		break;
+	case PROP_IID:
+		{
+#line 54 "mn-bonobo-unknown.gob"
+{ char *old = self->_priv->iid; self->_priv->iid = g_value_dup_string (VAL); g_free (old); }
+#line 226 "mn-bonobo-unknown.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:Bonobo:Unknown::get_property"
+{
+	MNBonoboUnknown *self G_GNUC_UNUSED;
+
+	self = MN_BONOBO_UNKNOWN (object);
+
+	switch (property_id) {
+	case PROP_OBJECT:
+		{
+#line 49 "mn-bonobo-unknown.gob"
+
+      g_value_set_pointer(VAL, bonobo_object_dup_ref(selfp->object, NULL));
+    
+#line 259 "mn-bonobo-unknown.c"
+		}
+		break;
+	case PROP_IID:
+		{
+#line 54 "mn-bonobo-unknown.gob"
+g_value_set_string (VAL, self->_priv->iid);
+#line 266 "mn-bonobo-unknown.c"
+		}
+		break;
+	default:
+/* Apparently in g++ this is needed, glib is b0rk */
+#ifndef __PRETTY_FUNCTION__
+#  undef G_STRLOC
+#  define G_STRLOC	__FILE__ ":" G_STRINGIFY (__LINE__)
+#endif
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 49 "mn-bonobo-unknown.gob"
+Bonobo_Unknown 
+mn_bonobo_unknown_get_object (MNBonoboUnknown * self)
+#line 286 "mn-bonobo-unknown.c"
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::get_object"
+{
+#line 41 "mn-bonobo-unknown.gob"
+		Bonobo_Unknown val; g_object_get (G_OBJECT (self), "object", &val, NULL); return val;
+}}
+#line 293 "mn-bonobo-unknown.c"
+#undef __GOB_FUNCTION__
+
+#line 43 "mn-bonobo-unknown.gob"
+void 
+mn_bonobo_unknown_set_object (MNBonoboUnknown * self, Bonobo_Unknown val)
+#line 299 "mn-bonobo-unknown.c"
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::set_object"
+{
+#line 41 "mn-bonobo-unknown.gob"
+		g_object_set (G_OBJECT (self), "object", val, NULL);
+}}
+#line 306 "mn-bonobo-unknown.c"
+#undef __GOB_FUNCTION__
+
+#line 58 "mn-bonobo-unknown.gob"
+static GObject * 
+___3_mn_bonobo_unknown_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
+#line 312 "mn-bonobo-unknown.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:Bonobo:Unknown::constructor"
+{
+#line 60 "mn-bonobo-unknown.gob"
+	
+    GObject *object;
+    Self *self;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    self = SELF(object);
+
+    self_activate(self);
+
+    selfp->monitor_source = mn_g_timeout_add_gdk_locked(1000, self_monitor_cb, self);
+
+    return object;
+  }}
+#line 334 "mn-bonobo-unknown.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 74 "mn-bonobo-unknown.gob"
+static void 
+___4_mn_bonobo_unknown_dispose (GObject * object G_GNUC_UNUSED)
+#line 341 "mn-bonobo-unknown.c"
+#define PARENT_HANDLER(___object) \
+	{ if(G_OBJECT_CLASS(parent_class)->dispose) \
+		(* G_OBJECT_CLASS(parent_class)->dispose)(___object); }
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::dispose"
+{
+#line 76 "mn-bonobo-unknown.gob"
+	
+    Self *self = SELF(object);
+
+    mn_locked_g_source_remove(selfp->monitor_source);
+
+    PARENT_HANDLER(object);
+  }}
+#line 356 "mn-bonobo-unknown.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 84 "mn-bonobo-unknown.gob"
+static gboolean 
+mn_bonobo_unknown_monitor_cb (gpointer data)
+#line 363 "mn-bonobo-unknown.c"
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::monitor_cb"
+{
+#line 86 "mn-bonobo-unknown.gob"
+	
+    Self *self = data;
+
+    if (selfp->object != CORBA_OBJECT_NIL)
+      {
+	if (! bonobo_unknown_ping(selfp->object, NULL))
+	  self_set_object(self, CORBA_OBJECT_NIL);
+      }
+    else
+      self_activate(self);
+
+    return TRUE;		/* keep source */
+  }}
+#line 381 "mn-bonobo-unknown.c"
+#undef __GOB_FUNCTION__
+
+#line 100 "mn-bonobo-unknown.gob"
+static void 
+mn_bonobo_unknown_activate (MNBonoboUnknown * self)
+#line 387 "mn-bonobo-unknown.c"
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::activate"
+#line 100 "mn-bonobo-unknown.gob"
+	g_return_if_fail (self != NULL);
+#line 100 "mn-bonobo-unknown.gob"
+	g_return_if_fail (MN_IS_BONOBO_UNKNOWN (self));
+#line 394 "mn-bonobo-unknown.c"
+{
+#line 102 "mn-bonobo-unknown.gob"
+	
+    Bonobo_Unknown object;
+
+    object = bonobo_activation_activate_from_id(selfp->iid, 0, NULL, NULL);
+    if (object != CORBA_OBJECT_NIL)
+      {
+	self_set_object(self, object);
+	bonobo_object_release_unref(object, NULL);
+      }
+  }}
+#line 407 "mn-bonobo-unknown.c"
+#undef __GOB_FUNCTION__
+
+#line 113 "mn-bonobo-unknown.gob"
+MNBonoboUnknown * 
+mn_bonobo_unknown_new (const char * iid)
+#line 413 "mn-bonobo-unknown.c"
+{
+#define __GOB_FUNCTION__ "MN:Bonobo:Unknown::new"
+{
+#line 115 "mn-bonobo-unknown.gob"
+	
+    return GET_NEW_VARG(MN_BONOBO_UNKNOWN_PROP_IID((char *) iid), NULL);
+  }}
+#line 421 "mn-bonobo-unknown.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-bonobo-unknown.gob b/src/mn-bonobo-unknown.gob
@@ -0,0 +1,118 @@
+/* 
+ * MN:Bonobo:Unknown - a Bonobo_Unknown wrapper providing connection
+ * monitoring.
+ *
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+requires 2.0.14
+
+%headertop{
+#include <libbonobo.h>
+%}
+
+%privateheader{
+#include "mn-locked-callback.h"
+%}
+
+%{
+#include <gtk/gtk.h>
+%}
+
+class MN:Bonobo:Unknown from G:Object
+{
+  private Bonobo_Unknown object = CORBA_OBJECT_NIL
+    unref { bonobo_object_release_unref(VAR, NULL); };
+  property POINTER object (export, type = Bonobo_Unknown)
+    set
+    {
+      bonobo_object_release_unref(selfp->object, NULL);
+      selfp->object = g_value_get_pointer(VAL);
+      bonobo_object_dup_ref(selfp->object, NULL);
+    }
+    get
+    {
+      g_value_set_pointer(VAL, bonobo_object_dup_ref(selfp->object, NULL));
+    };
+
+  private char *iid destroywith g_free;
+  property STRING iid (link, flags = CONSTRUCT_ONLY);
+
+  private MNLockedGSource *monitor_source;
+
+  override (G:Object) GObject *
+    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  {
+    GObject *object;
+    Self *self;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    self = SELF(object);
+
+    self_activate(self);
+
+    selfp->monitor_source = mn_g_timeout_add_gdk_locked(1000, self_monitor_cb, self);
+
+    return object;
+  }
+
+  override (G:Object) void
+    dispose (GObject *object)
+  {
+    Self *self = SELF(object);
+
+    mn_locked_g_source_remove(selfp->monitor_source);
+
+    PARENT_HANDLER(object);
+  }
+
+  private gboolean
+    monitor_cb (gpointer data)
+  {
+    Self *self = data;
+
+    if (selfp->object != CORBA_OBJECT_NIL)
+      {
+	if (! bonobo_unknown_ping(selfp->object, NULL))
+	  self_set_object(self, CORBA_OBJECT_NIL);
+      }
+    else
+      self_activate(self);
+
+    return TRUE;		/* keep source */
+  }
+
+  private void
+    activate (self)
+  {
+    Bonobo_Unknown object;
+
+    object = bonobo_activation_activate_from_id(selfp->iid, 0, NULL, NULL);
+    if (object != CORBA_OBJECT_NIL)
+      {
+	self_set_object(self, object);
+	bonobo_object_release_unref(object, NULL);
+      }
+  }
+
+  public MNBonoboUnknown *
+    new (const char *iid)
+  {
+    return GET_NEW_VARG(MN_BONOBO_UNKNOWN_PROP_IID((char *) iid), NULL);
+  }
+}
diff --git a/src/mn-mail-summary-popup.gob.stamp b/src/mn-bonobo-unknown.gob.stamp
diff --git a/src/mn-bonobo-unknown.h b/src/mn-bonobo-unknown.h
@@ -0,0 +1,82 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <libbonobo.h>
+
+#ifndef __MN_BONOBO_UNKNOWN_H__
+#define __MN_BONOBO_UNKNOWN_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_BONOBO_UNKNOWN	(mn_bonobo_unknown_get_type())
+#define MN_BONOBO_UNKNOWN(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_bonobo_unknown_get_type(), MNBonoboUnknown)
+#define MN_BONOBO_UNKNOWN_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_bonobo_unknown_get_type(), MNBonoboUnknown const)
+#define MN_BONOBO_UNKNOWN_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_bonobo_unknown_get_type(), MNBonoboUnknownClass)
+#define MN_IS_BONOBO_UNKNOWN(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_bonobo_unknown_get_type ())
+
+#define MN_BONOBO_UNKNOWN_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_bonobo_unknown_get_type(), MNBonoboUnknownClass)
+
+/* Private structure type */
+typedef struct _MNBonoboUnknownPrivate MNBonoboUnknownPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_BONOBO_UNKNOWN__
+#define __TYPEDEF_MN_BONOBO_UNKNOWN__
+typedef struct _MNBonoboUnknown MNBonoboUnknown;
+#endif
+struct _MNBonoboUnknown {
+	GObject __parent__;
+	/*< private >*/
+	MNBonoboUnknownPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNBonoboUnknownClass MNBonoboUnknownClass;
+struct _MNBonoboUnknownClass {
+	GObjectClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_bonobo_unknown_get_type	(void);
+Bonobo_Unknown 	mn_bonobo_unknown_get_object	(MNBonoboUnknown * self);
+void 	mn_bonobo_unknown_set_object	(MNBonoboUnknown * self,
+					Bonobo_Unknown val);
+MNBonoboUnknown * 	mn_bonobo_unknown_new	(const char * iid);
+
+/*
+ * Argument wrapping macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_BONOBO_UNKNOWN_PROP_OBJECT(arg)    	"object", __extension__ ({Bonobo_Unknown z = (arg); z;})
+#define MN_BONOBO_UNKNOWN_GET_PROP_OBJECT(arg)	"object", __extension__ ({Bonobo_Unknown *z = (arg); z;})
+#define MN_BONOBO_UNKNOWN_PROP_IID(arg)    	"iid", __extension__ ({gchar *z = (arg); z;})
+#define MN_BONOBO_UNKNOWN_GET_PROP_IID(arg)	"iid", __extension__ ({gchar **z = (arg); z;})
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_BONOBO_UNKNOWN_PROP_OBJECT(arg)    	"object",(Bonobo_Unknown )(arg)
+#define MN_BONOBO_UNKNOWN_GET_PROP_OBJECT(arg)	"object",(Bonobo_Unknown *)(arg)
+#define MN_BONOBO_UNKNOWN_PROP_IID(arg)    	"iid",(gchar *)(arg)
+#define MN_BONOBO_UNKNOWN_GET_PROP_IID(arg)	"iid",(gchar **)(arg)
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-client-session.c b/src/mn-client-session.c
@@ -15,7 +15,8 @@
  *
  *
  *
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -27,9 +28,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
@@ -70,25 +71,25 @@
 
 struct _MNClientSession
 {
-  MNClientSessionState		*states;
-  MNClientSessionCallbacks	*callbacks;
-  const char			*hostname;
-  int				port;
-  int				s;
-  MNClientSessionState		*state;
-  GError			*error;
-  MNClientSessionPrivate	*private;
-  GByteArray			*input_buffer;
-  unsigned int			bytes_to_remove;
+  const MNClientSessionState		*states;
+  const MNClientSessionCallbacks	*callbacks;
+  const char				*server;
+  int					port;
+  int					s;
+  const MNClientSessionState		*state;
+  GError				*error;
+  MNClientSessionPrivate		*private;
+  GByteArray				*input_buffer;
+  unsigned int				bytes_to_remove;
 
 #if WITH_SSL
-  SSL				*ssl;
+  SSL					*ssl;
 #endif
 
 #if WITH_SASL
-  sasl_conn_t			*sasl_conn;
-  sasl_ssf_t			sasl_ssf;
-  unsigned int			sasl_maxoutbuf;
+  sasl_conn_t				*sasl_conn;
+  sasl_ssf_t				sasl_ssf;
+  unsigned int				sasl_maxoutbuf;
 #endif /* WITH_SASL */
 };
 
@@ -115,7 +116,7 @@ static int mn_client_session_connect (MNClientSession *session, struct addrinfo 
 
 #if WITH_SSL
 static gboolean mn_client_session_ssl_verify (MNClientSession *session);
-static gboolean mn_client_session_run_untrusted_dialog (const char *hostname,
+static gboolean mn_client_session_run_untrusted_dialog (const char *server,
 							const char *reason);
 #endif
 
@@ -143,7 +144,7 @@ static char *mn_client_session_sasl_get_ip_port (const struct sockaddr *addr);
  *          have the %MN_CLIENT_SESSION_INITIAL_STATE id.
  * @callbacks: a pointer to a %MNClientSessionCallbacks structure
  * @use_ssl: whether to establish a SSL/TLS connection or not
- * @hostname: the hostname, IPv4 address or IPv6 address to connect to
+ * @server: the hostname, IPv4 address or IPv6 address to connect to
  * @port: the port to connect to
  * @private: an opaque pointer which will be passed to callbacks, or %NULL
  * @err: a location to report errors, or %NULL
@@ -155,12 +156,12 @@ static char *mn_client_session_sasl_get_ip_port (const struct sockaddr *addr);
  * @err is set)
  **/
 gboolean
-mn_client_session_run (MNClientSessionState *states,
-		       MNClientSessionCallbacks *callbacks,
+mn_client_session_run (const MNClientSessionState *states,
+		       const MNClientSessionCallbacks *callbacks,
 #if WITH_SSL
 		       gboolean use_ssl,
 #endif
-		       const char *hostname,
+		       const char *server,
 		       int port,
 		       MNClientSessionPrivate *private,
 		       GError **err)
@@ -172,12 +173,12 @@ mn_client_session_run (MNClientSessionState *states,
   g_return_val_if_fail(states != NULL, FALSE);
   g_return_val_if_fail(callbacks != NULL, FALSE);
   g_return_val_if_fail(callbacks->response_new != NULL, FALSE);
-  g_return_val_if_fail(hostname != NULL, FALSE);
+  g_return_val_if_fail(server != NULL, FALSE);
 
   memset(&session, 0, sizeof(session));
   session.states = states;
   session.callbacks = callbacks;
-  session.hostname = hostname;
+  session.server = server;
   session.port = port;
   session.private = private;
 
@@ -244,13 +245,13 @@ mn_client_session_resolve (MNClientSession *session)
 #endif /* WITH_IPV6 */
   hints.ai_socktype = SOCK_STREAM;
 
-  mn_client_session_notice(session, _("resolving %s"), session->hostname);
+  mn_client_session_notice(session, _("resolving %s"), session->server);
 
   servname = g_strdup_printf("%i", session->port);
 #ifndef HAVE_REENTRANT_RESOLVER
   G_LOCK(resolver);
 #endif
-  status = getaddrinfo(session->hostname, servname, &hints, &addrinfo);
+  status = getaddrinfo(session->server, servname, &hints, &addrinfo);
 #ifndef HAVE_REENTRANT_RESOLVER
   G_UNLOCK(resolver);
 #endif
@@ -260,7 +261,7 @@ mn_client_session_resolve (MNClientSession *session)
     return addrinfo;
   else
     {
-      mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to resolve %s: %s"), session->hostname, gai_strerror(status));
+      mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to resolve %s: %s"), session->server, gai_strerror(status));
       return NULL;
     }
 }
@@ -326,7 +327,7 @@ mn_client_session_connect (MNClientSession *session, struct addrinfo *addrinfo)
 	  goto failure;
 	}
 
-      mn_client_session_notice(session, _("connecting to %s (%s) port %i"), session->hostname, ip, session->port);
+      mn_client_session_notice(session, _("connecting to %s (%s) port %i"), session->server, ip, session->port);
       if (connect(s, a->ai_addr, a->ai_addrlen) < 0)
 	{
 	  mn_client_session_notice(session, _("unable to connect: %s"), g_strerror(errno));
@@ -348,7 +349,7 @@ mn_client_session_connect (MNClientSession *session, struct addrinfo *addrinfo)
     }
 
   /* if reached, we couldn't find a working address */
-  mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to connect to %s"), session->hostname);
+  mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to connect to %s"), session->server);
   return -1;
 }
 
@@ -456,7 +457,7 @@ mn_client_session_ssl_verify (MNClientSession *session)
 				       X509_verify_cert_error_string(verify_result),
 				       fingerprint);
 
-	      if (mn_client_session_run_untrusted_dialog(session->hostname, reason))
+	      if (mn_client_session_run_untrusted_dialog(session->server, reason))
 		{
 		  status = TRUE;
 		  gconf_fingerprints = g_slist_append(gconf_fingerprints, g_strdup(fingerprint));
@@ -474,14 +475,14 @@ mn_client_session_ssl_verify (MNClientSession *session)
       char *server;
       GSList *gconf_servers = NULL;
 
-      server = g_strdup_printf("%s:%i", session->hostname, session->port);
+      server = g_strdup_printf("%s:%i", session->server, session->port);
       gconf_servers = eel_gconf_get_string_list(MN_CONF_TRUSTED_SERVERS);
 
       if (mn_g_str_slist_find(gconf_servers, server) != NULL)
 	status = TRUE;
       else
 	{
-	  if (mn_client_session_run_untrusted_dialog(session->hostname, _("missing certificate")))
+	  if (mn_client_session_run_untrusted_dialog(session->server, _("missing certificate")))
 	    {
 	      status = TRUE;
 	      gconf_servers = g_slist_append(gconf_servers, g_strdup(server));
@@ -497,14 +498,14 @@ mn_client_session_ssl_verify (MNClientSession *session)
 }
 
 static gboolean
-mn_client_session_run_untrusted_dialog (const char *hostname,
+mn_client_session_run_untrusted_dialog (const char *server,
 					const char *reason)
 {
   GtkWidget *dialog;
   char *secondary;
   gboolean status;
 
-  g_return_val_if_fail(hostname != NULL, FALSE);
+  g_return_val_if_fail(server != NULL, FALSE);
   g_return_val_if_fail(reason != NULL, FALSE);
 
   secondary = g_strdup_printf(_("Mail Notification was unable to trust \"%s\" "
@@ -516,12 +517,12 @@ mn_client_session_run_untrusted_dialog (const char *hostname,
 				"are certain you are connected to \"%s\". "
 				"If you choose to connect to the server, this "
 				"message will not be shown again."),
-			      hostname, reason, hostname);
+			      server, reason, server);
 
   GDK_THREADS_ENTER();
 
   dialog = mn_alert_dialog_new(NULL,
-			       GTK_MESSAGE_WARNING,
+			       GTK_MESSAGE_WARNING, 0,
 			       _("Connect to untrusted server?"),
 			       secondary);
   g_free(secondary);
@@ -1093,7 +1094,7 @@ mn_client_session_sasl_authentication_start (MNClientSession *session,
     mn_client_session_warning(session, _("unable to retrieve remote address of socket: %s"), g_strerror(errno));
 
   result = sasl_client_new(service,
-			   session->hostname,
+			   session->server,
 			   local_ip_port,
 			   remote_ip_port,
 			   sasl_callbacks,
diff --git a/src/mn-client-session.h b/src/mn-client-session.h
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_CLIENT_SESSION_H
@@ -174,8 +175,8 @@ typedef struct
 #endif /* WITH_SASL */
 } MNClientSessionCallbacks;
 
-gboolean mn_client_session_run (MNClientSessionState *states,
-				MNClientSessionCallbacks *callbacks,
+gboolean mn_client_session_run (const MNClientSessionState *states,
+				const MNClientSessionCallbacks *callbacks,
 #if WITH_SSL
 				gboolean use_ssl,
 #endif
diff --git a/src/mn-compact-message-view.c b/src/mn-compact-message-view.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-compact-message-view.gob"
+#line 26 "mn-compact-message-view.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -117,7 +117,7 @@ mn_compact_message_view_class_init (MNCompactMessageViewClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_MESSAGE_VIEW);
 
-#line 36 "mn-compact-message-view.gob"
+#line 37 "mn-compact-message-view.gob"
 	mn_message_view_class->update = ___1_mn_compact_message_view_update;
 #line 123 "mn-compact-message-view.c"
 }
@@ -125,7 +125,7 @@ mn_compact_message_view_class_init (MNCompactMessageViewClass * c G_GNUC_UNUSED)
 
 
 
-#line 36 "mn-compact-message-view.gob"
+#line 37 "mn-compact-message-view.gob"
 static void 
 ___1_mn_compact_message_view_update (MNMessageView * view G_GNUC_UNUSED, GSList * messages)
 #line 132 "mn-compact-message-view.c"
@@ -135,7 +135,7 @@ ___1_mn_compact_message_view_update (MNMessageView * view G_GNUC_UNUSED, GSList 
 {
 #define __GOB_FUNCTION__ "MN:Compact:Message:View::update"
 {
-#line 38 "mn-compact-message-view.gob"
+#line 39 "mn-compact-message-view.gob"
 	
     Self *self = SELF(view);
     time_t now;
@@ -159,25 +159,25 @@ ___1_mn_compact_message_view_update (MNMessageView * view G_GNUC_UNUSED, GSList 
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 58 "mn-compact-message-view.gob"
+#line 59 "mn-compact-message-view.gob"
 static void 
 mn_compact_message_view_append_message (MNCompactMessageView * self, time_t now, MNMessage * message)
 #line 166 "mn-compact-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Compact:Message:View::append_message"
-#line 58 "mn-compact-message-view.gob"
+#line 59 "mn-compact-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 58 "mn-compact-message-view.gob"
+#line 59 "mn-compact-message-view.gob"
 	g_return_if_fail (MN_IS_COMPACT_MESSAGE_VIEW (self));
-#line 58 "mn-compact-message-view.gob"
+#line 59 "mn-compact-message-view.gob"
 	g_return_if_fail (message != NULL);
-#line 58 "mn-compact-message-view.gob"
+#line 59 "mn-compact-message-view.gob"
 	g_return_if_fail (MN_IS_MESSAGE (message));
 #line 177 "mn-compact-message-view.c"
 {
-#line 60 "mn-compact-message-view.gob"
+#line 61 "mn-compact-message-view.gob"
 	
-    self_append_cell(self, message->mailbox_name);
+    self_append_cell(self, message->mailbox->runtime_name);
     if (message->error)
       self_append_cell(self, message->error);
     else
@@ -194,21 +194,21 @@ mn_compact_message_view_append_message (MNCompactMessageView * self, time_t now,
 #line 195 "mn-compact-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 76 "mn-compact-message-view.gob"
+#line 77 "mn-compact-message-view.gob"
 static void 
 mn_compact_message_view_append_header (MNCompactMessageView * self, const char * name)
 #line 201 "mn-compact-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Compact:Message:View::append_header"
-#line 76 "mn-compact-message-view.gob"
+#line 77 "mn-compact-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 76 "mn-compact-message-view.gob"
+#line 77 "mn-compact-message-view.gob"
 	g_return_if_fail (MN_IS_COMPACT_MESSAGE_VIEW (self));
-#line 76 "mn-compact-message-view.gob"
+#line 77 "mn-compact-message-view.gob"
 	g_return_if_fail (name != NULL);
 #line 210 "mn-compact-message-view.c"
 {
-#line 78 "mn-compact-message-view.gob"
+#line 79 "mn-compact-message-view.gob"
 	
     char *markup;
 
@@ -219,35 +219,35 @@ mn_compact_message_view_append_header (MNCompactMessageView * self, const char *
 #line 220 "mn-compact-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 86 "mn-compact-message-view.gob"
+#line 87 "mn-compact-message-view.gob"
 static void 
 mn_compact_message_view_append_cell (MNCompactMessageView * self, const char * text)
 #line 226 "mn-compact-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Compact:Message:View::append_cell"
-#line 86 "mn-compact-message-view.gob"
+#line 87 "mn-compact-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 86 "mn-compact-message-view.gob"
+#line 87 "mn-compact-message-view.gob"
 	g_return_if_fail (MN_IS_COMPACT_MESSAGE_VIEW (self));
-#line 86 "mn-compact-message-view.gob"
+#line 87 "mn-compact-message-view.gob"
 	g_return_if_fail (text != NULL);
 #line 235 "mn-compact-message-view.c"
 {
-#line 88 "mn-compact-message-view.gob"
+#line 89 "mn-compact-message-view.gob"
 	
     mn_text_table_append_text_cell(MN_TEXT_TABLE(self), text);
   }}
 #line 241 "mn-compact-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 92 "mn-compact-message-view.gob"
+#line 93 "mn-compact-message-view.gob"
 GtkWidget * 
 mn_compact_message_view_new (void)
 #line 247 "mn-compact-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Compact:Message:View::new"
 {
-#line 94 "mn-compact-message-view.gob"
+#line 95 "mn-compact-message-view.gob"
 	
     return GTK_WIDGET(GET_NEW);
   }}
diff --git a/src/mn-compact-message-view.gob b/src/mn-compact-message-view.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -58,7 +59,7 @@ class MN:Compact:Message:View from MN:Message:View
   private void
     append_message (self, time_t now, MN:Message *message (check null type))
   {
-    self_append_cell(self, message->mailbox_name);
+    self_append_cell(self, message->mailbox->runtime_name);
     if (message->error)
       self_append_cell(self, message->error);
     else
diff --git a/src/mn-conf.c b/src/mn-conf.c
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
@@ -27,6 +28,7 @@
 #include "mn-util.h"
 #include "mn-conf.h"
 #include "mn-shell.h"
+#include "mn-locked-callback.h"
 
 /*** cpp *********************************************************************/
 
@@ -69,10 +71,6 @@
   MN_CONF_UI_NAMESPACE "/preferences-dialog"
 #define MN_CONF_OBSOLETE_SUMMARY_DIALOG \
   MN_CONF_UI_NAMESPACE "/summary-dialog"
-#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_ENABLED \
-  MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_NAMESPACE "/enabled"
-#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_ENABLED \
-  MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_NAMESPACE "/enabled"
 #define MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION \
   MN_CONF_NAMESPACE "/double-click-action"
 #define MN_CONF_OBSOLETE_ALREADY_RUN \
@@ -103,6 +101,44 @@
   MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/toolbars-style"
 #define MN_CONF_OBSOLETE_MAIN_WINDOW_EDIT_TOOLBARS_DIALOG \
   MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/edit-toolbars-dialog"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE \
+  MN_CONF_NAMESPACE "/mail-summary-popup"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_ENABLE \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/enable"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/autoclose"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/autoclose-delay"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE "/minutes"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE "/seconds"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_LAYOUT \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/layout"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_POSITION \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/position"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/offset"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/horizontal"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/vertical"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_ONLY_RECENT \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/only-recent"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE "/fonts"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE "/aspect-source"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_NAMESPACE \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE "/title"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_NAMESPACE "/font"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_NAMESPACE \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE "/contents"
+#define MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT \
+  MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_NAMESPACE "/font"
+#define MN_CONF_OBSOLETE_CLICK_ACTION \
+  MN_CONF_NAMESPACE "/click-action"
 
 #define BLOCK(info) \
   g_signal_handler_block((info)->object, (info)->handler_id)
@@ -127,12 +163,6 @@ typedef struct
 typedef struct
 {
   LinkInfo		parent;
-  int			string_column;
-} LinkComboBoxToStringInfo;
-
-typedef struct
-{
-  LinkInfo		parent;
   char			*str;
 } LinkRadioButtonToStringInfo;
 
@@ -175,17 +205,6 @@ static void mn_conf_import_obsolete_string (const char *obsolete,
 
 static void mn_conf_link_weak_notify_cb (gpointer data, GObject *former_object);
 
-static void mn_conf_link_combo_box_to_string_set (LinkComboBoxToStringInfo *info,
-						  const GConfValue *value);
-static gboolean mn_conf_link_combo_box_to_string_set_real (LinkComboBoxToStringInfo *info,
-							   const char *value);
-static void mn_conf_link_combo_box_to_string_h (GtkComboBox *combo,
-						gpointer user_data);
-static void mn_conf_link_combo_box_to_string_notify_cb (GConfClient *client,
-							unsigned int cnxn_id,
-							GConfEntry *entry,
-							gpointer user_data);
-
 static void mn_conf_link_radio_button_to_string (GtkRadioButton *radio,
 						 const char *key,
 						 const char *str);
@@ -275,23 +294,8 @@ mn_conf_init (void)
 			      MN_CONF_PROPERTIES_DIALOG "/height");
   mn_conf_import_obsolete_key(MN_CONF_OBSOLETE_PREFERENCES_DIALOG "/width",
 			      MN_CONF_PROPERTIES_DIALOG "/width");
-
-  if (! mn_conf_is_set(MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE)
-      && mn_conf_is_set(MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_ENABLED)
-      && mn_conf_is_set(MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_ENABLED)
-      && eel_gconf_get_boolean(MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_ENABLED)
-      && eel_gconf_get_boolean(MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_ENABLED))
-    {
-      GEnumClass *enum_class;
-      GEnumValue *enum_value;
-
-      enum_class = g_type_class_ref(MN_TYPE_ASPECT_SOURCE);
-      enum_value = g_enum_get_value(enum_class, MN_ASPECT_SOURCE_CUSTOM);
-      g_assert(enum_value != NULL);
-
-      eel_gconf_set_string(MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE, enum_value->value_nick);
-      g_type_class_unref(enum_class);
-    }
+  mn_conf_import_obsolete_key(MN_CONF_OBSOLETE_CLICK_ACTION,
+			      MN_CONF_CLICK_ACTION);
 
   mn_conf_import_obsolete_string(MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION_2,
 				 MN_CONF_CLICK_ACTION,
@@ -376,15 +380,13 @@ mn_conf_import_obsolete_string (const char *obsolete,
 void
 mn_conf_unset_obsolete (void)
 {
-  const char *obsolete[] = {
+  static const char *obsolete[] = {
     MN_CONF_OBSOLETE_LOCAL_NAMESPACE,
     MN_CONF_OBSOLETE_REMOTE_NAMESPACE,
     MN_CONF_OBSOLETE_COMMANDS_CLICKED_NAMESPACE,
     MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_NAMESPACE,
     MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_NAMESPACE,
     MN_CONF_OBSOLETE_PREFERENCES_DIALOG,
-    MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_TITLE_ENABLED,
-    MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_ENABLED,
     MN_CONF_OBSOLETE_SUMMARY_DIALOG,
     MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION,
     MN_CONF_OBSOLETE_MAILBOXES,
@@ -393,7 +395,9 @@ mn_conf_unset_obsolete (void)
     MN_CONF_OBSOLETE_DELAY_NAMESPACE,
     MN_CONF_OBSOLETE_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE,
     MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION_2,
-    MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE
+    MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE,
+    MN_CONF_OBSOLETE_MAIL_SUMMARY_POPUP_NAMESPACE,
+    MN_CONF_OBSOLETE_CLICK_ACTION
   };
   int i;
 
@@ -598,122 +602,6 @@ mn_conf_link_weak_notify_cb (gpointer data, GObject *former_object)
 }
 
 void
-mn_conf_link_combo_box_to_string (GtkComboBox *combo,
-				  int string_column,
-				  const char *key)
-{
-  LinkComboBoxToStringInfo *info;
-  GConfValue *value;
-
-  g_return_if_fail(GTK_IS_COMBO_BOX(combo));
-  g_return_if_fail(key != NULL);
-
-  info = g_new0(LinkComboBoxToStringInfo, 1);
-  info->string_column = string_column;
-  LINK_INFO(info)->object = combo;
-  LINK_INFO(info)->key = g_strdup(key);
-
-  value = eel_gconf_get_value(key);
-  mn_conf_link_combo_box_to_string_set(info, value);
-  if (value)
-    eel_gconf_value_free(value);
-
-  LINK_INFO(info)->handler_id = g_signal_connect(combo, "changed", G_CALLBACK(mn_conf_link_combo_box_to_string_h), info);
-  mn_g_object_gconf_notification_add_gdk_locked(combo, key, mn_conf_link_combo_box_to_string_notify_cb, info);
-  g_object_weak_ref(G_OBJECT(combo), mn_conf_link_weak_notify_cb, info);
-}
-
-static void
-mn_conf_link_combo_box_to_string_set (LinkComboBoxToStringInfo *info,
-				      const GConfValue *value)
-{
-  g_return_if_fail(info != NULL);
-
-  if (! mn_conf_link_combo_box_to_string_set_real(info, value ? gconf_value_get_string(value) : NULL))
-    {
-      GtkTreeModel *model;
-      GtkTreeIter iter;
-      gboolean valid;
-
-      /* value not found, select the first iter */
-
-      model = gtk_combo_box_get_model(LINK_INFO(info)->object);
-      valid = gtk_tree_model_get_iter_first(model, &iter);
-      g_assert(valid == TRUE);
-
-      gtk_combo_box_set_active_iter(LINK_INFO(info)->object, &iter);
-    }
-}
-
-static gboolean
-mn_conf_link_combo_box_to_string_set_real (LinkComboBoxToStringInfo *info,
-					   const char *value)
-{
-  GtkTreeModel *model;
-  GtkTreeIter iter;
-  gboolean valid;
-
-  g_return_val_if_fail(info != NULL, FALSE);
-
-  if (! value)
-    return FALSE;
-
-  model = gtk_combo_box_get_model(LINK_INFO(info)->object);
-  valid = gtk_tree_model_get_iter_first(model, &iter);
-
-  while (valid)
-    {
-      char *this_value;
-      gboolean found;
-
-      gtk_tree_model_get(model, &iter, info->string_column, &this_value, -1);
-      found = this_value && ! strcmp(this_value, value);
-      g_free(this_value);
-
-      if (found)
-	{
-	  gtk_combo_box_set_active_iter(LINK_INFO(info)->object, &iter);
-	  return TRUE;
-	}
-
-      valid = gtk_tree_model_iter_next(model, &iter);
-    }
-
-  return FALSE;
-}
-
-static void
-mn_conf_link_combo_box_to_string_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))
-    {
-      LinkComboBoxToStringInfo *info = user_data;
-      char *value;
-
-      gtk_tree_model_get(model, &iter, info->string_column, &value, -1);
-      eel_gconf_set_string(LINK_INFO(info)->key, value);
-      g_free(value);
-    }
-}
-
-static void
-mn_conf_link_combo_box_to_string_notify_cb (GConfClient *client,
-					    unsigned int cnxn_id,
-					    GConfEntry *entry,
-					    gpointer user_data)
-{
-  LinkComboBoxToStringInfo *info = user_data;
-
-  BLOCK(LINK_INFO(info));
-  mn_conf_link_combo_box_to_string_set(info, gconf_entry_get_value(entry));
-  UNBLOCK(LINK_INFO(info));
-}
-
-void
 mn_conf_link_radio_group_to_enum (GType enum_type,
 				  const char *key,
 				  ...)
@@ -1107,7 +995,7 @@ mn_conf_has_command (const char *namespace)
 }
 
 void
-mn_conf_execute_command (const char *conf_key, gboolean strip_format)
+mn_conf_execute_command (const char *conf_key)
 {
   char *command;
 
@@ -1116,36 +1004,43 @@ mn_conf_execute_command (const char *conf_key, gboolean strip_format)
   command = eel_gconf_get_string(conf_key);
   g_return_if_fail(command != NULL && *command != 0);
 
-  if (strip_format)
-    {
-      GString *stripped;
-      char *start;
-      char *p;
+  mn_execute_command(command);
+  g_free(command);
+}
 
-      stripped = g_string_new(NULL);
+void
+mn_conf_execute_mail_reader (void)
+{
+  char *command;
+  char *separator;
+  char *program;
 
-      for (start = command; (p = strstr(start, "%s")); start = p + 2)
-	g_string_append_len(stripped, start, p - start);
-      g_string_append(stripped, start);
+  command = eel_gconf_get_string(MN_CONF_GNOME_MAIL_READER_COMMAND);
+  g_return_if_fail(command != NULL && *command != 0);
 
-      g_free(command);
-      command = g_string_free(stripped, FALSE);
-    }
+  separator = strpbrk(command, " \t\n\r");
+  program = separator
+    ? g_strndup(command, separator - command)
+    : g_strdup(command);
+  g_free(command);
+
+  if (! strcmp(program, "mozilla"))
+    command = g_strdup_printf("%s -mail", program);
+  else if (! strcmp(program, "evolution"))
+    command = g_strdup_printf("%s --component=mail", program);
+  else
+    command = g_strdup(program);
+  g_free(program);
 
-  if (gnome_execute_shell(NULL, command) < 0)
-    mn_error_dialog(NULL,
-		    _("A command error has occurred in Mail Notification"),
-		    _("Unable to execute \"%s\": %s."),
-		    command,
-		    g_strerror(errno));
+  if (eel_gconf_get_boolean(MN_CONF_GNOME_MAIL_READER_NEEDS_TERMINAL))
+    mn_execute_command_in_terminal(command);
+  else
+    mn_execute_command(command);
   g_free(command);
 }
 
-MNLockedGSource *
-mn_conf_timeout_add_gdk_locked (const char *minutes_key,
-				const char *seconds_key,
-				GSourceFunc function,
-				gpointer data)
+int
+mn_conf_get_milliseconds (const char *minutes_key, const char *seconds_key)
 {
   int minutes;
   int seconds;
@@ -1156,7 +1051,5 @@ mn_conf_timeout_add_gdk_locked (const char *minutes_key,
   minutes = eel_gconf_get_integer(minutes_key);
   seconds = eel_gconf_get_integer(seconds_key);
 
-  return minutes != 0 || seconds != 0
-    ? mn_g_timeout_add_gdk_locked(((minutes * 60) + seconds) * 1000, function, data)
-    : NULL;
+  return ((minutes * 60) + seconds) * 1000;
 }
diff --git a/src/mn-conf.h b/src/mn-conf.h
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_CONF_H
@@ -23,7 +24,6 @@
 #include <gtk/gtk.h>
 #include <eel/eel.h>
 #include "mn-util.h"
-#include "mn-locked-callback.h"
 
 #define MN_CONF_NAMESPACE \
   "/apps/mail-notification"
@@ -41,6 +41,12 @@
   MN_CONF_COMMANDS_MAIL_READ_NAMESPACE "/enabled"
 #define MN_CONF_COMMANDS_MAIL_READ_COMMAND \
   MN_CONF_COMMANDS_MAIL_READ_NAMESPACE "/command"
+#define MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE \
+  MN_CONF_COMMANDS_NAMESPACE "/mail-changed"
+#define MN_CONF_COMMANDS_MAIL_CHANGED_ENABLED \
+  MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE "/enabled"
+#define MN_CONF_COMMANDS_MAIL_CHANGED_COMMAND \
+  MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE "/command"
 #define MN_CONF_UI_NAMESPACE \
   MN_CONF_NAMESPACE "/ui"
 #define MN_CONF_PROPERTIES_DIALOG \
@@ -51,42 +57,6 @@
   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_LAYOUT \
-  MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/layout"
-#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"
-#define MN_CONF_MAIL_SUMMARY_POPUP_ONLY_RECENT \
-  MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/only-recent"
-#define MN_CONF_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE \
-  MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/fonts"
-#define MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE \
-  MN_CONF_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE "/aspect-source"
-#define MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_NAMESPACE \
-  MN_CONF_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE "/title"
-#define MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT \
-  MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_NAMESPACE "/font"
-#define MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_NAMESPACE \
-  MN_CONF_MAIL_SUMMARY_POPUP_FONTS_NAMESPACE "/contents"
-#define MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT \
-  MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_NAMESPACE "/font"
 #define MN_CONF_DISPLAY_SEEN_MAIL \
   MN_CONF_NAMESPACE "/display-seen-mail"
 #define MN_CONF_TOOLTIP_MAIL_SUMMARY \
@@ -94,7 +64,23 @@
 #define MN_CONF_ALWAYS_DISPLAY_ICON \
   MN_CONF_NAMESPACE "/always-display-icon"
 #define MN_CONF_CLICK_ACTION \
-  MN_CONF_NAMESPACE "/click-action"
+  MN_CONF_NAMESPACE "/click-action-2"
+#define MN_CONF_POPUPS_NAMESPACE \
+  MN_CONF_NAMESPACE "/popups"
+#define MN_CONF_POPUPS_ENABLED \
+  MN_CONF_POPUPS_NAMESPACE "/enabled"
+#define MN_CONF_POPUPS_POSITION \
+  MN_CONF_POPUPS_NAMESPACE "/position"
+#define MN_CONF_POPUPS_EXPIRATION_NAMESPACE \
+  MN_CONF_POPUPS_NAMESPACE "/expiration"
+#define MN_CONF_POPUPS_EXPIRATION_ENABLED \
+  MN_CONF_POPUPS_EXPIRATION_NAMESPACE "/enabled"
+#define MN_CONF_POPUPS_EXPIRATION_DELAY_NAMESPACE \
+  MN_CONF_POPUPS_EXPIRATION_NAMESPACE "/delay"
+#define MN_CONF_POPUPS_EXPIRATION_DELAY_MINUTES \
+  MN_CONF_POPUPS_EXPIRATION_DELAY_NAMESPACE "/minutes"
+#define MN_CONF_POPUPS_EXPIRATION_DELAY_SECONDS \
+  MN_CONF_POPUPS_EXPIRATION_DELAY_NAMESPACE "/seconds"
 
 /* obsolete keys */
 #define MN_CONF_OBSOLETE_MAILBOXES \
@@ -105,6 +91,8 @@
   "/desktop/gnome/url-handlers/mailto"
 #define MN_CONF_GNOME_MAIL_READER_COMMAND \
   MN_CONF_GNOME_MAIL_READER_NAMESPACE "/command"
+#define MN_CONF_GNOME_MAIL_READER_NEEDS_TERMINAL \
+  MN_CONF_GNOME_MAIL_READER_NAMESPACE "/needs_terminal"
 
 extern const char *mn_conf_dot_dir;
 
@@ -121,9 +109,6 @@ void		mn_conf_set_value	(const char	*key,
 
 void		mn_conf_link		(gpointer	object,
 					 ...);
-void		mn_conf_link_combo_box_to_string (GtkComboBox	*combo,
-						  int		string_column,
-						  const char	*key);
 void		mn_conf_link_radio_group_to_enum (GType		enum_type,
 						  const char	*key,
 						  ...);
@@ -137,12 +122,10 @@ unsigned int	mn_conf_notification_add_full	(const char		*key,
 						 GFreeFunc		destroy_notify);
 
 gboolean	mn_conf_has_command		(const char	*namespace);
-void		mn_conf_execute_command		(const char	*conf_key,
-						 gboolean	strip_format);
+void		mn_conf_execute_command		(const char	*conf_key);
+void		mn_conf_execute_mail_reader	(void);
 
-MNLockedGSource *mn_conf_timeout_add_gdk_locked	(const char	*minutes_key,
-						 const char	*seconds_key,
-						 GSourceFunc	function,
-						 gpointer	data);
+int		mn_conf_get_milliseconds (const char	*minutes_key,
+					  const char	*seconds_key);
 
 #endif /* _MN_CONF_H */
diff --git a/src/mn-corba-object-private.h b/src/mn-corba-object-private.h
@@ -1,32 +0,0 @@
-/* Generated by GOB (v2.0.14)   (do not edit directly) */
-
-#ifndef __MN_CORBA_OBJECT_PRIVATE_H__
-#define __MN_CORBA_OBJECT_PRIVATE_H__
-
-#include "mn-corba-object.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#line 25 "mn-corba-object.gob"
-
-#include "mn-locked-callback.h"
-
-#line 18 "mn-corba-object-private.h"
-struct _MNCORBAObjectPrivate {
-#line 35 "mn-corba-object.gob"
-	CORBA_Object object;
-#line 56 "mn-corba-object.gob"
-	char * iid;
-#line 59 "mn-corba-object.gob"
-	MNLockedGSource * monitor_source;
-#line 26 "mn-corba-object-private.h"
-};
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/src/mn-corba-object.c b/src/mn-corba-object.c
@@ -1,403 +0,0 @@
-/* Generated by GOB (v2.0.14)   (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 14
-
-#define selfp (self->_priv)
-
-#include <string.h> /* memset() */
-
-#include "mn-corba-object.h"
-
-#include "mn-corba-object-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 29 "mn-corba-object.gob"
-
-#include <gtk/gtk.h>
-
-#line 30 "mn-corba-object.c"
-/* self casting macros */
-#define SELF(x) MN_CORBA_OBJECT(x)
-#define SELF_CONST(x) MN_CORBA_OBJECT_CONST(x)
-#define IS_SELF(x) MN_IS_CORBA_OBJECT(x)
-#define TYPE_SELF MN_TYPE_CORBA_OBJECT
-#define SELF_CLASS(x) MN_CORBA_OBJECT_CLASS(x)
-
-#define SELF_GET_CLASS(x) MN_CORBA_OBJECT_GET_CLASS(x)
-
-/* self typedefs */
-typedef MNCORBAObject Self;
-typedef MNCORBAObjectClass 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_corba_object_init (MNCORBAObject * o) G_GNUC_UNUSED;
-static void mn_corba_object_class_init (MNCORBAObjectClass * c) G_GNUC_UNUSED;
-static GObject * ___3_mn_corba_object_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
-static void ___4_mn_corba_object_finalize (GObject * object) G_GNUC_UNUSED;
-static gboolean mn_corba_object_monitor_cb (gpointer data) G_GNUC_UNUSED;
-
-enum {
-	PROP_0,
-	PROP_OBJECT,
-	PROP_IID
-};
-
-/* pointer to the class of our parent */
-static GObjectClass *parent_class = NULL;
-
-/* Short form macros */
-#define self_get_object mn_corba_object_get_object
-#define self_set_object mn_corba_object_set_object
-#define self_monitor_cb mn_corba_object_monitor_cb
-#define self_new mn_corba_object_new
-GType
-mn_corba_object_get_type (void)
-{
-	static GType type = 0;
-
-	if ___GOB_UNLIKELY(type == 0) {
-		static const GTypeInfo info = {
-			sizeof (MNCORBAObjectClass),
-			(GBaseInitFunc) NULL,
-			(GBaseFinalizeFunc) NULL,
-			(GClassInitFunc) mn_corba_object_class_init,
-			(GClassFinalizeFunc) NULL,
-			NULL /* class_data */,
-			sizeof (MNCORBAObject),
-			0 /* n_preallocs */,
-			(GInstanceInitFunc) mn_corba_object_init,
-			NULL
-		};
-
-		type = g_type_register_static (G_TYPE_OBJECT, "MNCORBAObject", &info, (GTypeFlags)0);
-	}
-
-	return type;
-}
-
-/* a macro for creating a new object of our type */
-#define GET_NEW ((MNCORBAObject *)g_object_new(mn_corba_object_get_type(), NULL))
-
-/* a function for creating a new object of our type */
-#include <stdarg.h>
-static MNCORBAObject * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
-static MNCORBAObject *
-GET_NEW_VARG (const char *first, ...)
-{
-	MNCORBAObject *ret;
-	va_list ap;
-	va_start (ap, first);
-	ret = (MNCORBAObject *)g_object_new_valist (mn_corba_object_get_type (), first, ap);
-	va_end (ap);
-	return ret;
-}
-
-
-static void
-___finalize(GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:CORBA:Object::finalize"
-	MNCORBAObject *self G_GNUC_UNUSED = MN_CORBA_OBJECT (obj_self);
-	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 83 "mn-corba-object.gob"
-	___4_mn_corba_object_finalize(obj_self);
-#line 118 "mn-corba-object.c"
-#define object (self->_priv->object)
-#define VAR object
-	{
-#line 36 "mn-corba-object.gob"
-	 if (VAR != CORBA_OBJECT_NIL) CORBA_Object_release(VAR, NULL); }
-#line 124 "mn-corba-object.c"
-	memset(&object, 0, sizeof(object));
-#undef VAR
-#undef object
-#line 56 "mn-corba-object.gob"
-	if(self->_priv->iid) { g_free ((gpointer) self->_priv->iid); self->_priv->iid = NULL; }
-#line 130 "mn-corba-object.c"
-}
-#undef __GOB_FUNCTION__
-
-static void 
-mn_corba_object_init (MNCORBAObject * o G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:CORBA:Object::init"
-	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_CORBA_OBJECT,MNCORBAObjectPrivate);
-#line 29 "mn-corba-object.gob"
-	o->_priv->object = CORBA_OBJECT_NIL;
-#line 141 "mn-corba-object.c"
-}
-#undef __GOB_FUNCTION__
-static void 
-mn_corba_object_class_init (MNCORBAObjectClass * c G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:CORBA:Object::class_init"
-	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
-
-	g_type_class_add_private(c,sizeof(MNCORBAObjectPrivate));
-
-	parent_class = g_type_class_ref (G_TYPE_OBJECT);
-
-#line 61 "mn-corba-object.gob"
-	g_object_class->constructor = ___3_mn_corba_object_constructor;
-#line 83 "mn-corba-object.gob"
-	g_object_class->finalize = ___finalize;
-#line 158 "mn-corba-object.c"
-	g_object_class->get_property = ___object_get_property;
-	g_object_class->set_property = ___object_set_property;
-    {
-	GParamSpec   *param_spec;
-
-	param_spec = g_param_spec_pointer
-		("object" /* name */,
-		 NULL /* nick */,
-		 NULL /* blurb */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE));
-	g_object_class_install_property (g_object_class,
-		PROP_OBJECT,
-		param_spec);
-	param_spec = g_param_spec_string
-		("iid" /* 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_IID,
-		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:CORBA:Object::set_property"
-{
-	MNCORBAObject *self G_GNUC_UNUSED;
-
-	self = MN_CORBA_OBJECT (object);
-
-	switch (property_id) {
-	case PROP_OBJECT:
-		{
-#line 39 "mn-corba-object.gob"
-
-      if (selfp->object != CORBA_OBJECT_NIL)
-	CORBA_Object_release(selfp->object, NULL);
-
-      selfp->object = g_value_get_pointer(VAL);
-
-      if (selfp->object != CORBA_OBJECT_NIL)
-	CORBA_Object_duplicate(selfp->object, NULL);
-    
-#line 209 "mn-corba-object.c"
-		}
-		break;
-	case PROP_IID:
-		{
-#line 57 "mn-corba-object.gob"
-{ char *old = self->_priv->iid; self->_priv->iid = g_value_dup_string (VAL); g_free (old); }
-#line 216 "mn-corba-object.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:CORBA:Object::get_property"
-{
-	MNCORBAObject *self G_GNUC_UNUSED;
-
-	self = MN_CORBA_OBJECT (object);
-
-	switch (property_id) {
-	case PROP_OBJECT:
-		{
-#line 49 "mn-corba-object.gob"
-
-      if (selfp->object != CORBA_OBJECT_NIL)
-	CORBA_Object_duplicate(selfp->object, NULL);
-
-      g_value_set_pointer(VAL, selfp->object);
-    
-#line 252 "mn-corba-object.c"
-		}
-		break;
-	case PROP_IID:
-		{
-#line 57 "mn-corba-object.gob"
-g_value_set_string (VAL, self->_priv->iid);
-#line 259 "mn-corba-object.c"
-		}
-		break;
-	default:
-/* Apparently in g++ this is needed, glib is b0rk */
-#ifndef __PRETTY_FUNCTION__
-#  undef G_STRLOC
-#  define G_STRLOC	__FILE__ ":" G_STRINGIFY (__LINE__)
-#endif
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-		break;
-	}
-}
-#undef __GOB_FUNCTION__
-
-
-
-#line 49 "mn-corba-object.gob"
-CORBA_Object 
-mn_corba_object_get_object (MNCORBAObject * self)
-#line 279 "mn-corba-object.c"
-{
-#define __GOB_FUNCTION__ "MN:CORBA:Object::get_object"
-{
-#line 37 "mn-corba-object.gob"
-		CORBA_Object val; g_object_get (G_OBJECT (self), "object", &val, NULL); return val;
-}}
-#line 286 "mn-corba-object.c"
-#undef __GOB_FUNCTION__
-
-#line 39 "mn-corba-object.gob"
-void 
-mn_corba_object_set_object (MNCORBAObject * self, CORBA_Object val)
-#line 292 "mn-corba-object.c"
-{
-#define __GOB_FUNCTION__ "MN:CORBA:Object::set_object"
-{
-#line 37 "mn-corba-object.gob"
-		g_object_set (G_OBJECT (self), "object", val, NULL);
-}}
-#line 299 "mn-corba-object.c"
-#undef __GOB_FUNCTION__
-
-#line 61 "mn-corba-object.gob"
-static GObject * 
-___3_mn_corba_object_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 305 "mn-corba-object.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:CORBA:Object::constructor"
-{
-#line 63 "mn-corba-object.gob"
-	
-    GObject *object;
-    Self *self;
-    CORBA_Object corba_object;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    self = SELF(object);
-
-    corba_object = bonobo_activation_activate_from_id(selfp->iid, 0, NULL, NULL);
-    if (corba_object != CORBA_OBJECT_NIL)
-      {
-	self_set_object(self, corba_object);
-	CORBA_Object_release(corba_object, NULL);
-      }
-
-    selfp->monitor_source = mn_g_timeout_add_gdk_locked(1000, self_monitor_cb, self);
-
-    return object;
-  }}
-#line 333 "mn-corba-object.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 83 "mn-corba-object.gob"
-static void 
-___4_mn_corba_object_finalize (GObject * object G_GNUC_UNUSED)
-#line 340 "mn-corba-object.c"
-#define PARENT_HANDLER(___object) \
-	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
-{
-#define __GOB_FUNCTION__ "MN:CORBA:Object::finalize"
-{
-#line 85 "mn-corba-object.gob"
-	
-    Self *self = SELF(object);
-
-    mn_locked_g_source_remove(selfp->monitor_source);
-
-    PARENT_HANDLER(object);
-  }}
-#line 355 "mn-corba-object.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 93 "mn-corba-object.gob"
-static gboolean 
-mn_corba_object_monitor_cb (gpointer data)
-#line 362 "mn-corba-object.c"
-{
-#define __GOB_FUNCTION__ "MN:CORBA:Object::monitor_cb"
-{
-#line 95 "mn-corba-object.gob"
-	
-    Self *self = data;
-
-    if (selfp->object != CORBA_OBJECT_NIL)
-      {
-	if (! bonobo_unknown_ping(selfp->object, NULL))
-	  self_set_object(self, CORBA_OBJECT_NIL);
-      }
-    else
-      {
-	CORBA_Object object;
-
-	object = bonobo_activation_activate_from_id(selfp->iid, 0, NULL, NULL);
-	if (object != CORBA_OBJECT_NIL)
-	  {
-	    self_set_object(self, object);
-	    CORBA_Object_release(object, NULL);
-	  }
-      }
-
-    return TRUE;		/* keep source */
-  }}
-#line 389 "mn-corba-object.c"
-#undef __GOB_FUNCTION__
-
-#line 118 "mn-corba-object.gob"
-MNCORBAObject * 
-mn_corba_object_new (const char * iid)
-#line 395 "mn-corba-object.c"
-{
-#define __GOB_FUNCTION__ "MN:CORBA:Object::new"
-{
-#line 120 "mn-corba-object.gob"
-	
-    return GET_NEW_VARG(MN_CORBA_OBJECT_PROP_IID((char *) iid), NULL);
-  }}
-#line 403 "mn-corba-object.c"
-#undef __GOB_FUNCTION__
diff --git a/src/mn-corba-object.gob b/src/mn-corba-object.gob
@@ -1,123 +0,0 @@
-/* 
- * Copyright (C) 2005, 2006 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.14
-
-%headertop{
-#include <libbonobo.h>
-%}
-
-%privateheader{
-#include "mn-locked-callback.h"
-%}
-
-%{
-#include <gtk/gtk.h>
-%}
-
-class MN:CORBA:Object from G:Object
-{
-  private CORBA_Object object = CORBA_OBJECT_NIL
-    destroy { if (VAR != CORBA_OBJECT_NIL) CORBA_Object_release(VAR, NULL); };
-  property POINTER object (export, type = CORBA_Object)
-    set
-    {
-      if (selfp->object != CORBA_OBJECT_NIL)
-	CORBA_Object_release(selfp->object, NULL);
-
-      selfp->object = g_value_get_pointer(VAL);
-
-      if (selfp->object != CORBA_OBJECT_NIL)
-	CORBA_Object_duplicate(selfp->object, NULL);
-    }
-    get
-    {
-      if (selfp->object != CORBA_OBJECT_NIL)
-	CORBA_Object_duplicate(selfp->object, NULL);
-
-      g_value_set_pointer(VAL, selfp->object);
-    };
-
-  private char *iid destroywith g_free;
-  property STRING iid (link, flags = CONSTRUCT_ONLY);
-
-  private MNLockedGSource *monitor_source;
-
-  override (G:Object) GObject *
-    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
-  {
-    GObject *object;
-    Self *self;
-    CORBA_Object corba_object;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    self = SELF(object);
-
-    corba_object = bonobo_activation_activate_from_id(selfp->iid, 0, NULL, NULL);
-    if (corba_object != CORBA_OBJECT_NIL)
-      {
-	self_set_object(self, corba_object);
-	CORBA_Object_release(corba_object, NULL);
-      }
-
-    selfp->monitor_source = mn_g_timeout_add_gdk_locked(1000, self_monitor_cb, self);
-
-    return object;
-  }
-
-  override (G:Object) void
-    finalize (GObject *object)
-  {
-    Self *self = SELF(object);
-
-    mn_locked_g_source_remove(selfp->monitor_source);
-
-    PARENT_HANDLER(object);
-  }
-
-  private gboolean
-    monitor_cb (gpointer data)
-  {
-    Self *self = data;
-
-    if (selfp->object != CORBA_OBJECT_NIL)
-      {
-	if (! bonobo_unknown_ping(selfp->object, NULL))
-	  self_set_object(self, CORBA_OBJECT_NIL);
-      }
-    else
-      {
-	CORBA_Object object;
-
-	object = bonobo_activation_activate_from_id(selfp->iid, 0, NULL, NULL);
-	if (object != CORBA_OBJECT_NIL)
-	  {
-	    self_set_object(self, object);
-	    CORBA_Object_release(object, NULL);
-	  }
-      }
-
-    return TRUE;		/* keep source */
-  }
-
-  public MNCORBAObject *
-    new (const char *iid)
-  {
-    return GET_NEW_VARG(MN_CORBA_OBJECT_PROP_IID((char *) iid), NULL);
-  }
-}
diff --git a/src/mn-corba-object.h b/src/mn-corba-object.h
@@ -1,82 +0,0 @@
-/* Generated by GOB (v2.0.14)   (do not edit directly) */
-
-#include <glib.h>
-#include <glib-object.h>
-
-
-#include <libbonobo.h>
-
-#ifndef __MN_CORBA_OBJECT_H__
-#define __MN_CORBA_OBJECT_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/*
- * Type checking and casting macros
- */
-#define MN_TYPE_CORBA_OBJECT	(mn_corba_object_get_type())
-#define MN_CORBA_OBJECT(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_corba_object_get_type(), MNCORBAObject)
-#define MN_CORBA_OBJECT_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_corba_object_get_type(), MNCORBAObject const)
-#define MN_CORBA_OBJECT_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_corba_object_get_type(), MNCORBAObjectClass)
-#define MN_IS_CORBA_OBJECT(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_corba_object_get_type ())
-
-#define MN_CORBA_OBJECT_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_corba_object_get_type(), MNCORBAObjectClass)
-
-/* Private structure type */
-typedef struct _MNCORBAObjectPrivate MNCORBAObjectPrivate;
-
-/*
- * Main object structure
- */
-#ifndef __TYPEDEF_MN_CORBA_OBJECT__
-#define __TYPEDEF_MN_CORBA_OBJECT__
-typedef struct _MNCORBAObject MNCORBAObject;
-#endif
-struct _MNCORBAObject {
-	GObject __parent__;
-	/*< private >*/
-	MNCORBAObjectPrivate *_priv;
-};
-
-/*
- * Class definition
- */
-typedef struct _MNCORBAObjectClass MNCORBAObjectClass;
-struct _MNCORBAObjectClass {
-	GObjectClass __parent__;
-};
-
-
-/*
- * Public methods
- */
-GType	mn_corba_object_get_type	(void);
-CORBA_Object 	mn_corba_object_get_object	(MNCORBAObject * self);
-void 	mn_corba_object_set_object	(MNCORBAObject * self,
-					CORBA_Object val);
-MNCORBAObject * 	mn_corba_object_new	(const char * iid);
-
-/*
- * Argument wrapping macros
- */
-#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-#define MN_CORBA_OBJECT_PROP_OBJECT(arg)    	"object", __extension__ ({CORBA_Object z = (arg); z;})
-#define MN_CORBA_OBJECT_GET_PROP_OBJECT(arg)	"object", __extension__ ({CORBA_Object *z = (arg); z;})
-#define MN_CORBA_OBJECT_PROP_IID(arg)    	"iid", __extension__ ({gchar *z = (arg); z;})
-#define MN_CORBA_OBJECT_GET_PROP_IID(arg)	"iid", __extension__ ({gchar **z = (arg); z;})
-#else /* __GNUC__ && !__STRICT_ANSI__ */
-#define MN_CORBA_OBJECT_PROP_OBJECT(arg)    	"object",(CORBA_Object )(arg)
-#define MN_CORBA_OBJECT_GET_PROP_OBJECT(arg)	"object",(CORBA_Object *)(arg)
-#define MN_CORBA_OBJECT_PROP_IID(arg)    	"iid",(gchar *)(arg)
-#define MN_CORBA_OBJECT_GET_PROP_IID(arg)	"iid",(gchar **)(arg)
-#endif /* __GNUC__ && !__STRICT_ANSI__ */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/src/mn-custom-vfs-mailbox.c b/src/mn-custom-vfs-mailbox.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-custom-vfs-mailbox.gob"
+#line 26 "mn-custom-vfs-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -110,7 +110,7 @@ ___finalize(GObject *obj_self)
 	MNCustomVFSMailbox *self G_GNUC_UNUSED = MN_CUSTOM_VFS_MAILBOX (obj_self);
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 34 "mn-custom-vfs-mailbox.gob"
+#line 35 "mn-custom-vfs-mailbox.gob"
 	if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; }
 #line 116 "mn-custom-vfs-mailbox.c"
 }
@@ -122,7 +122,7 @@ mn_custom_vfs_mailbox_init (MNCustomVFSMailbox * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::init"
 }
 #undef __GOB_FUNCTION__
-#line 37 "mn-custom-vfs-mailbox.gob"
+#line 38 "mn-custom-vfs-mailbox.gob"
 static void 
 mn_custom_vfs_mailbox_class_init (MNCustomVFSMailboxClass * class G_GNUC_UNUSED)
 #line 129 "mn-custom-vfs-mailbox.c"
@@ -133,11 +133,11 @@ mn_custom_vfs_mailbox_class_init (MNCustomVFSMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX);
 
-#line 42 "mn-custom-vfs-mailbox.gob"
+#line 43 "mn-custom-vfs-mailbox.gob"
 	mn_mailbox_class->seal = ___2_mn_custom_vfs_mailbox_seal;
-#line 50 "mn-custom-vfs-mailbox.gob"
+#line 51 "mn-custom-vfs-mailbox.gob"
 	mn_mailbox_class->parse_uri = ___3_mn_custom_vfs_mailbox_parse_uri;
-#line 66 "mn-custom-vfs-mailbox.gob"
+#line 67 "mn-custom-vfs-mailbox.gob"
 	mn_mailbox_class->check = ___4_mn_custom_vfs_mailbox_check;
 #line 143 "mn-custom-vfs-mailbox.c"
 	g_object_class->finalize = ___finalize;
@@ -157,7 +157,7 @@ mn_custom_vfs_mailbox_class_init (MNCustomVFSMailboxClass * class G_GNUC_UNUSED)
 		param_spec);
     }
  {
-#line 38 "mn-custom-vfs-mailbox.gob"
+#line 39 "mn-custom-vfs-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "custom-vfs";
   
@@ -180,7 +180,7 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_URI:
 		{
-#line 35 "mn-custom-vfs-mailbox.gob"
+#line 36 "mn-custom-vfs-mailbox.gob"
 { char *old = self->uri; self->uri = g_value_dup_string (VAL); g_free (old); }
 #line 186 "mn-custom-vfs-mailbox.c"
 		}
@@ -211,7 +211,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_URI:
 		{
-#line 35 "mn-custom-vfs-mailbox.gob"
+#line 36 "mn-custom-vfs-mailbox.gob"
 g_value_set_string (VAL, self->uri);
 #line 217 "mn-custom-vfs-mailbox.c"
 		}
@@ -230,7 +230,7 @@ g_value_set_string (VAL, self->uri);
 
 
 
-#line 42 "mn-custom-vfs-mailbox.gob"
+#line 43 "mn-custom-vfs-mailbox.gob"
 static void 
 ___2_mn_custom_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 237 "mn-custom-vfs-mailbox.c"
@@ -240,7 +240,7 @@ ___2_mn_custom_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::seal"
 {
-#line 44 "mn-custom-vfs-mailbox.gob"
+#line 45 "mn-custom-vfs-mailbox.gob"
 	
     MN_VFS_MAILBOX(mailbox)->uri = gnome_vfs_make_uri_canonical(SELF(mailbox)->uri);
 
@@ -250,7 +250,7 @@ ___2_mn_custom_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 50 "mn-custom-vfs-mailbox.gob"
+#line 51 "mn-custom-vfs-mailbox.gob"
 static MNMailbox * 
 ___3_mn_custom_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri)
 #line 257 "mn-custom-vfs-mailbox.c"
@@ -261,7 +261,7 @@ ___3_mn_custom_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const cha
 {
 #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::parse_uri"
 {
-#line 52 "mn-custom-vfs-mailbox.gob"
+#line 53 "mn-custom-vfs-mailbox.gob"
 	
     GnomeVFSURI *vfs_uri;
     MNMailbox *mailbox = NULL;
@@ -279,7 +279,7 @@ ___3_mn_custom_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const cha
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 66 "mn-custom-vfs-mailbox.gob"
+#line 67 "mn-custom-vfs-mailbox.gob"
 static void 
 ___4_mn_custom_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 286 "mn-custom-vfs-mailbox.c"
@@ -289,7 +289,7 @@ ___4_mn_custom_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::check"
 {
-#line 68 "mn-custom-vfs-mailbox.gob"
+#line 69 "mn-custom-vfs-mailbox.gob"
 	
     if (MN_VFS_MAILBOX(mailbox)->vfs_uri)
       {
diff --git a/src/mn-custom-vfs-mailbox.gob b/src/mn-custom-vfs-mailbox.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
diff --git a/src/mn-dialog.c b/src/mn-dialog.c
@@ -92,14 +92,14 @@ mn_dialog_class_init (MNDialogClass * c G_GNUC_UNUSED)
 
 }
 #undef __GOB_FUNCTION__
-#line 27 "mn-dialog.gob"
+#line 28 "mn-dialog.gob"
 static void 
 mn_dialog_init (MNDialog * self G_GNUC_UNUSED)
 #line 99 "mn-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Dialog::init"
  {
-#line 28 "mn-dialog.gob"
+#line 29 "mn-dialog.gob"
 
     gtk_container_set_border_width(GTK_CONTAINER(self), 5);
     gtk_dialog_set_has_separator(GTK_DIALOG(self), FALSE);
diff --git a/src/mn-dialog.gob b/src/mn-dialog.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
diff --git a/src/mn-evolution-folder-tree-control-private.h b/src/mn-evolution-folder-tree-control-private.h
@@ -0,0 +1,24 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_EVOLUTION_FOLDER_TREE_CONTROL_PRIVATE_H__
+#define __MN_EVOLUTION_FOLDER_TREE_CONTROL_PRIVATE_H__
+
+#include "mn-evolution-folder-tree-control.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct _MNEvolutionFolderTreeControlPrivate {
+#line 41 "mn-evolution-folder-tree-control.gob"
+	BonoboPropertyBag * pb;
+#line 42 "mn-evolution-folder-tree-control.gob"
+	BonoboEventSource * es;
+#line 18 "mn-evolution-folder-tree-control-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-evolution-folder-tree-control.c b/src/mn-evolution-folder-tree-control.c
@@ -1,175 +1,344 @@
-/* 
- * Copyright (C) 2005 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.
- */
+/* Generated by GOB (v2.0.14)   (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 14
+
+#define selfp (self->_priv)
+
+#include "mn-evolution-folder-tree-control.h"
+
+#include "mn-evolution-folder-tree-control-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-evolution-folder-tree-control.gob"
 
 #include "config.h"
 #include <string.h>
-#include <libintl.h>
-#include <libbonoboui.h>
-
-#ifdef HAVE_EVOLUTION_2_2
-/* headers from the Evolution source tree */
-#include "mail/mail-component.h"
-#include "mail/em-folder-tree.h"
-#else
 #include <mail/mail-component.h>
 #include <mail/em-folder-tree.h>
-#endif
-
 #include "mn-evolution.h"
 
-/*** types *******************************************************************/
-
 enum
 {
   PROP_SELECTED_URI
 };
 
-/*** functions ***************************************************************/
-
-static void mn_evolution_folder_tree_control_get_property (BonoboPropertyBag *bag,
-							   BonoboArg *arg,
-							   unsigned int arg_id,
-							   CORBA_Environment *env,
-							   gpointer user_data);
-static void mn_evolution_folder_tree_control_set_property (BonoboPropertyBag *bag,
-							   const BonoboArg *arg,
-							   unsigned int arg_id,
-							   CORBA_Environment *env,
-							   gpointer user_data);
-
-static void mn_evolution_folder_tree_control_selected_h (EMFolderTree *tree,
-							 const char *full_name,
-							 const char *uri,
-							 guint32 flags,
-							 gpointer user_data);
-
-/*** implementation **********************************************************/
-
-BonoboObject *
-mn_evolution_folder_tree_control_factory_cb (BonoboGenericFactory *factory,
-					     const char *iid,
-					     gpointer closure)
-{
-  EMFolderTreeModel *model;
-  GtkWidget *tree;
-  BonoboControl *control;
-  BonoboPropertyBag *pb;
-
-  if (strcmp(iid, MN_EVOLUTION_FOLDER_TREE_CONTROL_IID) != 0)
-    return NULL;
-
-  model = mail_component_peek_tree_model(mail_component_peek());
-  tree = em_folder_tree_new_with_model(model);
-  gtk_widget_show(tree);
-
-  control = bonobo_control_new(tree);
-
-  pb = bonobo_property_bag_new(mn_evolution_folder_tree_control_get_property,
-			       mn_evolution_folder_tree_control_set_property,
-			       tree);
-
-  bonobo_property_bag_add(pb,
-			  "selected-uri",
-			  PROP_SELECTED_URI,
-			  BONOBO_ARG_STRING,
-			  NULL,
-			  dgettext(GETTEXT_PACKAGE, "The currently selected URI"),
-			  0);
-
-  bonobo_control_set_properties(control, bonobo_object_corba_objref(BONOBO_OBJECT(pb)), NULL);
-
-  g_signal_connect_data(tree,
-			"folder-selected",
-			G_CALLBACK(mn_evolution_folder_tree_control_selected_h),
-			pb,
-			(GClosureNotify) bonobo_object_unref,
-			0);
-
-  return BONOBO_OBJECT(control);
-}
+#line 37 "mn-evolution-folder-tree-control.c"
+/* self casting macros */
+#define SELF(x) MN_EVOLUTION_FOLDER_TREE_CONTROL(x)
+#define SELF_CONST(x) MN_EVOLUTION_FOLDER_TREE_CONTROL_CONST(x)
+#define IS_SELF(x) MN_IS_EVOLUTION_FOLDER_TREE_CONTROL(x)
+#define TYPE_SELF MN_TYPE_EVOLUTION_FOLDER_TREE_CONTROL
+#define SELF_CLASS(x) MN_EVOLUTION_FOLDER_TREE_CONTROL_CLASS(x)
 
-static void
-mn_evolution_folder_tree_control_get_property (BonoboPropertyBag *bag,
-					       BonoboArg *arg,
-					       unsigned int arg_id,
-					       CORBA_Environment *env,
-					       gpointer user_data)
+#define SELF_GET_CLASS(x) MN_EVOLUTION_FOLDER_TREE_CONTROL_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNEvolutionFolderTreeControl Self;
+typedef MNEvolutionFolderTreeControlClass SelfClass;
+
+/* here are local prototypes */
+static void mn_evolution_folder_tree_control_init (MNEvolutionFolderTreeControl * o) G_GNUC_UNUSED;
+static void mn_evolution_folder_tree_control_class_init (MNEvolutionFolderTreeControlClass * c) G_GNUC_UNUSED;
+static GObject * ___1_mn_evolution_folder_tree_control_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void mn_evolution_folder_tree_control_get_property (BonoboPropertyBag * bag, BonoboArg * arg, unsigned int arg_id, CORBA_Environment * env, gpointer user_data) G_GNUC_UNUSED;
+static void mn_evolution_folder_tree_control_set_property (BonoboPropertyBag * bag, const BonoboArg * arg, unsigned int arg_id, CORBA_Environment * env, gpointer user_data) G_GNUC_UNUSED;
+static void mn_evolution_folder_tree_control_selected_h (EMFolderTree * tree, const char * full_name, const char * uri, guint32 flags, gpointer user_data) G_GNUC_UNUSED;
+static void mn_evolution_folder_tree_control_activated_h (EMFolderTree * tree, const char * full_name, const char * uri, gpointer user_data) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static BonoboControlClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_get_property mn_evolution_folder_tree_control_get_property
+#define self_set_property mn_evolution_folder_tree_control_set_property
+#define self_selected_h mn_evolution_folder_tree_control_selected_h
+#define self_activated_h mn_evolution_folder_tree_control_activated_h
+#define self_factory_cb mn_evolution_folder_tree_control_factory_cb
+GType
+mn_evolution_folder_tree_control_get_type (void)
 {
-  EMFolderTree *tree = user_data;
+	static GType type = 0;
 
-  switch (arg_id)
-    {
-    case PROP_SELECTED_URI:
-      {
-	char *selected_uri;
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNEvolutionFolderTreeControlClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_evolution_folder_tree_control_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNEvolutionFolderTreeControl),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_evolution_folder_tree_control_init,
+			NULL
+		};
 
-	selected_uri = em_folder_tree_get_selected_uri(tree);
-	BONOBO_ARG_SET_STRING(arg, selected_uri);
-	g_free(selected_uri);
-      }
-      break;
+		type = g_type_register_static (BONOBO_TYPE_CONTROL, "MNEvolutionFolderTreeControl", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
 
-    default:
-      bonobo_exception_set(env, ex_Bonobo_PropertyBag_NotFound);
-      break;
-    }
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNEvolutionFolderTreeControl *)g_object_new(mn_evolution_folder_tree_control_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNEvolutionFolderTreeControl * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNEvolutionFolderTreeControl *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNEvolutionFolderTreeControl *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNEvolutionFolderTreeControl *)g_object_new_valist (mn_evolution_folder_tree_control_get_type (), first, ap);
+	va_end (ap);
+	return ret;
 }
 
+
 static void
-mn_evolution_folder_tree_control_set_property (BonoboPropertyBag *bag,
-					       const BonoboArg *arg,
-					       unsigned int arg_id,
-					       CORBA_Environment *env,
-					       gpointer user_data)
-{
-  EMFolderTree *tree = user_data;
-
-  switch (arg_id)
-    {
-    case PROP_SELECTED_URI:
-      em_folder_tree_set_selected(tree, BONOBO_ARG_GET_STRING(arg));
-      break;
-
-    default:
-      bonobo_exception_set(env, ex_Bonobo_PropertyBag_NotFound);
-      break;
-    }
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Control::dispose"
+	MNEvolutionFolderTreeControl *self G_GNUC_UNUSED = MN_EVOLUTION_FOLDER_TREE_CONTROL (obj_self);
+	if (G_OBJECT_CLASS (parent_class)->dispose) \
+		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
+#line 41 "mn-evolution-folder-tree-control.gob"
+	if(self->_priv->pb) { bonobo_object_unref ((gpointer) self->_priv->pb); self->_priv->pb = NULL; }
+#line 121 "mn-evolution-folder-tree-control.c"
 }
+#undef __GOB_FUNCTION__
+
 
 static void
-mn_evolution_folder_tree_control_selected_h (EMFolderTree *tree,
-					     const char *full_name,
-					     const char *uri,
-					     guint32 flags,
-					     gpointer user_data)
-{
-  BonoboPropertyBag *pb = user_data;
-  BonoboArg *arg;
-
-  arg = bonobo_arg_new(BONOBO_ARG_STRING);
-  BONOBO_ARG_SET_STRING(arg, uri);
-
-  bonobo_event_source_notify_listeners_full(pb->es,
-					    "Bonobo/Property",
-					    "change",
-					    "selected-uri",
-					    arg,
-					    NULL);
-
-  bonobo_arg_release(arg);
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Control::finalize"
+	MNEvolutionFolderTreeControl *self G_GNUC_UNUSED = MN_EVOLUTION_FOLDER_TREE_CONTROL (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
+	if(G_OBJECT_CLASS(parent_class)->finalize) \
+		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
 }
+#undef __GOB_FUNCTION__
+
+static void 
+mn_evolution_folder_tree_control_init (MNEvolutionFolderTreeControl * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Control::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_EVOLUTION_FOLDER_TREE_CONTROL,MNEvolutionFolderTreeControlPrivate);
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_evolution_folder_tree_control_class_init (MNEvolutionFolderTreeControlClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Control::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+	g_type_class_add_private(c,sizeof(MNEvolutionFolderTreeControlPrivate));
+
+	parent_class = g_type_class_ref (BONOBO_TYPE_CONTROL);
+
+#line 44 "mn-evolution-folder-tree-control.gob"
+	g_object_class->constructor = ___1_mn_evolution_folder_tree_control_constructor;
+#line 156 "mn-evolution-folder-tree-control.c"
+	g_object_class->dispose = ___dispose;
+	g_object_class->finalize = ___finalize;
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 44 "mn-evolution-folder-tree-control.gob"
+static GObject * 
+___1_mn_evolution_folder_tree_control_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
+#line 167 "mn-evolution-folder-tree-control.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:Evolution:Folder:Tree:Control::constructor"
+{
+#line 46 "mn-evolution-folder-tree-control.gob"
+	
+    GObject *object;
+    Self *self;
+    EMFolderTreeModel *model;
+    GtkWidget *tree;
+    BonoboControl *control;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    control = BONOBO_CONTROL(object);
+    self = SELF(object);
+
+    model = mail_component_peek_tree_model(mail_component_peek());
+    tree = em_folder_tree_new_with_model(model);
+    gtk_widget_show(tree);
+
+    bonobo_control_construct(control, tree);
+
+    selfp->pb = bonobo_property_bag_new(self_get_property, self_set_property, self);
+    bonobo_property_bag_add(selfp->pb,
+			    "selected-uri",
+			    PROP_SELECTED_URI,
+			    BONOBO_ARG_STRING,
+			    NULL,
+			    dgettext(GETTEXT_PACKAGE, "The currently selected URI"),
+			    0);
+    bonobo_control_set_properties(control, BONOBO_OBJREF(selfp->pb), NULL);
+
+    selfp->es = bonobo_event_source_new();
+    /*
+     * bonobo_object_add_interface() takes ownership of the passed
+     * object, that's why we must not unref es above.
+     */
+    bonobo_object_add_interface(BONOBO_OBJECT(control), BONOBO_OBJECT(selfp->es));
+
+    g_object_connect(tree,
+		     "signal::folder-selected", self_selected_h, self,
+		     "signal::folder-activated", self_activated_h, self,
+		     NULL);
+
+    return object;
+  }}
+#line 217 "mn-evolution-folder-tree-control.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 88 "mn-evolution-folder-tree-control.gob"
+static void 
+mn_evolution_folder_tree_control_get_property (BonoboPropertyBag * bag, BonoboArg * arg, unsigned int arg_id, CORBA_Environment * env, gpointer user_data)
+#line 224 "mn-evolution-folder-tree-control.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Control::get_property"
+{
+#line 94 "mn-evolution-folder-tree-control.gob"
+	
+    Self *self = user_data;
+    EMFolderTree *tree = EM_FOLDER_TREE(bonobo_control_get_widget(BONOBO_CONTROL(self)));
+
+    switch (arg_id)
+      {
+      case PROP_SELECTED_URI:
+	{
+	  char *selected_uri;
+
+	  selected_uri = em_folder_tree_get_selected_uri(tree);
+	  BONOBO_ARG_SET_STRING(arg, selected_uri);
+	  g_free(selected_uri);
+	}
+	break;
+
+      default:
+	bonobo_exception_set(env, ex_Bonobo_PropertyBag_NotFound);
+	break;
+      }
+  }}
+#line 250 "mn-evolution-folder-tree-control.c"
+#undef __GOB_FUNCTION__
+
+#line 116 "mn-evolution-folder-tree-control.gob"
+static void 
+mn_evolution_folder_tree_control_set_property (BonoboPropertyBag * bag, const BonoboArg * arg, unsigned int arg_id, CORBA_Environment * env, gpointer user_data)
+#line 256 "mn-evolution-folder-tree-control.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Control::set_property"
+{
+#line 122 "mn-evolution-folder-tree-control.gob"
+	
+    Self *self = user_data;
+    EMFolderTree *tree = EM_FOLDER_TREE(bonobo_control_get_widget(BONOBO_CONTROL(self)));
+
+    switch (arg_id)
+      {
+      case PROP_SELECTED_URI:
+	em_folder_tree_set_selected(tree, BONOBO_ARG_GET_STRING(arg));
+	break;
+
+      default:
+	bonobo_exception_set(env, ex_Bonobo_PropertyBag_NotFound);
+	break;
+      }
+  }}
+#line 276 "mn-evolution-folder-tree-control.c"
+#undef __GOB_FUNCTION__
+
+#line 138 "mn-evolution-folder-tree-control.gob"
+static void 
+mn_evolution_folder_tree_control_selected_h (EMFolderTree * tree, const char * full_name, const char * uri, guint32 flags, gpointer user_data)
+#line 282 "mn-evolution-folder-tree-control.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Control::selected_h"
+{
+#line 144 "mn-evolution-folder-tree-control.gob"
+	
+    Self *self = user_data;
+    BonoboArg *arg;
+
+    arg = bonobo_arg_new(BONOBO_ARG_STRING);
+    BONOBO_ARG_SET_STRING(arg, uri);
+
+    bonobo_event_source_notify_listeners_full(selfp->pb->es,
+					      "Bonobo/Property",
+					      "change",
+					      "selected-uri",
+					      arg,
+					      NULL);
+
+    bonobo_arg_release(arg);
+  }}
+#line 303 "mn-evolution-folder-tree-control.c"
+#undef __GOB_FUNCTION__
+
+#line 161 "mn-evolution-folder-tree-control.gob"
+static void 
+mn_evolution_folder_tree_control_activated_h (EMFolderTree * tree, const char * full_name, const char * uri, gpointer user_data)
+#line 309 "mn-evolution-folder-tree-control.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Control::activated_h"
+{
+#line 166 "mn-evolution-folder-tree-control.gob"
+	
+    Self *self = user_data;
+    BonoboArg *arg;
+
+    arg = bonobo_arg_new(BONOBO_ARG_STRING);
+    BONOBO_ARG_SET_STRING(arg, uri);
+
+    bonobo_event_source_notify_listeners_full(selfp->es,
+					      MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_PREFIX,
+					      MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_ACTIVATED,
+					      NULL,
+					      arg,
+					      NULL);
+
+    bonobo_arg_release(arg);
+  }}
+#line 330 "mn-evolution-folder-tree-control.c"
+#undef __GOB_FUNCTION__
+
+#line 183 "mn-evolution-folder-tree-control.gob"
+BonoboObject * 
+mn_evolution_folder_tree_control_factory_cb (BonoboGenericFactory * factory, const char * iid, gpointer closure)
+#line 336 "mn-evolution-folder-tree-control.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Control::factory_cb"
+{
+#line 187 "mn-evolution-folder-tree-control.gob"
+	
+    return BONOBO_OBJECT(GET_NEW);
+  }}
+#line 344 "mn-evolution-folder-tree-control.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-evolution-folder-tree-control.gob b/src/mn-evolution-folder-tree-control.gob
@@ -0,0 +1,190 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+requires 2.0.14
+
+%headertop{
+#include <libbonoboui.h>
+%}
+
+%{
+#include "config.h"
+#include <string.h>
+#include <mail/mail-component.h>
+#include <mail/em-folder-tree.h>
+#include "mn-evolution.h"
+
+enum
+{
+  PROP_SELECTED_URI
+};
+%}
+
+class MN:Evolution:Folder:Tree:Control from Bonobo:Control
+{
+  private BonoboPropertyBag *pb unrefwith bonobo_object_unref;
+  private BonoboEventSource *es;
+
+  override (G:Object) GObject *
+    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  {
+    GObject *object;
+    Self *self;
+    EMFolderTreeModel *model;
+    GtkWidget *tree;
+    BonoboControl *control;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    control = BONOBO_CONTROL(object);
+    self = SELF(object);
+
+    model = mail_component_peek_tree_model(mail_component_peek());
+    tree = em_folder_tree_new_with_model(model);
+    gtk_widget_show(tree);
+
+    bonobo_control_construct(control, tree);
+
+    selfp->pb = bonobo_property_bag_new(self_get_property, self_set_property, self);
+    bonobo_property_bag_add(selfp->pb,
+			    "selected-uri",
+			    PROP_SELECTED_URI,
+			    BONOBO_ARG_STRING,
+			    NULL,
+			    dgettext(GETTEXT_PACKAGE, "The currently selected URI"),
+			    0);
+    bonobo_control_set_properties(control, BONOBO_OBJREF(selfp->pb), NULL);
+
+    selfp->es = bonobo_event_source_new();
+    /*
+     * bonobo_object_add_interface() takes ownership of the passed
+     * object, that's why we must not unref es above.
+     */
+    bonobo_object_add_interface(BONOBO_OBJECT(control), BONOBO_OBJECT(selfp->es));
+
+    g_object_connect(tree,
+		     "signal::folder-selected", self_selected_h, self,
+		     "signal::folder-activated", self_activated_h, self,
+		     NULL);
+
+    return object;
+  }
+
+  private void
+    get_property (BonoboPropertyBag *bag,
+		  BonoboArg *arg,
+		  unsigned int arg_id,
+		  CORBA_Environment *env,
+		  gpointer user_data)
+  {
+    Self *self = user_data;
+    EMFolderTree *tree = EM_FOLDER_TREE(bonobo_control_get_widget(BONOBO_CONTROL(self)));
+
+    switch (arg_id)
+      {
+      case PROP_SELECTED_URI:
+	{
+	  char *selected_uri;
+
+	  selected_uri = em_folder_tree_get_selected_uri(tree);
+	  BONOBO_ARG_SET_STRING(arg, selected_uri);
+	  g_free(selected_uri);
+	}
+	break;
+
+      default:
+	bonobo_exception_set(env, ex_Bonobo_PropertyBag_NotFound);
+	break;
+      }
+  }
+
+  private void
+    set_property (BonoboPropertyBag *bag,
+		  const BonoboArg *arg,
+		  unsigned int arg_id,
+		  CORBA_Environment *env,
+		  gpointer user_data)
+  {
+    Self *self = user_data;
+    EMFolderTree *tree = EM_FOLDER_TREE(bonobo_control_get_widget(BONOBO_CONTROL(self)));
+
+    switch (arg_id)
+      {
+      case PROP_SELECTED_URI:
+	em_folder_tree_set_selected(tree, BONOBO_ARG_GET_STRING(arg));
+	break;
+
+      default:
+	bonobo_exception_set(env, ex_Bonobo_PropertyBag_NotFound);
+	break;
+      }
+  }
+
+  private void
+    selected_h (EMFolderTree *tree,
+		const char *full_name,
+		const char *uri,
+		guint32 flags,
+		gpointer user_data)
+  {
+    Self *self = user_data;
+    BonoboArg *arg;
+
+    arg = bonobo_arg_new(BONOBO_ARG_STRING);
+    BONOBO_ARG_SET_STRING(arg, uri);
+
+    bonobo_event_source_notify_listeners_full(selfp->pb->es,
+					      "Bonobo/Property",
+					      "change",
+					      "selected-uri",
+					      arg,
+					      NULL);
+
+    bonobo_arg_release(arg);
+  }
+
+  private void
+    activated_h (EMFolderTree *tree,
+		 const char *full_name,
+		 const char *uri,
+		 gpointer user_data)
+  {
+    Self *self = user_data;
+    BonoboArg *arg;
+
+    arg = bonobo_arg_new(BONOBO_ARG_STRING);
+    BONOBO_ARG_SET_STRING(arg, uri);
+
+    bonobo_event_source_notify_listeners_full(selfp->es,
+					      MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_PREFIX,
+					      MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_ACTIVATED,
+					      NULL,
+					      arg,
+					      NULL);
+
+    bonobo_arg_release(arg);
+  }
+
+  public BonoboObject *
+    factory_cb (BonoboGenericFactory *factory,
+		const char *iid,
+		gpointer closure)
+  {
+    return BONOBO_OBJECT(GET_NEW);
+  }
+}
diff --git a/src/mn-corba-object.gob.stamp b/src/mn-evolution-folder-tree-control.gob.stamp
diff --git a/src/mn-evolution-folder-tree-control.h b/src/mn-evolution-folder-tree-control.h
@@ -1,28 +1,65 @@
-/* 
- * Copyright (C) 2005 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.
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <libbonoboui.h>
+
+#ifndef __MN_EVOLUTION_FOLDER_TREE_CONTROL_H__
+#define __MN_EVOLUTION_FOLDER_TREE_CONTROL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
  */
+#define MN_TYPE_EVOLUTION_FOLDER_TREE_CONTROL	(mn_evolution_folder_tree_control_get_type())
+#define MN_EVOLUTION_FOLDER_TREE_CONTROL(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_folder_tree_control_get_type(), MNEvolutionFolderTreeControl)
+#define MN_EVOLUTION_FOLDER_TREE_CONTROL_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_folder_tree_control_get_type(), MNEvolutionFolderTreeControl const)
+#define MN_EVOLUTION_FOLDER_TREE_CONTROL_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_evolution_folder_tree_control_get_type(), MNEvolutionFolderTreeControlClass)
+#define MN_IS_EVOLUTION_FOLDER_TREE_CONTROL(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_evolution_folder_tree_control_get_type ())
 
-#ifndef _MN_EVOLUTION_FOLDER_TREE_CONTROL_H
-#define _MN_EVOLUTION_FOLDER_TREE_CONTROL_H
+#define MN_EVOLUTION_FOLDER_TREE_CONTROL_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_evolution_folder_tree_control_get_type(), MNEvolutionFolderTreeControlClass)
 
-#include <libbonobo.h>
+/* Private structure type */
+typedef struct _MNEvolutionFolderTreeControlPrivate MNEvolutionFolderTreeControlPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_EVOLUTION_FOLDER_TREE_CONTROL__
+#define __TYPEDEF_MN_EVOLUTION_FOLDER_TREE_CONTROL__
+typedef struct _MNEvolutionFolderTreeControl MNEvolutionFolderTreeControl;
+#endif
+struct _MNEvolutionFolderTreeControl {
+	BonoboControl __parent__;
+	/*< private >*/
+	MNEvolutionFolderTreeControlPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNEvolutionFolderTreeControlClass MNEvolutionFolderTreeControlClass;
+struct _MNEvolutionFolderTreeControlClass {
+	BonoboControlClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_evolution_folder_tree_control_get_type	(void);
+BonoboObject * 	mn_evolution_folder_tree_control_factory_cb	(BonoboGenericFactory * factory,
+					const char * iid,
+					gpointer closure);
 
-BonoboObject *mn_evolution_folder_tree_control_factory_cb (BonoboGenericFactory *factory,
-							   const char *iid,
-							   gpointer closure);
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
 
-#endif /* _MN_EVOLUTION_FOLDER_TREE_CONTROL_H */
+#endif
diff --git a/src/mn-evolution-glue-client.c b/src/mn-evolution-glue-client.c
@@ -0,0 +1,59 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "config.h"
+#include <eel/eel.h>
+#include "mn-bonobo-unknown.h"
+#include "mn-evolution.h"
+
+/*** variables ***************************************************************/
+
+static MNBonoboUnknown *glue = NULL;
+
+G_LOCK_DEFINE_STATIC(glue);
+
+/*** implementation **********************************************************/
+
+MNBonoboUnknown *
+mn_evolution_glue_client_use (void)
+{
+  G_LOCK(glue);
+
+  if (glue)
+    g_object_ref(glue);
+  else
+    {
+      glue = mn_bonobo_unknown_new(MN_EVOLUTION_GLUE_IID);
+      eel_add_weak_pointer(&glue);
+    }
+
+  G_UNLOCK(glue);
+
+  return glue;
+}
+
+void
+mn_evolution_glue_client_unuse (void)
+{
+  G_LOCK(glue);
+
+  g_object_unref(glue);
+
+  G_UNLOCK(glue);
+}
diff --git a/src/mn-evolution-glue-client.h b/src/mn-evolution-glue-client.h
@@ -0,0 +1,28 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _MN_EVOLUTION_GLUE_CLIENT_H
+#define _MN_EVOLUTION_GLUE_CLIENT_H
+
+#include "mn-bonobo-unknown.h"
+
+MNBonoboUnknown	*mn_evolution_glue_client_use	(void);
+void		mn_evolution_glue_client_unuse	(void);
+
+#endif /* _MN_EVOLUTION_GLUE_CLIENT_H */
diff --git a/src/mn-evolution-glue.c b/src/mn-evolution-glue.c
@@ -22,19 +22,20 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-evolution-glue.gob"
+#line 31 "mn-evolution-glue.gob"
 
 #include <stdio.h>
 #include <camel/camel-folder.h>
-
-#ifdef HAVE_EVOLUTION_2_2
-/* headers from the Evolution source tree */
-#include "mail/mail-tools.h"
-#else
+#include <mail/em-folder-view.h>
+#include <mail/em-format.h>
+#include <mail/em-message-browser.h>
+#include <mail/em-utils.h>
+#include <mail/mail-session.h>
 #include <mail/mail-tools.h>
-#endif
 
-#line 38 "mn-evolution-glue.c"
+GSList *mn_evolution_glues = NULL;
+
+#line 39 "mn-evolution-glue.c"
 /* self casting macros */
 #define SELF(x) MN_EVOLUTION_GLUE(x)
 #define SELF_CONST(x) MN_EVOLUTION_GLUE_CONST(x)
@@ -51,18 +52,26 @@ typedef MNEvolutionGlueClass SelfClass;
 /* here are local prototypes */
 static void mn_evolution_glue_init (MNEvolutionGlue * o) G_GNUC_UNUSED;
 static void mn_evolution_glue_class_init (MNEvolutionGlueClass * c) G_GNUC_UNUSED;
+static GObject * ___1_mn_evolution_glue_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void ___2_mn_evolution_glue_finalize (GObject * object) G_GNUC_UNUSED;
 static CORBA_char * mn_evolution_glue_CORBA_string_dup_null (const CORBA_char * str) G_GNUC_UNUSED;
+static CamelFolder * mn_evolution_glue_lookup_folder (const char * uri, CORBA_Environment * env) G_GNUC_UNUSED;
 static GNOME_MailNotification_Evolution_MessageSeq * mn_evolution_glue_getUnseenMessages (PortableServer_Servant servant, const CORBA_char * folder_uri, CORBA_Environment * env) G_GNUC_UNUSED;
 static CORBA_string mn_evolution_glue_getFolderName (PortableServer_Servant servant, const CORBA_char * folder_uri, CORBA_Environment * env) G_GNUC_UNUSED;
+static void mn_evolution_glue_openMessage (PortableServer_Servant servant, const CORBA_char * folder_uri, const CORBA_char * message_uid, CORBA_Environment * env) G_GNUC_UNUSED;
+static void mn_evolution_glue_setMessageFlags (PortableServer_Servant servant, const CORBA_char * folder_uri, const CORBA_char * message_uid, CORBA_unsigned_long flags, CORBA_Environment * env) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static BonoboObjectClass *parent_class = NULL;
 
 /* Short form macros */
 #define self_CORBA_string_dup_null mn_evolution_glue_CORBA_string_dup_null
+#define self_lookup_folder mn_evolution_glue_lookup_folder
 #define self_getUnseenMessages mn_evolution_glue_getUnseenMessages
 #define self_getFolderName mn_evolution_glue_getFolderName
-#define self_new mn_evolution_glue_new
+#define self_openMessage mn_evolution_glue_openMessage
+#define self_setMessageFlags mn_evolution_glue_setMessageFlags
+#define self_factory_cb mn_evolution_glue_factory_cb
 GType
 mn_evolution_glue_get_type (void)
 {
@@ -119,41 +128,128 @@ static void
 mn_evolution_glue_class_init (MNEvolutionGlueClass * c G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Glue::class_init"
+	GObjectClass *g_object_class = (GObjectClass *)c;
 
 	parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT);
 
-#line 50 "mn-evolution-glue.gob"
+#line 48 "mn-evolution-glue.gob"
+	g_object_class->constructor = ___1_mn_evolution_glue_constructor;
+#line 69 "mn-evolution-glue.gob"
+	g_object_class->finalize = ___2_mn_evolution_glue_finalize;
+#line 140 "mn-evolution-glue.c"
+#line 99 "mn-evolution-glue.gob"
 	c->_epv.getUnseenMessages = self_getUnseenMessages;
-#line 118 "mn-evolution-glue.gob"
+#line 167 "mn-evolution-glue.gob"
 	c->_epv.getFolderName = self_getFolderName;
-#line 130 "mn-evolution-glue.c"
+#line 185 "mn-evolution-glue.gob"
+	c->_epv.openMessage = self_openMessage;
+#line 210 "mn-evolution-glue.gob"
+	c->_epv.setMessageFlags = self_setMessageFlags;
+#line 149 "mn-evolution-glue.c"
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 44 "mn-evolution-glue.gob"
+#line 48 "mn-evolution-glue.gob"
+static GObject * 
+___1_mn_evolution_glue_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
+#line 158 "mn-evolution-glue.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:Evolution:Glue::constructor"
+{
+#line 50 "mn-evolution-glue.gob"
+	
+    GObject *object;
+    Self *self;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    self = SELF(object);
+
+    self->es = bonobo_event_source_new();
+    /*
+     * bonobo_object_add_interface() takes ownership of the passed
+     * object, that's why we must not unref es above.
+     */
+    bonobo_object_add_interface(BONOBO_OBJECT(self), BONOBO_OBJECT(self->es));
+
+    mn_evolution_glues = g_slist_append(mn_evolution_glues, self);
+
+    return object;
+  }}
+#line 185 "mn-evolution-glue.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 69 "mn-evolution-glue.gob"
+static void 
+___2_mn_evolution_glue_finalize (GObject * object G_GNUC_UNUSED)
+#line 192 "mn-evolution-glue.c"
+#define PARENT_HANDLER(___object) \
+	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
+		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Glue::finalize"
+{
+#line 71 "mn-evolution-glue.gob"
+	
+    mn_evolution_glues = g_slist_remove(mn_evolution_glues, object);
+
+    PARENT_HANDLER(object);
+  }}
+#line 205 "mn-evolution-glue.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 81 "mn-evolution-glue.gob"
 static CORBA_char * 
 mn_evolution_glue_CORBA_string_dup_null (const CORBA_char * str)
-#line 139 "mn-evolution-glue.c"
+#line 212 "mn-evolution-glue.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Glue::CORBA_string_dup_null"
 {
-#line 46 "mn-evolution-glue.gob"
+#line 83 "mn-evolution-glue.gob"
 	
     return CORBA_string_dup(str ? str : "");
   }}
-#line 147 "mn-evolution-glue.c"
+#line 220 "mn-evolution-glue.c"
 #undef __GOB_FUNCTION__
 
-#line 50 "mn-evolution-glue.gob"
+#line 87 "mn-evolution-glue.gob"
+static CamelFolder * 
+mn_evolution_glue_lookup_folder (const char * uri, CORBA_Environment * env)
+#line 226 "mn-evolution-glue.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Glue::lookup_folder"
+#line 87 "mn-evolution-glue.gob"
+	g_return_val_if_fail (uri != NULL, (CamelFolder * )0);
+#line 231 "mn-evolution-glue.c"
+{
+#line 89 "mn-evolution-glue.gob"
+	
+    CamelFolder *folder;
+
+    folder = mail_tool_uri_to_folder(uri, 0, NULL);
+    if (! folder)
+      bonobo_exception_set(env, ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound);
+
+    return folder;
+  }}
+#line 243 "mn-evolution-glue.c"
+#undef __GOB_FUNCTION__
+
+#line 99 "mn-evolution-glue.gob"
 static GNOME_MailNotification_Evolution_MessageSeq * 
 mn_evolution_glue_getUnseenMessages (PortableServer_Servant servant, const CORBA_char * folder_uri, CORBA_Environment * env)
-#line 153 "mn-evolution-glue.c"
+#line 249 "mn-evolution-glue.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Glue::getUnseenMessages"
 {
-#line 54 "mn-evolution-glue.gob"
+#line 103 "mn-evolution-glue.gob"
 	
     CamelFolder *folder;
     GPtrArray *summary;
@@ -161,12 +257,9 @@ mn_evolution_glue_getUnseenMessages (PortableServer_Servant servant, const CORBA
     GSList *infos = NULL;
     GNOME_MailNotification_Evolution_MessageSeq *seq;
 
-    folder = mail_tool_uri_to_folder(folder_uri, 0, NULL);
+    folder = self_lookup_folder(folder_uri, env);
     if (! folder)
-      {
-	bonobo_exception_set(env, ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound);
-	return NULL;
-      }
+      return NULL;
 
     summary = camel_folder_get_summary(folder);
 
@@ -200,6 +293,9 @@ mn_evolution_glue_getUnseenMessages (PortableServer_Servant servant, const CORBA
 	    for (j = 0; j < sizeof(id->id.hash); j++)
 	      sprintf(hexhash + j * 2, "%.2x", id->id.hash[j]);
 
+	    g_assert(camel_message_info_uid(info) != NULL);
+
+	    seq->_buffer[i].uid = CORBA_string_dup(camel_message_info_uid(info));
 	    seq->_buffer[i].sent_time = camel_message_info_date_sent(info);
 	    seq->_buffer[i].received_time = camel_message_info_date_received(info);
 	    seq->_buffer[i].id = CORBA_string_dup(hexhash);
@@ -217,45 +313,96 @@ mn_evolution_glue_getUnseenMessages (PortableServer_Servant servant, const CORBA
 
     return seq;
   }}
-#line 221 "mn-evolution-glue.c"
+#line 317 "mn-evolution-glue.c"
 #undef __GOB_FUNCTION__
 
-#line 118 "mn-evolution-glue.gob"
+#line 167 "mn-evolution-glue.gob"
 static CORBA_string 
 mn_evolution_glue_getFolderName (PortableServer_Servant servant, const CORBA_char * folder_uri, CORBA_Environment * env)
-#line 227 "mn-evolution-glue.c"
+#line 323 "mn-evolution-glue.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Glue::getFolderName"
 {
-#line 122 "mn-evolution-glue.gob"
+#line 171 "mn-evolution-glue.gob"
 	
     CamelFolder *folder;
     CORBA_string name = NULL;
 
-    folder = mail_tool_uri_to_folder(folder_uri, 0, NULL);
+    folder = self_lookup_folder(folder_uri, env);
     if (folder)
       {
 	name = self_CORBA_string_dup_null(camel_folder_get_name(folder));
 	camel_object_unref(folder);
       }
-    else
-      bonobo_exception_set(env, ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound);
 
     return name;
   }}
-#line 247 "mn-evolution-glue.c"
+#line 341 "mn-evolution-glue.c"
+#undef __GOB_FUNCTION__
+
+#line 185 "mn-evolution-glue.gob"
+static void 
+mn_evolution_glue_openMessage (PortableServer_Servant servant, const CORBA_char * folder_uri, const CORBA_char * message_uid, CORBA_Environment * env)
+#line 347 "mn-evolution-glue.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Glue::openMessage"
+{
+#line 190 "mn-evolution-glue.gob"
+	
+    CamelFolder *folder;
+    GtkWidget *browser;
+
+    folder = self_lookup_folder(folder_uri, env);
+    if (! folder)
+      return;
+
+    /* modelled after Evolution's handleuri_got_folder() */
+
+    browser = em_message_browser_window_new();
+
+    em_format_set_session((EMFormat *) ((EMFolderView *) browser)->preview, session);
+    em_folder_view_set_folder((EMFolderView *) browser, folder, folder_uri);
+    em_folder_view_set_message((EMFolderView *) browser, message_uid, FALSE);
+    gtk_widget_show(((EMMessageBrowser *) browser)->window);
+
+    camel_object_unref(folder);
+  }}
+#line 371 "mn-evolution-glue.c"
+#undef __GOB_FUNCTION__
+
+#line 210 "mn-evolution-glue.gob"
+static void 
+mn_evolution_glue_setMessageFlags (PortableServer_Servant servant, const CORBA_char * folder_uri, const CORBA_char * message_uid, CORBA_unsigned_long flags, CORBA_Environment * env)
+#line 377 "mn-evolution-glue.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Glue::setMessageFlags"
+{
+#line 216 "mn-evolution-glue.gob"
+	
+    CamelFolder *folder;
+
+    folder = self_lookup_folder(folder_uri, env);
+    if (! folder)
+      return;
+
+    if (! camel_folder_set_message_flags(folder, message_uid, flags, flags))
+      bonobo_exception_set(env, ex_GNOME_MailNotification_Evolution_Glue_MessageNotFound);
+
+    camel_object_unref(folder);
+  }}
+#line 394 "mn-evolution-glue.c"
 #undef __GOB_FUNCTION__
 
-#line 138 "mn-evolution-glue.gob"
-MNEvolutionGlue * 
-mn_evolution_glue_new (void)
-#line 253 "mn-evolution-glue.c"
+#line 229 "mn-evolution-glue.gob"
+BonoboObject * 
+mn_evolution_glue_factory_cb (BonoboGenericFactory * factory, const char * iid, gpointer closure)
+#line 400 "mn-evolution-glue.c"
 {
-#define __GOB_FUNCTION__ "MN:Evolution:Glue::new"
+#define __GOB_FUNCTION__ "MN:Evolution:Glue::factory_cb"
 {
-#line 140 "mn-evolution-glue.gob"
+#line 233 "mn-evolution-glue.gob"
 	
-    return GET_NEW;
+    return BONOBO_OBJECT(GET_NEW);
   }}
-#line 261 "mn-evolution-glue.c"
+#line 408 "mn-evolution-glue.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-evolution-glue.gob b/src/mn-evolution-glue.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -23,20 +24,56 @@ requires 2.0.14
 #include "GNOME_MailNotification_Evolution.h"
 %}
 
+%h{
+extern GSList *mn_evolution_glues;
+%}
+
 %{
 #include <stdio.h>
 #include <camel/camel-folder.h>
-
-#ifdef HAVE_EVOLUTION_2_2
-/* headers from the Evolution source tree */
-#include "mail/mail-tools.h"
-#else
+#include <mail/em-folder-view.h>
+#include <mail/em-format.h>
+#include <mail/em-message-browser.h>
+#include <mail/em-utils.h>
+#include <mail/mail-session.h>
 #include <mail/mail-tools.h>
-#endif
+
+GSList *mn_evolution_glues = NULL;
 %}
 
 class MN:Evolution:Glue from Bonobo:Object (BonoboObject GNOME_MailNotification_Evolution_Glue)
 {
+  public BonoboEventSource *es;
+
+  override (G:Object) GObject *
+    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  {
+    GObject *object;
+    Self *self;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    self = SELF(object);
+
+    self->es = bonobo_event_source_new();
+    /*
+     * bonobo_object_add_interface() takes ownership of the passed
+     * object, that's why we must not unref es above.
+     */
+    bonobo_object_add_interface(BONOBO_OBJECT(self), BONOBO_OBJECT(self->es));
+
+    mn_evolution_glues = g_slist_append(mn_evolution_glues, self);
+
+    return object;
+  }
+
+  override (G:Object) void
+    finalize (GObject *object)
+  {
+    mn_evolution_glues = g_slist_remove(mn_evolution_glues, object);
+
+    PARENT_HANDLER(object);
+  }
+
   /*
    * CORBA_string_dup() accepts a null pointer but in
    * giop_send_buffer_append_string() ORBit doesn't.
@@ -47,6 +84,18 @@ class MN:Evolution:Glue from Bonobo:Object (BonoboObject GNOME_MailNotification_
     return CORBA_string_dup(str ? str : "");
   }
 
+  private CamelFolder *
+    lookup_folder (const char *uri (check null), CORBA_Environment *env)
+  {
+    CamelFolder *folder;
+
+    folder = mail_tool_uri_to_folder(uri, 0, NULL);
+    if (! folder)
+      bonobo_exception_set(env, ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound);
+
+    return folder;
+  }
+
   BonoboObject private GNOME_MailNotification_Evolution_MessageSeq *
     getUnseenMessages (PortableServer_Servant servant,
 		       const CORBA_char *folder_uri,
@@ -58,12 +107,9 @@ class MN:Evolution:Glue from Bonobo:Object (BonoboObject GNOME_MailNotification_
     GSList *infos = NULL;
     GNOME_MailNotification_Evolution_MessageSeq *seq;
 
-    folder = mail_tool_uri_to_folder(folder_uri, 0, NULL);
+    folder = self_lookup_folder(folder_uri, env);
     if (! folder)
-      {
-	bonobo_exception_set(env, ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound);
-	return NULL;
-      }
+      return NULL;
 
     summary = camel_folder_get_summary(folder);
 
@@ -97,6 +143,9 @@ class MN:Evolution:Glue from Bonobo:Object (BonoboObject GNOME_MailNotification_
 	    for (j = 0; j < sizeof(id->id.hash); j++)
 	      sprintf(hexhash + j * 2, "%.2x", id->id.hash[j]);
 
+	    g_assert(camel_message_info_uid(info) != NULL);
+
+	    seq->_buffer[i].uid = CORBA_string_dup(camel_message_info_uid(info));
 	    seq->_buffer[i].sent_time = camel_message_info_date_sent(info);
 	    seq->_buffer[i].received_time = camel_message_info_date_received(info);
 	    seq->_buffer[i].id = CORBA_string_dup(hexhash);
@@ -123,21 +172,65 @@ class MN:Evolution:Glue from Bonobo:Object (BonoboObject GNOME_MailNotification_
     CamelFolder *folder;
     CORBA_string name = NULL;
 
-    folder = mail_tool_uri_to_folder(folder_uri, 0, NULL);
+    folder = self_lookup_folder(folder_uri, env);
     if (folder)
       {
 	name = self_CORBA_string_dup_null(camel_folder_get_name(folder));
 	camel_object_unref(folder);
       }
-    else
-      bonobo_exception_set(env, ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound);
 
     return name;
   }
 
-  public MNEvolutionGlue *
-    new (void)
+  BonoboObject private void
+    openMessage (PortableServer_Servant servant,
+		 const CORBA_char *folder_uri,
+		 const CORBA_char *message_uid,
+		 CORBA_Environment *env)
+  {
+    CamelFolder *folder;
+    GtkWidget *browser;
+
+    folder = self_lookup_folder(folder_uri, env);
+    if (! folder)
+      return;
+
+    /* modelled after Evolution's handleuri_got_folder() */
+
+    browser = em_message_browser_window_new();
+
+    em_format_set_session((EMFormat *) ((EMFolderView *) browser)->preview, session);
+    em_folder_view_set_folder((EMFolderView *) browser, folder, folder_uri);
+    em_folder_view_set_message((EMFolderView *) browser, message_uid, FALSE);
+    gtk_widget_show(((EMMessageBrowser *) browser)->window);
+
+    camel_object_unref(folder);
+  }
+
+  BonoboObject private void
+    setMessageFlags (PortableServer_Servant servant,
+		     const CORBA_char *folder_uri,
+		     const CORBA_char *message_uid,
+		     CORBA_unsigned_long flags,
+		     CORBA_Environment *env)
+  {
+    CamelFolder *folder;
+
+    folder = self_lookup_folder(folder_uri, env);
+    if (! folder)
+      return;
+
+    if (! camel_folder_set_message_flags(folder, message_uid, flags, flags))
+      bonobo_exception_set(env, ex_GNOME_MailNotification_Evolution_Glue_MessageNotFound);
+
+    camel_object_unref(folder);
+  }
+
+  public BonoboObject *
+    factory_cb (BonoboGenericFactory *factory,
+		const char *iid,
+		gpointer closure)
   {
-    return GET_NEW;
+    return BONOBO_OBJECT(GET_NEW);
   }
 }
diff --git a/src/mn-evolution-glue.h b/src/mn-evolution-glue.h
@@ -15,6 +15,10 @@ extern "C" {
 #endif /* __cplusplus */
 
 
+
+extern GSList *mn_evolution_glues;
+
+
 /*
  * Type checking and casting macros
  */
@@ -35,6 +39,8 @@ typedef struct _MNEvolutionGlue MNEvolutionGlue;
 #endif
 struct _MNEvolutionGlue {
 	BonoboObject __parent__;
+	/*< public >*/
+	BonoboEventSource * es;
 };
 
 /*
@@ -52,7 +58,9 @@ struct _MNEvolutionGlueClass {
  * Public methods
  */
 GType	mn_evolution_glue_get_type	(void);
-MNEvolutionGlue * 	mn_evolution_glue_new	(void);
+BonoboObject * 	mn_evolution_glue_factory_cb	(BonoboGenericFactory * factory,
+					const char * iid,
+					gpointer closure);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-evolution-mailbox-private.h b/src/mn-evolution-mailbox-private.h
@@ -10,22 +10,21 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 25 "mn-evolution-mailbox.gob"
+#line 27 "mn-evolution-mailbox.gob"
 
 #include <time.h>
 #include "GNOME_MailNotification_Evolution.h"
-#include "mn-corba-object.h"
 #include "mn-locked-callback.h"
 
-#line 21 "mn-evolution-mailbox-private.h"
+#line 20 "mn-evolution-mailbox-private.h"
 struct _MNEvolutionMailboxPrivate {
-#line 58 "mn-evolution-mailbox.gob"
-	MNCORBAObject * glue;
-#line 59 "mn-evolution-mailbox.gob"
-	MNLockedBonoboListener * listener;
 #line 61 "mn-evolution-mailbox.gob"
+	MNBonoboUnknown * glue;
+#line 62 "mn-evolution-mailbox.gob"
+	MNLockedBonoboListener * listener;
+#line 64 "mn-evolution-mailbox.gob"
 	time_t last_browsed;
-#line 29 "mn-evolution-mailbox-private.h"
+#line 28 "mn-evolution-mailbox-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-evolution-mailbox-properties-private.h b/src/mn-evolution-mailbox-properties-private.h
@@ -10,30 +10,34 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 25 "mn-evolution-mailbox-properties.gob"
+#line 26 "mn-evolution-mailbox-properties.gob"
 
 #include "GNOME_MailNotification_Evolution.h"
-#include "mn-corba-object.h"
+#include "mn-bonobo-unknown.h"
 
 #line 19 "mn-evolution-mailbox-properties-private.h"
 struct _MNEvolutionMailboxPropertiesPrivate {
-#line 41 "mn-evolution-mailbox-properties.gob"
+#line 44 "mn-evolution-mailbox-properties.gob"
+	GtkWidget * folder_vbox;
+#line 45 "mn-evolution-mailbox-properties.gob"
 	GtkWidget * child;
-#line 42 "mn-evolution-mailbox-properties.gob"
+#line 46 "mn-evolution-mailbox-properties.gob"
 	GtkWidget * tree;
-#line 44 "mn-evolution-mailbox-properties.gob"
+#line 48 "mn-evolution-mailbox-properties.gob"
 	char * uri;
-#line 45 "mn-evolution-mailbox-properties.gob"
+#line 49 "mn-evolution-mailbox-properties.gob"
 	char * name;
-#line 47 "mn-evolution-mailbox-properties.gob"
-	MNCORBAObject * glue;
-#line 48 "mn-evolution-mailbox-properties.gob"
-	MNCORBAObject * control;
-#line 50 "mn-evolution-mailbox-properties.gob"
-	Bonobo_PropertyBag pbag;
+#line 51 "mn-evolution-mailbox-properties.gob"
+	MNBonoboUnknown * glue;
 #line 52 "mn-evolution-mailbox-properties.gob"
-	Bonobo_Listener listener;
-#line 37 "mn-evolution-mailbox-properties-private.h"
+	MNBonoboUnknown * control;
+#line 54 "mn-evolution-mailbox-properties.gob"
+	Bonobo_PropertyBag pbag;
+#line 56 "mn-evolution-mailbox-properties.gob"
+	Bonobo_Listener selected_uri_listener;
+#line 57 "mn-evolution-mailbox-properties.gob"
+	Bonobo_Listener activated_listener;
+#line 41 "mn-evolution-mailbox-properties-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-evolution-mailbox-properties.c b/src/mn-evolution-mailbox-properties.c
@@ -22,16 +22,18 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 30 "mn-evolution-mailbox-properties.gob"
+#line 31 "mn-evolution-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
 #include <libbonoboui.h>
 #include "mn-evolution.h"
 #include "mn-evolution-mailbox.h"
+#include "mn-evolution-glue-client.h"
 #include "mn-stock.h"
+#include "mn-mailbox-properties-private.h"
 
-#line 35 "mn-evolution-mailbox-properties.c"
+#line 37 "mn-evolution-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_EVOLUTION_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_EVOLUTION_MAILBOX_PROPERTIES_CONST(x)
@@ -50,13 +52,15 @@ static void ___object_get_property (GObject *object, guint property_id, GValue *
 static void mn_evolution_mailbox_properties_class_init (MNEvolutionMailboxPropertiesClass * class) G_GNUC_UNUSED;
 static void mn_evolution_mailbox_properties_init (MNEvolutionMailboxProperties * self) G_GNUC_UNUSED;
 static void ___3_mn_evolution_mailbox_properties_dispose (GObject * object) G_GNUC_UNUSED;
+static gboolean mn_evolution_mailbox_properties_install_listeners (MNEvolutionMailboxProperties * self) G_GNUC_UNUSED;
 static void mn_evolution_mailbox_properties_update_contents (MNEvolutionMailboxProperties * self) G_GNUC_UNUSED;
 static void mn_evolution_mailbox_properties_contact_error (MNEvolutionMailboxProperties * self) G_GNUC_UNUSED;
 static void mn_evolution_mailbox_properties_set_widget (MNEvolutionMailboxProperties * self, GtkWidget * widget) G_GNUC_UNUSED;
 static void mn_evolution_mailbox_properties_selected_uri_changed_cb (BonoboListener * listener, const char * event_name, const CORBA_any * any, CORBA_Environment * env, gpointer user_data) G_GNUC_UNUSED;
+static void mn_evolution_mailbox_properties_folder_activated_cb (BonoboListener * listener, const char * event_name, const CORBA_any * any, CORBA_Environment * env, gpointer user_data) G_GNUC_UNUSED;
 static void mn_evolution_mailbox_properties_sync (MNEvolutionMailboxProperties * self) G_GNUC_UNUSED;
-static void ___9_mn_evolution_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox) G_GNUC_UNUSED;
-static MNMailbox * ___a_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properties) G_GNUC_UNUSED;
+static void ___b_mn_evolution_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox) G_GNUC_UNUSED;
+static MNMailbox * ___c_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properties) G_GNUC_UNUSED;
 
 enum {
 	PROP_0,
@@ -68,10 +72,12 @@ enum {
 static MNMailboxPropertiesClass *parent_class = NULL;
 
 /* Short form macros */
+#define self_install_listeners mn_evolution_mailbox_properties_install_listeners
 #define self_update_contents mn_evolution_mailbox_properties_update_contents
 #define self_contact_error mn_evolution_mailbox_properties_contact_error
 #define self_set_widget mn_evolution_mailbox_properties_set_widget
 #define self_selected_uri_changed_cb mn_evolution_mailbox_properties_selected_uri_changed_cb
+#define self_folder_activated_cb mn_evolution_mailbox_properties_folder_activated_cb
 #define self_sync mn_evolution_mailbox_properties_sync
 GType
 mn_evolution_mailbox_properties_get_type (void)
@@ -121,21 +127,18 @@ ___dispose (GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::dispose"
 	MNEvolutionMailboxProperties *self G_GNUC_UNUSED = MN_EVOLUTION_MAILBOX_PROPERTIES (obj_self);
-#line 82 "mn-evolution-mailbox-properties.gob"
+#line 90 "mn-evolution-mailbox-properties.gob"
 	___3_mn_evolution_mailbox_properties_dispose(obj_self);
-#line 127 "mn-evolution-mailbox-properties.c"
-#line 47 "mn-evolution-mailbox-properties.gob"
-	if(self->_priv->glue) { g_object_unref ((gpointer) self->_priv->glue); self->_priv->glue = NULL; }
-#line 130 "mn-evolution-mailbox-properties.c"
-#line 48 "mn-evolution-mailbox-properties.gob"
-	if(self->_priv->control) { g_object_unref ((gpointer) self->_priv->control); self->_priv->control = NULL; }
 #line 133 "mn-evolution-mailbox-properties.c"
+#line 52 "mn-evolution-mailbox-properties.gob"
+	if(self->_priv->control) { g_object_unref ((gpointer) self->_priv->control); self->_priv->control = NULL; }
+#line 136 "mn-evolution-mailbox-properties.c"
 #define pbag (self->_priv->pbag)
 #define VAR pbag
 	{
-#line 51 "mn-evolution-mailbox-properties.gob"
+#line 55 "mn-evolution-mailbox-properties.gob"
 	 bonobo_object_release_unref(VAR, NULL); }
-#line 139 "mn-evolution-mailbox-properties.c"
+#line 142 "mn-evolution-mailbox-properties.c"
 	memset(&pbag, 0, sizeof(pbag));
 #undef VAR
 #undef pbag
@@ -151,19 +154,19 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 44 "mn-evolution-mailbox-properties.gob"
+#line 48 "mn-evolution-mailbox-properties.gob"
 	if(self->_priv->uri) { g_free ((gpointer) self->_priv->uri); self->_priv->uri = NULL; }
-#line 157 "mn-evolution-mailbox-properties.c"
-#line 45 "mn-evolution-mailbox-properties.gob"
-	if(self->_priv->name) { g_free ((gpointer) self->_priv->name); self->_priv->name = NULL; }
 #line 160 "mn-evolution-mailbox-properties.c"
+#line 49 "mn-evolution-mailbox-properties.gob"
+	if(self->_priv->name) { g_free ((gpointer) self->_priv->name); self->_priv->name = NULL; }
+#line 163 "mn-evolution-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 60 "mn-evolution-mailbox-properties.gob"
+#line 65 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_class_init (MNEvolutionMailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 167 "mn-evolution-mailbox-properties.c"
+#line 170 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -173,13 +176,13 @@ mn_evolution_mailbox_properties_class_init (MNEvolutionMailboxPropertiesClass * 
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX_PROPERTIES);
 
-#line 82 "mn-evolution-mailbox-properties.gob"
+#line 90 "mn-evolution-mailbox-properties.gob"
 	g_object_class->dispose = ___dispose;
-#line 243 "mn-evolution-mailbox-properties.gob"
-	mn_mailbox_properties_class->set_mailbox = ___9_mn_evolution_mailbox_properties_set_mailbox;
-#line 259 "mn-evolution-mailbox-properties.gob"
-	mn_mailbox_properties_class->get_mailbox = ___a_mn_evolution_mailbox_properties_get_mailbox;
-#line 183 "mn-evolution-mailbox-properties.c"
+#line 297 "mn-evolution-mailbox-properties.gob"
+	mn_mailbox_properties_class->set_mailbox = ___b_mn_evolution_mailbox_properties_set_mailbox;
+#line 313 "mn-evolution-mailbox-properties.gob"
+	mn_mailbox_properties_class->get_mailbox = ___c_mn_evolution_mailbox_properties_get_mailbox;
+#line 186 "mn-evolution-mailbox-properties.c"
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
     {
@@ -191,45 +194,51 @@ mn_evolution_mailbox_properties_class_init (MNEvolutionMailboxPropertiesClass * 
 		"default_name");
     }
  {
-#line 61 "mn-evolution-mailbox-properties.gob"
+#line 66 "mn-evolution-mailbox-properties.gob"
 
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
 
     p_class->type = "evolution";
     p_class->stock_id = MN_STOCK_EVOLUTION_MAILBOX;
     p_class->combo_label = "Evolution";
-    /* translators: header capitalization */
-    p_class->section_label = _("Folder");
   
-#line 205 "mn-evolution-mailbox-properties.c"
+#line 206 "mn-evolution-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 71 "mn-evolution-mailbox-properties.gob"
+#line 74 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_init (MNEvolutionMailboxProperties * self G_GNUC_UNUSED)
-#line 212 "mn-evolution-mailbox-properties.c"
+#line 213 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_EVOLUTION_MAILBOX_PROPERTIES,MNEvolutionMailboxPropertiesPrivate);
-#line 30 "mn-evolution-mailbox-properties.gob"
+#line 31 "mn-evolution-mailbox-properties.gob"
 	self->_priv->pbag = CORBA_OBJECT_NIL;
-#line 218 "mn-evolution-mailbox-properties.c"
-#line 51 "mn-evolution-mailbox-properties.gob"
-	self->_priv->listener = CORBA_OBJECT_NIL;
-#line 221 "mn-evolution-mailbox-properties.c"
+#line 219 "mn-evolution-mailbox-properties.c"
+#line 55 "mn-evolution-mailbox-properties.gob"
+	self->_priv->selected_uri_listener = CORBA_OBJECT_NIL;
+#line 222 "mn-evolution-mailbox-properties.c"
+#line 55 "mn-evolution-mailbox-properties.gob"
+	self->_priv->activated_listener = CORBA_OBJECT_NIL;
+#line 225 "mn-evolution-mailbox-properties.c"
  {
-#line 72 "mn-evolution-mailbox-properties.gob"
+#line 75 "mn-evolution-mailbox-properties.gob"
+
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
 
-    selfp->glue = mn_corba_object_new(MN_EVOLUTION_GLUE_IID);
+    /* translators: header capitalization */
+    selfp->folder_vbox = mn_mailbox_properties_add_general_section(properties, _("Folder"));
+
+    selfp->glue = mn_evolution_glue_client_use();
     g_signal_connect_swapped(selfp->glue, "notify::object", G_CALLBACK(self_update_contents), self);
 
-    selfp->control = mn_corba_object_new(MN_EVOLUTION_FOLDER_TREE_CONTROL_IID);
+    selfp->control = mn_bonobo_unknown_new(MN_EVOLUTION_FOLDER_TREE_CONTROL_IID);
     g_signal_connect_swapped(selfp->control, "notify::object", G_CALLBACK(self_update_contents), self);
 
     self_update_contents(self);
   
-#line 233 "mn-evolution-mailbox-properties.c"
+#line 242 "mn-evolution-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -248,16 +257,16 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 55 "mn-evolution-mailbox-properties.gob"
+#line 60 "mn-evolution-mailbox-properties.gob"
  g_value_set_boolean(VAL, selfp->tree != NULL && selfp->uri != NULL); 
-#line 254 "mn-evolution-mailbox-properties.c"
+#line 263 "mn-evolution-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_NAME:
 		{
-#line 58 "mn-evolution-mailbox-properties.gob"
+#line 63 "mn-evolution-mailbox-properties.gob"
  g_value_set_string(VAL, selfp->name); 
-#line 261 "mn-evolution-mailbox-properties.c"
+#line 270 "mn-evolution-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -274,58 +283,114 @@ ___object_get_property (GObject *object,
 
 
 
-#line 82 "mn-evolution-mailbox-properties.gob"
+#line 90 "mn-evolution-mailbox-properties.gob"
 static void 
 ___3_mn_evolution_mailbox_properties_dispose (GObject * object G_GNUC_UNUSED)
-#line 281 "mn-evolution-mailbox-properties.c"
+#line 290 "mn-evolution-mailbox-properties.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->dispose) \
 		(* G_OBJECT_CLASS(parent_class)->dispose)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::dispose"
 {
-#line 84 "mn-evolution-mailbox-properties.gob"
+#line 92 "mn-evolution-mailbox-properties.gob"
 	
     Self *self = SELF(object);
 
     /*
      * We are no longer operational after dispose (see unrefwith
-     * above), so we must remove our listener.
+     * above), so we must remove our listeners.
      */
-    if (selfp->listener != CORBA_OBJECT_NIL)
+    if (selfp->selected_uri_listener != CORBA_OBJECT_NIL)
       {
 	g_assert(selfp->pbag != CORBA_OBJECT_NIL);
 
-	bonobo_event_source_client_remove_listener(selfp->pbag, selfp->listener, NULL);
-	selfp->listener = bonobo_object_release_unref(selfp->listener, NULL);
+	bonobo_event_source_client_remove_listener(selfp->pbag, selfp->selected_uri_listener, NULL);
+	selfp->selected_uri_listener = bonobo_object_release_unref(selfp->selected_uri_listener, NULL);
+      }
+    if (selfp->activated_listener != CORBA_OBJECT_NIL)
+      {
+	Bonobo_Control control;
+
+	control = mn_bonobo_unknown_get_object(selfp->control);
+	g_assert(control != CORBA_OBJECT_NIL);
+
+	bonobo_event_source_client_remove_listener(control, selfp->activated_listener, NULL);
+	selfp->activated_listener = bonobo_object_release_unref(selfp->activated_listener, NULL);
+
+	bonobo_object_release_unref(control, NULL);
+      }
+
+    if (selfp->glue)
+      {
+	g_signal_handlers_disconnect_by_func(selfp->glue, self_update_contents, self);
+	mn_evolution_glue_client_unuse();
+	selfp->glue = NULL;
       }
 
     PARENT_HANDLER(object);
   }}
-#line 306 "mn-evolution-mailbox-properties.c"
+#line 334 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 102 "mn-evolution-mailbox-properties.gob"
+#line 129 "mn-evolution-mailbox-properties.gob"
+static gboolean 
+mn_evolution_mailbox_properties_install_listeners (MNEvolutionMailboxProperties * self)
+#line 341 "mn-evolution-mailbox-properties.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::install_listeners"
+#line 129 "mn-evolution-mailbox-properties.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 129 "mn-evolution-mailbox-properties.gob"
+	g_return_val_if_fail (MN_IS_EVOLUTION_MAILBOX_PROPERTIES (self), (gboolean )0);
+#line 348 "mn-evolution-mailbox-properties.c"
+{
+#line 131 "mn-evolution-mailbox-properties.gob"
+	
+    Bonobo_Control control;
+
+    selfp->selected_uri_listener = bonobo_event_source_client_add_listener_full(selfp->pbag,
+										g_cclosure_new(G_CALLBACK(self_selected_uri_changed_cb), self, NULL),
+										"Bonobo/Property:change:selected-uri",
+										NULL);
+    if (selfp->selected_uri_listener == CORBA_OBJECT_NIL)
+      return FALSE;
+
+    control = mn_bonobo_unknown_get_object(selfp->control);
+    g_assert(control != CORBA_OBJECT_NIL);
+
+    selfp->activated_listener = bonobo_event_source_client_add_listener_full(control,
+									     g_cclosure_new(G_CALLBACK(self_folder_activated_cb), self, NULL),
+									     MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_PREFIX ":" MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_ACTIVATED,
+									     NULL);
+    bonobo_object_release_unref(control, NULL);
+
+    return selfp->activated_listener != CORBA_OBJECT_NIL;
+  }}
+#line 372 "mn-evolution-mailbox-properties.c"
+#undef __GOB_FUNCTION__
+
+#line 153 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_update_contents (MNEvolutionMailboxProperties * self)
-#line 313 "mn-evolution-mailbox-properties.c"
+#line 378 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::update_contents"
-#line 102 "mn-evolution-mailbox-properties.gob"
+#line 153 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 102 "mn-evolution-mailbox-properties.gob"
+#line 153 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_EVOLUTION_MAILBOX_PROPERTIES (self));
-#line 320 "mn-evolution-mailbox-properties.c"
+#line 385 "mn-evolution-mailbox-properties.c"
 {
-#line 104 "mn-evolution-mailbox-properties.gob"
+#line 155 "mn-evolution-mailbox-properties.gob"
 	
     GNOME_MailNotification_Evolution_Glue glue;
     Bonobo_Control control;
     GtkWidget *tree = NULL;
 
-    glue = mn_corba_object_get_object(selfp->glue);
-    control = mn_corba_object_get_object(selfp->control);
+    glue = mn_bonobo_unknown_get_object(selfp->glue);
+    control = mn_bonobo_unknown_get_object(selfp->control);
 
     if (glue != CORBA_OBJECT_NIL && control != CORBA_OBJECT_NIL)
       {
@@ -336,22 +401,15 @@ mn_evolution_mailbox_properties_update_contents (MNEvolutionMailboxProperties * 
 	frame = bonobo_widget_get_control_frame(BONOBO_WIDGET(tree));
 
 	selfp->pbag = bonobo_control_frame_get_control_property_bag(frame, NULL);
-	if (selfp->pbag != CORBA_OBJECT_NIL)
+	if (selfp->pbag != CORBA_OBJECT_NIL && self_install_listeners(self))
 	  {
-	    selfp->listener = bonobo_event_source_client_add_listener_full(selfp->pbag,
-									   g_cclosure_new(G_CALLBACK(self_selected_uri_changed_cb), self, NULL),
-									   "Bonobo/Property:change:selected-uri",
-									   NULL);
-	    if (selfp->listener != CORBA_OBJECT_NIL)
-	      {
-		/* give the folder tree a decent height */
-		gtk_widget_set_size_request(tree, -1, 150);
-
-		self_set_widget(self, selfp->tree = tree);
-		self_sync(self);
-
-		goto end;	/* success */
-	      }
+	    /* give the folder tree a decent height */
+	    gtk_widget_set_size_request(tree, -1, 150);
+
+	    self_set_widget(self, selfp->tree = tree);
+	    self_sync(self);
+
+	    goto end;	/* success */
 	  }
       }
 
@@ -362,30 +420,31 @@ mn_evolution_mailbox_properties_update_contents (MNEvolutionMailboxProperties * 
     self_contact_error(self);
 
   end:
-    CORBA_Object_release(glue, NULL);
-    CORBA_Object_release(control, NULL);
+    bonobo_object_release_unref(glue, NULL);
+    bonobo_object_release_unref(control, NULL);
   }}
-#line 369 "mn-evolution-mailbox-properties.c"
+#line 427 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 151 "mn-evolution-mailbox-properties.gob"
+#line 195 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_contact_error (MNEvolutionMailboxProperties * self)
-#line 375 "mn-evolution-mailbox-properties.c"
+#line 433 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::contact_error"
-#line 151 "mn-evolution-mailbox-properties.gob"
+#line 195 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 151 "mn-evolution-mailbox-properties.gob"
+#line 195 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_EVOLUTION_MAILBOX_PROPERTIES (self));
-#line 382 "mn-evolution-mailbox-properties.c"
+#line 440 "mn-evolution-mailbox-properties.c"
 {
-#line 153 "mn-evolution-mailbox-properties.gob"
+#line 197 "mn-evolution-mailbox-properties.gob"
 	
     GtkWidget *label;
 
     selfp->pbag = bonobo_object_release_unref(selfp->pbag, NULL);
-    selfp->listener = bonobo_object_release_unref(selfp->listener, NULL);
+    selfp->selected_uri_listener = bonobo_object_release_unref(selfp->selected_uri_listener, NULL);
+    selfp->activated_listener = bonobo_object_release_unref(selfp->activated_listener, NULL);
 
     label = gtk_label_new(_("Mail Notification can not contact Evolution. Make sure that Evolution is running and that the Evolution Mail Notification plugin is loaded."));
 
@@ -398,46 +457,46 @@ mn_evolution_mailbox_properties_contact_error (MNEvolutionMailboxProperties * se
 
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 402 "mn-evolution-mailbox-properties.c"
+#line 461 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 171 "mn-evolution-mailbox-properties.gob"
+#line 216 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_set_widget (MNEvolutionMailboxProperties * self, GtkWidget * widget)
-#line 408 "mn-evolution-mailbox-properties.c"
+#line 467 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::set_widget"
-#line 171 "mn-evolution-mailbox-properties.gob"
+#line 216 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 171 "mn-evolution-mailbox-properties.gob"
+#line 216 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_EVOLUTION_MAILBOX_PROPERTIES (self));
-#line 171 "mn-evolution-mailbox-properties.gob"
+#line 216 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (widget != NULL);
-#line 171 "mn-evolution-mailbox-properties.gob"
+#line 216 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 419 "mn-evolution-mailbox-properties.c"
+#line 478 "mn-evolution-mailbox-properties.c"
 {
-#line 173 "mn-evolution-mailbox-properties.gob"
+#line 218 "mn-evolution-mailbox-properties.gob"
 	
     if (selfp->child)
       gtk_widget_destroy(selfp->child);
 
     gtk_widget_show(widget);
-    gtk_box_pack_start(GTK_BOX(self), widget, TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(selfp->folder_vbox), widget, TRUE, TRUE, 0);
 
     selfp->child = widget;
   }}
-#line 431 "mn-evolution-mailbox-properties.c"
+#line 490 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 183 "mn-evolution-mailbox-properties.gob"
+#line 228 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_selected_uri_changed_cb (BonoboListener * listener, const char * event_name, const CORBA_any * any, CORBA_Environment * env, gpointer user_data)
-#line 437 "mn-evolution-mailbox-properties.c"
+#line 496 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::selected_uri_changed_cb"
 {
-#line 189 "mn-evolution-mailbox-properties.gob"
+#line 234 "mn-evolution-mailbox-properties.gob"
 	
     Self *self = user_data;
     const char *uri;
@@ -450,21 +509,18 @@ mn_evolution_mailbox_properties_selected_uri_changed_cb (BonoboListener * listen
 	GNOME_MailNotification_Evolution_Glue glue;
 	CORBA_Environment name_env;
 
-	glue = mn_corba_object_get_object(selfp->glue);
+	glue = mn_bonobo_unknown_get_object(selfp->glue);
 	if (glue != CORBA_OBJECT_NIL)
 	  {
 	    CORBA_exception_init(&name_env);
 
 	    name = GNOME_MailNotification_Evolution_Glue_getFolderName(glue, uri, &name_env);
 	    if (BONOBO_EX(&name_env))
-	      {
-		CORBA_free(name);
-		name = NULL;
-	      }
+	      name = NULL;
 
 	    CORBA_exception_free(&name_env);
 
-	    CORBA_Object_release(glue, NULL);
+	    bonobo_object_release_unref(glue, NULL);
 	  }
 
 	if (! name)
@@ -482,42 +538,58 @@ mn_evolution_mailbox_properties_selected_uri_changed_cb (BonoboListener * listen
     g_object_notify(G_OBJECT(self), "complete");
     g_object_notify(G_OBJECT(self), "default-name");
   }}
-#line 486 "mn-evolution-mailbox-properties.c"
+#line 542 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 234 "mn-evolution-mailbox-properties.gob"
+#line 276 "mn-evolution-mailbox-properties.gob"
+static void 
+mn_evolution_mailbox_properties_folder_activated_cb (BonoboListener * listener, const char * event_name, const CORBA_any * any, CORBA_Environment * env, gpointer user_data)
+#line 548 "mn-evolution-mailbox-properties.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::folder_activated_cb"
+{
+#line 282 "mn-evolution-mailbox-properties.gob"
+	
+    Self *self = user_data;
+
+    gtk_window_activate_default(GTK_WINDOW(MN_MAILBOX_PROPERTIES(self)->dialog));
+  }}
+#line 558 "mn-evolution-mailbox-properties.c"
+#undef __GOB_FUNCTION__
+
+#line 288 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_sync (MNEvolutionMailboxProperties * self)
-#line 492 "mn-evolution-mailbox-properties.c"
+#line 564 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::sync"
-#line 234 "mn-evolution-mailbox-properties.gob"
+#line 288 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 234 "mn-evolution-mailbox-properties.gob"
+#line 288 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_EVOLUTION_MAILBOX_PROPERTIES (self));
-#line 499 "mn-evolution-mailbox-properties.c"
+#line 571 "mn-evolution-mailbox-properties.c"
 {
-#line 236 "mn-evolution-mailbox-properties.gob"
+#line 290 "mn-evolution-mailbox-properties.gob"
 	
     g_return_if_fail(selfp->tree != NULL);
 
     if (selfp->uri)
       bonobo_widget_set_property(BONOBO_WIDGET(selfp->tree), "selected-uri", BONOBO_ARG_STRING, selfp->uri, NULL);
   }}
-#line 508 "mn-evolution-mailbox-properties.c"
+#line 580 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 243 "mn-evolution-mailbox-properties.gob"
+#line 297 "mn-evolution-mailbox-properties.gob"
 static void 
-___9_mn_evolution_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 514 "mn-evolution-mailbox-properties.c"
+___b_mn_evolution_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
+#line 586 "mn-evolution-mailbox-properties.c"
 #define PARENT_HANDLER(___properties,___mailbox) \
 	{ if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::set_mailbox"
 {
-#line 245 "mn-evolution-mailbox-properties.gob"
+#line 299 "mn-evolution-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNEvolutionMailbox *evolution_mailbox = MN_EVOLUTION_MAILBOX(mailbox);
@@ -531,14 +603,14 @@ ___9_mn_evolution_mailbox_properties_set_mailbox (MNMailboxProperties * properti
     if (selfp->tree)
       self_sync(self);
   }}
-#line 535 "mn-evolution-mailbox-properties.c"
+#line 607 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 259 "mn-evolution-mailbox-properties.gob"
+#line 313 "mn-evolution-mailbox-properties.gob"
 static MNMailbox * 
-___a_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
-#line 542 "mn-evolution-mailbox-properties.c"
+___c_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
+#line 614 "mn-evolution-mailbox-properties.c"
 #define PARENT_HANDLER(___properties) \
 	((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \
@@ -546,7 +618,7 @@ ___a_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properti
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::get_mailbox"
 {
-#line 261 "mn-evolution-mailbox-properties.gob"
+#line 315 "mn-evolution-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNMailbox *mailbox;
@@ -560,6 +632,6 @@ ___a_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properti
 
     return mailbox;
   }}
-#line 564 "mn-evolution-mailbox-properties.c"
+#line 636 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-evolution-mailbox-properties.gob b/src/mn-evolution-mailbox-properties.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -24,7 +25,7 @@ requires 2.0.14
 
 %privateheader{
 #include "GNOME_MailNotification_Evolution.h"
-#include "mn-corba-object.h"
+#include "mn-bonobo-unknown.h"
 %}
 
 %{
@@ -33,23 +34,27 @@ requires 2.0.14
 #include <libbonoboui.h>
 #include "mn-evolution.h"
 #include "mn-evolution-mailbox.h"
+#include "mn-evolution-glue-client.h"
 #include "mn-stock.h"
+#include "mn-mailbox-properties-private.h"
 %}
 
 class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
 {
+  private GtkWidget *folder_vbox;
   private GtkWidget *child;
   private GtkWidget *tree;
 
   private char *uri destroywith g_free;
   private char *name destroywith g_free;
 
-  private MNCORBAObject *glue unrefwith g_object_unref;
-  private MNCORBAObject *control unrefwith g_object_unref;
+  private MNBonoboUnknown *glue;
+  private MNBonoboUnknown *control unrefwith g_object_unref;
 
   private Bonobo_PropertyBag pbag = CORBA_OBJECT_NIL
     unref { bonobo_object_release_unref(VAR, NULL); };
-  private Bonobo_Listener listener = CORBA_OBJECT_NIL;
+  private Bonobo_Listener selected_uri_listener = CORBA_OBJECT_NIL;
+  private Bonobo_Listener activated_listener = CORBA_OBJECT_NIL;
 
   property BOOLEAN complete (override)
     get { g_value_set_boolean(VAL, selfp->tree != NULL && selfp->uri != NULL); };
@@ -64,16 +69,19 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
     p_class->type = "evolution";
     p_class->stock_id = MN_STOCK_EVOLUTION_MAILBOX;
     p_class->combo_label = "Evolution";
-    /* translators: header capitalization */
-    p_class->section_label = _("Folder");
   }
 
   init (self)
   {
-    selfp->glue = mn_corba_object_new(MN_EVOLUTION_GLUE_IID);
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
+
+    /* translators: header capitalization */
+    selfp->folder_vbox = mn_mailbox_properties_add_general_section(properties, _("Folder"));
+
+    selfp->glue = mn_evolution_glue_client_use();
     g_signal_connect_swapped(selfp->glue, "notify::object", G_CALLBACK(self_update_contents), self);
 
-    selfp->control = mn_corba_object_new(MN_EVOLUTION_FOLDER_TREE_CONTROL_IID);
+    selfp->control = mn_bonobo_unknown_new(MN_EVOLUTION_FOLDER_TREE_CONTROL_IID);
     g_signal_connect_swapped(selfp->control, "notify::object", G_CALLBACK(self_update_contents), self);
 
     self_update_contents(self);
@@ -86,19 +94,62 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
 
     /*
      * We are no longer operational after dispose (see unrefwith
-     * above), so we must remove our listener.
+     * above), so we must remove our listeners.
      */
-    if (selfp->listener != CORBA_OBJECT_NIL)
+    if (selfp->selected_uri_listener != CORBA_OBJECT_NIL)
       {
 	g_assert(selfp->pbag != CORBA_OBJECT_NIL);
 
-	bonobo_event_source_client_remove_listener(selfp->pbag, selfp->listener, NULL);
-	selfp->listener = bonobo_object_release_unref(selfp->listener, NULL);
+	bonobo_event_source_client_remove_listener(selfp->pbag, selfp->selected_uri_listener, NULL);
+	selfp->selected_uri_listener = bonobo_object_release_unref(selfp->selected_uri_listener, NULL);
+      }
+    if (selfp->activated_listener != CORBA_OBJECT_NIL)
+      {
+	Bonobo_Control control;
+
+	control = mn_bonobo_unknown_get_object(selfp->control);
+	g_assert(control != CORBA_OBJECT_NIL);
+
+	bonobo_event_source_client_remove_listener(control, selfp->activated_listener, NULL);
+	selfp->activated_listener = bonobo_object_release_unref(selfp->activated_listener, NULL);
+
+	bonobo_object_release_unref(control, NULL);
+      }
+
+    if (selfp->glue)
+      {
+	g_signal_handlers_disconnect_by_func(selfp->glue, self_update_contents, self);
+	mn_evolution_glue_client_unuse();
+	selfp->glue = NULL;
       }
 
     PARENT_HANDLER(object);
   }
 
+  private gboolean
+    install_listeners (self)
+  {
+    Bonobo_Control control;
+
+    selfp->selected_uri_listener = bonobo_event_source_client_add_listener_full(selfp->pbag,
+										g_cclosure_new(G_CALLBACK(self_selected_uri_changed_cb), self, NULL),
+										"Bonobo/Property:change:selected-uri",
+										NULL);
+    if (selfp->selected_uri_listener == CORBA_OBJECT_NIL)
+      return FALSE;
+
+    control = mn_bonobo_unknown_get_object(selfp->control);
+    g_assert(control != CORBA_OBJECT_NIL);
+
+    selfp->activated_listener = bonobo_event_source_client_add_listener_full(control,
+									     g_cclosure_new(G_CALLBACK(self_folder_activated_cb), self, NULL),
+									     MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_PREFIX ":" MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_ACTIVATED,
+									     NULL);
+    bonobo_object_release_unref(control, NULL);
+
+    return selfp->activated_listener != CORBA_OBJECT_NIL;
+  }
+
   private void
     update_contents (self)
   {
@@ -106,8 +157,8 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
     Bonobo_Control control;
     GtkWidget *tree = NULL;
 
-    glue = mn_corba_object_get_object(selfp->glue);
-    control = mn_corba_object_get_object(selfp->control);
+    glue = mn_bonobo_unknown_get_object(selfp->glue);
+    control = mn_bonobo_unknown_get_object(selfp->control);
 
     if (glue != CORBA_OBJECT_NIL && control != CORBA_OBJECT_NIL)
       {
@@ -118,22 +169,15 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
 	frame = bonobo_widget_get_control_frame(BONOBO_WIDGET(tree));
 
 	selfp->pbag = bonobo_control_frame_get_control_property_bag(frame, NULL);
-	if (selfp->pbag != CORBA_OBJECT_NIL)
+	if (selfp->pbag != CORBA_OBJECT_NIL && self_install_listeners(self))
 	  {
-	    selfp->listener = bonobo_event_source_client_add_listener_full(selfp->pbag,
-									   g_cclosure_new(G_CALLBACK(self_selected_uri_changed_cb), self, NULL),
-									   "Bonobo/Property:change:selected-uri",
-									   NULL);
-	    if (selfp->listener != CORBA_OBJECT_NIL)
-	      {
-		/* give the folder tree a decent height */
-		gtk_widget_set_size_request(tree, -1, 150);
-
-		self_set_widget(self, selfp->tree = tree);
-		self_sync(self);
-
-		goto end;	/* success */
-	      }
+	    /* give the folder tree a decent height */
+	    gtk_widget_set_size_request(tree, -1, 150);
+
+	    self_set_widget(self, selfp->tree = tree);
+	    self_sync(self);
+
+	    goto end;	/* success */
 	  }
       }
 
@@ -144,8 +188,8 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
     self_contact_error(self);
 
   end:
-    CORBA_Object_release(glue, NULL);
-    CORBA_Object_release(control, NULL);
+    bonobo_object_release_unref(glue, NULL);
+    bonobo_object_release_unref(control, NULL);
   }
 
   private void
@@ -154,7 +198,8 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
     GtkWidget *label;
 
     selfp->pbag = bonobo_object_release_unref(selfp->pbag, NULL);
-    selfp->listener = bonobo_object_release_unref(selfp->listener, NULL);
+    selfp->selected_uri_listener = bonobo_object_release_unref(selfp->selected_uri_listener, NULL);
+    selfp->activated_listener = bonobo_object_release_unref(selfp->activated_listener, NULL);
 
     label = gtk_label_new(_("Mail Notification can not contact Evolution. Make sure that Evolution is running and that the Evolution Mail Notification plugin is loaded."));
 
@@ -175,7 +220,7 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
       gtk_widget_destroy(selfp->child);
 
     gtk_widget_show(widget);
-    gtk_box_pack_start(GTK_BOX(self), widget, TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(selfp->folder_vbox), widget, TRUE, TRUE, 0);
 
     selfp->child = widget;
   }
@@ -198,21 +243,18 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
 	GNOME_MailNotification_Evolution_Glue glue;
 	CORBA_Environment name_env;
 
-	glue = mn_corba_object_get_object(selfp->glue);
+	glue = mn_bonobo_unknown_get_object(selfp->glue);
 	if (glue != CORBA_OBJECT_NIL)
 	  {
 	    CORBA_exception_init(&name_env);
 
 	    name = GNOME_MailNotification_Evolution_Glue_getFolderName(glue, uri, &name_env);
 	    if (BONOBO_EX(&name_env))
-	      {
-		CORBA_free(name);
-		name = NULL;
-	      }
+	      name = NULL;
 
 	    CORBA_exception_free(&name_env);
 
-	    CORBA_Object_release(glue, NULL);
+	    bonobo_object_release_unref(glue, NULL);
 	  }
 
 	if (! name)
@@ -232,6 +274,18 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
   }
 
   private void
+    folder_activated_cb (BonoboListener *listener,
+			 const char *event_name,
+			 const CORBA_any *any,
+			 CORBA_Environment *env,
+			 gpointer user_data)
+  {
+    Self *self = user_data;
+
+    gtk_window_activate_default(GTK_WINDOW(MN_MAILBOX_PROPERTIES(self)->dialog));
+  }
+
+  private void
     sync (self)
   {
     g_return_if_fail(selfp->tree != NULL);
diff --git a/src/mn-evolution-mailbox.c b/src/mn-evolution-mailbox.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 32 "mn-evolution-mailbox.gob"
+#line 33 "mn-evolution-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -33,10 +33,12 @@
 #include "mn-message.h"
 #include "mn-util.h"
 #include "mn-stock.h"
+#include "mn-evolution-message.h"
+#include "mn-evolution-glue-client.h"
 
 static GStaticMutex listeners_mutex = G_STATIC_MUTEX_INIT;
 
-#line 40 "mn-evolution-mailbox.c"
+#line 42 "mn-evolution-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_EVOLUTION_MAILBOX(x)
 #define SELF_CONST(x) MN_EVOLUTION_MAILBOX_CONST(x)
@@ -115,21 +117,6 @@ GET_NEW_VARG (const char *first, ...)
 
 
 static void
-___dispose (GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:Evolution:Mailbox::dispose"
-	MNEvolutionMailbox *self G_GNUC_UNUSED = MN_EVOLUTION_MAILBOX (obj_self);
-#line 96 "mn-evolution-mailbox.gob"
-	___4_mn_evolution_mailbox_dispose(obj_self);
-#line 125 "mn-evolution-mailbox.c"
-#line 58 "mn-evolution-mailbox.gob"
-	if(self->_priv->glue) { g_object_unref ((gpointer) self->_priv->glue); self->_priv->glue = NULL; }
-#line 128 "mn-evolution-mailbox.c"
-}
-#undef __GOB_FUNCTION__
-
-
-static void
 ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::finalize"
@@ -137,19 +124,19 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 48 "mn-evolution-mailbox.gob"
+#line 51 "mn-evolution-mailbox.gob"
 	if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; }
-#line 143 "mn-evolution-mailbox.c"
-#line 55 "mn-evolution-mailbox.gob"
+#line 130 "mn-evolution-mailbox.c"
+#line 58 "mn-evolution-mailbox.gob"
 	if(self->folder_name) { g_free ((gpointer) self->folder_name); self->folder_name = NULL; }
-#line 146 "mn-evolution-mailbox.c"
+#line 133 "mn-evolution-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 63 "mn-evolution-mailbox.gob"
+#line 66 "mn-evolution-mailbox.gob"
 static void 
 mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class G_GNUC_UNUSED)
-#line 153 "mn-evolution-mailbox.c"
+#line 140 "mn-evolution-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -160,13 +147,13 @@ mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_REENTRANT_MAILBOX);
 
-#line 87 "mn-evolution-mailbox.gob"
+#line 91 "mn-evolution-mailbox.gob"
 	mn_mailbox_class->seal = ___3_mn_evolution_mailbox_seal;
-#line 96 "mn-evolution-mailbox.gob"
-	g_object_class->dispose = ___dispose;
-#line 156 "mn-evolution-mailbox.gob"
+#line 100 "mn-evolution-mailbox.gob"
+	g_object_class->dispose = ___4_mn_evolution_mailbox_dispose;
+#line 164 "mn-evolution-mailbox.gob"
 	mn_reentrant_mailbox_class->reentrant_check = ___6_mn_evolution_mailbox_reentrant_check;
-#line 170 "mn-evolution-mailbox.c"
+#line 157 "mn-evolution-mailbox.c"
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
@@ -193,7 +180,7 @@ mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class G_GNUC_UNUSED)
 		param_spec);
     }
  {
-#line 64 "mn-evolution-mailbox.gob"
+#line 67 "mn-evolution-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "evolution";
 
@@ -206,20 +193,21 @@ mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class G_GNUC_UNUSED)
     MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 1;
 
     bonobo_exception_add_handler_str(ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound, _("folder not found"));
+    bonobo_exception_add_handler_str(ex_GNOME_MailNotification_Evolution_Glue_MessageNotFound, _("message not found"));
   
-#line 211 "mn-evolution-mailbox.c"
+#line 199 "mn-evolution-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 78 "mn-evolution-mailbox.gob"
+#line 82 "mn-evolution-mailbox.gob"
 static void 
 mn_evolution_mailbox_init (MNEvolutionMailbox * self G_GNUC_UNUSED)
-#line 218 "mn-evolution-mailbox.c"
+#line 206 "mn-evolution-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_EVOLUTION_MAILBOX,MNEvolutionMailboxPrivate);
  {
-#line 79 "mn-evolution-mailbox.gob"
+#line 83 "mn-evolution-mailbox.gob"
 
     mn_mailbox_set_format(MN_MAILBOX(self), "Evolution");
     mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_EVOLUTION_MAILBOX);
@@ -227,7 +215,7 @@ mn_evolution_mailbox_init (MNEvolutionMailbox * self G_GNUC_UNUSED)
     /* we receive notifications from Evolution, no need to poll */
     mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
   
-#line 231 "mn-evolution-mailbox.c"
+#line 219 "mn-evolution-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -246,16 +234,16 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_URI:
 		{
-#line 49 "mn-evolution-mailbox.gob"
+#line 52 "mn-evolution-mailbox.gob"
 { char *old = self->uri; self->uri = g_value_dup_string (VAL); g_free (old); }
-#line 252 "mn-evolution-mailbox.c"
+#line 240 "mn-evolution-mailbox.c"
 		}
 		break;
 	case PROP_FOLDER_NAME:
 		{
-#line 56 "mn-evolution-mailbox.gob"
+#line 59 "mn-evolution-mailbox.gob"
 { char *old = self->folder_name; self->folder_name = g_value_dup_string (VAL); g_free (old); }
-#line 259 "mn-evolution-mailbox.c"
+#line 247 "mn-evolution-mailbox.c"
 		}
 		break;
 	default:
@@ -284,16 +272,16 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_URI:
 		{
-#line 49 "mn-evolution-mailbox.gob"
+#line 52 "mn-evolution-mailbox.gob"
 g_value_set_string (VAL, self->uri);
-#line 290 "mn-evolution-mailbox.c"
+#line 278 "mn-evolution-mailbox.c"
 		}
 		break;
 	case PROP_FOLDER_NAME:
 		{
-#line 56 "mn-evolution-mailbox.gob"
+#line 59 "mn-evolution-mailbox.gob"
 g_value_set_string (VAL, self->folder_name);
-#line 297 "mn-evolution-mailbox.c"
+#line 285 "mn-evolution-mailbox.c"
 		}
 		break;
 	default:
@@ -310,80 +298,84 @@ g_value_set_string (VAL, self->folder_name);
 
 
 
-#line 87 "mn-evolution-mailbox.gob"
+#line 91 "mn-evolution-mailbox.gob"
 static void 
 ___3_mn_evolution_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 317 "mn-evolution-mailbox.c"
+#line 305 "mn-evolution-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->seal) \
 		(* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::seal"
 {
-#line 89 "mn-evolution-mailbox.gob"
+#line 93 "mn-evolution-mailbox.gob"
 	
     PARENT_HANDLER(mailbox);
 
     if (! mailbox->runtime_name)
       mailbox->runtime_name = g_strdup(SELF(mailbox)->folder_name);
   }}
-#line 331 "mn-evolution-mailbox.c"
+#line 319 "mn-evolution-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 96 "mn-evolution-mailbox.gob"
+#line 100 "mn-evolution-mailbox.gob"
 static void 
 ___4_mn_evolution_mailbox_dispose (GObject * object G_GNUC_UNUSED)
-#line 338 "mn-evolution-mailbox.c"
+#line 326 "mn-evolution-mailbox.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->dispose) \
 		(* G_OBJECT_CLASS(parent_class)->dispose)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::dispose"
 {
-#line 98 "mn-evolution-mailbox.gob"
+#line 102 "mn-evolution-mailbox.gob"
 	
     Self *self = SELF(object);
 
-    /*
-     * We are no longer operational after dispose (see unrefwith
-     * above), so we must remove our listener.
-     */
     if (selfp->listener)
       {
 	GNOME_MailNotification_Evolution_Glue glue;
 
 	g_assert(selfp->glue != NULL);
 
-	glue = mn_corba_object_get_object(selfp->glue);
+	glue = mn_bonobo_unknown_get_object(selfp->glue);
+	g_assert(glue != CORBA_OBJECT_NIL);
 
 	g_static_mutex_lock(&listeners_mutex);
 	mn_bonobo_event_source_client_remove_listener_locked(glue, selfp->listener, NULL);
 	g_static_mutex_unlock(&listeners_mutex);
 
-	CORBA_Object_release(glue, NULL);
+	bonobo_object_release_unref(glue, NULL);
 	selfp->listener = NULL;
       }
 
+    if (selfp->glue)
+      {
+	g_signal_handlers_disconnect_by_func(selfp->glue, mn_reentrant_mailbox_queue_check, self);
+	mn_evolution_glue_client_unuse();
+	selfp->glue = NULL;
+      }
+
     PARENT_HANDLER(object);
   }}
-#line 371 "mn-evolution-mailbox.c"
+#line 363 "mn-evolution-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 124 "mn-evolution-mailbox.gob"
+#line 132 "mn-evolution-mailbox.gob"
 static void 
 mn_evolution_mailbox_listener_cb (BonoboListener * listener, const char * event_name, const CORBA_any * any, CORBA_Environment * env, gpointer user_data)
-#line 378 "mn-evolution-mailbox.c"
+#line 370 "mn-evolution-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::listener_cb"
 {
-#line 130 "mn-evolution-mailbox.gob"
+#line 138 "mn-evolution-mailbox.gob"
 	
     Self *self = user_data;
     const char *uri;
 
-    if (! strcmp(event_name, MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_MESSAGE_READING))
+    if (! strcmp(event_name, MN_EVOLUTION_GLUE_EVENT_PREFIX ":" MN_EVOLUTION_GLUE_EVENT_MESSAGE_READING))
       {
 	uri = BONOBO_ARG_GET_STRING(any);
 	if (! strcmp(uri, self->uri))
@@ -397,27 +389,27 @@ mn_evolution_mailbox_listener_cb (BonoboListener * listener, const char * event_
 	    mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
 	  }
       }
-    else if (! strcmp(event_name, MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_FOLDER_CHANGED))
+    else if (! strcmp(event_name, MN_EVOLUTION_GLUE_EVENT_PREFIX ":" MN_EVOLUTION_GLUE_EVENT_FOLDER_CHANGED))
       {
 	uri = BONOBO_ARG_GET_STRING(any);
 	if (! strcmp(uri, self->uri))
 	  mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
       }
   }}
-#line 408 "mn-evolution-mailbox.c"
+#line 400 "mn-evolution-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 156 "mn-evolution-mailbox.gob"
+#line 164 "mn-evolution-mailbox.gob"
 static void 
 ___6_mn_evolution_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsigned long check_id)
-#line 414 "mn-evolution-mailbox.c"
+#line 406 "mn-evolution-mailbox.c"
 #define PARENT_HANDLER(___mailbox,___check_id) \
 	{ if(MN_REENTRANT_MAILBOX_CLASS(parent_class)->reentrant_check) \
 		(* MN_REENTRANT_MAILBOX_CLASS(parent_class)->reentrant_check)(___mailbox,___check_id); }
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::reentrant_check"
 {
-#line 158 "mn-evolution-mailbox.gob"
+#line 166 "mn-evolution-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     GNOME_MailNotification_Evolution_Glue glue;
@@ -429,11 +421,11 @@ ___6_mn_evolution_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_U
 
     if (! selfp->glue)
       {
-	selfp->glue = mn_corba_object_new(MN_EVOLUTION_GLUE_IID);
+	selfp->glue = mn_evolution_glue_client_use();
 	g_signal_connect_swapped(selfp->glue, "notify::object", G_CALLBACK(mn_reentrant_mailbox_queue_check), self);
       }
 
-    glue = mn_corba_object_get_object(selfp->glue);
+    glue = mn_bonobo_unknown_get_object(selfp->glue);
 
     if (glue == CORBA_OBJECT_NIL)
       {
@@ -448,7 +440,7 @@ ___6_mn_evolution_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_U
 	if (! selfp->listener)
 	  selfp->listener = mn_bonobo_event_source_client_add_listener_full_locked(glue,
 										   self_listener_cb,
-										   MN_EVOLUTION_EVENT_PREFIX,
+										   MN_EVOLUTION_GLUE_EVENT_PREFIX,
 										   NULL,
 										   self,
 										   (MNLockFunc) mn_g_static_mutex_lock,
@@ -458,7 +450,7 @@ ___6_mn_evolution_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_U
 
     if (! selfp->listener && glue != CORBA_OBJECT_NIL)
       {
-	CORBA_Object_release(glue, NULL);
+	bonobo_object_release_unref(glue, NULL);
 	glue = CORBA_OBJECT_NIL;
       }
 
@@ -525,13 +517,13 @@ ___6_mn_evolution_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_U
 	      flags |= MN_MESSAGE_NEW;
 
 #define unbox(str) (*(str) ? (str) : NULL)
-	    messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(mailbox),
-								NULL,
-								message_seq->_buffer[i].sent_time,
-								message_seq->_buffer[i].id,
-								unbox(message_seq->_buffer[i].from),
-								unbox(message_seq->_buffer[i].subject),
-								flags));
+	    messages = g_slist_prepend(messages, mn_evolution_message_new(MN_MAILBOX(mailbox),
+									  message_seq->_buffer[i].sent_time,
+									  message_seq->_buffer[i].id,
+									  unbox(message_seq->_buffer[i].from),
+									  unbox(message_seq->_buffer[i].subject),
+									  flags,
+									  message_seq->_buffer[i].uid));
 
 	    if (mn_reentrant_mailbox_check_aborted(mailbox, check_id))
 	      break;
@@ -556,8 +548,8 @@ ___6_mn_evolution_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_U
       }
 
     CORBA_exception_free(&env);
-    CORBA_Object_release(glue, NULL);
+    bonobo_object_release_unref(glue, NULL);
   }}
-#line 562 "mn-evolution-mailbox.c"
+#line 554 "mn-evolution-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-evolution-mailbox.gob b/src/mn-evolution-mailbox.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,21 +12,21 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
 
 %headertop{
 #include "mn-reentrant-mailbox.h"
+#include "mn-bonobo-unknown.h"
 %}
 
 %privateheader{
 #include <time.h>
 #include "GNOME_MailNotification_Evolution.h"
-#include "mn-corba-object.h"
 #include "mn-locked-callback.h"
 %}
 
@@ -39,6 +40,8 @@ requires 2.0.14
 #include "mn-message.h"
 #include "mn-util.h"
 #include "mn-stock.h"
+#include "mn-evolution-message.h"
+#include "mn-evolution-glue-client.h"
 
 static GStaticMutex listeners_mutex = G_STATIC_MUTEX_INIT;
 %}
@@ -55,7 +58,7 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
   public char *folder_name destroywith g_free;
   property STRING folder_name (link, flags = MN_MAILBOX_PARAM_PERMANENT | MN_MAILBOX_PARAM_REQUIRED);
 
-  private MNCORBAObject *glue unrefwith g_object_unref;
+  private MNBonoboUnknown *glue;
   private MNLockedBonoboListener *listener;
 
   private time_t last_browsed;
@@ -73,6 +76,7 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
     MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 1;
 
     bonobo_exception_add_handler_str(ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound, _("folder not found"));
+    bonobo_exception_add_handler_str(ex_GNOME_MailNotification_Evolution_Glue_MessageNotFound, _("message not found"));
   }
 
   init (self)
@@ -98,26 +102,30 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
   {
     Self *self = SELF(object);
 
-    /*
-     * We are no longer operational after dispose (see unrefwith
-     * above), so we must remove our listener.
-     */
     if (selfp->listener)
       {
 	GNOME_MailNotification_Evolution_Glue glue;
 
 	g_assert(selfp->glue != NULL);
 
-	glue = mn_corba_object_get_object(selfp->glue);
+	glue = mn_bonobo_unknown_get_object(selfp->glue);
+	g_assert(glue != CORBA_OBJECT_NIL);
 
 	g_static_mutex_lock(&listeners_mutex);
 	mn_bonobo_event_source_client_remove_listener_locked(glue, selfp->listener, NULL);
 	g_static_mutex_unlock(&listeners_mutex);
 
-	CORBA_Object_release(glue, NULL);
+	bonobo_object_release_unref(glue, NULL);
 	selfp->listener = NULL;
       }
 
+    if (selfp->glue)
+      {
+	g_signal_handlers_disconnect_by_func(selfp->glue, mn_reentrant_mailbox_queue_check, self);
+	mn_evolution_glue_client_unuse();
+	selfp->glue = NULL;
+      }
+
     PARENT_HANDLER(object);
   }
 
@@ -131,7 +139,7 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
     Self *self = user_data;
     const char *uri;
 
-    if (! strcmp(event_name, MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_MESSAGE_READING))
+    if (! strcmp(event_name, MN_EVOLUTION_GLUE_EVENT_PREFIX ":" MN_EVOLUTION_GLUE_EVENT_MESSAGE_READING))
       {
 	uri = BONOBO_ARG_GET_STRING(any);
 	if (! strcmp(uri, self->uri))
@@ -145,7 +153,7 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 	    mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
 	  }
       }
-    else if (! strcmp(event_name, MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_FOLDER_CHANGED))
+    else if (! strcmp(event_name, MN_EVOLUTION_GLUE_EVENT_PREFIX ":" MN_EVOLUTION_GLUE_EVENT_FOLDER_CHANGED))
       {
 	uri = BONOBO_ARG_GET_STRING(any);
 	if (! strcmp(uri, self->uri))
@@ -166,11 +174,11 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 
     if (! selfp->glue)
       {
-	selfp->glue = mn_corba_object_new(MN_EVOLUTION_GLUE_IID);
+	selfp->glue = mn_evolution_glue_client_use();
 	g_signal_connect_swapped(selfp->glue, "notify::object", G_CALLBACK(mn_reentrant_mailbox_queue_check), self);
       }
 
-    glue = mn_corba_object_get_object(selfp->glue);
+    glue = mn_bonobo_unknown_get_object(selfp->glue);
 
     if (glue == CORBA_OBJECT_NIL)
       {
@@ -185,7 +193,7 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 	if (! selfp->listener)
 	  selfp->listener = mn_bonobo_event_source_client_add_listener_full_locked(glue,
 										   self_listener_cb,
-										   MN_EVOLUTION_EVENT_PREFIX,
+										   MN_EVOLUTION_GLUE_EVENT_PREFIX,
 										   NULL,
 										   self,
 										   (MNLockFunc) mn_g_static_mutex_lock,
@@ -195,7 +203,7 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 
     if (! selfp->listener && glue != CORBA_OBJECT_NIL)
       {
-	CORBA_Object_release(glue, NULL);
+	bonobo_object_release_unref(glue, NULL);
 	glue = CORBA_OBJECT_NIL;
       }
 
@@ -262,13 +270,13 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 	      flags |= MN_MESSAGE_NEW;
 
 #define unbox(str) (*(str) ? (str) : NULL)
-	    messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(mailbox),
-								NULL,
-								message_seq->_buffer[i].sent_time,
-								message_seq->_buffer[i].id,
-								unbox(message_seq->_buffer[i].from),
-								unbox(message_seq->_buffer[i].subject),
-								flags));
+	    messages = g_slist_prepend(messages, mn_evolution_message_new(MN_MAILBOX(mailbox),
+									  message_seq->_buffer[i].sent_time,
+									  message_seq->_buffer[i].id,
+									  unbox(message_seq->_buffer[i].from),
+									  unbox(message_seq->_buffer[i].subject),
+									  flags,
+									  message_seq->_buffer[i].uid));
 
 	    if (mn_reentrant_mailbox_check_aborted(mailbox, check_id))
 	      break;
@@ -293,6 +301,6 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
       }
 
     CORBA_exception_free(&env);
-    CORBA_Object_release(glue, NULL);
+    bonobo_object_release_unref(glue, NULL);
   }
 }
diff --git a/src/mn-evolution-mailbox.h b/src/mn-evolution-mailbox.h
@@ -5,6 +5,7 @@
 
 
 #include "mn-reentrant-mailbox.h"
+#include "mn-bonobo-unknown.h"
 
 #ifndef __MN_EVOLUTION_MAILBOX_H__
 #define __MN_EVOLUTION_MAILBOX_H__
diff --git a/src/mn-evolution-message-private.h b/src/mn-evolution-message-private.h
@@ -0,0 +1,22 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_EVOLUTION_MESSAGE_PRIVATE_H__
+#define __MN_EVOLUTION_MESSAGE_PRIVATE_H__
+
+#include "mn-evolution-message.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct _MNEvolutionMessagePrivate {
+#line 73 "mn-evolution-message.gob"
+	char * uid;
+#line 16 "mn-evolution-message-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-evolution-message.c b/src/mn-evolution-message.c
@@ -0,0 +1,392 @@
+/* Generated by GOB (v2.0.14)   (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 14
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-evolution-message.h"
+
+#include "mn-evolution-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-evolution-message.gob"
+
+#include "config.h"
+#include <camel/camel-folder-summary.h>
+#include "GNOME_MailNotification_Evolution.h"
+#include "mn-evolution-mailbox.h"
+#include "mn-message-private.h"
+#include "mn-evolution-glue-client.h"
+#include "mn-util.h"
+
+#define GLUE_METHOD(invocation)						\
+  {									\
+    MNEvolutionMailbox *mailbox = MN_EVOLUTION_MAILBOX(message->mailbox); \
+    MNBonoboUnknown *glue_wrapper;					\
+    GNOME_MailNotification_Evolution_Glue glue;				\
+    CORBA_Environment env;						\
+    gboolean status = TRUE;						\
+									\
+    glue_wrapper = mn_evolution_glue_client_use();			\
+									\
+    glue = mn_bonobo_unknown_get_object(glue_wrapper);			\
+    if (glue == CORBA_OBJECT_NIL)					\
+      {									\
+	g_set_error(err, 0, 0, _("Unable to contact Evolution."));	\
+	return FALSE;							\
+      }									\
+									\
+    invocation;								\
+    if (BONOBO_EX(&env))						\
+      {									\
+	char *errmsg;							\
+									\
+	errmsg = bonobo_exception_get_text(&env);			\
+	g_set_error(err, 0, 0, _("An Evolution error has occurred: %s."), errmsg); \
+	g_free(errmsg);							\
+									\
+	status = FALSE;							\
+      }									\
+    									\
+    bonobo_object_release_unref(glue, NULL);				\
+    mn_evolution_glue_client_unuse();					\
+									\
+    return status;							\
+  }
+
+#line 71 "mn-evolution-message.c"
+/* self casting macros */
+#define SELF(x) MN_EVOLUTION_MESSAGE(x)
+#define SELF_CONST(x) MN_EVOLUTION_MESSAGE_CONST(x)
+#define IS_SELF(x) MN_IS_EVOLUTION_MESSAGE(x)
+#define TYPE_SELF MN_TYPE_EVOLUTION_MESSAGE
+#define SELF_CLASS(x) MN_EVOLUTION_MESSAGE_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_EVOLUTION_MESSAGE_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNEvolutionMessage Self;
+typedef MNEvolutionMessageClass 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_evolution_message_init (MNEvolutionMessage * o) G_GNUC_UNUSED;
+static void mn_evolution_message_class_init (MNEvolutionMessageClass * c) G_GNUC_UNUSED;
+static gboolean ___2_mn_evolution_message_can_open_impl (MNMessage * message) G_GNUC_UNUSED;
+static gboolean ___3_mn_evolution_message_open_impl (MNMessage * message, GError ** err) G_GNUC_UNUSED;
+static gboolean mn_evolution_message_set_flags (MNEvolutionMessage * self, guint32 flags, GError ** err) G_GNUC_UNUSED;
+static gboolean ___5_mn_evolution_message_mark_as_read_impl (MNMessage * message, GError ** err) G_GNUC_UNUSED;
+static gboolean ___6_mn_evolution_message_mark_as_spam_impl (MNMessage * message, GError ** err) G_GNUC_UNUSED;
+
+enum {
+	PROP_0,
+	PROP_UID
+};
+
+/* pointer to the class of our parent */
+static MNMessageClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_new mn_evolution_message_new
+#define self_set_flags mn_evolution_message_set_flags
+GType
+mn_evolution_message_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNEvolutionMessageClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_evolution_message_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNEvolutionMessage),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_evolution_message_init,
+			NULL
+		};
+
+		type = g_type_register_static (MN_TYPE_MESSAGE, "MNEvolutionMessage", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNEvolutionMessage *)g_object_new(mn_evolution_message_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNEvolutionMessage * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNEvolutionMessage *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNEvolutionMessage *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNEvolutionMessage *)g_object_new_valist (mn_evolution_message_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Message::finalize"
+	MNEvolutionMessage *self G_GNUC_UNUSED = MN_EVOLUTION_MESSAGE (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 73 "mn-evolution-message.gob"
+	if(self->_priv->uid) { g_free ((gpointer) self->_priv->uid); self->_priv->uid = NULL; }
+#line 160 "mn-evolution-message.c"
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_evolution_message_init (MNEvolutionMessage * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Message::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_EVOLUTION_MESSAGE,MNEvolutionMessagePrivate);
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_evolution_message_class_init (MNEvolutionMessageClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Message::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+	MNMessageClass *mn_message_class = (MNMessageClass *)c;
+
+	g_type_class_add_private(c,sizeof(MNEvolutionMessagePrivate));
+
+	parent_class = g_type_class_ref (MN_TYPE_MESSAGE);
+
+#line 95 "mn-evolution-message.gob"
+	mn_message_class->can_open_impl = ___2_mn_evolution_message_can_open_impl;
+#line 101 "mn-evolution-message.gob"
+	mn_message_class->open_impl = ___3_mn_evolution_message_open_impl;
+#line 115 "mn-evolution-message.gob"
+	mn_message_class->mark_as_read_impl = ___5_mn_evolution_message_mark_as_read_impl;
+#line 121 "mn-evolution-message.gob"
+	mn_message_class->mark_as_spam_impl = ___6_mn_evolution_message_mark_as_spam_impl;
+#line 190 "mn-evolution-message.c"
+	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_string
+		("uid" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_UID,
+		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:Evolution:Message::set_property"
+{
+	MNEvolutionMessage *self G_GNUC_UNUSED;
+
+	self = MN_EVOLUTION_MESSAGE (object);
+
+	switch (property_id) {
+	case PROP_UID:
+		{
+#line 74 "mn-evolution-message.gob"
+{ char *old = self->_priv->uid; self->_priv->uid = g_value_dup_string (VAL); g_free (old); }
+#line 226 "mn-evolution-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:Evolution:Message::get_property"
+{
+	MNEvolutionMessage *self G_GNUC_UNUSED;
+
+	self = MN_EVOLUTION_MESSAGE (object);
+
+	switch (property_id) {
+	case PROP_UID:
+		{
+#line 74 "mn-evolution-message.gob"
+g_value_set_string (VAL, self->_priv->uid);
+#line 257 "mn-evolution-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 76 "mn-evolution-message.gob"
+MNMessage * 
+mn_evolution_message_new (MNMailbox * mailbox, time_t sent_time, const char * id, const char * from, const char * subject, MNMessageFlags flags, const char * uid)
+#line 277 "mn-evolution-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Message::new"
+#line 76 "mn-evolution-message.gob"
+	g_return_val_if_fail (uid != NULL, (MNMessage * )0);
+#line 282 "mn-evolution-message.c"
+{
+#line 84 "mn-evolution-message.gob"
+	
+    return MN_MESSAGE(GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX(mailbox),
+				   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),
+				   MN_MESSAGE_PROP_FLAGS(flags),
+				   MN_EVOLUTION_MESSAGE_PROP_UID((char *) uid),
+				   NULL));
+  }}
+#line 295 "mn-evolution-message.c"
+#undef __GOB_FUNCTION__
+
+#line 95 "mn-evolution-message.gob"
+static gboolean 
+___2_mn_evolution_message_can_open_impl (MNMessage * message G_GNUC_UNUSED)
+#line 301 "mn-evolution-message.c"
+#define PARENT_HANDLER(___message) \
+	((MN_MESSAGE_CLASS(parent_class)->can_open_impl)? \
+		(* MN_MESSAGE_CLASS(parent_class)->can_open_impl)(___message): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Message::can_open_impl"
+{
+#line 97 "mn-evolution-message.gob"
+	
+    return TRUE;
+  }}
+#line 313 "mn-evolution-message.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 101 "mn-evolution-message.gob"
+static gboolean 
+___3_mn_evolution_message_open_impl (MNMessage * message G_GNUC_UNUSED, GError ** err)
+#line 320 "mn-evolution-message.c"
+#define PARENT_HANDLER(___message,___err) \
+	((MN_MESSAGE_CLASS(parent_class)->open_impl)? \
+		(* MN_MESSAGE_CLASS(parent_class)->open_impl)(___message,___err): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Message::open_impl"
+{
+#line 103 "mn-evolution-message.gob"
+	
+    Self *self = SELF(message);
+    GLUE_METHOD(GNOME_MailNotification_Evolution_Glue_openMessage(glue, mailbox->uri, selfp->uid, &env));
+  }}
+#line 333 "mn-evolution-message.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 108 "mn-evolution-message.gob"
+static gboolean 
+mn_evolution_message_set_flags (MNEvolutionMessage * self, guint32 flags, GError ** err)
+#line 340 "mn-evolution-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Message::set_flags"
+#line 108 "mn-evolution-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 108 "mn-evolution-message.gob"
+	g_return_val_if_fail (MN_IS_EVOLUTION_MESSAGE (self), (gboolean )0);
+#line 347 "mn-evolution-message.c"
+{
+#line 110 "mn-evolution-message.gob"
+	
+    MNMessage *message = MN_MESSAGE(self);
+    GLUE_METHOD(GNOME_MailNotification_Evolution_Glue_setMessageFlags(glue, mailbox->uri, selfp->uid, flags, &env));
+  }}
+#line 354 "mn-evolution-message.c"
+#undef __GOB_FUNCTION__
+
+#line 115 "mn-evolution-message.gob"
+static gboolean 
+___5_mn_evolution_message_mark_as_read_impl (MNMessage * message G_GNUC_UNUSED, GError ** err)
+#line 360 "mn-evolution-message.c"
+#define PARENT_HANDLER(___message,___err) \
+	((MN_MESSAGE_CLASS(parent_class)->mark_as_read_impl)? \
+		(* MN_MESSAGE_CLASS(parent_class)->mark_as_read_impl)(___message,___err): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Message::mark_as_read_impl"
+{
+#line 117 "mn-evolution-message.gob"
+	
+    return self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN, err);
+  }}
+#line 372 "mn-evolution-message.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 121 "mn-evolution-message.gob"
+static gboolean 
+___6_mn_evolution_message_mark_as_spam_impl (MNMessage * message G_GNUC_UNUSED, GError ** err)
+#line 379 "mn-evolution-message.c"
+#define PARENT_HANDLER(___message,___err) \
+	((MN_MESSAGE_CLASS(parent_class)->mark_as_spam_impl)? \
+		(* MN_MESSAGE_CLASS(parent_class)->mark_as_spam_impl)(___message,___err): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:Evolution:Message::mark_as_spam_impl"
+{
+#line 123 "mn-evolution-message.gob"
+	
+    return self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_JUNK | CAMEL_MESSAGE_JUNK_LEARN, err);
+  }}
+#line 391 "mn-evolution-message.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
diff --git a/src/mn-evolution-message.gob b/src/mn-evolution-message.gob
@@ -0,0 +1,126 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+requires 2.0.14
+
+%headertop{
+#include "mn-message.h"
+%}
+
+%{
+#include "config.h"
+#include <camel/camel-folder-summary.h>
+#include "GNOME_MailNotification_Evolution.h"
+#include "mn-evolution-mailbox.h"
+#include "mn-message-private.h"
+#include "mn-evolution-glue-client.h"
+#include "mn-util.h"
+
+#define GLUE_METHOD(invocation)						\
+  {									\
+    MNEvolutionMailbox *mailbox = MN_EVOLUTION_MAILBOX(message->mailbox); \
+    MNBonoboUnknown *glue_wrapper;					\
+    GNOME_MailNotification_Evolution_Glue glue;				\
+    CORBA_Environment env;						\
+    gboolean status = TRUE;						\
+									\
+    glue_wrapper = mn_evolution_glue_client_use();			\
+									\
+    glue = mn_bonobo_unknown_get_object(glue_wrapper);			\
+    if (glue == CORBA_OBJECT_NIL)					\
+      {									\
+	g_set_error(err, 0, 0, _("Unable to contact Evolution."));	\
+	return FALSE;							\
+      }									\
+									\
+    invocation;								\
+    if (BONOBO_EX(&env))						\
+      {									\
+	char *errmsg;							\
+									\
+	errmsg = bonobo_exception_get_text(&env);			\
+	g_set_error(err, 0, 0, _("An Evolution error has occurred: %s."), errmsg); \
+	g_free(errmsg);							\
+									\
+	status = FALSE;							\
+      }									\
+    									\
+    bonobo_object_release_unref(glue, NULL);				\
+    mn_evolution_glue_client_unuse();					\
+									\
+    return status;							\
+  }
+%}
+
+class MN:Evolution:Message from MN:Message
+{
+  private char *uid destroywith g_free;
+  property STRING uid (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT);
+
+  public MNMessage *
+    new (MNMailbox *mailbox,
+	 time_t sent_time,
+	 const char *id,
+	 const char *from,
+	 const char *subject,
+	 MNMessageFlags flags,
+	 const char *uid (check null))
+  {
+    return MN_MESSAGE(GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX(mailbox),
+				   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),
+				   MN_MESSAGE_PROP_FLAGS(flags),
+				   MN_EVOLUTION_MESSAGE_PROP_UID((char *) uid),
+				   NULL));
+  }
+
+  override (MN:Message) gboolean
+    can_open_impl (MNMessage *message)
+  {
+    return TRUE;
+  }
+
+  override (MN:Message) gboolean
+    open_impl (MNMessage *message, GError **err)
+  {
+    Self *self = SELF(message);
+    GLUE_METHOD(GNOME_MailNotification_Evolution_Glue_openMessage(glue, mailbox->uri, selfp->uid, &env));
+  }
+
+  private gboolean
+    set_flags (self, guint32 flags, GError **err)
+  {
+    MNMessage *message = MN_MESSAGE(self);
+    GLUE_METHOD(GNOME_MailNotification_Evolution_Glue_setMessageFlags(glue, mailbox->uri, selfp->uid, flags, &env));
+  }
+
+  override (MN:Message) gboolean
+    mark_as_read_impl (MNMessage *message, GError **err)
+  {
+    return self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN, err);
+  }
+
+  override (MN:Message) gboolean
+    mark_as_spam_impl (MNMessage *message, GError **err)
+  {
+    return self_set_flags(SELF(message), CAMEL_MESSAGE_SEEN | CAMEL_MESSAGE_JUNK | CAMEL_MESSAGE_JUNK_LEARN, err);
+  }
+}
diff --git a/src/mn-corba-object.gob.stamp b/src/mn-evolution-message.gob.stamp
diff --git a/src/mn-evolution-message.h b/src/mn-evolution-message.h
@@ -0,0 +1,81 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include "mn-message.h"
+
+#ifndef __MN_EVOLUTION_MESSAGE_H__
+#define __MN_EVOLUTION_MESSAGE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_EVOLUTION_MESSAGE	(mn_evolution_message_get_type())
+#define MN_EVOLUTION_MESSAGE(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_message_get_type(), MNEvolutionMessage)
+#define MN_EVOLUTION_MESSAGE_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_evolution_message_get_type(), MNEvolutionMessage const)
+#define MN_EVOLUTION_MESSAGE_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_evolution_message_get_type(), MNEvolutionMessageClass)
+#define MN_IS_EVOLUTION_MESSAGE(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_evolution_message_get_type ())
+
+#define MN_EVOLUTION_MESSAGE_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_evolution_message_get_type(), MNEvolutionMessageClass)
+
+/* Private structure type */
+typedef struct _MNEvolutionMessagePrivate MNEvolutionMessagePrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_EVOLUTION_MESSAGE__
+#define __TYPEDEF_MN_EVOLUTION_MESSAGE__
+typedef struct _MNEvolutionMessage MNEvolutionMessage;
+#endif
+struct _MNEvolutionMessage {
+	MNMessage __parent__;
+	/*< private >*/
+	MNEvolutionMessagePrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNEvolutionMessageClass MNEvolutionMessageClass;
+struct _MNEvolutionMessageClass {
+	MNMessageClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_evolution_message_get_type	(void);
+MNMessage * 	mn_evolution_message_new	(MNMailbox * mailbox,
+					time_t sent_time,
+					const char * id,
+					const char * from,
+					const char * subject,
+					MNMessageFlags flags,
+					const char * uid);
+
+/*
+ * Argument wrapping macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_EVOLUTION_MESSAGE_PROP_UID(arg)    	"uid", __extension__ ({gchar *z = (arg); z;})
+#define MN_EVOLUTION_MESSAGE_GET_PROP_UID(arg)	"uid", __extension__ ({gchar **z = (arg); z;})
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_EVOLUTION_MESSAGE_PROP_UID(arg)    	"uid",(gchar *)(arg)
+#define MN_EVOLUTION_MESSAGE_GET_PROP_UID(arg)	"uid",(gchar **)(arg)
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-evolution-plugin.c b/src/mn-evolution-plugin.c
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
@@ -23,16 +24,8 @@
 #include <gtk/gtk.h>
 #include <libbonobo.h>
 #include <camel/camel-folder.h>
-
-#ifdef HAVE_EVOLUTION_2_2
-/* headers from the Evolution source tree */
-#include "mail/em-event.h"
-#include "mail/mail-tools.h"
-#else
 #include <mail/em-event.h>
 #include <mail/mail-tools.h>
-#endif
-
 #include "mn-evolution.h"
 #include "mn-evolution-glue.h"
 #include "mn-evolution-folder-tree-control.h"
@@ -41,18 +34,11 @@
 
 #define FACTORY			"_Factory"
 
-/*** variables ***************************************************************/
-
-static GSList *glue_event_sources = NULL;
-
 /*** functions ***************************************************************/
 
 static void mn_evolution_plugin_error_dialog (const char *primary,
 					      const char *format,
 					      ...);
-static BonoboObject *mn_evolution_plugin_glue_factory_cb (BonoboGenericFactory *factory,
-							  const char *iid,
-							  gpointer closure);
 static gboolean mn_evolution_plugin_factory_create (const char *factory_iid,
 						    BonoboFactoryCallback factory_cb,
 						    gpointer user_data);
@@ -89,26 +75,6 @@ mn_evolution_plugin_error_dialog (const char *primary, const char *format, ...)
   gtk_widget_show(dialog);
 }
 
-static BonoboObject *
-mn_evolution_plugin_glue_factory_cb (BonoboGenericFactory *factory,
-				     const char *iid,
-				     gpointer closure)
-{
-  BonoboObject *object;
-  BonoboEventSource *event_source;
-
-  if (strcmp(iid, MN_EVOLUTION_GLUE_IID) != 0)
-    return NULL;
-
-  object = BONOBO_OBJECT(mn_evolution_glue_new());
-  event_source = bonobo_event_source_new();
-
-  glue_event_sources = g_slist_append(glue_event_sources, event_source);
-  bonobo_object_add_interface(object, BONOBO_OBJECT(event_source));
-
-  return object;
-}
-
 static gboolean
 mn_evolution_plugin_factory_create (const char *factory_iid,
 				    BonoboFactoryCallback factory_cb,
@@ -156,18 +122,14 @@ e_plugin_lib_enable (EPluginLib *ep, int enable)
 
   enabled = TRUE;
 
-  if (mn_evolution_plugin_factory_create(MN_EVOLUTION_GLUE_IID FACTORY, mn_evolution_plugin_glue_factory_cb, NULL)
+  if (mn_evolution_plugin_factory_create(MN_EVOLUTION_GLUE_IID FACTORY, mn_evolution_glue_factory_cb, NULL)
       && mn_evolution_plugin_factory_create(MN_EVOLUTION_FOLDER_TREE_CONTROL_IID FACTORY, mn_evolution_folder_tree_control_factory_cb, NULL))
     return 0;			/* success */
   else
     {
-      GSList *l;
-
-      for (l = glue_event_sources; l != NULL; l = l->next)
-	bonobo_object_release_unref(BONOBO_OBJREF(l->data), NULL);
-
-      g_slist_free(glue_event_sources);
-      glue_event_sources = NULL;
+      g_slist_foreach(mn_evolution_glues, (GFunc) bonobo_object_unref, NULL);
+      g_slist_free(mn_evolution_glues);
+      mn_evolution_glues = NULL;
 
       return 1;			/* failure */
     }
@@ -177,7 +139,7 @@ void
 org_gnome_mail_notification_folder_changed (EPlugin *plugin,
 					    EMEventTargetFolder *folder)
 {
-  if (glue_event_sources)
+  if (mn_evolution_glues)
     {
       BonoboArg *arg;
       GSList *l;
@@ -185,13 +147,16 @@ org_gnome_mail_notification_folder_changed (EPlugin *plugin,
       arg = bonobo_arg_new(BONOBO_ARG_STRING);
       BONOBO_ARG_SET_STRING(arg, folder->uri);
 
-      for (l = glue_event_sources; l != NULL; l = l->next)
-	bonobo_event_source_notify_listeners_full(l->data,
-						  MN_EVOLUTION_EVENT_PREFIX,
-						  MN_EVOLUTION_EVENT_FOLDER_CHANGED,
-						  NULL,
-						  arg,
-						  NULL);
+      for (l = mn_evolution_glues; l != NULL; l = l->next)
+	{
+	  MNEvolutionGlue *glue = l->data;
+	  bonobo_event_source_notify_listeners_full(glue->es,
+						    MN_EVOLUTION_GLUE_EVENT_PREFIX,
+						    MN_EVOLUTION_GLUE_EVENT_FOLDER_CHANGED,
+						    NULL,
+						    arg,
+						    NULL);
+	}
 
       bonobo_arg_release(arg);
     }
@@ -201,7 +166,7 @@ void
 org_gnome_mail_notification_message_reading (EPlugin *plugin,
 					     EMEventTargetMessage *message)
 {
-  if (glue_event_sources)
+  if (mn_evolution_glues)
     {
       BonoboArg *arg;
       char *url;
@@ -213,13 +178,16 @@ org_gnome_mail_notification_message_reading (EPlugin *plugin,
       BONOBO_ARG_SET_STRING(arg, url);
       g_free(url);
 
-      for (l = glue_event_sources; l != NULL; l = l->next)
-	bonobo_event_source_notify_listeners_full(l->data,
-						  MN_EVOLUTION_EVENT_PREFIX,
-						  MN_EVOLUTION_EVENT_MESSAGE_READING,
-						  NULL,
-						  arg,
-						  NULL);
+      for (l = mn_evolution_glues; l != NULL; l = l->next)
+	{
+	  MNEvolutionGlue *glue = l->data;
+	  bonobo_event_source_notify_listeners_full(glue->es,
+						    MN_EVOLUTION_GLUE_EVENT_PREFIX,
+						    MN_EVOLUTION_GLUE_EVENT_MESSAGE_READING,
+						    NULL,
+						    arg,
+						    NULL);
+	}
 
       bonobo_arg_release(arg);
     }
diff --git a/src/mn-evolution.h b/src/mn-evolution.h
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,19 +12,23 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_EVOLUTION_H
 #define _MN_EVOLUTION_H
 
+#define MN_EVOLUTION_EVENT_PREFIX		"GNOME/MailNotification/Evolution"
+
 #define MN_EVOLUTION_GLUE_IID			"OAFIID:GNOME_MailNotification_Evolution_Glue"
-#define MN_EVOLUTION_FOLDER_TREE_CONTROL_IID	"OAFIID:GNOME_MailNotification_Evolution_FolderTree_Control"
+#define MN_EVOLUTION_GLUE_EVENT_PREFIX		MN_EVOLUTION_EVENT_PREFIX "/Glue"
+#define MN_EVOLUTION_GLUE_EVENT_FOLDER_CHANGED	"folder-changed"
+#define MN_EVOLUTION_GLUE_EVENT_MESSAGE_READING	"message-reading"
 
-#define MN_EVOLUTION_EVENT_PREFIX		"GNOME/MailNotification/Evolution"
-#define MN_EVOLUTION_EVENT_FOLDER_CHANGED	"folder-changed"
-#define MN_EVOLUTION_EVENT_MESSAGE_READING	"message-reading"
+#define MN_EVOLUTION_FOLDER_TREE_CONTROL_IID			"OAFIID:GNOME_MailNotification_Evolution_FolderTree_Control"
+#define MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_PREFIX		MN_EVOLUTION_EVENT_PREFIX "/FolderTreeControl"
+#define MN_EVOLUTION_FOLDER_TREE_CONTROL_EVENT_ACTIVATED	"activated"
 
 #endif /* _MN_EVOLUTION_H */
diff --git a/src/mn-gmail-mailbox-private.h b/src/mn-gmail-mailbox-private.h
@@ -10,13 +10,13 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 25 "mn-gmail-mailbox.gob"
+#line 26 "mn-gmail-mailbox.gob"
 
 #include <libgnomevfs/gnome-vfs.h>
 
 #line 18 "mn-gmail-mailbox-private.h"
 struct _MNGmailMailboxPrivate {
-#line 58 "mn-gmail-mailbox.gob"
+#line 59 "mn-gmail-mailbox.gob"
 	GnomeVFSURI * uri;
 #line 22 "mn-gmail-mailbox-private.h"
 };
diff --git a/src/mn-gmail-mailbox-properties-private.h b/src/mn-gmail-mailbox-properties-private.h
@@ -10,7 +10,7 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNGmailMailboxPropertiesPrivate {
-#line 44 "mn-gmail-mailbox-properties.gob"
+#line 45 "mn-gmail-mailbox-properties.gob"
 	char * location;
 #line 16 "mn-gmail-mailbox-properties-private.h"
 };
diff --git a/src/mn-gmail-mailbox-properties.c b/src/mn-gmail-mailbox-properties.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-gmail-mailbox-properties.gob"
+#line 27 "mn-gmail-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -114,13 +114,13 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 44 "mn-gmail-mailbox-properties.gob"
+#line 45 "mn-gmail-mailbox-properties.gob"
 	if(self->_priv->location) { g_free ((gpointer) self->_priv->location); self->_priv->location = NULL; }
 #line 120 "mn-gmail-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 56 "mn-gmail-mailbox-properties.gob"
+#line 57 "mn-gmail-mailbox-properties.gob"
 static void 
 mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * class G_GNUC_UNUSED)
 #line 127 "mn-gmail-mailbox-properties.c"
@@ -133,9 +133,9 @@ mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * class G_
 
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES);
 
-#line 81 "mn-gmail-mailbox-properties.gob"
+#line 82 "mn-gmail-mailbox-properties.gob"
 	mn_mailbox_properties_class->set_mailbox = ___3_mn_gmail_mailbox_properties_set_mailbox;
-#line 92 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
 	mn_mailbox_properties_class->get_mailbox = ___4_mn_gmail_mailbox_properties_get_mailbox;
 #line 141 "mn-gmail-mailbox-properties.c"
 	g_object_class->finalize = ___finalize;
@@ -146,7 +146,7 @@ mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * class G_
 		"default_name");
     }
  {
-#line 57 "mn-gmail-mailbox-properties.gob"
+#line 58 "mn-gmail-mailbox-properties.gob"
 
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
 
@@ -158,7 +158,7 @@ mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * class G_
  }
 }
 #undef __GOB_FUNCTION__
-#line 65 "mn-gmail-mailbox-properties.gob"
+#line 66 "mn-gmail-mailbox-properties.gob"
 static void 
 mn_gmail_mailbox_properties_init (MNGmailMailboxProperties * self G_GNUC_UNUSED)
 #line 165 "mn-gmail-mailbox-properties.c"
@@ -166,13 +166,13 @@ mn_gmail_mailbox_properties_init (MNGmailMailboxProperties * self G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_GMAIL_MAILBOX_PROPERTIES,MNGmailMailboxPropertiesPrivate);
  {
-#line 66 "mn-gmail-mailbox-properties.gob"
+#line 67 "mn-gmail-mailbox-properties.gob"
 
     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self);
 
-    gtk_box_pack_start(GTK_BOX(self), auth->username_vbox, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(self), auth->password_vbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0);
 
     properties->entries = mn_g_slist_append_elements(properties->entries,
 						     auth->username_entry,
@@ -200,7 +200,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_DEFAULT_NAME:
 		{
-#line 48 "mn-gmail-mailbox-properties.gob"
+#line 49 "mn-gmail-mailbox-properties.gob"
 
       const char *username;
 
@@ -225,7 +225,7 @@ ___object_get_property (GObject *object,
 
 
 
-#line 81 "mn-gmail-mailbox-properties.gob"
+#line 82 "mn-gmail-mailbox-properties.gob"
 static void 
 ___3_mn_gmail_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
 #line 232 "mn-gmail-mailbox-properties.c"
@@ -235,7 +235,7 @@ ___3_mn_gmail_mailbox_properties_set_mailbox (MNMailboxProperties * properties G
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::set_mailbox"
 {
-#line 83 "mn-gmail-mailbox-properties.gob"
+#line 84 "mn-gmail-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNGmailMailbox *gmail_mailbox = MN_GMAIL_MAILBOX(mailbox);
@@ -248,7 +248,7 @@ ___3_mn_gmail_mailbox_properties_set_mailbox (MNMailboxProperties * properties G
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 92 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
 static MNMailbox * 
 ___4_mn_gmail_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
 #line 255 "mn-gmail-mailbox-properties.c"
@@ -259,7 +259,7 @@ ___4_mn_gmail_mailbox_properties_get_mailbox (MNMailboxProperties * properties G
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::get_mailbox"
 {
-#line 94 "mn-gmail-mailbox-properties.gob"
+#line 95 "mn-gmail-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNMailbox *mailbox;
diff --git a/src/mn-gmail-mailbox-properties.gob b/src/mn-gmail-mailbox-properties.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -67,8 +68,8 @@ class MN:Gmail:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self);
 
-    gtk_box_pack_start(GTK_BOX(self), auth->username_vbox, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(self), auth->password_vbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0);
 
     properties->entries = mn_g_slist_append_elements(properties->entries,
 						     auth->username_entry,
diff --git a/src/mn-gmail-mailbox.c b/src/mn-gmail-mailbox.c
@@ -20,7 +20,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-gmail-mailbox.gob"
+#line 30 "mn-gmail-mailbox.gob"
 
 #include "config.h"
 #include <string.h>
@@ -62,7 +62,7 @@ static void mn_gmail_mailbox_class_init (MNGmailMailboxClass * class) G_GNUC_UNU
 static void mn_gmail_mailbox_init (MNGmailMailbox * self) G_GNUC_UNUSED;
 static void ___3_mn_gmail_mailbox_seal (MNMailbox * mailbox) G_GNUC_UNUSED;
 static void ___4_mn_gmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox) G_GNUC_UNUSED;
-static void mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, char ** from, char ** subject) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, char ** from, char ** subject, char ** url) G_GNUC_UNUSED;
 static char * mn_gmail_mailbox_parse_author (xmlNode * node) G_GNUC_UNUSED;
 static time_t mn_gmail_mailbox_parse_date (const char * w3c_datetime) G_GNUC_UNUSED;
 
@@ -129,7 +129,7 @@ ___dispose (GObject *obj_self)
 	MNGmailMailbox *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 58 "mn-gmail-mailbox.gob"
+#line 59 "mn-gmail-mailbox.gob"
 	if(self->_priv->uri) { gnome_vfs_uri_unref ((gpointer) self->_priv->uri); self->_priv->uri = NULL; }
 #line 135 "mn-gmail-mailbox.c"
 }
@@ -144,13 +144,13 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 52 "mn-gmail-mailbox.gob"
+#line 53 "mn-gmail-mailbox.gob"
 	if(self->location) { g_free ((gpointer) self->location); self->location = NULL; }
 #line 150 "mn-gmail-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 60 "mn-gmail-mailbox.gob"
+#line 61 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
 #line 157 "mn-gmail-mailbox.c"
@@ -164,9 +164,9 @@ mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX);
 
-#line 77 "mn-gmail-mailbox.gob"
+#line 78 "mn-gmail-mailbox.gob"
 	mn_mailbox_class->seal = ___3_mn_gmail_mailbox_seal;
-#line 86 "mn-gmail-mailbox.gob"
+#line 87 "mn-gmail-mailbox.gob"
 	mn_authenticated_mailbox_class->authenticated_check = ___4_mn_gmail_mailbox_authenticated_check;
 #line 172 "mn-gmail-mailbox.c"
 	g_object_class->dispose = ___dispose;
@@ -187,7 +187,7 @@ mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
 		param_spec);
     }
  {
-#line 61 "mn-gmail-mailbox.gob"
+#line 62 "mn-gmail-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "gmail";
 
@@ -201,7 +201,7 @@ mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
  }
 }
 #undef __GOB_FUNCTION__
-#line 71 "mn-gmail-mailbox.gob"
+#line 72 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_init (MNGmailMailbox * self G_GNUC_UNUSED)
 #line 208 "mn-gmail-mailbox.c"
@@ -209,7 +209,7 @@ mn_gmail_mailbox_init (MNGmailMailbox * self G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_GMAIL_MAILBOX,MNGmailMailboxPrivate);
  {
-#line 72 "mn-gmail-mailbox.gob"
+#line 73 "mn-gmail-mailbox.gob"
 
     mn_mailbox_set_format(MN_MAILBOX(self), "Gmail");
     mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_GMAIL);
@@ -233,7 +233,7 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_LOCATION:
 		{
-#line 53 "mn-gmail-mailbox.gob"
+#line 54 "mn-gmail-mailbox.gob"
 { char *old = self->location; self->location = g_value_dup_string (VAL); g_free (old); }
 #line 239 "mn-gmail-mailbox.c"
 		}
@@ -264,7 +264,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_LOCATION:
 		{
-#line 53 "mn-gmail-mailbox.gob"
+#line 54 "mn-gmail-mailbox.gob"
 g_value_set_string (VAL, self->location);
 #line 270 "mn-gmail-mailbox.c"
 		}
@@ -283,7 +283,7 @@ g_value_set_string (VAL, self->location);
 
 
 
-#line 77 "mn-gmail-mailbox.gob"
+#line 78 "mn-gmail-mailbox.gob"
 static void 
 ___3_mn_gmail_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 290 "mn-gmail-mailbox.c"
@@ -293,7 +293,7 @@ ___3_mn_gmail_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::seal"
 {
-#line 79 "mn-gmail-mailbox.gob"
+#line 80 "mn-gmail-mailbox.gob"
 	
     PARENT_HANDLER(mailbox);
 
@@ -304,7 +304,7 @@ ___3_mn_gmail_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 86 "mn-gmail-mailbox.gob"
+#line 87 "mn-gmail-mailbox.gob"
 static void 
 ___4_mn_gmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
 #line 311 "mn-gmail-mailbox.c"
@@ -314,7 +314,7 @@ ___4_mn_gmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::authenticated_check"
 {
-#line 88 "mn-gmail-mailbox.gob"
+#line 89 "mn-gmail-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     GnomeVFSResult result;
@@ -386,8 +386,9 @@ ___4_mn_gmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
 	      char *id;
 	      char *from;
 	      char *subject;
+	      char *url;
 
-	      self_parse_entry(node, &sent_time, &id, &from, &subject);
+	      self_parse_entry(node, &sent_time, &id, &from, &subject, &url);
 
 	      messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(self),
 								  NULL,
@@ -395,11 +396,13 @@ ___4_mn_gmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
 								  id,
 								  from,
 								  subject,
+								  url,
 								  MN_MESSAGE_NEW));
 
 	      g_free(id);
 	      g_free(from);
 	      g_free(subject);
+	      g_free(url);
 	    }
 
 	GDK_THREADS_ENTER();
@@ -422,34 +425,37 @@ ___4_mn_gmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
 
     xmlFreeDoc(doc);
   }}
-#line 426 "mn-gmail-mailbox.c"
+#line 429 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 196 "mn-gmail-mailbox.gob"
+#line 200 "mn-gmail-mailbox.gob"
 static void 
-mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, char ** from, char ** subject)
-#line 433 "mn-gmail-mailbox.c"
+mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, char ** from, char ** subject, char ** url)
+#line 436 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_entry"
-#line 196 "mn-gmail-mailbox.gob"
+#line 200 "mn-gmail-mailbox.gob"
 	g_return_if_fail (node != NULL);
-#line 196 "mn-gmail-mailbox.gob"
+#line 200 "mn-gmail-mailbox.gob"
 	g_return_if_fail (sent_time != NULL);
-#line 196 "mn-gmail-mailbox.gob"
+#line 200 "mn-gmail-mailbox.gob"
 	g_return_if_fail (id != NULL);
-#line 196 "mn-gmail-mailbox.gob"
+#line 200 "mn-gmail-mailbox.gob"
 	g_return_if_fail (from != NULL);
-#line 196 "mn-gmail-mailbox.gob"
+#line 200 "mn-gmail-mailbox.gob"
 	g_return_if_fail (subject != NULL);
-#line 446 "mn-gmail-mailbox.c"
+#line 200 "mn-gmail-mailbox.gob"
+	g_return_if_fail (url != NULL);
+#line 451 "mn-gmail-mailbox.c"
 {
-#line 202 "mn-gmail-mailbox.gob"
+#line 207 "mn-gmail-mailbox.gob"
 	
     *sent_time = 0;
     *id = NULL;
     *from = NULL;
     *subject = NULL;
+    *url = NULL;
 
     for (node = node->children; node != NULL; node = node->next)
       if (node->type == XML_ELEMENT_NODE)
@@ -469,6 +475,11 @@ mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, ch
 	      g_free(*from);
 	      *from = self_parse_author(node);
 	    }
+	  else if (! strcmp(node->name, "link"))
+	    {
+	      g_free(*url);
+	      *url = xmlGetProp(node, "href");
+	    }
 #ifdef HAVE_TIMEGM
 	  else if (! strcmp(node->name, "issued"))
 	    {
@@ -484,20 +495,20 @@ mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, ch
 #endif
 	}
   }}
-#line 488 "mn-gmail-mailbox.c"
+#line 499 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 242 "mn-gmail-mailbox.gob"
+#line 253 "mn-gmail-mailbox.gob"
 static char * 
 mn_gmail_mailbox_parse_author (xmlNode * node)
-#line 494 "mn-gmail-mailbox.c"
+#line 505 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_author"
-#line 242 "mn-gmail-mailbox.gob"
+#line 253 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (node != NULL, (char * )0);
-#line 499 "mn-gmail-mailbox.c"
+#line 510 "mn-gmail-mailbox.c"
 {
-#line 244 "mn-gmail-mailbox.gob"
+#line 255 "mn-gmail-mailbox.gob"
 	
     char *from;
     char *name = NULL;
@@ -527,20 +538,20 @@ mn_gmail_mailbox_parse_author (xmlNode * node)
 
     return from;
   }}
-#line 531 "mn-gmail-mailbox.c"
+#line 542 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 274 "mn-gmail-mailbox.gob"
+#line 285 "mn-gmail-mailbox.gob"
 static time_t 
 mn_gmail_mailbox_parse_date (const char * w3c_datetime)
-#line 537 "mn-gmail-mailbox.c"
+#line 548 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_date"
-#line 274 "mn-gmail-mailbox.gob"
+#line 285 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (w3c_datetime != NULL, (time_t )0);
-#line 542 "mn-gmail-mailbox.c"
+#line 553 "mn-gmail-mailbox.c"
 {
-#line 276 "mn-gmail-mailbox.gob"
+#line 287 "mn-gmail-mailbox.gob"
 	
 #ifdef HAVE_TIMEGM
     time_t t = 0;
@@ -579,17 +590,17 @@ mn_gmail_mailbox_parse_date (const char * w3c_datetime)
     return 0;
 #endif
   }}
-#line 583 "mn-gmail-mailbox.c"
+#line 594 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 315 "mn-gmail-mailbox.gob"
+#line 326 "mn-gmail-mailbox.gob"
 char * 
 mn_gmail_mailbox_build_name (const char * username)
-#line 589 "mn-gmail-mailbox.c"
+#line 600 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_name"
 {
-#line 317 "mn-gmail-mailbox.gob"
+#line 328 "mn-gmail-mailbox.gob"
 	
     if (username)
       return g_str_has_suffix(username, "@gmail.com")
@@ -598,5 +609,5 @@ mn_gmail_mailbox_build_name (const char * username)
     else
       return g_strdup("gmail.com");
   }}
-#line 602 "mn-gmail-mailbox.c"
+#line 613 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-gmail-mailbox.gob b/src/mn-gmail-mailbox.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -156,8 +157,9 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 	      char *id;
 	      char *from;
 	      char *subject;
+	      char *url;
 
-	      self_parse_entry(node, &sent_time, &id, &from, &subject);
+	      self_parse_entry(node, &sent_time, &id, &from, &subject, &url);
 
 	      messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(self),
 								  NULL,
@@ -165,11 +167,13 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 								  id,
 								  from,
 								  subject,
+								  url,
 								  MN_MESSAGE_NEW));
 
 	      g_free(id);
 	      g_free(from);
 	      g_free(subject);
+	      g_free(url);
 	    }
 
 	GDK_THREADS_ENTER();
@@ -198,12 +202,14 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 		 time_t *sent_time (check null),
 		 char **id (check null),
 		 char **from (check null),
-		 char **subject (check null))
+		 char **subject (check null),
+		 char **url (check null))
   {
     *sent_time = 0;
     *id = NULL;
     *from = NULL;
     *subject = NULL;
+    *url = NULL;
 
     for (node = node->children; node != NULL; node = node->next)
       if (node->type == XML_ELEMENT_NODE)
@@ -223,6 +229,11 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 	      g_free(*from);
 	      *from = self_parse_author(node);
 	    }
+	  else if (! strcmp(node->name, "link"))
+	    {
+	      g_free(*url);
+	      *url = xmlGetProp(node, "href");
+	    }
 #ifdef HAVE_TIMEGM
 	  else if (! strcmp(node->name, "issued"))
 	    {
diff --git a/src/mn-gmime-stream-vfs-private.h b/src/mn-gmime-stream-vfs-private.h
@@ -10,11 +10,11 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNGMimeStreamVFSPrivate {
-#line 63 "mn-gmime-stream-vfs.gob"
-	GnomeVFSHandle * handle;
 #line 64 "mn-gmime-stream-vfs.gob"
-	char * uri;
+	GnomeVFSHandle * handle;
 #line 65 "mn-gmime-stream-vfs.gob"
+	char * uri;
+#line 66 "mn-gmime-stream-vfs.gob"
 	gboolean eof;
 #line 20 "mn-gmime-stream-vfs-private.h"
 };
diff --git a/src/mn-gmime-stream-vfs.c b/src/mn-gmime-stream-vfs.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-gmime-stream-vfs.gob"
+#line 27 "mn-gmime-stream-vfs.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -141,7 +141,7 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 64 "mn-gmime-stream-vfs.gob"
+#line 65 "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"
 }
@@ -165,25 +165,25 @@ mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (GMIME_TYPE_STREAM);
 
-#line 67 "mn-gmime-stream-vfs.gob"
+#line 68 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->read = ___1_mn_gmime_stream_vfs_read;
-#line 87 "mn-gmime-stream-vfs.gob"
+#line 88 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->write = ___2_mn_gmime_stream_vfs_write;
-#line 107 "mn-gmime-stream-vfs.gob"
+#line 108 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->flush = ___3_mn_gmime_stream_vfs_flush;
-#line 114 "mn-gmime-stream-vfs.gob"
+#line 115 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->close = ___4_mn_gmime_stream_vfs_close;
-#line 124 "mn-gmime-stream-vfs.gob"
+#line 125 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->eos = ___5_mn_gmime_stream_vfs_eos;
-#line 135 "mn-gmime-stream-vfs.gob"
+#line 136 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->reset = ___6_mn_gmime_stream_vfs_reset;
-#line 149 "mn-gmime-stream-vfs.gob"
+#line 150 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->seek = ___7_mn_gmime_stream_vfs_seek;
-#line 194 "mn-gmime-stream-vfs.gob"
+#line 195 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->tell = ___8_mn_gmime_stream_vfs_tell;
-#line 200 "mn-gmime-stream-vfs.gob"
+#line 201 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->length = ___9_mn_gmime_stream_vfs_length;
-#line 219 "mn-gmime-stream-vfs.gob"
+#line 220 "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;
@@ -192,7 +192,7 @@ mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c G_GNUC_UNUSED)
 
 
 
-#line 67 "mn-gmime-stream-vfs.gob"
+#line 68 "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"
@@ -203,7 +203,7 @@ ___1_mn_gmime_stream_vfs_read (GMimeStream * stream G_GNUC_UNUSED, char * buf, s
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::read"
 {
-#line 69 "mn-gmime-stream-vfs.gob"
+#line 70 "mn-gmime-stream-vfs.gob"
 	
     Self *self = SELF(stream);
     GnomeVFSFileSize bytes_read;
@@ -225,7 +225,7 @@ ___1_mn_gmime_stream_vfs_read (GMimeStream * stream G_GNUC_UNUSED, char * buf, s
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 87 "mn-gmime-stream-vfs.gob"
+#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 232 "mn-gmime-stream-vfs.c"
@@ -236,7 +236,7 @@ ___2_mn_gmime_stream_vfs_write (GMimeStream * stream G_GNUC_UNUSED, const char *
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::write"
 {
-#line 89 "mn-gmime-stream-vfs.gob"
+#line 90 "mn-gmime-stream-vfs.gob"
 	
     Self *self = SELF(stream);
     GnomeVFSFileSize bytes_written;
@@ -258,7 +258,7 @@ ___2_mn_gmime_stream_vfs_write (GMimeStream * stream G_GNUC_UNUSED, const char *
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 107 "mn-gmime-stream-vfs.gob"
+#line 108 "mn-gmime-stream-vfs.gob"
 static int 
 ___3_mn_gmime_stream_vfs_flush (GMimeStream * stream G_GNUC_UNUSED)
 #line 265 "mn-gmime-stream-vfs.c"
@@ -269,7 +269,7 @@ ___3_mn_gmime_stream_vfs_flush (GMimeStream * stream G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::flush"
 {
-#line 109 "mn-gmime-stream-vfs.gob"
+#line 110 "mn-gmime-stream-vfs.gob"
 	
     /* nop */
     return 0;			/* success */
@@ -278,7 +278,7 @@ ___3_mn_gmime_stream_vfs_flush (GMimeStream * stream G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 114 "mn-gmime-stream-vfs.gob"
+#line 115 "mn-gmime-stream-vfs.gob"
 static int 
 ___4_mn_gmime_stream_vfs_close (GMimeStream * stream G_GNUC_UNUSED)
 #line 285 "mn-gmime-stream-vfs.c"
@@ -289,7 +289,7 @@ ___4_mn_gmime_stream_vfs_close (GMimeStream * stream G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::close"
 {
-#line 116 "mn-gmime-stream-vfs.gob"
+#line 117 "mn-gmime-stream-vfs.gob"
 	
     Self *self = SELF(stream);
 
@@ -301,7 +301,7 @@ ___4_mn_gmime_stream_vfs_close (GMimeStream * stream G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 124 "mn-gmime-stream-vfs.gob"
+#line 125 "mn-gmime-stream-vfs.gob"
 static gboolean 
 ___5_mn_gmime_stream_vfs_eos (GMimeStream * stream G_GNUC_UNUSED)
 #line 308 "mn-gmime-stream-vfs.c"
@@ -312,7 +312,7 @@ ___5_mn_gmime_stream_vfs_eos (GMimeStream * stream G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::eos"
 {
-#line 126 "mn-gmime-stream-vfs.gob"
+#line 127 "mn-gmime-stream-vfs.gob"
 	
     Self *self = SELF(stream);
 
@@ -325,7 +325,7 @@ ___5_mn_gmime_stream_vfs_eos (GMimeStream * stream G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 135 "mn-gmime-stream-vfs.gob"
+#line 136 "mn-gmime-stream-vfs.gob"
 static int 
 ___6_mn_gmime_stream_vfs_reset (GMimeStream * stream G_GNUC_UNUSED)
 #line 332 "mn-gmime-stream-vfs.c"
@@ -336,7 +336,7 @@ ___6_mn_gmime_stream_vfs_reset (GMimeStream * stream G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::reset"
 {
-#line 137 "mn-gmime-stream-vfs.gob"
+#line 138 "mn-gmime-stream-vfs.gob"
 	
     Self *self = SELF(stream);
 
@@ -352,7 +352,7 @@ ___6_mn_gmime_stream_vfs_reset (GMimeStream * stream G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 149 "mn-gmime-stream-vfs.gob"
+#line 150 "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 359 "mn-gmime-stream-vfs.c"
@@ -363,7 +363,7 @@ ___7_mn_gmime_stream_vfs_seek (GMimeStream * stream G_GNUC_UNUSED, off_t offset,
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::seek"
 {
-#line 151 "mn-gmime-stream-vfs.gob"
+#line 152 "mn-gmime-stream-vfs.gob"
 	
     Self *self = SELF(stream);
     off_t real = stream->position;
@@ -410,7 +410,7 @@ ___7_mn_gmime_stream_vfs_seek (GMimeStream * stream G_GNUC_UNUSED, off_t offset,
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 194 "mn-gmime-stream-vfs.gob"
+#line 195 "mn-gmime-stream-vfs.gob"
 static off_t 
 ___8_mn_gmime_stream_vfs_tell (GMimeStream * stream G_GNUC_UNUSED)
 #line 417 "mn-gmime-stream-vfs.c"
@@ -421,7 +421,7 @@ ___8_mn_gmime_stream_vfs_tell (GMimeStream * stream G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::tell"
 {
-#line 196 "mn-gmime-stream-vfs.gob"
+#line 197 "mn-gmime-stream-vfs.gob"
 	
     return stream->position;
   }}
@@ -429,7 +429,7 @@ ___8_mn_gmime_stream_vfs_tell (GMimeStream * stream G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 200 "mn-gmime-stream-vfs.gob"
+#line 201 "mn-gmime-stream-vfs.gob"
 static ssize_t 
 ___9_mn_gmime_stream_vfs_length (GMimeStream * stream G_GNUC_UNUSED)
 #line 436 "mn-gmime-stream-vfs.c"
@@ -440,7 +440,7 @@ ___9_mn_gmime_stream_vfs_length (GMimeStream * stream G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::length"
 {
-#line 202 "mn-gmime-stream-vfs.gob"
+#line 203 "mn-gmime-stream-vfs.gob"
 	
     Self *self = SELF(stream);
     GnomeVFSFileSize bound_end;
@@ -461,7 +461,7 @@ ___9_mn_gmime_stream_vfs_length (GMimeStream * stream G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 219 "mn-gmime-stream-vfs.gob"
+#line 220 "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 468 "mn-gmime-stream-vfs.c"
@@ -472,7 +472,7 @@ ___a_mn_gmime_stream_vfs_substream (GMimeStream * stream G_GNUC_UNUSED, off_t st
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::substream"
 {
-#line 221 "mn-gmime-stream-vfs.gob"
+#line 222 "mn-gmime-stream-vfs.gob"
 	
     Self *self;
 
@@ -487,19 +487,19 @@ ___a_mn_gmime_stream_vfs_substream (GMimeStream * stream G_GNUC_UNUSED, off_t st
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 232 "mn-gmime-stream-vfs.gob"
+#line 233 "mn-gmime-stream-vfs.gob"
 GMimeStream * 
 mn_gmime_stream_vfs_new (GnomeVFSHandle * handle, GnomeVFSURI * uri, GnomeVFSResult * result)
 #line 494 "mn-gmime-stream-vfs.c"
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::new"
-#line 232 "mn-gmime-stream-vfs.gob"
+#line 233 "mn-gmime-stream-vfs.gob"
 	g_return_val_if_fail (handle != NULL, (GMimeStream * )0);
-#line 232 "mn-gmime-stream-vfs.gob"
+#line 233 "mn-gmime-stream-vfs.gob"
 	g_return_val_if_fail (uri != NULL, (GMimeStream * )0);
 #line 501 "mn-gmime-stream-vfs.c"
 {
-#line 236 "mn-gmime-stream-vfs.gob"
+#line 237 "mn-gmime-stream-vfs.gob"
 	
     GMimeStream *stream;
     GnomeVFSResult _result;
diff --git a/src/mn-gmime-stream-vfs.gob b/src/mn-gmime-stream-vfs.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
diff --git a/src/mn-imap-mailbox-private.h b/src/mn-imap-mailbox-private.h
@@ -10,17 +10,17 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 39 "mn-imap-mailbox.gob"
+#line 40 "mn-imap-mailbox.gob"
 
 #include "mn-client-session.h"
 
 #line 18 "mn-imap-mailbox-private.h"
 struct _MNIMAPMailboxPrivate {
-#line 160 "mn-imap-mailbox.gob"
+#line 161 "mn-imap-mailbox.gob"
 	int removed;
-#line 163 "mn-imap-mailbox.gob"
+#line 164 "mn-imap-mailbox.gob"
 	GMutex * mutex;
-#line 165 "mn-imap-mailbox.gob"
+#line 166 "mn-imap-mailbox.gob"
 	MNClientSessionPrivate * idle_session;
 #line 26 "mn-imap-mailbox-private.h"
 };
diff --git a/src/mn-imap-mailbox-properties-private.h b/src/mn-imap-mailbox-properties-private.h
@@ -10,19 +10,19 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 25 "mn-imap-mailbox-properties.gob"
+#line 26 "mn-imap-mailbox-properties.gob"
 
 #include "mn-imap-mailbox.h"
 
 #line 18 "mn-imap-mailbox-properties-private.h"
 struct _MNIMAPMailboxPropertiesPrivate {
-#line 43 "mn-imap-mailbox-properties.gob"
-	GtkWidget * inbox_radio;
 #line 44 "mn-imap-mailbox-properties.gob"
-	GtkWidget * other_radio;
+	GtkWidget * inbox_radio;
 #line 45 "mn-imap-mailbox-properties.gob"
-	GtkWidget * mailbox_entry;
+	GtkWidget * other_radio;
 #line 46 "mn-imap-mailbox-properties.gob"
+	GtkWidget * mailbox_entry;
+#line 47 "mn-imap-mailbox-properties.gob"
 	GtkWidget * use_idle_radio[MN_IMAP_MAILBOX_N_USE_IDLE];
 #line 28 "mn-imap-mailbox-properties-private.h"
 };
diff --git a/src/mn-imap-mailbox-properties.c b/src/mn-imap-mailbox-properties.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-imap-mailbox-properties.gob"
+#line 30 "mn-imap-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -52,7 +52,7 @@ typedef MNIMAPMailboxPropertiesClass SelfClass;
 static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
 static void mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class) G_GNUC_UNUSED;
 static void mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * self) G_GNUC_UNUSED;
-static void mn_imap_mailbox_properties_add_idle_usage (MNIMAPMailboxProperties * self, MNIMAPMailboxUseIDLE usage, const char * mnemonic) G_GNUC_UNUSED;
+static void mn_imap_mailbox_properties_add_idle_usage (MNIMAPMailboxProperties * self, GtkBox * idle_vbox, MNIMAPMailboxUseIDLE usage, const char * mnemonic) G_GNUC_UNUSED;
 static void mn_imap_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data) G_GNUC_UNUSED;
 static void ___5_mn_imap_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox) G_GNUC_UNUSED;
 static MNMailbox * ___6_mn_imap_mailbox_properties_get_mailbox (MNMailboxProperties * properties) G_GNUC_UNUSED;
@@ -123,7 +123,7 @@ ___finalize(GObject *obj_self)
 }
 #undef __GOB_FUNCTION__
 
-#line 98 "mn-imap-mailbox-properties.gob"
+#line 99 "mn-imap-mailbox-properties.gob"
 static void 
 mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GNUC_UNUSED)
 #line 130 "mn-imap-mailbox-properties.c"
@@ -136,9 +136,9 @@ mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GN
 
 	parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX_PROPERTIES);
 
-#line 206 "mn-imap-mailbox-properties.gob"
+#line 190 "mn-imap-mailbox-properties.gob"
 	mn_mailbox_properties_class->set_mailbox = ___5_mn_imap_mailbox_properties_set_mailbox;
-#line 225 "mn-imap-mailbox-properties.gob"
+#line 209 "mn-imap-mailbox-properties.gob"
 	mn_mailbox_properties_class->get_mailbox = ___6_mn_imap_mailbox_properties_get_mailbox;
 #line 144 "mn-imap-mailbox-properties.c"
 	g_object_class->finalize = ___finalize;
@@ -152,7 +152,7 @@ mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GN
 		"default_name");
     }
  {
-#line 99 "mn-imap-mailbox-properties.gob"
+#line 100 "mn-imap-mailbox-properties.gob"
 
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
 
@@ -163,7 +163,7 @@ mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GN
  }
 }
 #undef __GOB_FUNCTION__
-#line 106 "mn-imap-mailbox-properties.gob"
+#line 107 "mn-imap-mailbox-properties.gob"
 static void 
 mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * self G_GNUC_UNUSED)
 #line 170 "mn-imap-mailbox-properties.c"
@@ -171,43 +171,44 @@ mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * self G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_IMAP_MAILBOX_PROPERTIES,MNIMAPMailboxPropertiesPrivate);
  {
-#line 107 "mn-imap-mailbox-properties.gob"
+#line 108 "mn-imap-mailbox-properties.gob"
 
     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
     GtkWidget *hbox;
-    GtkWidget *label;
+    GtkWidget *folder_vbox;
+    GtkWidget *idle_section;
+    GtkWidget *idle_vbox;
     int i;
 
-    label = gtk_label_new(_("Mailbox:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    gtk_size_group_add_widget(pi->details_size_group, label);
+    /* translators: header capitalization */
+    folder_vbox = mn_mailbox_properties_add_general_section(properties, _("IMAP Mailbox"));
 
-    selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("in_box"));
+    selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("In_box"));
+    gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, selfp->inbox_radio);
 
-    hbox = gtk_hbox_new(FALSE, 12);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), selfp->inbox_radio, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(pi->details_vbox), hbox, FALSE, FALSE, 0);
-    gtk_widget_show_all(hbox);
+    gtk_box_pack_start(GTK_BOX(folder_vbox), selfp->inbox_radio, FALSE, FALSE, 0);
 
-    label = gtk_label_new(NULL);
-    gtk_size_group_add_widget(pi->details_size_group, label);
+    selfp->other_radio = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->inbox_radio), _("_Other:"));
+    gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, selfp->other_radio);
 
-    selfp->other_radio = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->inbox_radio), _("oth_er:"));
     selfp->mailbox_entry = gtk_entry_new();
     gtk_widget_set_sensitive(selfp->mailbox_entry, FALSE);
 
     hbox = gtk_hbox_new(FALSE, 12);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), selfp->other_radio, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), selfp->mailbox_entry, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(pi->details_vbox), hbox, FALSE, FALSE, 0);
-    gtk_widget_show_all(hbox);
+    gtk_box_pack_start(GTK_BOX(folder_vbox), hbox, FALSE, FALSE, 0);
+    gtk_widget_show_all(folder_vbox);
+
+    /* translators: header capitalization */
+    idle_section = mn_hig_section_new_with_box(_("Use the IDLE Extension"), NULL, &idle_vbox);
+    gtk_box_pack_start(GTK_BOX(pi->connection_page), idle_section, FALSE, FALSE, 0);
+    gtk_widget_show(idle_section);
 
-    self_add_idle_usage(self, MN_IMAP_MAILBOX_USE_IDLE_NEVER, _("ne_ver"));
-    self_add_idle_usage(self, MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT, _("au_todetect"));
-    self_add_idle_usage(self, MN_IMAP_MAILBOX_USE_IDLE_ALWAYS, _("al_ways"));
+    self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_NEVER, _("_Never"));
+    self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT, _("A_utodetect"));
+    self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_ALWAYS, _("Al_ways"));
 
     /* by default, autodetect is enabled */
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT]), TRUE);
@@ -227,7 +228,7 @@ mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * self G_GNUC_UNUSED)
 		     "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self,
 		     NULL);
   
-#line 231 "mn-imap-mailbox-properties.c"
+#line 232 "mn-imap-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -246,24 +247,24 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 50 "mn-imap-mailbox-properties.gob"
+#line 51 "mn-imap-mailbox-properties.gob"
 
       MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
       gboolean complete;
-      const char *hostname;
+      const char *server;
       gboolean other_active;
       const char *mailbox;
 
       mn_pi_mailbox_properties_get_contents(pi,
 					    NULL,
 					    NULL,
-					    &hostname,
+					    &server,
 					    NULL);
 
       other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio));
       mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry));
 
-      complete = *hostname && (! other_active || *mailbox);
+      complete = *server && (! other_active || *mailbox);
 #ifndef WITH_SSL
       if (complete)
 	complete = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pi->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL]));
@@ -271,15 +272,15 @@ ___object_get_property (GObject *object,
 
       g_value_set_boolean(VAL, complete);
     
-#line 275 "mn-imap-mailbox-properties.c"
+#line 276 "mn-imap-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_NAME:
 		{
-#line 77 "mn-imap-mailbox-properties.gob"
+#line 78 "mn-imap-mailbox-properties.gob"
 
       const char *username;
-      const char *hostname;
+      const char *server;
       gboolean other_active;
       const char *mailbox;
 
@@ -289,15 +290,15 @@ ___object_get_property (GObject *object,
       mn_pi_mailbox_properties_get_contents(MN_PI_MAILBOX_PROPERTIES(self),
 					    NULL,
 					    NULL,
-					    &hostname,
+					    &server,
 					    NULL);
 
       other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio));
       mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry));
 
-      g_value_take_string(VAL, mn_imap_mailbox_build_name(username, hostname, other_active ? mailbox : NULL));
+      g_value_take_string(VAL, mn_imap_mailbox_build_name(username, server, other_active ? mailbox : NULL));
     
-#line 301 "mn-imap-mailbox-properties.c"
+#line 302 "mn-imap-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -314,59 +315,42 @@ ___object_get_property (GObject *object,
 
 
 
-#line 163 "mn-imap-mailbox-properties.gob"
+#line 165 "mn-imap-mailbox-properties.gob"
 static void 
-mn_imap_mailbox_properties_add_idle_usage (MNIMAPMailboxProperties * self, MNIMAPMailboxUseIDLE usage, const char * mnemonic)
-#line 321 "mn-imap-mailbox-properties.c"
+mn_imap_mailbox_properties_add_idle_usage (MNIMAPMailboxProperties * self, GtkBox * idle_vbox, MNIMAPMailboxUseIDLE usage, const char * mnemonic)
+#line 322 "mn-imap-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::add_idle_usage"
-#line 163 "mn-imap-mailbox-properties.gob"
+#line 165 "mn-imap-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 163 "mn-imap-mailbox-properties.gob"
+#line 165 "mn-imap-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_IMAP_MAILBOX_PROPERTIES (self));
-#line 163 "mn-imap-mailbox-properties.gob"
+#line 165 "mn-imap-mailbox-properties.gob"
+	g_return_if_fail (idle_vbox != NULL);
+#line 165 "mn-imap-mailbox-properties.gob"
 	g_return_if_fail (mnemonic != NULL);
-#line 330 "mn-imap-mailbox-properties.c"
+#line 333 "mn-imap-mailbox-properties.c"
 {
-#line 167 "mn-imap-mailbox-properties.gob"
+#line 170 "mn-imap-mailbox-properties.gob"
 	
-    MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
-    GtkWidget *label;
-    GtkWidget *hbox;
-
-    if (usage == 0)
-      {
-	label = gtk_label_new(_("Use the <span style=\"italic\">IDLE</span> extension:"));
-	gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-      }
-    else
-      label = gtk_label_new(NULL);
-
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-
     selfp->use_idle_radio[usage] = usage == 0
       ? gtk_radio_button_new_with_mnemonic(NULL, mnemonic)
       : gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->use_idle_radio[0]), mnemonic);
 
-    hbox = gtk_hbox_new(FALSE, 12);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), selfp->use_idle_radio[usage], TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(pi->details_vbox), hbox, FALSE, FALSE, 0);
-    gtk_widget_show_all(hbox);
-
-    gtk_size_group_add_widget(pi->details_size_group, label);
+    gtk_box_pack_start(idle_vbox, selfp->use_idle_radio[usage], TRUE, TRUE, 0);
+    gtk_widget_show(selfp->use_idle_radio[usage]);
   }}
-#line 360 "mn-imap-mailbox-properties.c"
+#line 344 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 195 "mn-imap-mailbox-properties.gob"
+#line 179 "mn-imap-mailbox-properties.gob"
 static void 
 mn_imap_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data)
-#line 366 "mn-imap-mailbox-properties.c"
+#line 350 "mn-imap-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::radio_toggled_h"
 {
-#line 197 "mn-imap-mailbox-properties.gob"
+#line 181 "mn-imap-mailbox-properties.gob"
 	
     Self *self = user_data;
 
@@ -375,20 +359,20 @@ mn_imap_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpoi
     g_object_notify(G_OBJECT(self), "complete");
     g_object_notify(G_OBJECT(self), "default-name");
   }}
-#line 379 "mn-imap-mailbox-properties.c"
+#line 363 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 206 "mn-imap-mailbox-properties.gob"
+#line 190 "mn-imap-mailbox-properties.gob"
 static void 
 ___5_mn_imap_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 385 "mn-imap-mailbox-properties.c"
+#line 369 "mn-imap-mailbox-properties.c"
 #define PARENT_HANDLER(___properties,___mailbox) \
 	{ if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::set_mailbox"
 {
-#line 208 "mn-imap-mailbox-properties.gob"
+#line 192 "mn-imap-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNIMAPMailbox *imap_mailbox = MN_IMAP_MAILBOX(mailbox);
@@ -405,14 +389,14 @@ ___5_mn_imap_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_
 
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[imap_mailbox->use_idle_extension]), TRUE);
   }}
-#line 409 "mn-imap-mailbox-properties.c"
+#line 393 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 225 "mn-imap-mailbox-properties.gob"
+#line 209 "mn-imap-mailbox-properties.gob"
 static MNMailbox * 
 ___6_mn_imap_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
-#line 416 "mn-imap-mailbox-properties.c"
+#line 400 "mn-imap-mailbox-properties.c"
 #define PARENT_HANDLER(___properties) \
 	((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \
@@ -420,7 +404,7 @@ ___6_mn_imap_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::get_mailbox"
 {
-#line 227 "mn-imap-mailbox-properties.gob"
+#line 211 "mn-imap-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNIMAPMailboxUseIDLE use_idle;
@@ -439,6 +423,6 @@ ___6_mn_imap_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_
 
     return mailbox;
   }}
-#line 443 "mn-imap-mailbox-properties.c"
+#line 427 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-imap-mailbox-properties.gob b/src/mn-imap-mailbox-properties.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -50,20 +51,20 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
     {
       MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
       gboolean complete;
-      const char *hostname;
+      const char *server;
       gboolean other_active;
       const char *mailbox;
 
       mn_pi_mailbox_properties_get_contents(pi,
 					    NULL,
 					    NULL,
-					    &hostname,
+					    &server,
 					    NULL);
 
       other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio));
       mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry));
 
-      complete = *hostname && (! other_active || *mailbox);
+      complete = *server && (! other_active || *mailbox);
 #ifndef WITH_SSL
       if (complete)
 	complete = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pi->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL]));
@@ -76,7 +77,7 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
     get
     {
       const char *username;
-      const char *hostname;
+      const char *server;
       gboolean other_active;
       const char *mailbox;
 
@@ -86,13 +87,13 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
       mn_pi_mailbox_properties_get_contents(MN_PI_MAILBOX_PROPERTIES(self),
 					    NULL,
 					    NULL,
-					    &hostname,
+					    &server,
 					    NULL);
 
       other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio));
       mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry));
 
-      g_value_take_string(VAL, mn_imap_mailbox_build_name(username, hostname, other_active ? mailbox : NULL));
+      g_value_take_string(VAL, mn_imap_mailbox_build_name(username, server, other_active ? mailbox : NULL));
     };
 
   class_init (class)
@@ -108,38 +109,39 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
     GtkWidget *hbox;
-    GtkWidget *label;
+    GtkWidget *folder_vbox;
+    GtkWidget *idle_section;
+    GtkWidget *idle_vbox;
     int i;
 
-    label = gtk_label_new(_("Mailbox:"));
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    gtk_size_group_add_widget(pi->details_size_group, label);
+    /* translators: header capitalization */
+    folder_vbox = mn_mailbox_properties_add_general_section(properties, _("IMAP Mailbox"));
 
-    selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("in_box"));
+    selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("In_box"));
+    gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, selfp->inbox_radio);
 
-    hbox = gtk_hbox_new(FALSE, 12);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), selfp->inbox_radio, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(pi->details_vbox), hbox, FALSE, FALSE, 0);
-    gtk_widget_show_all(hbox);
+    gtk_box_pack_start(GTK_BOX(folder_vbox), selfp->inbox_radio, FALSE, FALSE, 0);
 
-    label = gtk_label_new(NULL);
-    gtk_size_group_add_widget(pi->details_size_group, label);
+    selfp->other_radio = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->inbox_radio), _("_Other:"));
+    gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, selfp->other_radio);
 
-    selfp->other_radio = gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->inbox_radio), _("oth_er:"));
     selfp->mailbox_entry = gtk_entry_new();
     gtk_widget_set_sensitive(selfp->mailbox_entry, FALSE);
 
     hbox = gtk_hbox_new(FALSE, 12);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), selfp->other_radio, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), selfp->mailbox_entry, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(pi->details_vbox), hbox, FALSE, FALSE, 0);
-    gtk_widget_show_all(hbox);
+    gtk_box_pack_start(GTK_BOX(folder_vbox), hbox, FALSE, FALSE, 0);
+    gtk_widget_show_all(folder_vbox);
+
+    /* translators: header capitalization */
+    idle_section = mn_hig_section_new_with_box(_("Use the IDLE Extension"), NULL, &idle_vbox);
+    gtk_box_pack_start(GTK_BOX(pi->connection_page), idle_section, FALSE, FALSE, 0);
+    gtk_widget_show(idle_section);
 
-    self_add_idle_usage(self, MN_IMAP_MAILBOX_USE_IDLE_NEVER, _("ne_ver"));
-    self_add_idle_usage(self, MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT, _("au_todetect"));
-    self_add_idle_usage(self, MN_IMAP_MAILBOX_USE_IDLE_ALWAYS, _("al_ways"));
+    self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_NEVER, _("_Never"));
+    self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT, _("A_utodetect"));
+    self_add_idle_usage(self, GTK_BOX(idle_vbox), MN_IMAP_MAILBOX_USE_IDLE_ALWAYS, _("Al_ways"));
 
     /* by default, autodetect is enabled */
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT]), TRUE);
@@ -162,34 +164,16 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
 
   private void
     add_idle_usage (self,
+		    Gtk:Box *idle_vbox (check null),
 		    MNIMAPMailboxUseIDLE usage,
 		    const char *mnemonic (check null))
   {
-    MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
-    GtkWidget *label;
-    GtkWidget *hbox;
-
-    if (usage == 0)
-      {
-	label = gtk_label_new(_("Use the <span style=\"italic\">IDLE</span> extension:"));
-	gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-      }
-    else
-      label = gtk_label_new(NULL);
-
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-
     selfp->use_idle_radio[usage] = usage == 0
       ? gtk_radio_button_new_with_mnemonic(NULL, mnemonic)
       : gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(selfp->use_idle_radio[0]), mnemonic);
 
-    hbox = gtk_hbox_new(FALSE, 12);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), selfp->use_idle_radio[usage], TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(pi->details_vbox), hbox, FALSE, FALSE, 0);
-    gtk_widget_show_all(hbox);
-
-    gtk_size_group_add_widget(pi->details_size_group, label);
+    gtk_box_pack_start(idle_vbox, selfp->use_idle_radio[usage], TRUE, TRUE, 0);
+    gtk_widget_show(selfp->use_idle_radio[usage]);
   }
 
   private void
@@ -204,7 +188,7 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
   }
 
   override (MN:Mailbox:Properties) void
-    set_mailbox (MNMailboxProperties *properties, MN:Mailbox *mailbox)
+    set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox)
   {
     Self *self = SELF(properties);
     MNIMAPMailbox *imap_mailbox = MN_IMAP_MAILBOX(mailbox);
diff --git a/src/mn-imap-mailbox.c b/src/mn-imap-mailbox.c
@@ -20,7 +20,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 43 "mn-imap-mailbox.gob"
+#line 44 "mn-imap-mailbox.gob"
 
 #include "config.h"
 #include <stdio.h>
@@ -316,16 +316,16 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 163 "mn-imap-mailbox.gob"
+#line 164 "mn-imap-mailbox.gob"
 	if(self->_priv->mutex) { g_mutex_free ((gpointer) self->_priv->mutex); self->_priv->mutex = NULL; }
 #line 322 "mn-imap-mailbox.c"
-#line 167 "mn-imap-mailbox.gob"
+#line 168 "mn-imap-mailbox.gob"
 	if(self->mailbox) { g_free ((gpointer) self->mailbox); self->mailbox = NULL; }
 #line 325 "mn-imap-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 182 "mn-imap-mailbox.gob"
+#line 183 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
 #line 332 "mn-imap-mailbox.c"
@@ -339,13 +339,13 @@ mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX);
 
-#line 193 "mn-imap-mailbox.gob"
+#line 194 "mn-imap-mailbox.gob"
 	mn_mailbox_class->seal = ___3_mn_imap_mailbox_seal;
-#line 213 "mn-imap-mailbox.gob"
+#line 214 "mn-imap-mailbox.gob"
 	mn_mailbox_class->parse_uri = ___4_mn_imap_mailbox_parse_uri;
-#line 314 "mn-imap-mailbox.gob"
+#line 315 "mn-imap-mailbox.gob"
 	mn_mailbox_class->removed = ___6_mn_imap_mailbox_removed;
-#line 1008 "mn-imap-mailbox.gob"
+#line 1009 "mn-imap-mailbox.gob"
 	mn_authenticated_mailbox_class->authenticated_check = ___1e_mn_imap_mailbox_authenticated_check;
 #line 351 "mn-imap-mailbox.c"
 	g_object_class->finalize = ___finalize;
@@ -375,7 +375,7 @@ mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
 		param_spec);
     }
  {
-#line 183 "mn-imap-mailbox.gob"
+#line 184 "mn-imap-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "imap";
     MN_PI_MAILBOX_CLASS(class)->default_ports = mn_imap_mailbox_default_ports;
@@ -384,18 +384,18 @@ mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
  }
 }
 #undef __GOB_FUNCTION__
-#line 188 "mn-imap-mailbox.gob"
+#line 189 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_init (MNIMAPMailbox * self G_GNUC_UNUSED)
 #line 391 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_IMAP_MAILBOX,MNIMAPMailboxPrivate);
-#line 163 "mn-imap-mailbox.gob"
+#line 164 "mn-imap-mailbox.gob"
 	self->_priv->mutex = g_mutex_new();
 #line 397 "mn-imap-mailbox.c"
  {
-#line 189 "mn-imap-mailbox.gob"
+#line 190 "mn-imap-mailbox.gob"
 
     mn_mailbox_set_format(MN_MAILBOX(self), "IMAP");
   
@@ -418,14 +418,14 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX:
 		{
-#line 168 "mn-imap-mailbox.gob"
+#line 169 "mn-imap-mailbox.gob"
 { char *old = self->mailbox; self->mailbox = g_value_dup_string (VAL); g_free (old); }
 #line 424 "mn-imap-mailbox.c"
 		}
 		break;
 	case PROP_USE_IDLE_EXTENSION:
 		{
-#line 176 "mn-imap-mailbox.gob"
+#line 177 "mn-imap-mailbox.gob"
 self->use_idle_extension = g_value_get_enum (VAL);
 #line 431 "mn-imap-mailbox.c"
 		}
@@ -456,14 +456,14 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX:
 		{
-#line 168 "mn-imap-mailbox.gob"
+#line 169 "mn-imap-mailbox.gob"
 g_value_set_string (VAL, self->mailbox);
 #line 462 "mn-imap-mailbox.c"
 		}
 		break;
 	case PROP_USE_IDLE_EXTENSION:
 		{
-#line 176 "mn-imap-mailbox.gob"
+#line 177 "mn-imap-mailbox.gob"
 g_value_set_enum (VAL, self->use_idle_extension);
 #line 469 "mn-imap-mailbox.c"
 		}
@@ -482,7 +482,7 @@ g_value_set_enum (VAL, self->use_idle_extension);
 
 
 
-#line 193 "mn-imap-mailbox.gob"
+#line 194 "mn-imap-mailbox.gob"
 static void 
 ___3_mn_imap_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 489 "mn-imap-mailbox.c"
@@ -492,7 +492,7 @@ ___3_mn_imap_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::seal"
 {
-#line 195 "mn-imap-mailbox.gob"
+#line 196 "mn-imap-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -507,7 +507,7 @@ ___3_mn_imap_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 213 "mn-imap-mailbox.gob"
+#line 214 "mn-imap-mailbox.gob"
 static MNMailbox * 
 ___4_mn_imap_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri)
 #line 514 "mn-imap-mailbox.c"
@@ -518,7 +518,7 @@ ___4_mn_imap_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * ur
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::parse_uri"
 {
-#line 215 "mn-imap-mailbox.gob"
+#line 216 "mn-imap-mailbox.gob"
 	
     int len;
     int buflen;
@@ -594,23 +594,23 @@ ___4_mn_imap_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * ur
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 287 "mn-imap-mailbox.gob"
+#line 288 "mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_split_uri_location (const char * location, int maxlen, char * hostport, char * path, gboolean * has_path)
 #line 601 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::split_uri_location"
-#line 287 "mn-imap-mailbox.gob"
+#line 288 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (location != NULL, (gboolean )0);
-#line 287 "mn-imap-mailbox.gob"
+#line 288 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (hostport != NULL, (gboolean )0);
-#line 287 "mn-imap-mailbox.gob"
+#line 288 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (path != NULL, (gboolean )0);
-#line 287 "mn-imap-mailbox.gob"
+#line 288 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (has_path != NULL, (gboolean )0);
 #line 612 "mn-imap-mailbox.c"
 {
-#line 293 "mn-imap-mailbox.gob"
+#line 294 "mn-imap-mailbox.gob"
 	
     char *pat;
     int n;
@@ -634,7 +634,7 @@ mn_imap_mailbox_split_uri_location (const char * location, int maxlen, char * ho
 #line 635 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 314 "mn-imap-mailbox.gob"
+#line 315 "mn-imap-mailbox.gob"
 static void 
 ___6_mn_imap_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 641 "mn-imap-mailbox.c"
@@ -644,7 +644,7 @@ ___6_mn_imap_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::removed"
 {
-#line 316 "mn-imap-mailbox.gob"
+#line 317 "mn-imap-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -664,14 +664,14 @@ ___6_mn_imap_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 332 "mn-imap-mailbox.gob"
+#line 333 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 671 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_greeting_cb"
 {
-#line 336 "mn-imap-mailbox.gob"
+#line 337 "mn-imap-mailbox.gob"
 	
     priv->session = session;
 
@@ -700,28 +700,28 @@ mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionRe
 #line 701 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 362 "mn-imap-mailbox.gob"
+#line 363 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 707 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_capability_cb"
 {
-#line 365 "mn-imap-mailbox.gob"
+#line 366 "mn-imap-mailbox.gob"
 	
     return self_session_write(priv, "CAPABILITY");
   }}
 #line 715 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 369 "mn-imap-mailbox.gob"
+#line 370 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 721 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_capability_cb"
 {
-#line 373 "mn-imap-mailbox.gob"
+#line 374 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -755,14 +755,14 @@ mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSession
 #line 756 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 404 "mn-imap-mailbox.gob"
+#line 405 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 762 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_starttls_cb"
 {
-#line 407 "mn-imap-mailbox.gob"
+#line 408 "mn-imap-mailbox.gob"
 	
 #if WITH_SSL
     return self_session_write(priv, "STARTTLS");
@@ -774,14 +774,14 @@ mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPri
 #line 775 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 416 "mn-imap-mailbox.gob"
+#line 417 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 781 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_starttls_cb"
 {
-#line 420 "mn-imap-mailbox.gob"
+#line 421 "mn-imap-mailbox.gob"
 	
 #if WITH_SSL
     if (response->continuation)
@@ -816,14 +816,14 @@ mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionRe
 #line 817 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 452 "mn-imap-mailbox.gob"
+#line 453 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 823 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_authenticate_cb"
 {
-#line 455 "mn-imap-mailbox.gob"
+#line 456 "mn-imap-mailbox.gob"
 	
 #if WITH_SASL
     priv->sasl_mechanism = NULL;
@@ -856,14 +856,14 @@ mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessio
 #line 857 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 485 "mn-imap-mailbox.gob"
+#line 486 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 863 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_authenticate_cb"
 {
-#line 489 "mn-imap-mailbox.gob"
+#line 490 "mn-imap-mailbox.gob"
 	
 #if WITH_SASL
     if (response->tag)
@@ -922,14 +922,14 @@ mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessi
 #line 923 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 545 "mn-imap-mailbox.gob"
+#line 546 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 929 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_login_cb"
 {
-#line 548 "mn-imap-mailbox.gob"
+#line 549 "mn-imap-mailbox.gob"
 	
     if (self_session_has_capability(priv, "LOGINDISABLED"))
       {
@@ -958,14 +958,14 @@ mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivat
 #line 959 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 574 "mn-imap-mailbox.gob"
+#line 575 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 965 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_login_cb"
 {
-#line 578 "mn-imap-mailbox.gob"
+#line 579 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -992,14 +992,14 @@ mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionRespo
 #line 993 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 602 "mn-imap-mailbox.gob"
+#line 603 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 999 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_examine_cb"
 {
-#line 605 "mn-imap-mailbox.gob"
+#line 606 "mn-imap-mailbox.gob"
 	
     char *utf7_mailbox;
     char *quoted_mailbox;
@@ -1017,14 +1017,14 @@ mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPriv
 #line 1018 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 620 "mn-imap-mailbox.gob"
+#line 621 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 1024 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_examine_cb"
 {
-#line 624 "mn-imap-mailbox.gob"
+#line 625 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1049,28 +1049,28 @@ mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionRes
 #line 1050 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 646 "mn-imap-mailbox.gob"
+#line 647 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_search_unseen_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 1056 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_search_unseen_cb"
 {
-#line 649 "mn-imap-mailbox.gob"
+#line 650 "mn-imap-mailbox.gob"
 	
     return self_session_enter_search(session, priv, "UNSEEN", &priv->unseen_numbers);
   }}
 #line 1064 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 653 "mn-imap-mailbox.gob"
+#line 654 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_search_unseen_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 1070 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_search_unseen_cb"
 {
-#line 657 "mn-imap-mailbox.gob"
+#line 658 "mn-imap-mailbox.gob"
 	
     int result = self_session_handle_search(session, response, priv, priv->unseen_numbers);
 
@@ -1095,28 +1095,28 @@ mn_imap_mailbox_handle_search_unseen_cb (MNClientSession * session, MNClientSess
 #line 1096 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 679 "mn-imap-mailbox.gob"
+#line 680 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_search_recent_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 1102 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_search_recent_cb"
 {
-#line 682 "mn-imap-mailbox.gob"
+#line 683 "mn-imap-mailbox.gob"
 	
     return self_session_enter_search(session, priv, "RECENT", &priv->recent_numbers);
   }}
 #line 1110 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 686 "mn-imap-mailbox.gob"
+#line 687 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_search_recent_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 1116 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_search_recent_cb"
 {
-#line 690 "mn-imap-mailbox.gob"
+#line 691 "mn-imap-mailbox.gob"
 	
     int result = self_session_handle_search(session, response, priv, priv->recent_numbers);
 
@@ -1129,14 +1129,14 @@ mn_imap_mailbox_handle_search_recent_cb (MNClientSession * session, MNClientSess
 #line 1130 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 700 "mn-imap-mailbox.gob"
+#line 701 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 1136 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_fetch_cb"
 {
-#line 702 "mn-imap-mailbox.gob"
+#line 703 "mn-imap-mailbox.gob"
 	
     GString *string;
     int result;
@@ -1161,14 +1161,14 @@ mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivat
 #line 1162 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 724 "mn-imap-mailbox.gob"
+#line 725 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_build_fetch_set_cb (gpointer key, gpointer value, gpointer user_data)
 #line 1168 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::build_fetch_set_cb"
 {
-#line 726 "mn-imap-mailbox.gob"
+#line 727 "mn-imap-mailbox.gob"
 	
     GString *string = user_data;
 
@@ -1179,14 +1179,14 @@ mn_imap_mailbox_build_fetch_set_cb (gpointer key, gpointer value, gpointer user_
 #line 1180 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 734 "mn-imap-mailbox.gob"
+#line 735 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 1186 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_fetch_cb"
 {
-#line 738 "mn-imap-mailbox.gob"
+#line 739 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1282,14 +1282,14 @@ mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionRespo
 #line 1283 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 831 "mn-imap-mailbox.gob"
+#line 832 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_check_received_cb (gpointer key, gpointer value, gpointer user_data)
 #line 1289 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::check_received_cb"
 {
-#line 833 "mn-imap-mailbox.gob"
+#line 834 "mn-imap-mailbox.gob"
 	
     CheckReceivedInfo *info = user_data;
 
@@ -1299,14 +1299,14 @@ mn_imap_mailbox_check_received_cb (gpointer key, gpointer value, gpointer user_d
 #line 1300 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 840 "mn-imap-mailbox.gob"
+#line 841 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 1306 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_idle_cb"
 {
-#line 843 "mn-imap-mailbox.gob"
+#line 844 "mn-imap-mailbox.gob"
 	
     if (! REMOVED(priv->self))
       {
@@ -1349,14 +1349,14 @@ mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate
 #line 1350 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 883 "mn-imap-mailbox.gob"
+#line 884 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 1356 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_idle_cb"
 {
-#line 887 "mn-imap-mailbox.gob"
+#line 888 "mn-imap-mailbox.gob"
 	
     switch (priv->idle_state)
       {
@@ -1453,28 +1453,28 @@ mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionRespon
 #line 1454 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 981 "mn-imap-mailbox.gob"
+#line 982 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 1460 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_logout_cb"
 {
-#line 984 "mn-imap-mailbox.gob"
+#line 985 "mn-imap-mailbox.gob"
 	
     return self_session_write(priv, "LOGOUT");
   }}
 #line 1468 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 988 "mn-imap-mailbox.gob"
+#line 989 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 1474 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_logout_cb"
 {
-#line 992 "mn-imap-mailbox.gob"
+#line 993 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1493,7 +1493,7 @@ mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResp
 #line 1494 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1008 "mn-imap-mailbox.gob"
+#line 1009 "mn-imap-mailbox.gob"
 static void 
 ___1e_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
 #line 1500 "mn-imap-mailbox.c"
@@ -1503,10 +1503,10 @@ ___1e_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::authenticated_check"
 {
-#line 1010 "mn-imap-mailbox.gob"
+#line 1011 "mn-imap-mailbox.gob"
 	
     Self *self = SELF(mailbox);
-    MNClientSessionState states[] = {
+    static const MNClientSessionState states[] = {
       { STATE_GREETING,		NULL,				self_handle_greeting_cb },
       { STATE_CAPABILITY,	self_enter_capability_cb,	self_handle_capability_cb },
 #if WITH_SSL
@@ -1525,7 +1525,7 @@ ___1e_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
 
       MN_CLIENT_SESSION_STATES_END
     };
-    MNClientSessionCallbacks callbacks = {
+    static const MNClientSessionCallbacks callbacks = {
       mn_pi_mailbox_notice_cb,
       mn_pi_mailbox_warning_cb,
       self_response_new_cb,
@@ -1619,14 +1619,14 @@ ___1e_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 1122 "mn-imap-mailbox.gob"
+#line 1123 "mn-imap-mailbox.gob"
 static MNClientSessionResponse * 
 mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
 #line 1626 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_new_cb"
 {
-#line 1126 "mn-imap-mailbox.gob"
+#line 1127 "mn-imap-mailbox.gob"
 	
     MNClientSessionResponse *response = NULL;
 
@@ -1701,14 +1701,14 @@ mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, 
 #line 1702 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1198 "mn-imap-mailbox.gob"
+#line 1199 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 1708 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_free_cb"
 {
-#line 1202 "mn-imap-mailbox.gob"
+#line 1203 "mn-imap-mailbox.gob"
 	
     g_free(response->continuation);
     g_free(response->tag);
@@ -1720,19 +1720,19 @@ mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResp
 #line 1721 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1211 "mn-imap-mailbox.gob"
+#line 1212 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_default_handler (MNClientSessionResponse * response, MNClientSessionPrivate * priv, int error_code_when_bye)
 #line 1727 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::default_handler"
-#line 1211 "mn-imap-mailbox.gob"
+#line 1212 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 1211 "mn-imap-mailbox.gob"
+#line 1212 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
 #line 1734 "mn-imap-mailbox.c"
 {
-#line 1215 "mn-imap-mailbox.gob"
+#line 1216 "mn-imap-mailbox.gob"
 	
     if (! response->tag && IS_BYE(response))
       return mn_client_session_set_error_from_response(priv->session, error_code_when_bye, response->arguments);
@@ -1742,14 +1742,14 @@ mn_imap_mailbox_default_handler (MNClientSessionResponse * response, MNClientSes
 #line 1743 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1222 "mn-imap-mailbox.gob"
+#line 1223 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 1749 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::pre_read_cb"
 {
-#line 1225 "mn-imap-mailbox.gob"
+#line 1226 "mn-imap-mailbox.gob"
 	
     if (priv->idle_state == IDLE_STATE_IDLE)
       {
@@ -1770,14 +1770,14 @@ mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate *
 #line 1771 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1243 "mn-imap-mailbox.gob"
+#line 1244 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 1777 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::post_read_cb"
 {
-#line 1246 "mn-imap-mailbox.gob"
+#line 1247 "mn-imap-mailbox.gob"
 	
     Self *self = priv->self;
 
@@ -1792,14 +1792,14 @@ mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate 
 #line 1793 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1258 "mn-imap-mailbox.gob"
+#line 1259 "mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_idle_inactivity_timeout_cb (gpointer data)
 #line 1799 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::idle_inactivity_timeout_cb"
 {
-#line 1260 "mn-imap-mailbox.gob"
+#line 1261 "mn-imap-mailbox.gob"
 	
     Self *self = data;
 
@@ -1818,19 +1818,19 @@ mn_imap_mailbox_idle_inactivity_timeout_cb (gpointer data)
 #line 1819 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1276 "mn-imap-mailbox.gob"
+#line 1277 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...)
 #line 1825 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_write"
-#line 1276 "mn-imap-mailbox.gob"
+#line 1277 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1276 "mn-imap-mailbox.gob"
+#line 1277 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (format != NULL, (int )0);
 #line 1832 "mn-imap-mailbox.c"
 {
-#line 1280 "mn-imap-mailbox.gob"
+#line 1281 "mn-imap-mailbox.gob"
 	
     va_list args;
     char *command;
@@ -1852,19 +1852,19 @@ mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * forma
 #line 1853 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1299 "mn-imap-mailbox.gob"
+#line 1300 "mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_handle_capability_code (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
 #line 1859 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_capability_code"
-#line 1299 "mn-imap-mailbox.gob"
+#line 1300 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (gboolean )0);
-#line 1299 "mn-imap-mailbox.gob"
+#line 1300 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (gboolean )0);
 #line 1866 "mn-imap-mailbox.c"
 {
-#line 1302 "mn-imap-mailbox.gob"
+#line 1303 "mn-imap-mailbox.gob"
 	
     if (response->code)
       {
@@ -1885,17 +1885,17 @@ mn_imap_mailbox_handle_capability_code (MNClientSessionPrivate * priv, MNClientS
 #line 1886 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1320 "mn-imap-mailbox.gob"
+#line 1321 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities)
 #line 1892 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_parse_capabilities"
-#line 1320 "mn-imap-mailbox.gob"
+#line 1321 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
 #line 1897 "mn-imap-mailbox.c"
 {
-#line 1323 "mn-imap-mailbox.gob"
+#line 1324 "mn-imap-mailbox.gob"
 	
     g_strfreev(priv->capabilities);
     priv->capabilities = NULL;
@@ -1922,19 +1922,19 @@ mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const
 #line 1923 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1347 "mn-imap-mailbox.gob"
+#line 1348 "mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const char * capability)
 #line 1929 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_has_capability"
-#line 1347 "mn-imap-mailbox.gob"
+#line 1348 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (gboolean )0);
-#line 1347 "mn-imap-mailbox.gob"
+#line 1348 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (capability != NULL, (gboolean )0);
 #line 1936 "mn-imap-mailbox.c"
 {
-#line 1350 "mn-imap-mailbox.gob"
+#line 1351 "mn-imap-mailbox.gob"
 	
     int i;
 
@@ -1949,17 +1949,17 @@ mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const cha
 #line 1950 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1362 "mn-imap-mailbox.gob"
+#line 1363 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
 #line 1956 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_after_capability"
-#line 1362 "mn-imap-mailbox.gob"
+#line 1363 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
 #line 1961 "mn-imap-mailbox.c"
 {
-#line 1364 "mn-imap-mailbox.gob"
+#line 1365 "mn-imap-mailbox.gob"
 	
     if (priv->authenticated)
       return STATE_EXAMINE;
@@ -1984,17 +1984,17 @@ mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
 #line 1985 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1386 "mn-imap-mailbox.gob"
+#line 1387 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 #line 1991 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate"
-#line 1386 "mn-imap-mailbox.gob"
+#line 1387 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
 #line 1996 "mn-imap-mailbox.c"
 {
-#line 1388 "mn-imap-mailbox.gob"
+#line 1389 "mn-imap-mailbox.gob"
 	
 #if WITH_SASL
     g_slist_free(priv->sasl_remaining_mechanisms);
@@ -2035,17 +2035,17 @@ mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 #line 2036 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1426 "mn-imap-mailbox.gob"
+#line 1427 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_login)
 #line 2042 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate_fallback"
-#line 1426 "mn-imap-mailbox.gob"
+#line 1427 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
 #line 2047 "mn-imap-mailbox.c"
 {
-#line 1429 "mn-imap-mailbox.gob"
+#line 1430 "mn-imap-mailbox.gob"
 	
     if (! priv->pi_mailbox->authmech)
       {
@@ -2091,21 +2091,21 @@ mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gb
 #line 2092 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1472 "mn-imap-mailbox.gob"
+#line 1473 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSessionResponse * greeting_response, MNClientSessionPrivate * priv)
 #line 2098 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_detect_imapd"
-#line 1472 "mn-imap-mailbox.gob"
+#line 1473 "mn-imap-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 1472 "mn-imap-mailbox.gob"
+#line 1473 "mn-imap-mailbox.gob"
 	g_return_if_fail (greeting_response != NULL);
-#line 1472 "mn-imap-mailbox.gob"
+#line 1473 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
 #line 2107 "mn-imap-mailbox.c"
 {
-#line 1476 "mn-imap-mailbox.gob"
+#line 1477 "mn-imap-mailbox.gob"
 	
     if (greeting_response->arguments)
       {
@@ -2128,23 +2128,23 @@ mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSession
 #line 2129 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1496 "mn-imap-mailbox.gob"
+#line 1497 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_enter_search (MNClientSession * session, MNClientSessionPrivate * priv, const char * what, GHashTable ** numbers)
 #line 2135 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_enter_search"
-#line 1496 "mn-imap-mailbox.gob"
+#line 1497 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 1496 "mn-imap-mailbox.gob"
+#line 1497 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1496 "mn-imap-mailbox.gob"
+#line 1497 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (what != NULL, (int )0);
-#line 1496 "mn-imap-mailbox.gob"
+#line 1497 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (numbers != NULL, (int )0);
 #line 2146 "mn-imap-mailbox.c"
 {
-#line 1501 "mn-imap-mailbox.gob"
+#line 1502 "mn-imap-mailbox.gob"
 	
     priv->search_received = FALSE;
 
@@ -2157,23 +2157,23 @@ mn_imap_mailbox_session_enter_search (MNClientSession * session, MNClientSession
 #line 2158 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1511 "mn-imap-mailbox.gob"
+#line 1512 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_handle_search (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv, GHashTable * numbers)
 #line 2164 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_handle_search"
-#line 1511 "mn-imap-mailbox.gob"
+#line 1512 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 1511 "mn-imap-mailbox.gob"
+#line 1512 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 1511 "mn-imap-mailbox.gob"
+#line 1512 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1511 "mn-imap-mailbox.gob"
+#line 1512 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (numbers != NULL, (int )0);
 #line 2175 "mn-imap-mailbox.c"
 {
-#line 1516 "mn-imap-mailbox.gob"
+#line 1517 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -2233,17 +2233,17 @@ mn_imap_mailbox_session_handle_search (MNClientSession * session, MNClientSessio
  *
  * Return value: the quoted string.
  **/
-#line 1573 "mn-imap-mailbox.gob"
+#line 1574 "mn-imap-mailbox.gob"
 static char * 
 mn_imap_mailbox_quote (const char * str)
 #line 2240 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::quote"
-#line 1573 "mn-imap-mailbox.gob"
+#line 1574 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
 #line 2245 "mn-imap-mailbox.c"
 {
-#line 1575 "mn-imap-mailbox.gob"
+#line 1576 "mn-imap-mailbox.gob"
 	
     GString *quoted;
     int i;
@@ -2269,17 +2269,17 @@ mn_imap_mailbox_quote (const char * str)
  *
  * Return value: the string converted to modified UTF-7.
  **/
-#line 1598 "mn-imap-mailbox.gob"
+#line 1599 "mn-imap-mailbox.gob"
 static char * 
 mn_imap_mailbox_utf8_to_imap_utf7 (const char * str)
 #line 2276 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::utf8_to_imap_utf7"
-#line 1598 "mn-imap-mailbox.gob"
+#line 1599 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
 #line 2281 "mn-imap-mailbox.c"
 {
-#line 1600 "mn-imap-mailbox.gob"
+#line 1601 "mn-imap-mailbox.gob"
 	
     gunichar c;
     guint32 x, v = 0;
@@ -2339,17 +2339,17 @@ mn_imap_mailbox_utf8_to_imap_utf7 (const char * str)
 #line 2340 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1657 "mn-imap-mailbox.gob"
+#line 1658 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i)
 #line 2346 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::imap_utf7_closeb64"
-#line 1657 "mn-imap-mailbox.gob"
+#line 1658 "mn-imap-mailbox.gob"
 	g_return_if_fail (out != NULL);
 #line 2351 "mn-imap-mailbox.c"
 {
-#line 1659 "mn-imap-mailbox.gob"
+#line 1660 "mn-imap-mailbox.gob"
 	
     /*
      * Taken from the Ximian Evolution sources (camel-utf8.c) and
@@ -2369,17 +2369,17 @@ mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i)
 #line 2370 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1676 "mn-imap-mailbox.gob"
+#line 1677 "mn-imap-mailbox.gob"
 char * 
-mn_imap_mailbox_build_name (const char * username, const char * hostname, const char * mailbox)
+mn_imap_mailbox_build_name (const char * username, const char * server, const char * mailbox)
 #line 2376 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::build_name"
-#line 1676 "mn-imap-mailbox.gob"
-	g_return_val_if_fail (hostname != NULL, (char * )0);
+#line 1677 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (server != NULL, (char * )0);
 #line 2381 "mn-imap-mailbox.c"
 {
-#line 1680 "mn-imap-mailbox.gob"
+#line 1681 "mn-imap-mailbox.gob"
 	
     GString *name;
 
@@ -2388,7 +2388,7 @@ mn_imap_mailbox_build_name (const char * username, const char * hostname, const 
     if (username)
       g_string_append_printf(name, "%s@", username);
 
-    g_string_append(name, hostname);
+    g_string_append(name, server);
 
     if (mailbox && mn_utf8_strcasecmp(mailbox, "INBOX"))
       g_string_append_printf(name, "/%s", mailbox);
diff --git a/src/mn-imap-mailbox.gob b/src/mn-imap-mailbox.gob
@@ -7,7 +7,8 @@
  *	- RFC 2177
  *	- RFC 2192 (subset)
  *
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -19,9 +20,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -1009,7 +1010,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     authenticated_check (MNAuthenticatedMailbox *mailbox)
   {
     Self *self = SELF(mailbox);
-    MNClientSessionState states[] = {
+    static const MNClientSessionState states[] = {
       { STATE_GREETING,		NULL,				self_handle_greeting_cb },
       { STATE_CAPABILITY,	self_enter_capability_cb,	self_handle_capability_cb },
 #if WITH_SSL
@@ -1028,7 +1029,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
       MN_CLIENT_SESSION_STATES_END
     };
-    MNClientSessionCallbacks callbacks = {
+    static const MNClientSessionCallbacks callbacks = {
       mn_pi_mailbox_notice_cb,
       mn_pi_mailbox_warning_cb,
       self_response_new_cb,
@@ -1675,7 +1676,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
   public char *
     build_name (const char *username,
-		const char *hostname (check null),
+		const char *server (check null),
 		const char *mailbox)
   {
     GString *name;
@@ -1685,7 +1686,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     if (username)
       g_string_append_printf(name, "%s@", username);
 
-    g_string_append(name, hostname);
+    g_string_append(name, server);
 
     if (mailbox && mn_utf8_strcasecmp(mailbox, "INBOX"))
       g_string_append_printf(name, "/%s", mailbox);
diff --git a/src/mn-imap-mailbox.h b/src/mn-imap-mailbox.h
@@ -73,7 +73,7 @@ struct _MNIMAPMailboxClass {
  */
 GType	mn_imap_mailbox_get_type	(void);
 char * 	mn_imap_mailbox_build_name	(const char * username,
-					const char * hostname,
+					const char * server,
 					const char * mailbox);
 
 /*
diff --git a/src/mn-locked-callback.c b/src/mn-locked-callback.c
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include <glib.h>
diff --git a/src/mn-locked-callback.h b/src/mn-locked-callback.h
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_LOCKED_CALLBACK_H
diff --git a/src/mn-mail-icon-private.h b/src/mn-mail-icon-private.h
@@ -10,17 +10,17 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 27 "mn-mail-icon.gob"
+#line 28 "mn-mail-icon.gob"
 
 #include "mn-tooltips.h"
 
 #line 18 "mn-mail-icon-private.h"
 struct _MNMailIconPrivate {
-#line 41 "mn-mail-icon.gob"
-	MNTooltips * tooltips;
 #line 42 "mn-mail-icon.gob"
+	MNTooltips * tooltips;
+#line 43 "mn-mail-icon.gob"
 	GtkWidget * event_box;
-#line 45 "mn-mail-icon.gob"
+#line 46 "mn-mail-icon.gob"
 	GtkWidget * menu;
 #line 26 "mn-mail-icon-private.h"
 };
diff --git a/src/mn-mail-icon.c b/src/mn-mail-icon.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 31 "mn-mail-icon.gob"
+#line 32 "mn-mail-icon.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -47,6 +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_mail_reader (MNMailIcon * self) G_GNUC_UNUSED;
+static void mn_mail_icon_activate_open_latest_message (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;
@@ -69,6 +70,9 @@ static void mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * 
 #define self_connect__activate_mail_reader(object,func,data)	mn_mail_icon_connect__activate_mail_reader((object),(func),(data))
 #define self_connect_after__activate_mail_reader(object,func,data)	mn_mail_icon_connect_after__activate_mail_reader((object),(func),(data))
 #define self_connect_data__activate_mail_reader(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate_mail_reader((object),(func),(data),(destroy_data),(flags))
+#define self_connect__activate_open_latest_message(object,func,data)	mn_mail_icon_connect__activate_open_latest_message((object),(func),(data))
+#define self_connect_after__activate_open_latest_message(object,func,data)	mn_mail_icon_connect_after__activate_open_latest_message((object),(func),(data))
+#define self_connect_data__activate_open_latest_message(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate_open_latest_message((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))
@@ -88,6 +92,7 @@ static void mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * 
 enum {
 	ACTIVATE_SIGNAL,
 	ACTIVATE_MAIL_READER_SIGNAL,
+	ACTIVATE_OPEN_LATEST_MESSAGE_SIGNAL,
 	ACTIVATE_UPDATE_SIGNAL,
 	ACTIVATE_PROPERTIES_SIGNAL,
 	ACTIVATE_HELP_SIGNAL,
@@ -104,6 +109,7 @@ static EggTrayIconClass *parent_class = NULL;
 /* Short form macros */
 #define self_activate mn_mail_icon_activate
 #define self_activate_mail_reader mn_mail_icon_activate_mail_reader
+#define self_activate_open_latest_message mn_mail_icon_activate_open_latest_message
 #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
@@ -167,9 +173,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 41 "mn-mail-icon.gob"
+#line 42 "mn-mail-icon.gob"
 	if(self->_priv->tooltips) { g_object_unref ((gpointer) self->_priv->tooltips); self->_priv->tooltips = NULL; }
-#line 173 "mn-mail-icon.c"
+#line 179 "mn-mail-icon.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -182,16 +188,16 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 45 "mn-mail-icon.gob"
+#line 46 "mn-mail-icon.gob"
 	if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; }
-#line 188 "mn-mail-icon.c"
+#line 194 "mn-mail-icon.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 64 "mn-mail-icon.gob"
+#line 68 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
-#line 195 "mn-mail-icon.c"
+#line 201 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -216,6 +222,14 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 			NULL, NULL,
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
+	object_signals[ACTIVATE_OPEN_LATEST_MESSAGE_SIGNAL] =
+		g_signal_new ("activate_open_latest_message",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+			G_STRUCT_OFFSET (MNMailIconClass, activate_open_latest_message),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
 	object_signals[ACTIVATE_UPDATE_SIGNAL] =
 		g_signal_new ("activate_update",
 			G_TYPE_FROM_CLASS (g_object_class),
@@ -259,6 +273,7 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 
 	class->activate = NULL;
 	class->activate_mail_reader = NULL;
+	class->activate_open_latest_message = NULL;
 	class->activate_update = NULL;
 	class->activate_properties = NULL;
 	class->activate_help = NULL;
@@ -267,7 +282,7 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
  {
-#line 65 "mn-mail-icon.gob"
+#line 69 "mn-mail-icon.gob"
 
     GtkBindingSet *binding_set;
 
@@ -281,28 +296,28 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
     gtk_binding_entry_add_signal(binding_set, GDK_ISO_Enter, GDK_MOD1_MASK, "activate-properties", 0);
     gtk_binding_entry_add_signal(binding_set, GDK_KP_Enter, GDK_MOD1_MASK, "activate-properties", 0);
   
-#line 285 "mn-mail-icon.c"
+#line 300 "mn-mail-icon.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 79 "mn-mail-icon.gob"
+#line 83 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
-#line 292 "mn-mail-icon.c"
+#line 307 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAIL_ICON,MNMailIconPrivate);
-#line 41 "mn-mail-icon.gob"
+#line 42 "mn-mail-icon.gob"
 	self->_priv->tooltips = mn_tooltips_new();
-#line 298 "mn-mail-icon.c"
-#line 43 "mn-mail-icon.gob"
+#line 313 "mn-mail-icon.c"
+#line 44 "mn-mail-icon.gob"
 	self->image = mn_blinking_image_new();
-#line 301 "mn-mail-icon.c"
-#line 45 "mn-mail-icon.gob"
+#line 316 "mn-mail-icon.c"
+#line 46 "mn-mail-icon.gob"
 	self->_priv->menu = gtk_menu_new();
-#line 304 "mn-mail-icon.c"
+#line 319 "mn-mail-icon.c"
  {
-#line 80 "mn-mail-icon.gob"
+#line 84 "mn-mail-icon.gob"
 
     GtkMenuShell *shell;
     GtkWidget *properties_item;
@@ -314,6 +329,8 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
     /* translators: header capitalization */
     self->mail_reader_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_READER, _("_Mail Reader"));
     /* translators: header capitalization */
+    self->open_latest_message_item = mn_menu_shell_append(shell, MN_STOCK_OPEN_MESSAGE, _("_Open Latest Message"));
+    /* translators: header capitalization */
     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);
@@ -324,6 +341,7 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
     remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
 
     g_signal_connect_swapped(self->mail_reader_item, "activate", G_CALLBACK(self_activate_mail_reader), self);
+    g_signal_connect_swapped(self->open_latest_message_item, "activate", G_CALLBACK(self_activate_open_latest_message), 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);
@@ -348,15 +366,15 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
     gtk_widget_show(self->image);
     gtk_widget_show(selfp->event_box);
   
-#line 352 "mn-mail-icon.c"
+#line 370 "mn-mail-icon.c"
  }
 }
 #undef __GOB_FUNCTION__
 
-#line 49 "mn-mail-icon.gob"
+#line 51 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate (MNMailIcon * self)
-#line 360 "mn-mail-icon.c"
+#line 378 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -364,11 +382,11 @@ mn_mail_icon_activate (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 49 "mn-mail-icon.gob"
+#line 51 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 49 "mn-mail-icon.gob"
+#line 51 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 372 "mn-mail-icon.c"
+#line 390 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -382,10 +400,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 51 "mn-mail-icon.gob"
+#line 53 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_mail_reader (MNMailIcon * self)
-#line 389 "mn-mail-icon.c"
+#line 407 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -393,11 +411,11 @@ mn_mail_icon_activate_mail_reader (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 51 "mn-mail-icon.gob"
+#line 53 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 51 "mn-mail-icon.gob"
+#line 53 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 401 "mn-mail-icon.c"
+#line 419 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -411,10 +429,39 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 53 "mn-mail-icon.gob"
+#line 55 "mn-mail-icon.gob"
+static void 
+mn_mail_icon_activate_open_latest_message (MNMailIcon * self)
+#line 436 "mn-mail-icon.c"
+{
+	GValue ___param_values[1];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 55 "mn-mail-icon.gob"
+	g_return_if_fail (self != NULL);
+#line 55 "mn-mail-icon.gob"
+	g_return_if_fail (MN_IS_MAIL_ICON (self));
+#line 448 "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_OPEN_LATEST_MESSAGE_SIGNAL],
+		0 /* detail */,
+		&___return_val);
+
+	g_value_unset (&___param_values[0]);
+}
+
+#line 57 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_update (MNMailIcon * self)
-#line 418 "mn-mail-icon.c"
+#line 465 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -422,11 +469,11 @@ mn_mail_icon_activate_update (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 53 "mn-mail-icon.gob"
+#line 57 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 53 "mn-mail-icon.gob"
+#line 57 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 430 "mn-mail-icon.c"
+#line 477 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -440,10 +487,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 55 "mn-mail-icon.gob"
+#line 59 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_properties (MNMailIcon * self)
-#line 447 "mn-mail-icon.c"
+#line 494 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -451,11 +498,11 @@ mn_mail_icon_activate_properties (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 55 "mn-mail-icon.gob"
+#line 59 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 55 "mn-mail-icon.gob"
+#line 59 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 459 "mn-mail-icon.c"
+#line 506 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -469,10 +516,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 57 "mn-mail-icon.gob"
+#line 61 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_help (MNMailIcon * self)
-#line 476 "mn-mail-icon.c"
+#line 523 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -480,11 +527,11 @@ mn_mail_icon_activate_help (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 57 "mn-mail-icon.gob"
+#line 61 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 57 "mn-mail-icon.gob"
+#line 61 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 488 "mn-mail-icon.c"
+#line 535 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -498,10 +545,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 59 "mn-mail-icon.gob"
+#line 63 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_about (MNMailIcon * self)
-#line 505 "mn-mail-icon.c"
+#line 552 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -509,11 +556,11 @@ mn_mail_icon_activate_about (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 59 "mn-mail-icon.gob"
+#line 63 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 59 "mn-mail-icon.gob"
+#line 63 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 517 "mn-mail-icon.c"
+#line 564 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -527,10 +574,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 61 "mn-mail-icon.gob"
+#line 65 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate_remove (MNMailIcon * self)
-#line 534 "mn-mail-icon.c"
+#line 581 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -538,11 +585,11 @@ mn_mail_icon_activate_remove (MNMailIcon * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 61 "mn-mail-icon.gob"
+#line 65 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 61 "mn-mail-icon.gob"
+#line 65 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 546 "mn-mail-icon.c"
+#line 593 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -558,14 +605,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 
 
-#line 126 "mn-mail-icon.gob"
+#line 133 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_show_help_h (GtkWidget * widget, GtkWidgetHelpType help_type, gpointer user_data)
-#line 565 "mn-mail-icon.c"
+#line 612 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::show_help_h"
 {
-#line 130 "mn-mail-icon.gob"
+#line 137 "mn-mail-icon.gob"
 	
     if (help_type == GTK_WIDGET_HELP_TOOLTIP)
       {
@@ -575,17 +622,17 @@ mn_mail_icon_show_help_h (GtkWidget * widget, GtkWidgetHelpType help_type, gpoin
     else
       return FALSE;
   }}
-#line 579 "mn-mail-icon.c"
+#line 626 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 140 "mn-mail-icon.gob"
+#line 147 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 585 "mn-mail-icon.c"
+#line 632 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::button_press_event_h"
 {
-#line 144 "mn-mail-icon.gob"
+#line 151 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
@@ -599,17 +646,17 @@ mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, g
 
     return FALSE;		/* propagate event */
   }}
-#line 603 "mn-mail-icon.c"
+#line 650 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 158 "mn-mail-icon.gob"
+#line 165 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 609 "mn-mail-icon.c"
+#line 656 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::button_release_event_h"
 {
-#line 162 "mn-mail-icon.gob"
+#line 169 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
@@ -621,17 +668,17 @@ mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event,
 
     return FALSE;		/* propagate event */
   }}
-#line 625 "mn-mail-icon.c"
+#line 672 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 174 "mn-mail-icon.gob"
+#line 181 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_data)
-#line 631 "mn-mail-icon.c"
+#line 678 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::popup_menu_h"
 {
-#line 176 "mn-mail-icon.gob"
+#line 183 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
@@ -640,17 +687,17 @@ mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_data)
 
     return TRUE;		/* a menu was activated */
   }}
-#line 644 "mn-mail-icon.c"
+#line 691 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 185 "mn-mail-icon.gob"
+#line 192 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * y, gboolean * push_in, gpointer user_data)
-#line 650 "mn-mail-icon.c"
+#line 697 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::popup_menu_position_cb"
 {
-#line 191 "mn-mail-icon.gob"
+#line 198 "mn-mail-icon.gob"
 	
     GtkWidget *widget = user_data;
 
@@ -671,57 +718,57 @@ mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * y, gboolean 
 
     *push_in = TRUE;
   }}
-#line 675 "mn-mail-icon.c"
+#line 722 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 212 "mn-mail-icon.gob"
+#line 219 "mn-mail-icon.gob"
 void 
 mn_mail_icon_set_tip (MNMailIcon * self, const char * tip)
-#line 681 "mn-mail-icon.c"
+#line 728 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::set_tip"
-#line 212 "mn-mail-icon.gob"
+#line 219 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 212 "mn-mail-icon.gob"
+#line 219 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 688 "mn-mail-icon.c"
+#line 735 "mn-mail-icon.c"
 {
-#line 214 "mn-mail-icon.gob"
+#line 221 "mn-mail-icon.gob"
 	
     mn_tooltips_set_tip(selfp->tooltips, selfp->event_box, tip);
   }}
-#line 694 "mn-mail-icon.c"
+#line 741 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 218 "mn-mail-icon.gob"
+#line 225 "mn-mail-icon.gob"
 void 
 mn_mail_icon_set_tip_widget (MNMailIcon * self, GtkWidget * tip_widget)
-#line 700 "mn-mail-icon.c"
+#line 747 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::set_tip_widget"
-#line 218 "mn-mail-icon.gob"
+#line 225 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 218 "mn-mail-icon.gob"
+#line 225 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 707 "mn-mail-icon.c"
+#line 754 "mn-mail-icon.c"
 {
-#line 220 "mn-mail-icon.gob"
+#line 227 "mn-mail-icon.gob"
 	
     mn_tooltips_set_tip_widget(selfp->tooltips, selfp->event_box, tip_widget);
   }}
-#line 713 "mn-mail-icon.c"
+#line 760 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 224 "mn-mail-icon.gob"
+#line 231 "mn-mail-icon.gob"
 GtkWidget * 
 mn_mail_icon_new (void)
-#line 719 "mn-mail-icon.c"
+#line 766 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::new"
 {
-#line 226 "mn-mail-icon.gob"
+#line 233 "mn-mail-icon.gob"
 	
     return GTK_WIDGET(GET_NEW_VARG("title", _("Mail Notification"), NULL));
   }}
-#line 727 "mn-mail-icon.c"
+#line 774 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mail-icon.gob b/src/mn-mail-icon.gob
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -44,6 +45,7 @@ class MN:Mail:Icon from Egg:Tray:Icon
 
   private GtkWidget *menu = {gtk_menu_new()} destroywith gtk_widget_destroy;
   public GtkWidget *mail_reader_item;
+  public GtkWidget *open_latest_message_item;
   public GtkWidget *update_item;
 
   signal (ACTION) private NONE (NONE)
@@ -51,6 +53,8 @@ class MN:Mail:Icon from Egg:Tray:Icon
   signal (ACTION) private NONE (NONE)
     void activate_mail_reader (self);
   signal (ACTION) private NONE (NONE)
+    void activate_open_latest_message (self);
+  signal (ACTION) private NONE (NONE)
     void activate_update (self);
   signal (ACTION) private NONE (NONE)
     void activate_properties (self);
@@ -88,6 +92,8 @@ class MN:Mail:Icon from Egg:Tray:Icon
     /* translators: header capitalization */
     self->mail_reader_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_READER, _("_Mail Reader"));
     /* translators: header capitalization */
+    self->open_latest_message_item = mn_menu_shell_append(shell, MN_STOCK_OPEN_MESSAGE, _("_Open Latest Message"));
+    /* translators: header capitalization */
     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);
@@ -98,6 +104,7 @@ class MN:Mail:Icon from Egg:Tray:Icon
     remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
 
     g_signal_connect_swapped(self->mail_reader_item, "activate", G_CALLBACK(self_activate_mail_reader), self);
+    g_signal_connect_swapped(self->open_latest_message_item, "activate", G_CALLBACK(self_activate_open_latest_message), 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);
diff --git a/src/mn-mail-icon.h b/src/mn-mail-icon.h
@@ -42,6 +42,7 @@ struct _MNMailIcon {
 	/*< public >*/
 	GtkWidget * image;
 	GtkWidget * mail_reader_item;
+	GtkWidget * open_latest_message_item;
 	GtkWidget * update_item;
 	/*< private >*/
 	MNMailIconPrivate *_priv;
@@ -55,6 +56,7 @@ struct _MNMailIconClass {
 	EggTrayIconClass __parent__;
 	/*signal*/void (* activate) (MNMailIcon * self);
 	/*signal*/void (* activate_mail_reader) (MNMailIcon * self);
+	/*signal*/void (* activate_open_latest_message) (MNMailIcon * self);
 	/*signal*/void (* activate_update) (MNMailIcon * self);
 	/*signal*/void (* activate_properties) (MNMailIcon * self);
 	/*signal*/void (* activate_help) (MNMailIcon * self);
@@ -83,6 +85,9 @@ GtkWidget * 	mn_mail_icon_new	(void);
 #define mn_mail_icon_connect__activate_mail_reader(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data))
 #define mn_mail_icon_connect_after__activate_mail_reader(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data))
 #define mn_mail_icon_connect_data__activate_mail_reader(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mail_icon_connect__activate_open_latest_message(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_open_latest_message",(GCallback) __extension__ ({void (* ___activate_open_latest_message) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_open_latest_message; }), (data))
+#define mn_mail_icon_connect_after__activate_open_latest_message(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_open_latest_message",(GCallback) __extension__ ({void (* ___activate_open_latest_message) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_open_latest_message; }), (data))
+#define mn_mail_icon_connect_data__activate_open_latest_message(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_open_latest_message",(GCallback) __extension__ ({void (* ___activate_open_latest_message) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_open_latest_message; }), (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))
@@ -105,6 +110,9 @@ GtkWidget * 	mn_mail_icon_new	(void);
 #define mn_mail_icon_connect__activate_mail_reader(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data))
 #define mn_mail_icon_connect_after__activate_mail_reader(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data))
 #define mn_mail_icon_connect_data__activate_mail_reader(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mail_icon_connect__activate_open_latest_message(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate_open_latest_message",(GCallback)(func),(data))
+#define mn_mail_icon_connect_after__activate_open_latest_message(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate_open_latest_message",(GCallback)(func),(data))
+#define mn_mail_icon_connect_data__activate_open_latest_message(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate_open_latest_message",(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-mail-summary-popup-private.h b/src/mn-mail-summary-popup-private.h
@@ -1,42 +0,0 @@
-/* Generated by GOB (v2.0.14)   (do not edit directly) */
-
-#ifndef __MN_MAIL_SUMMARY_POPUP_PRIVATE_H__
-#define __MN_MAIL_SUMMARY_POPUP_PRIVATE_H__
-
-#include "mn-mail-summary-popup.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#line 25 "mn-mail-summary-popup.gob"
-
-#include "mn-locked-callback.h"
-#include "mn-shell.h"
-
-#line 19 "mn-mail-summary-popup-private.h"
-struct _MNMailSummaryPopupPrivate {
-#line 48 "mn-mail-summary-popup.gob"
-	GtkWidget * image;
-#line 49 "mn-mail-summary-popup.gob"
-	GtkWidget * title;
-#line 50 "mn-mail-summary-popup.gob"
-	GtkWidget * vbox;
-#line 51 "mn-mail-summary-popup.gob"
-	GtkWidget * message_view;
-#line 53 "mn-mail-summary-popup.gob"
-	GdkGravity gravity;
-#line 55 "mn-mail-summary-popup.gob"
-	MNLockedGSource * timeout_source;
-#line 57 "mn-mail-summary-popup.gob"
-	GSList * messages;
-#line 35 "mn-mail-summary-popup-private.h"
-};
-gboolean 	mn_mail_summary_popup_button_press_event_h	(MNMailSummaryPopup * self, GdkEventButton * button, GtkWidget * widget);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/src/mn-mail-summary-popup.c b/src/mn-mail-summary-popup.c
@@ -1,786 +0,0 @@
-/* Generated by GOB (v2.0.14)   (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 14
-
-#define selfp (self->_priv)
-
-#include <string.h> /* memset() */
-
-#include "mn-mail-summary-popup.h"
-
-#include "mn-mail-summary-popup-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 30 "mn-mail-summary-popup.gob"
-
-#include "config.h"
-#include <glib/gi18n.h>
-#include <eel/eel.h>
-#include "mn-conf.h"
-#include "mn-stock.h"
-#include "mn-standard-message-view.h"
-#include "mn-compact-message-view.h"
-
-#line 36 "mn-mail-summary-popup.c"
-static const GEnumValue _mn_mail_summary_popup_layout_values[] = {
-	{ MN_MAIL_SUMMARY_POPUP_LAYOUT_STANDARD, (char *)"MN_MAIL_SUMMARY_POPUP_LAYOUT_STANDARD", (char *)"standard" },
-	{ MN_MAIL_SUMMARY_POPUP_LAYOUT_COMPACT, (char *)"MN_MAIL_SUMMARY_POPUP_LAYOUT_COMPACT", (char *)"compact" },
-	{ 0, NULL, NULL }
-};
-
-GType
-mn_mail_summary_popup_layout_get_type (void)
-{
-	static GType type = 0;
-	if ___GOB_UNLIKELY(type == 0)
-		type = g_enum_register_static ("MNMailSummaryPopupLayout", _mn_mail_summary_popup_layout_values);
-	return type;
-}
-
-/* self casting macros */
-#define SELF(x) MN_MAIL_SUMMARY_POPUP(x)
-#define SELF_CONST(x) MN_MAIL_SUMMARY_POPUP_CONST(x)
-#define IS_SELF(x) MN_IS_MAIL_SUMMARY_POPUP(x)
-#define TYPE_SELF MN_TYPE_MAIL_SUMMARY_POPUP
-#define SELF_CLASS(x) MN_MAIL_SUMMARY_POPUP_CLASS(x)
-
-#define SELF_GET_CLASS(x) MN_MAIL_SUMMARY_POPUP_GET_CLASS(x)
-
-/* self typedefs */
-typedef MNMailSummaryPopup Self;
-typedef MNMailSummaryPopupClass SelfClass;
-
-/* here are local prototypes */
-static void mn_mail_summary_popup_class_init (MNMailSummaryPopupClass * c) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_init (MNMailSummaryPopup * self) G_GNUC_UNUSED;
-static void ___2_mn_mail_summary_popup_finalize (GObject * object) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_realize_set_decorations_h (MNMailSummaryPopup * self, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_realize_set_geometry_h (MNMailSummaryPopup * self, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_notify_autoclose_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_notify_delay_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_notify_layout_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_notify_geometry_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_notify_fonts_aspect_source_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_notify_fonts_title_font_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_notify_fonts_contents_font_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_install_timeout (MNMailSummaryPopup * self) G_GNUC_UNUSED;
-static gboolean mn_mail_summary_popup_timeout_cb (gpointer data) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_set_layout (MNMailSummaryPopup * self) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_set_geometry (MNMailSummaryPopup * self) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_set_title_font (MNMailSummaryPopup * self) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_set_contents_font (MNMailSummaryPopup * self) G_GNUC_UNUSED;
-static void mn_mail_summary_popup_set_font (MNMailSummaryPopup * self, GtkWidget * widget, const char * conf_key) G_GNUC_UNUSED;
-
-/* pointer to the class of our parent */
-static GtkWindowClass *parent_class = NULL;
-
-/* Short form macros */
-#define self_realize_set_decorations_h mn_mail_summary_popup_realize_set_decorations_h
-#define self_realize_set_geometry_h mn_mail_summary_popup_realize_set_geometry_h
-#define self_notify_autoclose_cb mn_mail_summary_popup_notify_autoclose_cb
-#define self_notify_delay_cb mn_mail_summary_popup_notify_delay_cb
-#define self_notify_layout_cb mn_mail_summary_popup_notify_layout_cb
-#define self_notify_geometry_cb mn_mail_summary_popup_notify_geometry_cb
-#define self_notify_fonts_aspect_source_cb mn_mail_summary_popup_notify_fonts_aspect_source_cb
-#define self_notify_fonts_title_font_cb mn_mail_summary_popup_notify_fonts_title_font_cb
-#define self_notify_fonts_contents_font_cb mn_mail_summary_popup_notify_fonts_contents_font_cb
-#define self_install_timeout mn_mail_summary_popup_install_timeout
-#define self_timeout_cb mn_mail_summary_popup_timeout_cb
-#define self_set_layout mn_mail_summary_popup_set_layout
-#define self_set_geometry mn_mail_summary_popup_set_geometry
-#define self_set_title_font mn_mail_summary_popup_set_title_font
-#define self_set_contents_font mn_mail_summary_popup_set_contents_font
-#define self_set_font mn_mail_summary_popup_set_font
-#define self_set_messages mn_mail_summary_popup_set_messages
-#define self_reset_timeout mn_mail_summary_popup_reset_timeout
-#define self_new mn_mail_summary_popup_new
-#define self_button_press_event_h mn_mail_summary_popup_button_press_event_h
-GType
-mn_mail_summary_popup_get_type (void)
-{
-	static GType type = 0;
-
-	if ___GOB_UNLIKELY(type == 0) {
-		static const GTypeInfo info = {
-			sizeof (MNMailSummaryPopupClass),
-			(GBaseInitFunc) NULL,
-			(GBaseFinalizeFunc) NULL,
-			(GClassInitFunc) mn_mail_summary_popup_class_init,
-			(GClassFinalizeFunc) NULL,
-			NULL /* class_data */,
-			sizeof (MNMailSummaryPopup),
-			0 /* n_preallocs */,
-			(GInstanceInitFunc) mn_mail_summary_popup_init,
-			NULL
-		};
-
-		type = g_type_register_static (GTK_TYPE_WINDOW, "MNMailSummaryPopup", &info, (GTypeFlags)0);
-	}
-
-	return type;
-}
-
-/* a macro for creating a new object of our type */
-#define GET_NEW ((MNMailSummaryPopup *)g_object_new(mn_mail_summary_popup_get_type(), NULL))
-
-/* a function for creating a new object of our type */
-#include <stdarg.h>
-static MNMailSummaryPopup * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
-static MNMailSummaryPopup *
-GET_NEW_VARG (const char *first, ...)
-{
-	MNMailSummaryPopup *ret;
-	va_list ap;
-	va_start (ap, first);
-	ret = (MNMailSummaryPopup *)g_object_new_valist (mn_mail_summary_popup_get_type (), first, ap);
-	va_end (ap);
-	return ret;
-}
-
-
-static void
-___finalize(GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::finalize"
-	MNMailSummaryPopup *self G_GNUC_UNUSED = MN_MAIL_SUMMARY_POPUP (obj_self);
-	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 125 "mn-mail-summary-popup.gob"
-	___2_mn_mail_summary_popup_finalize(obj_self);
-#line 161 "mn-mail-summary-popup.c"
-#line 57 "mn-mail-summary-popup.gob"
-	if(self->_priv->messages) { mn_g_object_slist_free ((gpointer) self->_priv->messages); self->_priv->messages = NULL; }
-#line 164 "mn-mail-summary-popup.c"
-}
-#undef __GOB_FUNCTION__
-
-static void 
-mn_mail_summary_popup_class_init (MNMailSummaryPopupClass * c G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::class_init"
-	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
-
-	g_type_class_add_private(c,sizeof(MNMailSummaryPopupPrivate));
-
-	parent_class = g_type_class_ref (GTK_TYPE_WINDOW);
-
-#line 125 "mn-mail-summary-popup.gob"
-	g_object_class->finalize = ___finalize;
-#line 180 "mn-mail-summary-popup.c"
-}
-#undef __GOB_FUNCTION__
-#line 59 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_init (MNMailSummaryPopup * self G_GNUC_UNUSED)
-#line 186 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::init"
-	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAIL_SUMMARY_POPUP,MNMailSummaryPopupPrivate);
-#line 30 "mn-mail-summary-popup.gob"
-	self->_priv->gravity = -1;
-#line 192 "mn-mail-summary-popup.c"
- {
-#line 60 "mn-mail-summary-popup.gob"
-
-    mn_container_create_interface(GTK_CONTAINER(self),
-				  UIDIR G_DIR_SEPARATOR_S "mail-summary-popup.glade",
-				  "eventbox",
-				  "mn_mail_summary_popup_",
-				  "image", &selfp->image,
-				  "mn-mail-summary-popup-title", &selfp->title,
-				  "vbox", &selfp->vbox,
-				  NULL);
-
-    gtk_widget_set_name(GTK_WIDGET(self), "mn-mail-summary-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 along
-     * with appropriate properties (but a drawback is
-     * http://bugzilla.gnome.org/show_bug.cgi?id=154593).
-     */
-
-    gtk_window_set_title(GTK_WINDOW(self), "");
-    gtk_window_set_resizable(GTK_WINDOW(self), FALSE);
-    gtk_window_set_keep_above(GTK_WINDOW(self), TRUE);
-    gtk_window_set_decorated(GTK_WINDOW(self), FALSE);
-    gtk_window_set_skip_taskbar_hint(GTK_WINDOW(self), TRUE);
-    gtk_window_set_skip_pager_hint(GTK_WINDOW(self), TRUE);
-    gtk_window_set_accept_focus(GTK_WINDOW(self), FALSE);
-    gtk_window_set_focus_on_map(GTK_WINDOW(self), FALSE);
-    gtk_window_stick(GTK_WINDOW(self));
-
-    self_set_layout(self);
-    self_set_title_font(self);
-
-    if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
-      self_install_timeout(self);
-
-    mn_g_object_gconf_notifications_add_gdk_locked(self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE, self_notify_autoclose_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE, self_notify_delay_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_LAYOUT, self_notify_layout_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_POSITION, self_notify_geometry_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE, self_notify_geometry_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE, self_notify_fonts_aspect_source_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT, self_notify_fonts_title_font_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT, self_notify_fonts_contents_font_cb, self,
-						   NULL);
-
-    g_object_connect(self,
-		     "signal::realize", self_realize_set_decorations_h, NULL,
-		     "signal::realize", self_realize_set_geometry_h, NULL,
-		     NULL);
-  
-#line 259 "mn-mail-summary-popup.c"
- }
-}
-#undef __GOB_FUNCTION__
-
-
-
-#line 125 "mn-mail-summary-popup.gob"
-static void 
-___2_mn_mail_summary_popup_finalize (GObject * object G_GNUC_UNUSED)
-#line 269 "mn-mail-summary-popup.c"
-#define PARENT_HANDLER(___object) \
-	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::finalize"
-{
-#line 127 "mn-mail-summary-popup.gob"
-	
-    Self *self = SELF(object);
-
-    if (selfp->timeout_source)
-      mn_locked_g_source_remove(selfp->timeout_source);
-
-    PARENT_HANDLER(object);
-  }}
-#line 285 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 136 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_realize_set_decorations_h (MNMailSummaryPopup * self, gpointer user_data)
-#line 292 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::realize_set_decorations_h"
-#line 136 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 136 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 299 "mn-mail-summary-popup.c"
-{
-#line 138 "mn-mail-summary-popup.gob"
-	
-    /*
-     * gdk_window_set_decorations() needs the widget's GdkWindow, this
-     * is why we must call it after the widget is realized.
-     */
-    gdk_window_set_decorations(GTK_WIDGET(self)->window, GDK_DECOR_BORDER);
-  }}
-#line 309 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 146 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_realize_set_geometry_h (MNMailSummaryPopup * self, gpointer user_data)
-#line 315 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::realize_set_geometry_h"
-#line 146 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 146 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 322 "mn-mail-summary-popup.c"
-{
-#line 148 "mn-mail-summary-popup.gob"
-	
-    /* one shot */
-    g_signal_handlers_disconnect_by_func(self, self_realize_set_geometry_h, NULL);
-    self_set_geometry(self);
-  }}
-#line 330 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 154 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_notify_autoclose_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 336 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_autoclose_cb"
-{
-#line 159 "mn-mail-summary-popup.gob"
-	
-    Self *self = user_data;
-
-    if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
-      {
-	if (! selfp->timeout_source)
-	  self_install_timeout(self);
-      }
-    else
-      mn_locked_g_source_clear(&selfp->timeout_source);
-  }}
-#line 352 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 171 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_notify_delay_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 358 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_delay_cb"
-{
-#line 176 "mn-mail-summary-popup.gob"
-	
-    Self *self = user_data;
-
-    self_reset_timeout(self);
-  }}
-#line 368 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 182 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_notify_layout_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 374 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_layout_cb"
-{
-#line 187 "mn-mail-summary-popup.gob"
-	
-    Self *self = user_data;
-
-    self_set_layout(self);
-  }}
-#line 384 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 193 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_notify_geometry_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 390 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_geometry_cb"
-{
-#line 198 "mn-mail-summary-popup.gob"
-	
-    Self *self = user_data;
-
-    self_set_geometry(self);
-  }}
-#line 400 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 204 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_notify_fonts_aspect_source_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 406 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_fonts_aspect_source_cb"
-{
-#line 209 "mn-mail-summary-popup.gob"
-	
-    Self *self = user_data;
-
-    self_set_title_font(self);
-    self_set_contents_font(self);
-  }}
-#line 417 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 216 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_notify_fonts_title_font_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 423 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_fonts_title_font_cb"
-{
-#line 221 "mn-mail-summary-popup.gob"
-	
-    Self *self = user_data;
-
-    self_set_title_font(self);
-  }}
-#line 433 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 227 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_notify_fonts_contents_font_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 439 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_fonts_contents_font_cb"
-{
-#line 232 "mn-mail-summary-popup.gob"
-	
-    Self *self = user_data;
-
-    self_set_contents_font(self);
-  }}
-#line 449 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 238 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_install_timeout (MNMailSummaryPopup * self)
-#line 455 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::install_timeout"
-#line 238 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 238 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 462 "mn-mail-summary-popup.c"
-{
-#line 240 "mn-mail-summary-popup.gob"
-	
-    g_return_if_fail(selfp->timeout_source == NULL);
-
-    selfp->timeout_source = mn_conf_timeout_add_gdk_locked(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES,
-							   MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS,
-							   self_timeout_cb,
-							   self);
-  }}
-#line 473 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 249 "mn-mail-summary-popup.gob"
-static gboolean 
-mn_mail_summary_popup_timeout_cb (gpointer data)
-#line 479 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::timeout_cb"
-{
-#line 251 "mn-mail-summary-popup.gob"
-	
-    Self *self = data;
-
-    gtk_widget_destroy(GTK_WIDGET(self));
-
-    return FALSE;		/* remove timeout */
-  }}
-#line 491 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 259 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_set_layout (MNMailSummaryPopup * self)
-#line 497 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_layout"
-#line 259 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 259 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 504 "mn-mail-summary-popup.c"
-{
-#line 261 "mn-mail-summary-popup.gob"
-	
-    if (selfp->message_view)
-      gtk_widget_destroy(selfp->message_view);
-
-    switch (mn_conf_get_enum_value(MN_TYPE_MAIL_SUMMARY_POPUP_LAYOUT, MN_CONF_MAIL_SUMMARY_POPUP_LAYOUT))
-      {
-      case MN_MAIL_SUMMARY_POPUP_LAYOUT_STANDARD:
-	gtk_image_set_from_stock(GTK_IMAGE(selfp->image), MN_STOCK_MAIL_SUMMARY, -1);
-	/* translators: header capitalization */
-	gtk_label_set_markup(GTK_LABEL(selfp->title), _("<span size=\"larger\" weight=\"bold\">Mail Summary</span>"));
-	selfp->message_view = mn_standard_message_view_new();
-	break;
-
-      case MN_MAIL_SUMMARY_POPUP_LAYOUT_COMPACT:
-	gtk_image_set_from_stock(GTK_IMAGE(selfp->image), MN_STOCK_MAIL_SUMMARY, GTK_ICON_SIZE_SMALL_TOOLBAR);
-	/* translators: header capitalization */
-	gtk_label_set_markup(GTK_LABEL(selfp->title), _("<span weight=\"bold\">Mail Summary</span>"));
-	selfp->message_view = mn_compact_message_view_new();
-	break;
-
-      default:
-	g_assert_not_reached();
-	break;
-      }
-
-    gtk_widget_set_name(selfp->message_view, "mn-message-view");
-    mn_message_view_set_messages(MN_MESSAGE_VIEW(selfp->message_view), selfp->messages);
-    gtk_widget_show(selfp->message_view);
-
-    gtk_box_pack_start(GTK_BOX(selfp->vbox), selfp->message_view, TRUE, TRUE, 0);
-    g_signal_connect_swapped(selfp->message_view, "button-press-event", G_CALLBACK(self_button_press_event_h), self);
-
-    self_set_contents_font(self);
-  }}
-#line 541 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 296 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_set_geometry (MNMailSummaryPopup * self)
-#line 547 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_geometry"
-#line 296 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 296 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 554 "mn-mail-summary-popup.c"
-{
-#line 298 "mn-mail-summary-popup.gob"
-	
-    MNPosition position;
-    int horizontal_offset;
-    int vertical_offset;
-    int popup_width;
-    int popup_height;
-    int screen_width;
-    int screen_height;
-    GdkGravity gravity_mapping[] = {
-      GDK_GRAVITY_NORTH_WEST,
-      GDK_GRAVITY_NORTH_EAST,
-      GDK_GRAVITY_SOUTH_WEST,
-      GDK_GRAVITY_SOUTH_EAST
-    };
-    GdkGravity gravity;
-    int x;
-    int y;
-    gboolean reshow = FALSE;
-
-    position = mn_conf_get_enum_value(MN_TYPE_POSITION, MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
-    horizontal_offset = eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET);
-    vertical_offset = eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET);
-
-    gtk_window_get_size(GTK_WINDOW(self), &popup_width, &popup_height);
-    screen_width = gdk_screen_width();
-    screen_height = gdk_screen_height();
-
-    g_assert(position >= 0 && position < G_N_ELEMENTS(gravity_mapping));
-    gravity = gravity_mapping[position];
-
-    x = (gravity == GDK_GRAVITY_NORTH_WEST || gravity == GDK_GRAVITY_SOUTH_WEST)
-      ? horizontal_offset
-      : screen_width - popup_width - horizontal_offset;
-    y = (gravity == GDK_GRAVITY_NORTH_WEST || gravity == GDK_GRAVITY_NORTH_EAST)
-      ? vertical_offset
-      : screen_height - popup_height - vertical_offset;
-
-    /*
-     * If the gravity changes, the gtk_window_move() call will misplace
-     * the window (probably a Metacity bug).
-     *
-     * A workaround is to reshow the window.
-     */
-    if (gravity != selfp->gravity)
-      {
-	if (selfp->gravity != -1)
-	  reshow = TRUE;
-
-	selfp->gravity = gravity;
-      }
-
-    if (reshow)
-      {
-	gtk_widget_hide(GTK_WIDGET(self));
-
-	/*
-	 * If we do not unrealize the window, it will appear in the
-	 * task bar the next time we show it.
-	 */
-	gtk_widget_unrealize(GTK_WIDGET(self));
-      }
-
-    gtk_window_set_gravity(GTK_WINDOW(self), gravity);
-    gtk_window_move(GTK_WINDOW(self), x, y);
-
-    if (reshow)
-      gtk_widget_show(GTK_WIDGET(self));
-  }}
-#line 625 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 367 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_set_title_font (MNMailSummaryPopup * self)
-#line 631 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_title_font"
-#line 367 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 367 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 638 "mn-mail-summary-popup.c"
-{
-#line 369 "mn-mail-summary-popup.gob"
-	
-    self_set_font(self, selfp->title, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT);
-  }}
-#line 644 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 373 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_set_contents_font (MNMailSummaryPopup * self)
-#line 650 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_contents_font"
-#line 373 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 373 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 657 "mn-mail-summary-popup.c"
-{
-#line 375 "mn-mail-summary-popup.gob"
-	
-    self_set_font(self, selfp->message_view, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT);
-  }}
-#line 663 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 379 "mn-mail-summary-popup.gob"
-static void 
-mn_mail_summary_popup_set_font (MNMailSummaryPopup * self, GtkWidget * widget, const char * conf_key)
-#line 669 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_font"
-#line 379 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 379 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 379 "mn-mail-summary-popup.gob"
-	g_return_if_fail (widget != NULL);
-#line 379 "mn-mail-summary-popup.gob"
-	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 379 "mn-mail-summary-popup.gob"
-	g_return_if_fail (conf_key != NULL);
-#line 682 "mn-mail-summary-popup.c"
-{
-#line 383 "mn-mail-summary-popup.gob"
-	
-    PangoFontDescription *font_desc = NULL;
-
-    if (mn_conf_get_enum_value(MN_TYPE_ASPECT_SOURCE, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE) == MN_ASPECT_SOURCE_CUSTOM)
-      {
-	char *str;
-
-	str = eel_gconf_get_string(conf_key);
-	if (str)
-	  {
-	    font_desc = pango_font_description_from_string(str);
-	    g_free(str);
-	  }
-      }
-
-    gtk_widget_modify_font(widget, font_desc);
-    if (font_desc)
-      pango_font_description_free(font_desc);
-  }}
-#line 704 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 403 "mn-mail-summary-popup.gob"
-void 
-mn_mail_summary_popup_set_messages (MNMailSummaryPopup * self, GSList * messages)
-#line 710 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_messages"
-#line 403 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 403 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 403 "mn-mail-summary-popup.gob"
-	g_return_if_fail (messages != NULL);
-#line 719 "mn-mail-summary-popup.c"
-{
-#line 405 "mn-mail-summary-popup.gob"
-	
-    mn_g_object_slist_free(selfp->messages);
-    selfp->messages = mn_g_object_slist_copy(messages);
-
-    g_object_set(selfp->message_view, "messages", selfp->messages, NULL);
-  }}
-#line 728 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 412 "mn-mail-summary-popup.gob"
-void 
-mn_mail_summary_popup_reset_timeout (MNMailSummaryPopup * self)
-#line 734 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::reset_timeout"
-#line 412 "mn-mail-summary-popup.gob"
-	g_return_if_fail (self != NULL);
-#line 412 "mn-mail-summary-popup.gob"
-	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 741 "mn-mail-summary-popup.c"
-{
-#line 414 "mn-mail-summary-popup.gob"
-	
-    if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
-      {
-	mn_locked_g_source_clear(&selfp->timeout_source);
-	self_install_timeout(self);
-      }
-  }}
-#line 751 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 422 "mn-mail-summary-popup.gob"
-GtkWidget * 
-mn_mail_summary_popup_new (void)
-#line 757 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::new"
-{
-#line 424 "mn-mail-summary-popup.gob"
-	
-    return GTK_WIDGET(GET_NEW);
-  }}
-#line 765 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 430 "mn-mail-summary-popup.gob"
-gboolean 
-mn_mail_summary_popup_button_press_event_h (MNMailSummaryPopup * self, GdkEventButton * button, GtkWidget * widget)
-#line 771 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::button_press_event_h"
-#line 430 "mn-mail-summary-popup.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 430 "mn-mail-summary-popup.gob"
-	g_return_val_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self), (gboolean )0);
-#line 778 "mn-mail-summary-popup.c"
-{
-#line 432 "mn-mail-summary-popup.gob"
-	
-    gtk_widget_destroy(GTK_WIDGET(self));
-
-    return TRUE;		/* do not propagate event */
-  }}
-#line 786 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
diff --git a/src/mn-mail-summary-popup.gob b/src/mn-mail-summary-popup.gob
@@ -1,437 +0,0 @@
-/* 
- * Copyright (C) 2004-2006 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.14
-
-%headertop{
-#include <gtk/gtk.h>
-%}
-
-%privateheader{
-#include "mn-locked-callback.h"
-#include "mn-shell.h"
-%}
-
-%{
-#include "config.h"
-#include <glib/gi18n.h>
-#include <eel/eel.h>
-#include "mn-conf.h"
-#include "mn-stock.h"
-#include "mn-standard-message-view.h"
-#include "mn-compact-message-view.h"
-%}
-
-enum MN_MAIL_SUMMARY_POPUP_LAYOUT
-{
-  STANDARD,
-  COMPACT
-} MN:Mail:Summary:Popup:Layout;
-
-class MN:Mail:Summary:Popup from Gtk:Window
-{
-  private GtkWidget *image;
-  private GtkWidget *title;
-  private GtkWidget *vbox;
-  private GtkWidget *message_view;
-
-  private GdkGravity gravity = -1;
-
-  private MNLockedGSource *timeout_source;
-
-  private GSList *messages destroywith mn_g_object_slist_free;
-
-  init (self)
-  {
-    mn_container_create_interface(GTK_CONTAINER(self),
-				  UIDIR G_DIR_SEPARATOR_S "mail-summary-popup.glade",
-				  "eventbox",
-				  "mn_mail_summary_popup_",
-				  "image", &selfp->image,
-				  "mn-mail-summary-popup-title", &selfp->title,
-				  "vbox", &selfp->vbox,
-				  NULL);
-
-    gtk_widget_set_name(GTK_WIDGET(self), "mn-mail-summary-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 along
-     * with appropriate properties (but a drawback is
-     * http://bugzilla.gnome.org/show_bug.cgi?id=154593).
-     */
-
-    gtk_window_set_title(GTK_WINDOW(self), "");
-    gtk_window_set_resizable(GTK_WINDOW(self), FALSE);
-    gtk_window_set_keep_above(GTK_WINDOW(self), TRUE);
-    gtk_window_set_decorated(GTK_WINDOW(self), FALSE);
-    gtk_window_set_skip_taskbar_hint(GTK_WINDOW(self), TRUE);
-    gtk_window_set_skip_pager_hint(GTK_WINDOW(self), TRUE);
-    gtk_window_set_accept_focus(GTK_WINDOW(self), FALSE);
-    gtk_window_set_focus_on_map(GTK_WINDOW(self), FALSE);
-    gtk_window_stick(GTK_WINDOW(self));
-
-    self_set_layout(self);
-    self_set_title_font(self);
-
-    if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
-      self_install_timeout(self);
-
-    mn_g_object_gconf_notifications_add_gdk_locked(self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE, self_notify_autoclose_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE, self_notify_delay_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_LAYOUT, self_notify_layout_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_POSITION, self_notify_geometry_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE, self_notify_geometry_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE, self_notify_fonts_aspect_source_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT, self_notify_fonts_title_font_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT, self_notify_fonts_contents_font_cb, self,
-						   NULL);
-
-    g_object_connect(self,
-		     "signal::realize", self_realize_set_decorations_h, NULL,
-		     "signal::realize", self_realize_set_geometry_h, NULL,
-		     NULL);
-  }
-
-  override (G:Object) void
-    finalize (GObject *object)
-  {
-    Self *self = SELF(object);
-
-    if (selfp->timeout_source)
-      mn_locked_g_source_remove(selfp->timeout_source);
-
-    PARENT_HANDLER(object);
-  }
-
-  private void
-    realize_set_decorations_h (self, gpointer user_data)
-  {
-    /*
-     * gdk_window_set_decorations() needs the widget's GdkWindow, this
-     * is why we must call it after the widget is realized.
-     */
-    gdk_window_set_decorations(GTK_WIDGET(self)->window, GDK_DECOR_BORDER);
-  }
-
-  private void
-    realize_set_geometry_h (self, gpointer user_data)
-  {
-    /* one shot */
-    g_signal_handlers_disconnect_by_func(self, self_realize_set_geometry_h, NULL);
-    self_set_geometry(self);
-  }
-
-  private void
-    notify_autoclose_cb (GConfClient *client,
-			 unsigned int cnxn_id,
-			 GConfEntry *entry,
-			 gpointer user_data)
-  {
-    Self *self = user_data;
-
-    if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
-      {
-	if (! selfp->timeout_source)
-	  self_install_timeout(self);
-      }
-    else
-      mn_locked_g_source_clear(&selfp->timeout_source);
-  }
-
-  private void
-    notify_delay_cb (GConfClient *client,
-		     unsigned int cnxn_id,
-		     GConfEntry *entry,
-		     gpointer user_data)
-  {
-    Self *self = user_data;
-
-    self_reset_timeout(self);
-  }
-
-  private void
-    notify_layout_cb (GConfClient *client,
-		      unsigned int cnxn_id,
-		      GConfEntry *entry,
-		      gpointer user_data)
-  {
-    Self *self = user_data;
-
-    self_set_layout(self);
-  }
-
-  private void
-    notify_geometry_cb (GConfClient *client,
-			unsigned int cnxn_id,
-			GConfEntry *entry,
-			gpointer user_data)
-  {
-    Self *self = user_data;
-
-    self_set_geometry(self);
-  }
-
-  private void
-    notify_fonts_aspect_source_cb (GConfClient *client,
-				   unsigned int cnxn_id,
-				   GConfEntry *entry,
-				   gpointer user_data)
-  {
-    Self *self = user_data;
-
-    self_set_title_font(self);
-    self_set_contents_font(self);
-  }
-
-  private void
-    notify_fonts_title_font_cb (GConfClient *client,
-				unsigned int cnxn_id,
-				GConfEntry *entry,
-				gpointer user_data)
-  {
-    Self *self = user_data;
-
-    self_set_title_font(self);
-  }
-
-  private void
-    notify_fonts_contents_font_cb (GConfClient *client,
-				   unsigned int cnxn_id,
-				   GConfEntry *entry,
-				   gpointer user_data)
-  {
-    Self *self = user_data;
-
-    self_set_contents_font(self);
-  }
-
-  private void
-    install_timeout (self)
-  {
-    g_return_if_fail(selfp->timeout_source == NULL);
-
-    selfp->timeout_source = mn_conf_timeout_add_gdk_locked(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES,
-							   MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS,
-							   self_timeout_cb,
-							   self);
-  }
-
-  private gboolean
-    timeout_cb (gpointer data)
-  {
-    Self *self = data;
-
-    gtk_widget_destroy(GTK_WIDGET(self));
-
-    return FALSE;		/* remove timeout */
-  }
-
-  private void
-    set_layout (self)
-  {
-    if (selfp->message_view)
-      gtk_widget_destroy(selfp->message_view);
-
-    switch (mn_conf_get_enum_value(MN_TYPE_MAIL_SUMMARY_POPUP_LAYOUT, MN_CONF_MAIL_SUMMARY_POPUP_LAYOUT))
-      {
-      case MN_MAIL_SUMMARY_POPUP_LAYOUT_STANDARD:
-	gtk_image_set_from_stock(GTK_IMAGE(selfp->image), MN_STOCK_MAIL_SUMMARY, -1);
-	/* translators: header capitalization */
-	gtk_label_set_markup(GTK_LABEL(selfp->title), _("<span size=\"larger\" weight=\"bold\">Mail Summary</span>"));
-	selfp->message_view = mn_standard_message_view_new();
-	break;
-
-      case MN_MAIL_SUMMARY_POPUP_LAYOUT_COMPACT:
-	gtk_image_set_from_stock(GTK_IMAGE(selfp->image), MN_STOCK_MAIL_SUMMARY, GTK_ICON_SIZE_SMALL_TOOLBAR);
-	/* translators: header capitalization */
-	gtk_label_set_markup(GTK_LABEL(selfp->title), _("<span weight=\"bold\">Mail Summary</span>"));
-	selfp->message_view = mn_compact_message_view_new();
-	break;
-
-      default:
-	g_assert_not_reached();
-	break;
-      }
-
-    gtk_widget_set_name(selfp->message_view, "mn-message-view");
-    mn_message_view_set_messages(MN_MESSAGE_VIEW(selfp->message_view), selfp->messages);
-    gtk_widget_show(selfp->message_view);
-
-    gtk_box_pack_start(GTK_BOX(selfp->vbox), selfp->message_view, TRUE, TRUE, 0);
-    g_signal_connect_swapped(selfp->message_view, "button-press-event", G_CALLBACK(self_button_press_event_h), self);
-
-    self_set_contents_font(self);
-  }
-
-  private void
-    set_geometry (self)
-  {
-    MNPosition position;
-    int horizontal_offset;
-    int vertical_offset;
-    int popup_width;
-    int popup_height;
-    int screen_width;
-    int screen_height;
-    GdkGravity gravity_mapping[] = {
-      GDK_GRAVITY_NORTH_WEST,
-      GDK_GRAVITY_NORTH_EAST,
-      GDK_GRAVITY_SOUTH_WEST,
-      GDK_GRAVITY_SOUTH_EAST
-    };
-    GdkGravity gravity;
-    int x;
-    int y;
-    gboolean reshow = FALSE;
-
-    position = mn_conf_get_enum_value(MN_TYPE_POSITION, MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
-    horizontal_offset = eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET);
-    vertical_offset = eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET);
-
-    gtk_window_get_size(GTK_WINDOW(self), &popup_width, &popup_height);
-    screen_width = gdk_screen_width();
-    screen_height = gdk_screen_height();
-
-    g_assert(position >= 0 && position < G_N_ELEMENTS(gravity_mapping));
-    gravity = gravity_mapping[position];
-
-    x = (gravity == GDK_GRAVITY_NORTH_WEST || gravity == GDK_GRAVITY_SOUTH_WEST)
-      ? horizontal_offset
-      : screen_width - popup_width - horizontal_offset;
-    y = (gravity == GDK_GRAVITY_NORTH_WEST || gravity == GDK_GRAVITY_NORTH_EAST)
-      ? vertical_offset
-      : screen_height - popup_height - vertical_offset;
-
-    /*
-     * If the gravity changes, the gtk_window_move() call will misplace
-     * the window (probably a Metacity bug).
-     *
-     * A workaround is to reshow the window.
-     */
-    if (gravity != selfp->gravity)
-      {
-	if (selfp->gravity != -1)
-	  reshow = TRUE;
-
-	selfp->gravity = gravity;
-      }
-
-    if (reshow)
-      {
-	gtk_widget_hide(GTK_WIDGET(self));
-
-	/*
-	 * If we do not unrealize the window, it will appear in the
-	 * task bar the next time we show it.
-	 */
-	gtk_widget_unrealize(GTK_WIDGET(self));
-      }
-
-    gtk_window_set_gravity(GTK_WINDOW(self), gravity);
-    gtk_window_move(GTK_WINDOW(self), x, y);
-
-    if (reshow)
-      gtk_widget_show(GTK_WIDGET(self));
-  }
-
-  private void
-    set_title_font (self)
-  {
-    self_set_font(self, selfp->title, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT);
-  }
-
-  private void
-    set_contents_font (self)
-  {
-    self_set_font(self, selfp->message_view, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT);
-  }
-
-  private void
-    set_font (self,
-	      Gtk:Widget *widget (check null type),
-	      const char *conf_key (check null))
-  {
-    PangoFontDescription *font_desc = NULL;
-
-    if (mn_conf_get_enum_value(MN_TYPE_ASPECT_SOURCE, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE) == MN_ASPECT_SOURCE_CUSTOM)
-      {
-	char *str;
-
-	str = eel_gconf_get_string(conf_key);
-	if (str)
-	  {
-	    font_desc = pango_font_description_from_string(str);
-	    g_free(str);
-	  }
-      }
-
-    gtk_widget_modify_font(widget, font_desc);
-    if (font_desc)
-      pango_font_description_free(font_desc);
-  }
-
-  public void
-    set_messages (self, GSList *messages (check null))
-  {
-    mn_g_object_slist_free(selfp->messages);
-    selfp->messages = mn_g_object_slist_copy(messages);
-
-    g_object_set(selfp->message_view, "messages", selfp->messages, NULL);
-  }
-
-  public void
-    reset_timeout (self)
-  {
-    if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
-      {
-	mn_locked_g_source_clear(&selfp->timeout_source);
-	self_install_timeout(self);
-      }
-  }
-
-  public GtkWidget *
-    new (void)
-  {
-    return GTK_WIDGET(GET_NEW);
-  }
-
-  /* libglade callbacks */
-
-  protected gboolean
-    button_press_event_h (self, GdkEventButton *button, GtkWidget *widget)
-  {
-    gtk_widget_destroy(GTK_WIDGET(self));
-
-    return TRUE;		/* do not propagate event */
-  }
-}
diff --git a/src/mn-mail-summary-popup.h b/src/mn-mail-summary-popup.h
@@ -1,74 +0,0 @@
-/* Generated by GOB (v2.0.14)   (do not edit directly) */
-
-#include <glib.h>
-#include <glib-object.h>
-
-
-#include <gtk/gtk.h>
-
-#ifndef __MN_MAIL_SUMMARY_POPUP_H__
-#define __MN_MAIL_SUMMARY_POPUP_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-typedef enum {
-	MN_MAIL_SUMMARY_POPUP_LAYOUT_STANDARD,
-	MN_MAIL_SUMMARY_POPUP_LAYOUT_COMPACT
-} MNMailSummaryPopupLayout;
-#define MN_TYPE_MAIL_SUMMARY_POPUP_LAYOUT mn_mail_summary_popup_layout_get_type()
-GType mn_mail_summary_popup_layout_get_type (void);
-
-
-/*
- * Type checking and casting macros
- */
-#define MN_TYPE_MAIL_SUMMARY_POPUP	(mn_mail_summary_popup_get_type())
-#define MN_MAIL_SUMMARY_POPUP(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mail_summary_popup_get_type(), MNMailSummaryPopup)
-#define MN_MAIL_SUMMARY_POPUP_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mail_summary_popup_get_type(), MNMailSummaryPopup const)
-#define MN_MAIL_SUMMARY_POPUP_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_mail_summary_popup_get_type(), MNMailSummaryPopupClass)
-#define MN_IS_MAIL_SUMMARY_POPUP(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mail_summary_popup_get_type ())
-
-#define MN_MAIL_SUMMARY_POPUP_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_mail_summary_popup_get_type(), MNMailSummaryPopupClass)
-
-/* Private structure type */
-typedef struct _MNMailSummaryPopupPrivate MNMailSummaryPopupPrivate;
-
-/*
- * Main object structure
- */
-#ifndef __TYPEDEF_MN_MAIL_SUMMARY_POPUP__
-#define __TYPEDEF_MN_MAIL_SUMMARY_POPUP__
-typedef struct _MNMailSummaryPopup MNMailSummaryPopup;
-#endif
-struct _MNMailSummaryPopup {
-	GtkWindow __parent__;
-	/*< private >*/
-	MNMailSummaryPopupPrivate *_priv;
-};
-
-/*
- * Class definition
- */
-typedef struct _MNMailSummaryPopupClass MNMailSummaryPopupClass;
-struct _MNMailSummaryPopupClass {
-	GtkWindowClass __parent__;
-};
-
-
-/*
- * Public methods
- */
-GType	mn_mail_summary_popup_get_type	(void);
-void 	mn_mail_summary_popup_set_messages	(MNMailSummaryPopup * self,
-					GSList * messages);
-void 	mn_mail_summary_popup_reset_timeout	(MNMailSummaryPopup * self);
-GtkWidget * 	mn_mail_summary_popup_new	(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/src/mn-mailbox-private.h b/src/mn-mailbox-private.h
@@ -10,35 +10,38 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 35 "mn-mailbox.gob"
+#line 36 "mn-mailbox.gob"
 
 #include "mn-locked-callback.h"
+#include "mn-xml.h"
 
 typedef enum
 {
   /* save to mailboxes.xml */
-  MN_MAILBOX_PARAM_PERMANENT	= 1 << (G_PARAM_USER_SHIFT + 0),
-
-  /* require a string property to be non-empty */
-  MN_MAILBOX_PARAM_REQUIRED	= 1 << (G_PARAM_USER_SHIFT + 1),
+  MN_MAILBOX_PARAM_PERMANENT	= MN_XML_PARAM_IMPORT_EXPORT,
 
   /* ignore the case of a string property when checking if it has the default value */
-  MN_MAILBOX_PARAM_IGNORE_CASE	= 1 << (G_PARAM_USER_SHIFT + 2)
+  MN_MAILBOX_PARAM_IGNORE_CASE	= MN_XML_PARAM_IGNORE_CASE,
+
+  /* require a string property to be non-empty */
+  MN_MAILBOX_PARAM_REQUIRED	= 1 << (MN_XML_PARAM_USER_SHIFT + 0),
 } MNMailboxParamFlags;
 
-#line 30 "mn-mailbox-private.h"
+#line 31 "mn-mailbox-private.h"
 struct _MNMailboxPrivate {
-#line 97 "mn-mailbox.gob"
+#line 99 "mn-mailbox.gob"
 	gboolean added;
-#line 139 "mn-mailbox.gob"
+#line 150 "mn-mailbox.gob"
 	MNLockedGSource * check_timeout_source;
-#line 148 "mn-mailbox.gob"
+#line 159 "mn-mailbox.gob"
 	gboolean poll;
-#line 181 "mn-mailbox.gob"
+#line 192 "mn-mailbox.gob"
 	GSList * unfiltered_messages;
-#line 203 "mn-mailbox.gob"
+#line 194 "mn-mailbox.gob"
+	GHashTable * messages_marked_as_read;
+#line 216 "mn-mailbox.gob"
 	GHashTable * messages_hash_table;
-#line 42 "mn-mailbox-private.h"
+#line 45 "mn-mailbox-private.h"
 };
 void 	mn_mailbox_set_error	(MNMailbox * self, const char * format, ...);
 void 	mn_mailbox_notice	(MNMailbox * self, const char * format, ...);
diff --git a/src/mn-mailbox-properties-dialog-private.h b/src/mn-mailbox-properties-dialog-private.h
@@ -9,57 +9,62 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 27 "mn-mailbox-properties-dialog.gob"
+
+#include "mn-mailbox-properties.h"
+
+#line 18 "mn-mailbox-properties-dialog-private.h"
 struct _MNMailboxPropertiesDialogPrivate {
-#line 63 "mn-mailbox-properties-dialog.gob"
+#line 69 "mn-mailbox-properties-dialog.gob"
 	GtkWindow * dialog_parent;
-#line 66 "mn-mailbox-properties-dialog.gob"
+#line 72 "mn-mailbox-properties-dialog.gob"
 	MNMailbox * mailbox;
-#line 99 "mn-mailbox-properties-dialog.gob"
+#line 107 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * mailbox_type_label;
-#line 100 "mn-mailbox-properties-dialog.gob"
+#line 108 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * mailbox_type_combo;
-#line 101 "mn-mailbox-properties-dialog.gob"
+#line 109 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * mailbox_name_label;
-#line 102 "mn-mailbox-properties-dialog.gob"
+#line 110 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * mailbox_name_entry;
-#line 103 "mn-mailbox-properties-dialog.gob"
+#line 111 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * mailbox_name_default_button;
-#line 104 "mn-mailbox-properties-dialog.gob"
+#line 112 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * delay_label;
-#line 105 "mn-mailbox-properties-dialog.gob"
+#line 113 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * delay_hbox;
-#line 106 "mn-mailbox-properties-dialog.gob"
+#line 114 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * minutes_spin;
-#line 107 "mn-mailbox-properties-dialog.gob"
+#line 115 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * minutes_label;
-#line 108 "mn-mailbox-properties-dialog.gob"
+#line 116 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * seconds_spin;
-#line 109 "mn-mailbox-properties-dialog.gob"
+#line 117 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * seconds_label;
-#line 110 "mn-mailbox-properties-dialog.gob"
+#line 118 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * delay_default_button;
-#line 112 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * type_section_label;
-#line 113 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * properties_event_box;
-#line 115 "mn-mailbox-properties-dialog.gob"
+#line 120 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * apply_button;
-#line 116 "mn-mailbox-properties-dialog.gob"
+#line 121 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * accept_button;
-#line 118 "mn-mailbox-properties-dialog.gob"
+#line 123 "mn-mailbox-properties-dialog.gob"
 	GtkListStore * store;
-#line 120 "mn-mailbox-properties-dialog.gob"
+#line 125 "mn-mailbox-properties-dialog.gob"
 	char * default_name;
-#line 121 "mn-mailbox-properties-dialog.gob"
+#line 126 "mn-mailbox-properties-dialog.gob"
 	gboolean has_custom_name;
-#line 123 "mn-mailbox-properties-dialog.gob"
+#line 128 "mn-mailbox-properties-dialog.gob"
 	int default_check_delay;
-#line 124 "mn-mailbox-properties-dialog.gob"
+#line 129 "mn-mailbox-properties-dialog.gob"
 	gboolean has_custom_check_delay;
-#line 126 "mn-mailbox-properties-dialog.gob"
+#line 131 "mn-mailbox-properties-dialog.gob"
 	GSList * entries;
-#line 62 "mn-mailbox-properties-dialog-private.h"
+#line 133 "mn-mailbox-properties-dialog.gob"
+	MNMailboxProperties * active_properties;
+#line 66 "mn-mailbox-properties-dialog-private.h"
 };
+void 	mn_mailbox_properties_dialog_set_help_section	(GtkWidget * page, const char * section);
 void 	mn_mailbox_properties_dialog_type_changed_h	(MNMailboxPropertiesDialog * self, GtkComboBox * combobox);
 void 	mn_mailbox_properties_dialog_name_changed_h	(MNMailboxPropertiesDialog * self, GtkEditable * editable);
 void 	mn_mailbox_properties_dialog_name_default_button_clicked_h	(MNMailboxPropertiesDialog * self, GtkButton * button);
diff --git a/src/mn-mailbox-properties-dialog.c b/src/mn-mailbox-properties-dialog.c
@@ -22,13 +22,12 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-mailbox-properties-dialog.gob"
+#line 31 "mn-mailbox-properties-dialog.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
-#include "mn-mailbox-properties.h"
 #include "mn-autodetect-mailbox-properties.h"
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-system-vfs-mailbox-properties.h"
 #endif
 #if WITH_POP3
@@ -47,6 +46,8 @@
 #include "mn-mailboxes.h"
 #include "mn-shell.h"
 
+#define HELP_SECTION "mn-mailbox-properties-help-section"
+
 enum {
   COLUMN_PROPERTIES,
   COLUMN_STOCK_ID,
@@ -56,7 +57,7 @@ enum {
 
 static GType selected_type = 0;
 
-#line 60 "mn-mailbox-properties-dialog.c"
+#line 61 "mn-mailbox-properties-dialog.c"
 /* self casting macros */
 #define SELF(x) MN_MAILBOX_PROPERTIES_DIALOG(x)
 #define SELF_CONST(x) MN_MAILBOX_PROPERTIES_DIALOG_CONST(x)
@@ -76,6 +77,7 @@ static void ___object_get_property (GObject *object, guint property_id, GValue *
 static void mn_mailbox_properties_dialog_init (MNMailboxPropertiesDialog * o) G_GNUC_UNUSED;
 static void mn_mailbox_properties_dialog_class_init (MNMailboxPropertiesDialogClass * c) G_GNUC_UNUSED;
 static GObject * ___3_mn_mailbox_properties_dialog_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void mn_mailbox_properties_dialog_response_h (GtkDialog * dialog, int response, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog * self, GType type) G_GNUC_UNUSED;
 static void mn_mailbox_properties_dialog_set_active_properties (MNMailboxPropertiesDialog * self, MNMailboxProperties * properties) G_GNUC_UNUSED;
 static MNMailboxProperties * mn_mailbox_properties_dialog_get_active_properties (MNMailboxPropertiesDialog * self) G_GNUC_UNUSED;
@@ -97,6 +99,7 @@ static MNDialogClass *parent_class = NULL;
 /* Short form macros */
 #define self_get_mailbox mn_mailbox_properties_dialog_get_mailbox
 #define self_set_mailbox mn_mailbox_properties_dialog_set_mailbox
+#define self_response_h mn_mailbox_properties_dialog_response_h
 #define self_add_type mn_mailbox_properties_dialog_add_type
 #define self_set_active_properties mn_mailbox_properties_dialog_set_active_properties
 #define self_get_active_properties mn_mailbox_properties_dialog_get_active_properties
@@ -107,6 +110,7 @@ static MNDialogClass *parent_class = NULL;
 #define self_update_complete mn_mailbox_properties_dialog_update_complete
 #define self_update_default_name mn_mailbox_properties_dialog_update_default_name
 #define self_update_default_check_delay mn_mailbox_properties_dialog_update_default_check_delay
+#define self_set_help_section mn_mailbox_properties_dialog_set_help_section
 #define self_new mn_mailbox_properties_dialog_new
 #define self_type_changed_h mn_mailbox_properties_dialog_type_changed_h
 #define self_name_changed_h mn_mailbox_properties_dialog_name_changed_h
@@ -164,12 +168,15 @@ ___dispose (GObject *obj_self)
 	MNMailboxPropertiesDialog *self G_GNUC_UNUSED = MN_MAILBOX_PROPERTIES_DIALOG (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 66 "mn-mailbox-properties-dialog.gob"
+#line 72 "mn-mailbox-properties-dialog.gob"
 	if(self->_priv->mailbox) { g_object_unref ((gpointer) self->_priv->mailbox); self->_priv->mailbox = NULL; }
-#line 170 "mn-mailbox-properties-dialog.c"
-#line 118 "mn-mailbox-properties-dialog.gob"
+#line 174 "mn-mailbox-properties-dialog.c"
+#line 123 "mn-mailbox-properties-dialog.gob"
 	if(self->_priv->store) { g_object_unref ((gpointer) self->_priv->store); self->_priv->store = NULL; }
-#line 173 "mn-mailbox-properties-dialog.c"
+#line 177 "mn-mailbox-properties-dialog.c"
+#line 133 "mn-mailbox-properties-dialog.gob"
+	if(self->_priv->active_properties) { g_object_unref ((gpointer) self->_priv->active_properties); self->_priv->active_properties = NULL; }
+#line 180 "mn-mailbox-properties-dialog.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -182,12 +189,12 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 120 "mn-mailbox-properties-dialog.gob"
+#line 125 "mn-mailbox-properties-dialog.gob"
 	if(self->_priv->default_name) { g_free ((gpointer) self->_priv->default_name); self->_priv->default_name = NULL; }
-#line 188 "mn-mailbox-properties-dialog.c"
-#line 126 "mn-mailbox-properties-dialog.gob"
+#line 195 "mn-mailbox-properties-dialog.c"
+#line 131 "mn-mailbox-properties-dialog.gob"
 	if(self->_priv->entries) { g_slist_free ((gpointer) self->_priv->entries); self->_priv->entries = NULL; }
-#line 191 "mn-mailbox-properties-dialog.c"
+#line 198 "mn-mailbox-properties-dialog.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -208,9 +215,9 @@ mn_mailbox_properties_dialog_class_init (MNMailboxPropertiesDialogClass * c G_GN
 
 	parent_class = g_type_class_ref (MN_TYPE_DIALOG);
 
-#line 128 "mn-mailbox-properties-dialog.gob"
+#line 135 "mn-mailbox-properties-dialog.gob"
 	g_object_class->constructor = ___3_mn_mailbox_properties_dialog_constructor;
-#line 214 "mn-mailbox-properties-dialog.c"
+#line 221 "mn-mailbox-properties-dialog.c"
 	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
@@ -253,14 +260,14 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_DIALOG_PARENT:
 		{
-#line 64 "mn-mailbox-properties-dialog.gob"
+#line 70 "mn-mailbox-properties-dialog.gob"
 self->_priv->dialog_parent = g_value_get_pointer (VAL);
-#line 259 "mn-mailbox-properties-dialog.c"
+#line 266 "mn-mailbox-properties-dialog.c"
 		}
 		break;
 	case PROP_MAILBOX:
 		{
-#line 72 "mn-mailbox-properties-dialog.gob"
+#line 78 "mn-mailbox-properties-dialog.gob"
 
       GObject *object;
 
@@ -283,7 +290,7 @@ self->_priv->dialog_parent = g_value_get_pointer (VAL);
 	  g_free(title);
 	}
     
-#line 287 "mn-mailbox-properties-dialog.c"
+#line 294 "mn-mailbox-properties-dialog.c"
 		}
 		break;
 	default:
@@ -312,18 +319,18 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_DIALOG_PARENT:
 		{
-#line 64 "mn-mailbox-properties-dialog.gob"
+#line 70 "mn-mailbox-properties-dialog.gob"
 g_value_set_pointer (VAL, self->_priv->dialog_parent);
-#line 318 "mn-mailbox-properties-dialog.c"
+#line 325 "mn-mailbox-properties-dialog.c"
 		}
 		break;
 	case PROP_MAILBOX:
 		{
-#line 95 "mn-mailbox-properties-dialog.gob"
+#line 101 "mn-mailbox-properties-dialog.gob"
 
       g_value_set_object(VAL, selfp->mailbox);
     
-#line 327 "mn-mailbox-properties-dialog.c"
+#line 334 "mn-mailbox-properties-dialog.c"
 		}
 		break;
 	default:
@@ -340,36 +347,36 @@ g_value_set_pointer (VAL, self->_priv->dialog_parent);
 
 
 
-#line 95 "mn-mailbox-properties-dialog.gob"
+#line 101 "mn-mailbox-properties-dialog.gob"
 MNMailbox * 
 mn_mailbox_properties_dialog_get_mailbox (MNMailboxPropertiesDialog * self)
-#line 347 "mn-mailbox-properties-dialog.c"
+#line 354 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_mailbox"
 {
-#line 67 "mn-mailbox-properties-dialog.gob"
+#line 73 "mn-mailbox-properties-dialog.gob"
 		MNMailbox* val; g_object_get (G_OBJECT (self), "mailbox", &val, NULL); return val;
 }}
-#line 354 "mn-mailbox-properties-dialog.c"
+#line 361 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 72 "mn-mailbox-properties-dialog.gob"
+#line 78 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_set_mailbox (MNMailboxPropertiesDialog * self, MNMailbox * val)
-#line 360 "mn-mailbox-properties-dialog.c"
+#line 367 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::set_mailbox"
 {
-#line 67 "mn-mailbox-properties-dialog.gob"
+#line 73 "mn-mailbox-properties-dialog.gob"
 		g_object_set (G_OBJECT (self), "mailbox", val, NULL);
 }}
-#line 367 "mn-mailbox-properties-dialog.c"
+#line 374 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 128 "mn-mailbox-properties-dialog.gob"
+#line 135 "mn-mailbox-properties-dialog.gob"
 static GObject * 
 ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 373 "mn-mailbox-properties-dialog.c"
+#line 380 "mn-mailbox-properties-dialog.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): \
@@ -377,11 +384,12 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::constructor"
 {
-#line 130 "mn-mailbox-properties-dialog.gob"
+#line 137 "mn-mailbox-properties-dialog.gob"
 	
     GObject *object;
     Self *self;
-    GtkCellRenderer *renderer;
+    GtkWidget *general_page;
+    GtkCellRenderer *renderer; 
     MNMailboxProperties *properties;
 
     object = PARENT_HANDLER(type, n_construct_properties, construct_params);
@@ -389,8 +397,10 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 
     mn_container_create_interface(GTK_CONTAINER(self),
 				  UIDIR G_DIR_SEPARATOR_S "mailbox-properties-dialog.glade",
-				  "vbox",
+				  "notebook",
 				  "mn_mailbox_properties_dialog_",
+				  "notebook", &self->notebook,
+				  "general_vbox", &self->general_vbox,
 				  "mailbox_type_label", &selfp->mailbox_type_label,
 				  "mailbox_type_combo", &selfp->mailbox_type_combo,
 				  "mailbox_name_label", &selfp->mailbox_name_label,
@@ -403,8 +413,6 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 				  "seconds_spin", &selfp->seconds_spin,
 				  "seconds_label", &selfp->seconds_label,
 				  "delay_default_button", &selfp->delay_default_button,
-				  "type_section_label", &selfp->type_section_label,
-				  "properties_event_box", &selfp->properties_event_box,
 				  NULL);
 
     gtk_window_set_resizable(GTK_WINDOW(self), FALSE);
@@ -418,15 +426,19 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 						selfp->seconds_spin,
 						NULL);
 
+    general_page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), 0);
+    g_assert(general_page != NULL);
+    self_set_help_section(general_page, "mailbox-properties-general");
+
     /* finish the type combo box */
 
     selfp->store = gtk_list_store_new(N_COLUMNS,
-				      GTK_TYPE_WIDGET,
+				      MN_TYPE_MAILBOX_PROPERTIES,
 				      G_TYPE_STRING,
 				      G_TYPE_STRING);
 
     self_add_type(self, MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES);
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     self_add_type(self, MN_TYPE_SYSTEM_VFS_MAILBOX_PROPERTIES);
 #endif
 #if WITH_POP3
@@ -444,7 +456,7 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 
     renderer = gtk_cell_renderer_pixbuf_new();
     g_object_set(renderer, "stock-size", GTK_ICON_SIZE_MENU, NULL);
-    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer, FALSE);;
+    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer, FALSE);
     gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer,
 				   "stock-id", COLUMN_STOCK_ID,
 				   NULL);
@@ -453,7 +465,7 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
     g_object_set(renderer, "xpad", 6, NULL);
     gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer, TRUE);
     gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer,
-				   "markup", COLUMN_LABEL,
+				   "text", COLUMN_LABEL,
 				   NULL);
 
     gtk_combo_box_set_model(GTK_COMBO_BOX(selfp->mailbox_type_combo), GTK_TREE_MODEL(selfp->store));
@@ -501,35 +513,78 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 
     gtk_widget_grab_default(selfp->accept_button);
 
+    /*
+     * HIG chapter 3:
+     * "When opening a dialog, provide initial keyboard focus to the
+     * component that you expect users to operate first. This focus is
+     * especially important for users who must use a keyboard to
+     * navigate your application."
+     */
+    gtk_widget_grab_focus(selfp->mailbox_type_combo);
+
+    g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL);
+
     return object;
   }}
-#line 507 "mn-mailbox-properties-dialog.c"
+#line 530 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 256 "mn-mailbox-properties-dialog.gob"
+#line 279 "mn-mailbox-properties-dialog.gob"
+static void 
+mn_mailbox_properties_dialog_response_h (GtkDialog * dialog, int response, gpointer user_data)
+#line 537 "mn-mailbox-properties-dialog.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::response_h"
+{
+#line 281 "mn-mailbox-properties-dialog.gob"
+	
+    Self *self = SELF(dialog);
+
+    if (response == GTK_RESPONSE_HELP)
+      {
+	int page_number;
+	GtkWidget *page;
+	const char *section;
+
+	page_number = gtk_notebook_get_current_page(GTK_NOTEBOOK(self->notebook));
+
+	page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), page_number);
+	g_assert(page != NULL);
+
+	section = g_object_get_data(G_OBJECT(page), HELP_SECTION);
+	g_assert(section != NULL);
+
+	mn_display_help(GTK_WINDOW(self), section);
+      }
+
+    /* other responses are handled by the client */
+  }}
+#line 564 "mn-mailbox-properties-dialog.c"
+#undef __GOB_FUNCTION__
+
+#line 304 "mn-mailbox-properties-dialog.gob"
 static void 
 mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog * self, GType type)
-#line 514 "mn-mailbox-properties-dialog.c"
+#line 570 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::add_type"
-#line 256 "mn-mailbox-properties-dialog.gob"
+#line 304 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 256 "mn-mailbox-properties-dialog.gob"
+#line 304 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 256 "mn-mailbox-properties-dialog.gob"
+#line 304 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (type != 0);
-#line 523 "mn-mailbox-properties-dialog.c"
+#line 579 "mn-mailbox-properties-dialog.c"
 {
-#line 258 "mn-mailbox-properties-dialog.gob"
+#line 306 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
     MNMailboxPropertiesClass *p_class;
     GtkTreeIter iter;
     GSList *l;
 
-    properties = g_object_new(type, NULL);
-    mn_gtk_object_ref_and_sink(GTK_OBJECT(properties));
+    properties = g_object_new(type, MN_MAILBOX_PROPERTIES_PROP_DIALOG(GTK_WIDGET(self)), NULL);
 
     p_class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties);
 
@@ -540,8 +595,6 @@ mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog * self, GType t
 		       COLUMN_LABEL, p_class->combo_label,
 		       -1);
 
-    gtk_widget_show(GTK_WIDGET(properties));
-
     g_object_connect(properties,
 		     "swapped-signal::notify::complete", self_update_complete, self,
 		     "swapped-signal::notify::default-name", self_update_default_name, self,
@@ -553,26 +606,26 @@ mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog * self, GType t
 
     g_object_unref(properties);	/* now it belongs to the store */
   }}
-#line 557 "mn-mailbox-properties-dialog.c"
+#line 610 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 290 "mn-mailbox-properties-dialog.gob"
+#line 335 "mn-mailbox-properties-dialog.gob"
 static void 
 mn_mailbox_properties_dialog_set_active_properties (MNMailboxPropertiesDialog * self, MNMailboxProperties * properties)
-#line 563 "mn-mailbox-properties-dialog.c"
+#line 616 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::set_active_properties"
-#line 290 "mn-mailbox-properties-dialog.gob"
+#line 335 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 290 "mn-mailbox-properties-dialog.gob"
+#line 335 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 290 "mn-mailbox-properties-dialog.gob"
+#line 335 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (properties != NULL);
-#line 290 "mn-mailbox-properties-dialog.gob"
+#line 335 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (properties));
-#line 574 "mn-mailbox-properties-dialog.c"
+#line 627 "mn-mailbox-properties-dialog.c"
 {
-#line 293 "mn-mailbox-properties-dialog.gob"
+#line 338 "mn-mailbox-properties-dialog.gob"
 	
     gboolean valid;
     GtkTreeIter iter;
@@ -594,22 +647,22 @@ mn_mailbox_properties_dialog_set_active_properties (MNMailboxPropertiesDialog * 
 	valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(selfp->store), &iter);
       }
   }}
-#line 598 "mn-mailbox-properties-dialog.c"
+#line 651 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 315 "mn-mailbox-properties-dialog.gob"
+#line 360 "mn-mailbox-properties-dialog.gob"
 static MNMailboxProperties * 
 mn_mailbox_properties_dialog_get_active_properties (MNMailboxPropertiesDialog * self)
-#line 604 "mn-mailbox-properties-dialog.c"
+#line 657 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_active_properties"
-#line 315 "mn-mailbox-properties-dialog.gob"
+#line 360 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxProperties * )0);
-#line 315 "mn-mailbox-properties-dialog.gob"
+#line 360 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailboxProperties * )0);
-#line 611 "mn-mailbox-properties-dialog.c"
+#line 664 "mn-mailbox-properties-dialog.c"
 {
-#line 317 "mn-mailbox-properties-dialog.gob"
+#line 362 "mn-mailbox-properties-dialog.gob"
 	
     GtkTreeIter iter;
     MNMailboxProperties *properties = NULL;
@@ -619,24 +672,24 @@ mn_mailbox_properties_dialog_get_active_properties (MNMailboxPropertiesDialog * 
 
     return properties;
   }}
-#line 623 "mn-mailbox-properties-dialog.c"
+#line 676 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 327 "mn-mailbox-properties-dialog.gob"
+#line 372 "mn-mailbox-properties-dialog.gob"
 static MNMailboxProperties * 
 mn_mailbox_properties_dialog_get_properties_by_type (MNMailboxPropertiesDialog * self, const char * type)
-#line 629 "mn-mailbox-properties-dialog.c"
+#line 682 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_properties_by_type"
-#line 327 "mn-mailbox-properties-dialog.gob"
+#line 372 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxProperties * )0);
-#line 327 "mn-mailbox-properties-dialog.gob"
+#line 372 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailboxProperties * )0);
-#line 327 "mn-mailbox-properties-dialog.gob"
+#line 372 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (type != NULL, (MNMailboxProperties * )0);
-#line 638 "mn-mailbox-properties-dialog.c"
+#line 691 "mn-mailbox-properties-dialog.c"
 {
-#line 329 "mn-mailbox-properties-dialog.gob"
+#line 374 "mn-mailbox-properties-dialog.gob"
 	
     gboolean valid;
     GtkTreeIter iter;
@@ -661,24 +714,24 @@ mn_mailbox_properties_dialog_get_properties_by_type (MNMailboxPropertiesDialog *
 
     return NULL;
   }}
-#line 665 "mn-mailbox-properties-dialog.c"
+#line 718 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 354 "mn-mailbox-properties-dialog.gob"
+#line 399 "mn-mailbox-properties-dialog.gob"
 static MNMailboxProperties * 
 mn_mailbox_properties_dialog_get_properties_by_g_type (MNMailboxPropertiesDialog * self, GType type)
-#line 671 "mn-mailbox-properties-dialog.c"
+#line 724 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_properties_by_g_type"
-#line 354 "mn-mailbox-properties-dialog.gob"
+#line 399 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxProperties * )0);
-#line 354 "mn-mailbox-properties-dialog.gob"
+#line 399 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailboxProperties * )0);
-#line 354 "mn-mailbox-properties-dialog.gob"
+#line 399 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (type != 0, (MNMailboxProperties * )0);
-#line 680 "mn-mailbox-properties-dialog.c"
+#line 733 "mn-mailbox-properties-dialog.c"
 {
-#line 356 "mn-mailbox-properties-dialog.gob"
+#line 401 "mn-mailbox-properties-dialog.gob"
 	
     gboolean valid;
     GtkTreeIter iter;
@@ -700,22 +753,22 @@ mn_mailbox_properties_dialog_get_properties_by_g_type (MNMailboxPropertiesDialog
 
     return NULL;
   }}
-#line 704 "mn-mailbox-properties-dialog.c"
+#line 757 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 378 "mn-mailbox-properties-dialog.gob"
+#line 423 "mn-mailbox-properties-dialog.gob"
 MNMailbox * 
 mn_mailbox_properties_dialog_get_current_mailbox (MNMailboxPropertiesDialog * self)
-#line 710 "mn-mailbox-properties-dialog.c"
+#line 763 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_current_mailbox"
-#line 378 "mn-mailbox-properties-dialog.gob"
+#line 423 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (self != NULL, (MNMailbox * )0);
-#line 378 "mn-mailbox-properties-dialog.gob"
+#line 423 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailbox * )0);
-#line 717 "mn-mailbox-properties-dialog.c"
+#line 770 "mn-mailbox-properties-dialog.c"
 {
-#line 380 "mn-mailbox-properties-dialog.gob"
+#line 425 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
     MNMailbox *mailbox;
@@ -739,22 +792,22 @@ mn_mailbox_properties_dialog_get_current_mailbox (MNMailboxPropertiesDialog * se
 
     return mailbox;
   }}
-#line 743 "mn-mailbox-properties-dialog.c"
+#line 796 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 404 "mn-mailbox-properties-dialog.gob"
+#line 449 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_apply (MNMailboxPropertiesDialog * self)
-#line 749 "mn-mailbox-properties-dialog.c"
+#line 802 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::apply"
-#line 404 "mn-mailbox-properties-dialog.gob"
+#line 449 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 404 "mn-mailbox-properties-dialog.gob"
+#line 449 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 756 "mn-mailbox-properties-dialog.c"
+#line 809 "mn-mailbox-properties-dialog.c"
 {
-#line 406 "mn-mailbox-properties-dialog.gob"
+#line 451 "mn-mailbox-properties-dialog.gob"
 	
     MNMailbox *new_mailbox;
 
@@ -769,22 +822,22 @@ mn_mailbox_properties_dialog_apply (MNMailboxPropertiesDialog * self)
     self_set_mailbox(self, new_mailbox);
     g_object_unref(new_mailbox);
   }}
-#line 773 "mn-mailbox-properties-dialog.c"
+#line 826 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 421 "mn-mailbox-properties-dialog.gob"
+#line 466 "mn-mailbox-properties-dialog.gob"
 static void 
 mn_mailbox_properties_dialog_update_complete (MNMailboxPropertiesDialog * self)
-#line 779 "mn-mailbox-properties-dialog.c"
+#line 832 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_complete"
-#line 421 "mn-mailbox-properties-dialog.gob"
+#line 466 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 421 "mn-mailbox-properties-dialog.gob"
+#line 466 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 786 "mn-mailbox-properties-dialog.c"
+#line 839 "mn-mailbox-properties-dialog.c"
 {
-#line 423 "mn-mailbox-properties-dialog.gob"
+#line 468 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
 
@@ -810,22 +863,22 @@ mn_mailbox_properties_dialog_update_complete (MNMailboxPropertiesDialog * self)
 	gtk_widget_set_sensitive(selfp->accept_button, complete);
       }
   }}
-#line 814 "mn-mailbox-properties-dialog.c"
+#line 867 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 449 "mn-mailbox-properties-dialog.gob"
+#line 494 "mn-mailbox-properties-dialog.gob"
 static void 
 mn_mailbox_properties_dialog_update_default_name (MNMailboxPropertiesDialog * self)
-#line 820 "mn-mailbox-properties-dialog.c"
+#line 873 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_default_name"
-#line 449 "mn-mailbox-properties-dialog.gob"
+#line 494 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 449 "mn-mailbox-properties-dialog.gob"
+#line 494 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 827 "mn-mailbox-properties-dialog.c"
+#line 880 "mn-mailbox-properties-dialog.c"
 {
-#line 451 "mn-mailbox-properties-dialog.gob"
+#line 496 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
 
@@ -851,22 +904,22 @@ mn_mailbox_properties_dialog_update_default_name (MNMailboxPropertiesDialog * se
 	gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->has_custom_name = FALSE);
       }
   }}
-#line 855 "mn-mailbox-properties-dialog.c"
+#line 908 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 477 "mn-mailbox-properties-dialog.gob"
+#line 522 "mn-mailbox-properties-dialog.gob"
 static void 
 mn_mailbox_properties_dialog_update_default_check_delay (MNMailboxPropertiesDialog * self)
-#line 861 "mn-mailbox-properties-dialog.c"
+#line 914 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_default_check_delay"
-#line 477 "mn-mailbox-properties-dialog.gob"
+#line 522 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 477 "mn-mailbox-properties-dialog.gob"
+#line 522 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 868 "mn-mailbox-properties-dialog.c"
+#line 921 "mn-mailbox-properties-dialog.c"
 {
-#line 479 "mn-mailbox-properties-dialog.gob"
+#line 524 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
 
@@ -893,97 +946,106 @@ mn_mailbox_properties_dialog_update_default_check_delay (MNMailboxPropertiesDial
 	gtk_widget_set_sensitive(selfp->delay_default_button, selfp->has_custom_check_delay = FALSE);
       }
   }}
-#line 897 "mn-mailbox-properties-dialog.c"
+#line 950 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 506 "mn-mailbox-properties-dialog.gob"
+#line 551 "mn-mailbox-properties-dialog.gob"
+void 
+mn_mailbox_properties_dialog_set_help_section (GtkWidget * page, const char * section)
+#line 956 "mn-mailbox-properties-dialog.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::set_help_section"
+#line 551 "mn-mailbox-properties-dialog.gob"
+	g_return_if_fail (page != NULL);
+#line 551 "mn-mailbox-properties-dialog.gob"
+	g_return_if_fail (GTK_IS_WIDGET (page));
+#line 551 "mn-mailbox-properties-dialog.gob"
+	g_return_if_fail (section != NULL);
+#line 965 "mn-mailbox-properties-dialog.c"
+{
+#line 554 "mn-mailbox-properties-dialog.gob"
+	
+    g_object_set_data_full(G_OBJECT(page), HELP_SECTION, g_strdup(section), g_free);
+  }}
+#line 971 "mn-mailbox-properties-dialog.c"
+#undef __GOB_FUNCTION__
+
+#line 558 "mn-mailbox-properties-dialog.gob"
 GtkWidget * 
 mn_mailbox_properties_dialog_new (GtkWindow * parent, MNMailbox * mailbox)
-#line 903 "mn-mailbox-properties-dialog.c"
+#line 977 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::new"
 {
-#line 508 "mn-mailbox-properties-dialog.gob"
+#line 560 "mn-mailbox-properties-dialog.gob"
 	
     return GTK_WIDGET(GET_NEW_VARG(MN_MAILBOX_PROPERTIES_DIALOG_PROP_DIALOG_PARENT(parent),
 				   MN_MAILBOX_PROPERTIES_DIALOG_PROP_MAILBOX(mailbox),
 				   NULL));
   }}
-#line 913 "mn-mailbox-properties-dialog.c"
+#line 987 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 516 "mn-mailbox-properties-dialog.gob"
+#line 568 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_type_changed_h (MNMailboxPropertiesDialog * self, GtkComboBox * combobox)
-#line 919 "mn-mailbox-properties-dialog.c"
+#line 993 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::type_changed_h"
-#line 516 "mn-mailbox-properties-dialog.gob"
+#line 568 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 516 "mn-mailbox-properties-dialog.gob"
+#line 568 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 926 "mn-mailbox-properties-dialog.c"
+#line 1000 "mn-mailbox-properties-dialog.c"
 {
-#line 518 "mn-mailbox-properties-dialog.gob"
+#line 570 "mn-mailbox-properties-dialog.gob"
 	
-    MNMailboxProperties *properties;
-    MNMailboxPropertiesClass *class;
-    char *markup;
-
-    properties = (MNMailboxProperties *) GTK_BIN(selfp->properties_event_box)->child;
-    if (properties)
+    if (selfp->active_properties)
       {
-	gtk_size_group_remove_widget(properties->label_size_group, selfp->mailbox_type_label);
-	gtk_size_group_remove_widget(properties->label_size_group, selfp->mailbox_name_label);
-	gtk_size_group_remove_widget(properties->entry_size_group, selfp->mailbox_name_entry);
-	gtk_size_group_remove_widget(properties->entry_size_group, selfp->delay_hbox);
-	gtk_size_group_remove_widget(properties->entry_button_size_group, selfp->mailbox_name_default_button);
-	gtk_size_group_remove_widget(properties->label_size_group, selfp->delay_label);
-	gtk_size_group_remove_widget(properties->entry_button_size_group, selfp->delay_default_button);
-	gtk_container_remove(GTK_CONTAINER(selfp->properties_event_box), GTK_WIDGET(properties));
+	mn_mailbox_properties_deactivate(selfp->active_properties);
+	gtk_size_group_remove_widget(selfp->active_properties->label_size_group, selfp->mailbox_type_label);
+	gtk_size_group_remove_widget(selfp->active_properties->label_size_group, selfp->mailbox_name_label);
+	gtk_size_group_remove_widget(selfp->active_properties->entry_size_group, selfp->mailbox_name_entry);
+	gtk_size_group_remove_widget(selfp->active_properties->entry_size_group, selfp->delay_hbox);
+	gtk_size_group_remove_widget(selfp->active_properties->entry_button_size_group, selfp->mailbox_name_default_button);
+	gtk_size_group_remove_widget(selfp->active_properties->label_size_group, selfp->delay_label);
+	gtk_size_group_remove_widget(selfp->active_properties->entry_button_size_group, selfp->delay_default_button);
+	g_object_unref(selfp->active_properties);
       }
 
-    properties = self_get_active_properties(self);
-    gtk_container_add(GTK_CONTAINER(selfp->properties_event_box), GTK_WIDGET(properties));
-    gtk_size_group_add_widget(properties->label_size_group, selfp->mailbox_type_label);
-    gtk_size_group_add_widget(properties->label_size_group, selfp->mailbox_name_label);
-    gtk_size_group_add_widget(properties->entry_size_group, selfp->mailbox_name_entry);
-    gtk_size_group_add_widget(properties->entry_size_group, selfp->delay_hbox);
-    gtk_size_group_add_widget(properties->entry_button_size_group, selfp->mailbox_name_default_button);
-    gtk_size_group_add_widget(properties->label_size_group, selfp->delay_label);
-    gtk_size_group_add_widget(properties->entry_button_size_group, selfp->delay_default_button);
-
-    class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties);
-
-    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", class->section_label ? class->section_label : class->combo_label);
-    gtk_label_set_markup(GTK_LABEL(selfp->type_section_label), markup);
-    g_free(markup);
+    selfp->active_properties = self_get_active_properties(self);
+    mn_mailbox_properties_activate(selfp->active_properties);
+    gtk_size_group_add_widget(selfp->active_properties->label_size_group, selfp->mailbox_type_label);
+    gtk_size_group_add_widget(selfp->active_properties->label_size_group, selfp->mailbox_name_label);
+    gtk_size_group_add_widget(selfp->active_properties->entry_size_group, selfp->mailbox_name_entry);
+    gtk_size_group_add_widget(selfp->active_properties->entry_size_group, selfp->delay_hbox);
+    gtk_size_group_add_widget(selfp->active_properties->entry_button_size_group, selfp->mailbox_name_default_button);
+    gtk_size_group_add_widget(selfp->active_properties->label_size_group, selfp->delay_label);
+    gtk_size_group_add_widget(selfp->active_properties->entry_button_size_group, selfp->delay_default_button);
 
     if (! selfp->mailbox)	/* mode is add */
-      selected_type = G_TYPE_FROM_INSTANCE(properties);
+      selected_type = G_OBJECT_TYPE(selfp->active_properties);
 
     self_update_complete(self);
     self_update_default_name(self);
     self_update_default_check_delay(self);
-
-    g_object_unref(properties);
   }}
-#line 972 "mn-mailbox-properties-dialog.c"
+#line 1034 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 562 "mn-mailbox-properties-dialog.gob"
+#line 602 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_name_changed_h (MNMailboxPropertiesDialog * self, GtkEditable * editable)
-#line 978 "mn-mailbox-properties-dialog.c"
+#line 1040 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::name_changed_h"
-#line 562 "mn-mailbox-properties-dialog.gob"
+#line 602 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 562 "mn-mailbox-properties-dialog.gob"
+#line 602 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 985 "mn-mailbox-properties-dialog.c"
+#line 1047 "mn-mailbox-properties-dialog.c"
 {
-#line 564 "mn-mailbox-properties-dialog.gob"
+#line 604 "mn-mailbox-properties-dialog.gob"
 	
     const char *name;
 
@@ -992,41 +1054,41 @@ mn_mailbox_properties_dialog_name_changed_h (MNMailboxPropertiesDialog * self, G
 
     gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->has_custom_name);
   }}
-#line 996 "mn-mailbox-properties-dialog.c"
+#line 1058 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 573 "mn-mailbox-properties-dialog.gob"
+#line 613 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_name_default_button_clicked_h (MNMailboxPropertiesDialog * self, GtkButton * button)
-#line 1002 "mn-mailbox-properties-dialog.c"
+#line 1064 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::name_default_button_clicked_h"
-#line 573 "mn-mailbox-properties-dialog.gob"
+#line 613 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 573 "mn-mailbox-properties-dialog.gob"
+#line 613 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 1009 "mn-mailbox-properties-dialog.c"
+#line 1071 "mn-mailbox-properties-dialog.c"
 {
-#line 575 "mn-mailbox-properties-dialog.gob"
+#line 615 "mn-mailbox-properties-dialog.gob"
 	
     self_update_default_name(self);
   }}
-#line 1015 "mn-mailbox-properties-dialog.c"
+#line 1077 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 579 "mn-mailbox-properties-dialog.gob"
+#line 619 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_delay_changed_h (MNMailboxPropertiesDialog * self, GtkEditable * editable)
-#line 1021 "mn-mailbox-properties-dialog.c"
+#line 1083 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::delay_changed_h"
-#line 579 "mn-mailbox-properties-dialog.gob"
+#line 619 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 579 "mn-mailbox-properties-dialog.gob"
+#line 619 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 1028 "mn-mailbox-properties-dialog.c"
+#line 1090 "mn-mailbox-properties-dialog.c"
 {
-#line 581 "mn-mailbox-properties-dialog.gob"
+#line 621 "mn-mailbox-properties-dialog.gob"
 	
     int minutes;
     int seconds;
@@ -1037,41 +1099,41 @@ mn_mailbox_properties_dialog_delay_changed_h (MNMailboxPropertiesDialog * self, 
     selfp->has_custom_check_delay = minutes * 60 + seconds != selfp->default_check_delay;
     gtk_widget_set_sensitive(selfp->delay_default_button, selfp->has_custom_check_delay);
   }}
-#line 1041 "mn-mailbox-properties-dialog.c"
+#line 1103 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 592 "mn-mailbox-properties-dialog.gob"
+#line 632 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_delay_default_button_clicked_h (MNMailboxPropertiesDialog * self, GtkButton * button)
-#line 1047 "mn-mailbox-properties-dialog.c"
+#line 1109 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::delay_default_button_clicked_h"
-#line 592 "mn-mailbox-properties-dialog.gob"
+#line 632 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 592 "mn-mailbox-properties-dialog.gob"
+#line 632 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 1054 "mn-mailbox-properties-dialog.c"
+#line 1116 "mn-mailbox-properties-dialog.c"
 {
-#line 594 "mn-mailbox-properties-dialog.gob"
+#line 634 "mn-mailbox-properties-dialog.gob"
 	
     self_update_default_check_delay(self);
   }}
-#line 1060 "mn-mailbox-properties-dialog.c"
+#line 1122 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 598 "mn-mailbox-properties-dialog.gob"
+#line 638 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_entry_activate_h (MNMailboxPropertiesDialog * self, GtkEntry * entry)
-#line 1066 "mn-mailbox-properties-dialog.c"
+#line 1128 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::entry_activate_h"
-#line 598 "mn-mailbox-properties-dialog.gob"
+#line 638 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 598 "mn-mailbox-properties-dialog.gob"
+#line 638 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 1073 "mn-mailbox-properties-dialog.c"
+#line 1135 "mn-mailbox-properties-dialog.c"
 {
-#line 600 "mn-mailbox-properties-dialog.gob"
+#line 640 "mn-mailbox-properties-dialog.gob"
 	
     if (GTK_WIDGET_IS_SENSITIVE(GTK_WINDOW(self)->default_widget))
       gtk_window_activate_default(GTK_WINDOW(self));
@@ -1086,6 +1148,7 @@ mn_mailbox_properties_dialog_entry_activate_h (MNMailboxPropertiesDialog * self,
 	g_assert(properties != NULL);
 
 	entries = g_slist_concat(g_slist_copy(selfp->entries), g_slist_copy(properties->entries));
+	g_object_unref(properties);
 
 	elem = g_slist_find(entries, entry);
 	g_assert(elem != NULL);
@@ -1112,5 +1175,5 @@ mn_mailbox_properties_dialog_entry_activate_h (MNMailboxPropertiesDialog * self,
 	  gtk_widget_grab_focus(next);
       }
   }}
-#line 1116 "mn-mailbox-properties-dialog.c"
+#line 1179 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox-properties-dialog.gob b/src/mn-mailbox-properties-dialog.gob
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -23,12 +24,15 @@ requires 2.0.14
 #include "mn-mailbox.h"
 %}
 
+%privateheader{
+#include "mn-mailbox-properties.h"
+%}
+
 %{
 #include "config.h"
 #include <glib/gi18n.h>
-#include "mn-mailbox-properties.h"
 #include "mn-autodetect-mailbox-properties.h"
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-system-vfs-mailbox-properties.h"
 #endif
 #if WITH_POP3
@@ -47,6 +51,8 @@ requires 2.0.14
 #include "mn-mailboxes.h"
 #include "mn-shell.h"
 
+#define HELP_SECTION "mn-mailbox-properties-help-section"
+
 enum {
   COLUMN_PROPERTIES,
   COLUMN_STOCK_ID,
@@ -96,6 +102,8 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
       g_value_set_object(VAL, selfp->mailbox);
     };
 
+  protected GtkWidget *notebook;
+  protected GtkWidget *general_vbox;
   private GtkWidget *mailbox_type_label;
   private GtkWidget *mailbox_type_combo;
   private GtkWidget *mailbox_name_label;
@@ -109,9 +117,6 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
   private GtkWidget *seconds_label;
   private GtkWidget *delay_default_button;
 
-  private GtkWidget *type_section_label;
-  private GtkWidget *properties_event_box;
-
   private GtkWidget *apply_button;
   private GtkWidget *accept_button;
 
@@ -125,12 +130,15 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 
   private GSList *entries destroywith g_slist_free;
 
+  private MNMailboxProperties *active_properties unrefwith g_object_unref;
+
   override (G:Object) GObject *
     constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
   {
     GObject *object;
     Self *self;
-    GtkCellRenderer *renderer;
+    GtkWidget *general_page;
+    GtkCellRenderer *renderer; 
     MNMailboxProperties *properties;
 
     object = PARENT_HANDLER(type, n_construct_properties, construct_params);
@@ -138,8 +146,10 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 
     mn_container_create_interface(GTK_CONTAINER(self),
 				  UIDIR G_DIR_SEPARATOR_S "mailbox-properties-dialog.glade",
-				  "vbox",
+				  "notebook",
 				  "mn_mailbox_properties_dialog_",
+				  "notebook", &self->notebook,
+				  "general_vbox", &self->general_vbox,
 				  "mailbox_type_label", &selfp->mailbox_type_label,
 				  "mailbox_type_combo", &selfp->mailbox_type_combo,
 				  "mailbox_name_label", &selfp->mailbox_name_label,
@@ -152,8 +162,6 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 				  "seconds_spin", &selfp->seconds_spin,
 				  "seconds_label", &selfp->seconds_label,
 				  "delay_default_button", &selfp->delay_default_button,
-				  "type_section_label", &selfp->type_section_label,
-				  "properties_event_box", &selfp->properties_event_box,
 				  NULL);
 
     gtk_window_set_resizable(GTK_WINDOW(self), FALSE);
@@ -167,15 +175,19 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 						selfp->seconds_spin,
 						NULL);
 
+    general_page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), 0);
+    g_assert(general_page != NULL);
+    self_set_help_section(general_page, "mailbox-properties-general");
+
     /* finish the type combo box */
 
     selfp->store = gtk_list_store_new(N_COLUMNS,
-				      GTK_TYPE_WIDGET,
+				      MN_TYPE_MAILBOX_PROPERTIES,
 				      G_TYPE_STRING,
 				      G_TYPE_STRING);
 
     self_add_type(self, MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES);
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     self_add_type(self, MN_TYPE_SYSTEM_VFS_MAILBOX_PROPERTIES);
 #endif
 #if WITH_POP3
@@ -193,7 +205,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 
     renderer = gtk_cell_renderer_pixbuf_new();
     g_object_set(renderer, "stock-size", GTK_ICON_SIZE_MENU, NULL);
-    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer, FALSE);;
+    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer, FALSE);
     gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer,
 				   "stock-id", COLUMN_STOCK_ID,
 				   NULL);
@@ -202,7 +214,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
     g_object_set(renderer, "xpad", 6, NULL);
     gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer, TRUE);
     gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->mailbox_type_combo), renderer,
-				   "markup", COLUMN_LABEL,
+				   "text", COLUMN_LABEL,
 				   NULL);
 
     gtk_combo_box_set_model(GTK_COMBO_BOX(selfp->mailbox_type_combo), GTK_TREE_MODEL(selfp->store));
@@ -250,10 +262,46 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 
     gtk_widget_grab_default(selfp->accept_button);
 
+    /*
+     * HIG chapter 3:
+     * "When opening a dialog, provide initial keyboard focus to the
+     * component that you expect users to operate first. This focus is
+     * especially important for users who must use a keyboard to
+     * navigate your application."
+     */
+    gtk_widget_grab_focus(selfp->mailbox_type_combo);
+
+    g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL);
+
     return object;
   }
 
   private void
+    response_h (GtkDialog *dialog, int response, gpointer user_data)
+  {
+    Self *self = SELF(dialog);
+
+    if (response == GTK_RESPONSE_HELP)
+      {
+	int page_number;
+	GtkWidget *page;
+	const char *section;
+
+	page_number = gtk_notebook_get_current_page(GTK_NOTEBOOK(self->notebook));
+
+	page = gtk_notebook_get_nth_page(GTK_NOTEBOOK(self->notebook), page_number);
+	g_assert(page != NULL);
+
+	section = g_object_get_data(G_OBJECT(page), HELP_SECTION);
+	g_assert(section != NULL);
+
+	mn_display_help(GTK_WINDOW(self), section);
+      }
+
+    /* other responses are handled by the client */
+  }
+
+  private void
     add_type (self, GType type (check != 0))
   {
     MNMailboxProperties *properties;
@@ -261,8 +309,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
     GtkTreeIter iter;
     GSList *l;
 
-    properties = g_object_new(type, NULL);
-    mn_gtk_object_ref_and_sink(GTK_OBJECT(properties));
+    properties = g_object_new(type, MN_MAILBOX_PROPERTIES_PROP_DIALOG(GTK_WIDGET(self)), NULL);
 
     p_class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties);
 
@@ -273,8 +320,6 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 		       COLUMN_LABEL, p_class->combo_label,
 		       -1);
 
-    gtk_widget_show(GTK_WIDGET(properties));
-
     g_object_connect(properties,
 		     "swapped-signal::notify::complete", self_update_complete, self,
 		     "swapped-signal::notify::default-name", self_update_default_name, self,
@@ -503,6 +548,13 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
       }
   }
 
+  protected void
+    set_help_section (Gtk:Widget *page (check null type),
+		      const char *section (check null))
+  {
+    g_object_set_data_full(G_OBJECT(page), HELP_SECTION, g_strdup(section), g_free);
+  }
+
   public GtkWidget *
     new (GtkWindow *parent, MNMailbox *mailbox)
   {
@@ -516,47 +568,35 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
   protected void
     type_changed_h (self, GtkComboBox *combobox)
   {
-    MNMailboxProperties *properties;
-    MNMailboxPropertiesClass *class;
-    char *markup;
-
-    properties = (MNMailboxProperties *) GTK_BIN(selfp->properties_event_box)->child;
-    if (properties)
+    if (selfp->active_properties)
       {
-	gtk_size_group_remove_widget(properties->label_size_group, selfp->mailbox_type_label);
-	gtk_size_group_remove_widget(properties->label_size_group, selfp->mailbox_name_label);
-	gtk_size_group_remove_widget(properties->entry_size_group, selfp->mailbox_name_entry);
-	gtk_size_group_remove_widget(properties->entry_size_group, selfp->delay_hbox);
-	gtk_size_group_remove_widget(properties->entry_button_size_group, selfp->mailbox_name_default_button);
-	gtk_size_group_remove_widget(properties->label_size_group, selfp->delay_label);
-	gtk_size_group_remove_widget(properties->entry_button_size_group, selfp->delay_default_button);
-	gtk_container_remove(GTK_CONTAINER(selfp->properties_event_box), GTK_WIDGET(properties));
+	mn_mailbox_properties_deactivate(selfp->active_properties);
+	gtk_size_group_remove_widget(selfp->active_properties->label_size_group, selfp->mailbox_type_label);
+	gtk_size_group_remove_widget(selfp->active_properties->label_size_group, selfp->mailbox_name_label);
+	gtk_size_group_remove_widget(selfp->active_properties->entry_size_group, selfp->mailbox_name_entry);
+	gtk_size_group_remove_widget(selfp->active_properties->entry_size_group, selfp->delay_hbox);
+	gtk_size_group_remove_widget(selfp->active_properties->entry_button_size_group, selfp->mailbox_name_default_button);
+	gtk_size_group_remove_widget(selfp->active_properties->label_size_group, selfp->delay_label);
+	gtk_size_group_remove_widget(selfp->active_properties->entry_button_size_group, selfp->delay_default_button);
+	g_object_unref(selfp->active_properties);
       }
 
-    properties = self_get_active_properties(self);
-    gtk_container_add(GTK_CONTAINER(selfp->properties_event_box), GTK_WIDGET(properties));
-    gtk_size_group_add_widget(properties->label_size_group, selfp->mailbox_type_label);
-    gtk_size_group_add_widget(properties->label_size_group, selfp->mailbox_name_label);
-    gtk_size_group_add_widget(properties->entry_size_group, selfp->mailbox_name_entry);
-    gtk_size_group_add_widget(properties->entry_size_group, selfp->delay_hbox);
-    gtk_size_group_add_widget(properties->entry_button_size_group, selfp->mailbox_name_default_button);
-    gtk_size_group_add_widget(properties->label_size_group, selfp->delay_label);
-    gtk_size_group_add_widget(properties->entry_button_size_group, selfp->delay_default_button);
-
-    class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties);
-
-    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", class->section_label ? class->section_label : class->combo_label);
-    gtk_label_set_markup(GTK_LABEL(selfp->type_section_label), markup);
-    g_free(markup);
+    selfp->active_properties = self_get_active_properties(self);
+    mn_mailbox_properties_activate(selfp->active_properties);
+    gtk_size_group_add_widget(selfp->active_properties->label_size_group, selfp->mailbox_type_label);
+    gtk_size_group_add_widget(selfp->active_properties->label_size_group, selfp->mailbox_name_label);
+    gtk_size_group_add_widget(selfp->active_properties->entry_size_group, selfp->mailbox_name_entry);
+    gtk_size_group_add_widget(selfp->active_properties->entry_size_group, selfp->delay_hbox);
+    gtk_size_group_add_widget(selfp->active_properties->entry_button_size_group, selfp->mailbox_name_default_button);
+    gtk_size_group_add_widget(selfp->active_properties->label_size_group, selfp->delay_label);
+    gtk_size_group_add_widget(selfp->active_properties->entry_button_size_group, selfp->delay_default_button);
 
     if (! selfp->mailbox)	/* mode is add */
-      selected_type = G_TYPE_FROM_INSTANCE(properties);
+      selected_type = G_OBJECT_TYPE(selfp->active_properties);
 
     self_update_complete(self);
     self_update_default_name(self);
     self_update_default_check_delay(self);
-
-    g_object_unref(properties);
   }
 
   protected void
@@ -611,6 +651,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 	g_assert(properties != NULL);
 
 	entries = g_slist_concat(g_slist_copy(selfp->entries), g_slist_copy(properties->entries));
+	g_object_unref(properties);
 
 	elem = g_slist_find(entries, entry);
 	g_assert(elem != NULL);
diff --git a/src/mn-mailbox-properties-dialog.h b/src/mn-mailbox-properties-dialog.h
@@ -39,6 +39,8 @@ typedef struct _MNMailboxPropertiesDialog MNMailboxPropertiesDialog;
 struct _MNMailboxPropertiesDialog {
 	MNDialog __parent__;
 	/*< private >*/
+	GtkWidget * notebook; /* protected */
+	GtkWidget * general_vbox; /* protected */
 	MNMailboxPropertiesDialogPrivate *_priv;
 };
 
diff --git a/src/mn-mailbox-properties-private.h b/src/mn-mailbox-properties-private.h
@@ -9,6 +9,12 @@
 extern "C" {
 #endif /* __cplusplus */
 
+struct _MNMailboxPropertiesPrivate {
+#line 49 "mn-mailbox-properties.gob"
+	GSList * general_sections;
+#line 16 "mn-mailbox-properties-private.h"
+};
+GtkWidget * 	mn_mailbox_properties_add_general_section	(MNMailboxProperties * self, const char * title);
 void 	mn_mailbox_properties_notify_complete	(MNMailboxProperties * self);
 void 	mn_mailbox_properties_notify_default_name	(MNMailboxProperties * self);
 void 	mn_mailbox_properties_notify_default_check_delay	(MNMailboxProperties * self);
diff --git a/src/mn-mailbox-properties.c b/src/mn-mailbox-properties.c
@@ -21,6 +21,14 @@
 #define ___GOB_LIKELY(expr) (expr)
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
+
+#line 27 "mn-mailbox-properties.gob"
+
+#include "config.h"
+#include "mn-util.h"
+#include "mn-mailbox-properties-dialog.h"
+
+#line 32 "mn-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_MAILBOX_PROPERTIES_CONST(x)
@@ -35,24 +43,31 @@ typedef MNMailboxProperties Self;
 typedef MNMailboxPropertiesClass 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_mailbox_properties_init (MNMailboxProperties * o) G_GNUC_UNUSED;
 static void mn_mailbox_properties_class_init (MNMailboxPropertiesClass * c) G_GNUC_UNUSED;
 static MNMailbox * ___real_mn_mailbox_properties_get_mailbox (MNMailboxProperties * self);
-static void mn_mailbox_properties_init (MNMailboxProperties * self) G_GNUC_UNUSED;
+static void ___6_mn_mailbox_properties_activate (MNMailboxProperties * properties) G_GNUC_UNUSED;
+static void ___7_mn_mailbox_properties_deactivate (MNMailboxProperties * properties) G_GNUC_UNUSED;
 
 enum {
 	PROP_0,
+	PROP_DIALOG,
 	PROP_COMPLETE,
 	PROP_DEFAULT_NAME,
 	PROP_DEFAULT_CHECK_DELAY
 };
 
 /* pointer to the class of our parent */
-static GtkVBoxClass *parent_class = NULL;
+static GObjectClass *parent_class = NULL;
 
 /* Short form macros */
+#define self_activate mn_mailbox_properties_activate
+#define self_deactivate mn_mailbox_properties_deactivate
 #define self_set_mailbox mn_mailbox_properties_set_mailbox
 #define self_get_mailbox mn_mailbox_properties_get_mailbox
+#define self_add_general_section mn_mailbox_properties_add_general_section
 #define self_notify_complete mn_mailbox_properties_notify_complete
 #define self_notify_default_name mn_mailbox_properties_notify_default_name
 #define self_notify_default_check_delay mn_mailbox_properties_notify_default_check_delay
@@ -75,7 +90,7 @@ mn_mailbox_properties_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (GTK_TYPE_VBOX, "MNMailboxProperties", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
+		type = g_type_register_static (G_TYPE_OBJECT, "MNMailboxProperties", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -106,15 +121,15 @@ ___dispose (GObject *obj_self)
 	MNMailboxProperties *self G_GNUC_UNUSED = MN_MAILBOX_PROPERTIES (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 35 "mn-mailbox-properties.gob"
+#line 43 "mn-mailbox-properties.gob"
 	if(self->label_size_group) { g_object_unref ((gpointer) self->label_size_group); self->label_size_group = NULL; }
-#line 112 "mn-mailbox-properties.c"
-#line 36 "mn-mailbox-properties.gob"
+#line 127 "mn-mailbox-properties.c"
+#line 44 "mn-mailbox-properties.gob"
 	if(self->entry_size_group) { g_object_unref ((gpointer) self->entry_size_group); self->entry_size_group = NULL; }
-#line 115 "mn-mailbox-properties.c"
-#line 37 "mn-mailbox-properties.gob"
+#line 130 "mn-mailbox-properties.c"
+#line 45 "mn-mailbox-properties.gob"
 	if(self->entry_button_size_group) { g_object_unref ((gpointer) self->entry_button_size_group); self->entry_button_size_group = NULL; }
-#line 118 "mn-mailbox-properties.c"
+#line 133 "mn-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -124,32 +139,70 @@ ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::finalize"
 	MNMailboxProperties *self G_GNUC_UNUSED = MN_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);
-#line 39 "mn-mailbox-properties.gob"
+#line 47 "mn-mailbox-properties.gob"
 	if(self->entries) { g_slist_free ((gpointer) self->entries); self->entries = NULL; }
-#line 132 "mn-mailbox-properties.c"
+#line 148 "mn-mailbox-properties.c"
+#line 49 "mn-mailbox-properties.gob"
+	if(self->_priv->general_sections) { mn_g_object_slist_free ((gpointer) self->_priv->general_sections); self->_priv->general_sections = NULL; }
+#line 151 "mn-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
 static void 
+mn_mailbox_properties_init (MNMailboxProperties * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_MAILBOX_PROPERTIES,MNMailboxPropertiesPrivate);
+#line 43 "mn-mailbox-properties.gob"
+	o->label_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+#line 162 "mn-mailbox-properties.c"
+#line 44 "mn-mailbox-properties.gob"
+	o->entry_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+#line 165 "mn-mailbox-properties.c"
+#line 45 "mn-mailbox-properties.gob"
+	o->entry_button_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+#line 168 "mn-mailbox-properties.c"
+}
+#undef __GOB_FUNCTION__
+static void 
 mn_mailbox_properties_class_init (MNMailboxPropertiesClass * c G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+	MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)c;
+
+	g_type_class_add_private(c,sizeof(MNMailboxPropertiesPrivate));
 
-	parent_class = g_type_class_ref (GTK_TYPE_VBOX);
+	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
+	c->activate = NULL;
+	c->deactivate = NULL;
 	c->set_mailbox = NULL;
-#line 65 "mn-mailbox-properties.gob"
+#line 80 "mn-mailbox-properties.gob"
 	c->get_mailbox = ___real_mn_mailbox_properties_get_mailbox;
-#line 147 "mn-mailbox-properties.c"
+#line 100 "mn-mailbox-properties.gob"
+	mn_mailbox_properties_class->activate = ___6_mn_mailbox_properties_activate;
+#line 110 "mn-mailbox-properties.gob"
+	mn_mailbox_properties_class->deactivate = ___7_mn_mailbox_properties_deactivate;
+#line 191 "mn-mailbox-properties.c"
 	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_pointer
+		("dialog" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_DIALOG,
+		param_spec);
 	param_spec = g_param_spec_boolean
 		("complete" /* name */,
 		 NULL /* nick */,
@@ -182,28 +235,35 @@ mn_mailbox_properties_class_init (MNMailboxPropertiesClass * c G_GNUC_UNUSED)
     }
 }
 #undef __GOB_FUNCTION__
-#line 71 "mn-mailbox-properties.gob"
-static void 
-mn_mailbox_properties_init (MNMailboxProperties * self G_GNUC_UNUSED)
-#line 189 "mn-mailbox-properties.c"
+
+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:Mailbox:Properties::set_property"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox:Properties::init"
-#line 35 "mn-mailbox-properties.gob"
-	self->label_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-#line 194 "mn-mailbox-properties.c"
-#line 36 "mn-mailbox-properties.gob"
-	self->entry_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-#line 197 "mn-mailbox-properties.c"
-#line 37 "mn-mailbox-properties.gob"
-	self->entry_button_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-#line 200 "mn-mailbox-properties.c"
- {
-#line 72 "mn-mailbox-properties.gob"
-
-    gtk_box_set_spacing(GTK_BOX(self), 6);
-  
-#line 206 "mn-mailbox-properties.c"
- }
+	MNMailboxProperties *self G_GNUC_UNUSED;
+
+	self = MN_MAILBOX_PROPERTIES (object);
+
+	switch (property_id) {
+	case PROP_DIALOG:
+		{
+#line 41 "mn-mailbox-properties.gob"
+self->dialog = g_value_get_pointer (VAL);
+#line 256 "mn-mailbox-properties.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__
 
@@ -219,23 +279,30 @@ ___object_get_property (GObject *object,
 	self = MN_MAILBOX_PROPERTIES (object);
 
 	switch (property_id) {
+	case PROP_DIALOG:
+		{
+#line 41 "mn-mailbox-properties.gob"
+g_value_set_pointer (VAL, self->dialog);
+#line 287 "mn-mailbox-properties.c"
+		}
+		break;
 	case PROP_COMPLETE:
 		{
-#line 42 "mn-mailbox-properties.gob"
+#line 52 "mn-mailbox-properties.gob"
  g_value_set_boolean(VAL, TRUE); 
-#line 227 "mn-mailbox-properties.c"
+#line 294 "mn-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_NAME:
 		{
-#line 45 "mn-mailbox-properties.gob"
+#line 55 "mn-mailbox-properties.gob"
  g_value_set_string(VAL, NULL); 
-#line 234 "mn-mailbox-properties.c"
+#line 301 "mn-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_CHECK_DELAY:
 		{
-#line 49 "mn-mailbox-properties.gob"
+#line 59 "mn-mailbox-properties.gob"
 
       GType mailbox_type;
       MNMailboxClass *class;
@@ -243,12 +310,11 @@ ___object_get_property (GObject *object,
       mailbox_type = mn_mailbox_get_type_from_name(SELF_GET_CLASS(self)->type);
       g_assert(mailbox_type != 0);
 
-      class = g_type_class_peek(mailbox_type);
-      g_assert(class != NULL);
-
+      class = g_type_class_ref(mailbox_type);
       g_value_set_int(VAL, class->default_check_delay);
+      g_type_class_unref(class);
     
-#line 252 "mn-mailbox-properties.c"
+#line 318 "mn-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -264,34 +330,69 @@ ___object_get_property (GObject *object,
 #undef __GOB_FUNCTION__
 
 
-#line 62 "mn-mailbox-properties.gob"
+
+#line 71 "mn-mailbox-properties.gob"
+void 
+mn_mailbox_properties_activate (MNMailboxProperties * self)
+#line 338 "mn-mailbox-properties.c"
+{
+	MNMailboxPropertiesClass *klass;
+#line 71 "mn-mailbox-properties.gob"
+	g_return_if_fail (self != NULL);
+#line 71 "mn-mailbox-properties.gob"
+	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
+#line 345 "mn-mailbox-properties.c"
+	klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self);
+
+	if(klass->activate)
+		(*klass->activate)(self);
+}
+
+#line 74 "mn-mailbox-properties.gob"
+void 
+mn_mailbox_properties_deactivate (MNMailboxProperties * self)
+#line 355 "mn-mailbox-properties.c"
+{
+	MNMailboxPropertiesClass *klass;
+#line 74 "mn-mailbox-properties.gob"
+	g_return_if_fail (self != NULL);
+#line 74 "mn-mailbox-properties.gob"
+	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
+#line 362 "mn-mailbox-properties.c"
+	klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self);
+
+	if(klass->deactivate)
+		(*klass->deactivate)(self);
+}
+
+#line 77 "mn-mailbox-properties.gob"
 void 
 mn_mailbox_properties_set_mailbox (MNMailboxProperties * self, MNMailbox * mailbox)
-#line 271 "mn-mailbox-properties.c"
+#line 372 "mn-mailbox-properties.c"
 {
 	MNMailboxPropertiesClass *klass;
-#line 62 "mn-mailbox-properties.gob"
+#line 77 "mn-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 62 "mn-mailbox-properties.gob"
+#line 77 "mn-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
-#line 278 "mn-mailbox-properties.c"
+#line 379 "mn-mailbox-properties.c"
 	klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self);
 
 	if(klass->set_mailbox)
 		(*klass->set_mailbox)(self,mailbox);
 }
 
-#line 65 "mn-mailbox-properties.gob"
+#line 80 "mn-mailbox-properties.gob"
 MNMailbox * 
 mn_mailbox_properties_get_mailbox (MNMailboxProperties * self)
-#line 288 "mn-mailbox-properties.c"
+#line 389 "mn-mailbox-properties.c"
 {
 	MNMailboxPropertiesClass *klass;
-#line 65 "mn-mailbox-properties.gob"
+#line 80 "mn-mailbox-properties.gob"
 	g_return_val_if_fail (self != NULL, (MNMailbox * )0);
-#line 65 "mn-mailbox-properties.gob"
+#line 80 "mn-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (MNMailbox * )0);
-#line 295 "mn-mailbox-properties.c"
+#line 396 "mn-mailbox-properties.c"
 	klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self);
 
 	if(klass->get_mailbox)
@@ -299,74 +400,146 @@ mn_mailbox_properties_get_mailbox (MNMailboxProperties * self)
 	else
 		return (MNMailbox * )(0);
 }
-#line 65 "mn-mailbox-properties.gob"
+#line 80 "mn-mailbox-properties.gob"
 static MNMailbox * 
 ___real_mn_mailbox_properties_get_mailbox (MNMailboxProperties * self G_GNUC_UNUSED)
-#line 306 "mn-mailbox-properties.c"
+#line 407 "mn-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::get_mailbox"
 {
-#line 67 "mn-mailbox-properties.gob"
+#line 82 "mn-mailbox-properties.gob"
 	
     return mn_mailbox_new(SELF_GET_CLASS(self)->type, NULL);
   }}
-#line 314 "mn-mailbox-properties.c"
+#line 415 "mn-mailbox-properties.c"
+#undef __GOB_FUNCTION__
+
+#line 86 "mn-mailbox-properties.gob"
+GtkWidget * 
+mn_mailbox_properties_add_general_section (MNMailboxProperties * self, const char * title)
+#line 421 "mn-mailbox-properties.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties::add_general_section"
+#line 86 "mn-mailbox-properties.gob"
+	g_return_val_if_fail (self != NULL, (GtkWidget * )0);
+#line 86 "mn-mailbox-properties.gob"
+	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (GtkWidget * )0);
+#line 86 "mn-mailbox-properties.gob"
+	g_return_val_if_fail (title != NULL, (GtkWidget * )0);
+#line 430 "mn-mailbox-properties.c"
+{
+#line 88 "mn-mailbox-properties.gob"
+	
+    GtkWidget *section;
+    GtkWidget *vbox;
+
+    section = mn_hig_section_new_with_box(title, NULL, &vbox);
+    mn_gtk_object_ref_and_sink(GTK_OBJECT(section));
+    gtk_widget_show(section);
+
+    selfp->general_sections = g_slist_append(selfp->general_sections, section);
+    return vbox;
+  }}
+#line 444 "mn-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
+#line 100 "mn-mailbox-properties.gob"
+static void 
+___6_mn_mailbox_properties_activate (MNMailboxProperties * properties G_GNUC_UNUSED)
+#line 450 "mn-mailbox-properties.c"
+#define PARENT_HANDLER(___properties) \
+	{ if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->activate) \
+		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->activate)(___properties); }
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties::activate"
+{
+#line 102 "mn-mailbox-properties.gob"
+	
+    Self *self = SELF(properties);
+    GSList *l;
 
-#line 76 "mn-mailbox-properties.gob"
+    MN_LIST_FOREACH(l, selfp->general_sections)
+      gtk_box_pack_start(GTK_BOX(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->general_vbox), l->data, FALSE, FALSE, 0);
+  }}
+#line 465 "mn-mailbox-properties.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 110 "mn-mailbox-properties.gob"
+static void 
+___7_mn_mailbox_properties_deactivate (MNMailboxProperties * properties G_GNUC_UNUSED)
+#line 472 "mn-mailbox-properties.c"
+#define PARENT_HANDLER(___properties) \
+	{ if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->deactivate) \
+		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->deactivate)(___properties); }
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties::deactivate"
+{
+#line 112 "mn-mailbox-properties.gob"
+	
+    Self *self = SELF(properties);
+    GSList *l;
+
+    MN_LIST_FOREACH(l, selfp->general_sections)
+      gtk_container_remove(GTK_CONTAINER(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->general_vbox), l->data);
+  }}
+#line 487 "mn-mailbox-properties.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 120 "mn-mailbox-properties.gob"
 void 
 mn_mailbox_properties_notify_complete (MNMailboxProperties * self)
-#line 321 "mn-mailbox-properties.c"
+#line 494 "mn-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::notify_complete"
-#line 76 "mn-mailbox-properties.gob"
+#line 120 "mn-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 76 "mn-mailbox-properties.gob"
+#line 120 "mn-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
-#line 328 "mn-mailbox-properties.c"
+#line 501 "mn-mailbox-properties.c"
 {
-#line 78 "mn-mailbox-properties.gob"
+#line 122 "mn-mailbox-properties.gob"
 	
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 334 "mn-mailbox-properties.c"
+#line 507 "mn-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 82 "mn-mailbox-properties.gob"
+#line 126 "mn-mailbox-properties.gob"
 void 
 mn_mailbox_properties_notify_default_name (MNMailboxProperties * self)
-#line 340 "mn-mailbox-properties.c"
+#line 513 "mn-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::notify_default_name"
-#line 82 "mn-mailbox-properties.gob"
+#line 126 "mn-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 82 "mn-mailbox-properties.gob"
+#line 126 "mn-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
-#line 347 "mn-mailbox-properties.c"
+#line 520 "mn-mailbox-properties.c"
 {
-#line 84 "mn-mailbox-properties.gob"
+#line 128 "mn-mailbox-properties.gob"
 	
     g_object_notify(G_OBJECT(self), "default-name");
   }}
-#line 353 "mn-mailbox-properties.c"
+#line 526 "mn-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 88 "mn-mailbox-properties.gob"
+#line 132 "mn-mailbox-properties.gob"
 void 
 mn_mailbox_properties_notify_default_check_delay (MNMailboxProperties * self)
-#line 359 "mn-mailbox-properties.c"
+#line 532 "mn-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::notify_default_check_delay"
-#line 88 "mn-mailbox-properties.gob"
+#line 132 "mn-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 88 "mn-mailbox-properties.gob"
+#line 132 "mn-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
-#line 366 "mn-mailbox-properties.c"
+#line 539 "mn-mailbox-properties.c"
 {
-#line 90 "mn-mailbox-properties.gob"
+#line 134 "mn-mailbox-properties.gob"
 	
     g_object_notify(G_OBJECT(self), "default-check-delay");
   }}
-#line 372 "mn-mailbox-properties.c"
+#line 545 "mn-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox-properties.gob b/src/mn-mailbox-properties.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,33 +12,42 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
-#include <stdarg.h>
 #include "mn-mailbox.h"
 %}
 
-class MN:Mailbox:Properties from Gtk:VBox (abstract)
+%{
+#include "config.h"
+#include "mn-util.h"
+#include "mn-mailbox-properties-dialog.h"
+%}
+
+class MN:Mailbox:Properties from G:Object (abstract)
 {
   classwide const char *type;
   classwide const char *stock_id;
   classwide const char *combo_label;
-  classwide const char *section_label;
   classwide gboolean no_check_delay_unless_complete;
 
+  protected GtkWidget *dialog;
+  property POINTER dialog (flags = CONSTRUCT_ONLY, link, type = GtkWidget *);
+
   protected GtkSizeGroup *label_size_group = {gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL)} unrefwith g_object_unref;
   protected GtkSizeGroup *entry_size_group = {gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL)} unrefwith g_object_unref;
   protected GtkSizeGroup *entry_button_size_group = {gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL)} unrefwith g_object_unref;
 
   protected GSList *entries destroywith g_slist_free;
 
+  private GSList *general_sections destroywith mn_g_object_slist_free;
+
   property BOOLEAN complete
     get { g_value_set_boolean(VAL, TRUE); };
 
@@ -53,13 +63,18 @@ class MN:Mailbox:Properties from Gtk:VBox (abstract)
       mailbox_type = mn_mailbox_get_type_from_name(SELF_GET_CLASS(self)->type);
       g_assert(mailbox_type != 0);
 
-      class = g_type_class_peek(mailbox_type);
-      g_assert(class != NULL);
-
+      class = g_type_class_ref(mailbox_type);
       g_value_set_int(VAL, class->default_check_delay);
+      g_type_class_unref(class);
     };
 
   virtual public void
+    activate (self);
+
+  virtual public void
+    deactivate (self);
+
+  virtual public void
     set_mailbox (self, MNMailbox *mailbox);
 
   virtual public MNMailbox *
@@ -68,9 +83,38 @@ class MN:Mailbox:Properties from Gtk:VBox (abstract)
     return mn_mailbox_new(SELF_GET_CLASS(self)->type, NULL);
   }
 
-  init (self)
+  protected GtkWidget *
+    add_general_section (self, const char *title (check null))
   {
-    gtk_box_set_spacing(GTK_BOX(self), 6);
+    GtkWidget *section;
+    GtkWidget *vbox;
+
+    section = mn_hig_section_new_with_box(title, NULL, &vbox);
+    mn_gtk_object_ref_and_sink(GTK_OBJECT(section));
+    gtk_widget_show(section);
+
+    selfp->general_sections = g_slist_append(selfp->general_sections, section);
+    return vbox;
+  }
+
+  override (MN:Mailbox:Properties) void
+    activate (MNMailboxProperties *properties)
+  {
+    Self *self = SELF(properties);
+    GSList *l;
+
+    MN_LIST_FOREACH(l, selfp->general_sections)
+      gtk_box_pack_start(GTK_BOX(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->general_vbox), l->data, FALSE, FALSE, 0);
+  }
+
+  override (MN:Mailbox:Properties) void
+    deactivate (MNMailboxProperties *properties)
+  {
+    Self *self = SELF(properties);
+    GSList *l;
+
+    MN_LIST_FOREACH(l, selfp->general_sections)
+      gtk_container_remove(GTK_CONTAINER(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->general_vbox), l->data);
   }
 
   protected void
diff --git a/src/mn-mailbox-properties.h b/src/mn-mailbox-properties.h
@@ -5,7 +5,6 @@
 
 
 #include <gtk/gtk.h>
-#include <stdarg.h>
 #include "mn-mailbox.h"
 
 #ifndef __MN_MAILBOX_PROPERTIES_H__
@@ -27,6 +26,9 @@ extern "C" {
 
 #define MN_MAILBOX_PROPERTIES_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_mailbox_properties_get_type(), MNMailboxPropertiesClass)
 
+/* Private structure type */
+typedef struct _MNMailboxPropertiesPrivate MNMailboxPropertiesPrivate;
+
 /*
  * Main object structure
  */
@@ -35,12 +37,14 @@ extern "C" {
 typedef struct _MNMailboxProperties MNMailboxProperties;
 #endif
 struct _MNMailboxProperties {
-	GtkVBox __parent__;
+	GObject __parent__;
 	/*< private >*/
+	GtkWidget * dialog; /* protected */
 	GtkSizeGroup * label_size_group; /* protected */
 	GtkSizeGroup * entry_size_group; /* protected */
 	GtkSizeGroup * entry_button_size_group; /* protected */
 	GSList * entries; /* protected */
+	MNMailboxPropertiesPrivate *_priv;
 };
 
 /*
@@ -48,13 +52,14 @@ struct _MNMailboxProperties {
  */
 typedef struct _MNMailboxPropertiesClass MNMailboxPropertiesClass;
 struct _MNMailboxPropertiesClass {
-	GtkVBoxClass __parent__;
+	GObjectClass __parent__;
+	void (* activate) (MNMailboxProperties * self);
+	void (* deactivate) (MNMailboxProperties * self);
 	void (* set_mailbox) (MNMailboxProperties * self, MNMailbox * mailbox);
 	MNMailbox * (* get_mailbox) (MNMailboxProperties * self);
 	const char * type;
 	const char * stock_id;
 	const char * combo_label;
-	const char * section_label;
 	gboolean no_check_delay_unless_complete;
 };
 
@@ -63,6 +68,8 @@ struct _MNMailboxPropertiesClass {
  * Public methods
  */
 GType	mn_mailbox_properties_get_type	(void);
+void 	mn_mailbox_properties_activate	(MNMailboxProperties * self);
+void 	mn_mailbox_properties_deactivate	(MNMailboxProperties * self);
 void 	mn_mailbox_properties_set_mailbox	(MNMailboxProperties * self,
 					MNMailbox * mailbox);
 MNMailbox * 	mn_mailbox_properties_get_mailbox	(MNMailboxProperties * self);
@@ -71,10 +78,14 @@ MNMailbox * 	mn_mailbox_properties_get_mailbox	(MNMailboxProperties * self);
  * Argument wrapping macros
  */
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_MAILBOX_PROPERTIES_PROP_DIALOG(arg)    	"dialog", __extension__ ({GtkWidget * z = (arg); z;})
+#define MN_MAILBOX_PROPERTIES_GET_PROP_DIALOG(arg)	"dialog", __extension__ ({GtkWidget * *z = (arg); z;})
 #define MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg)	"complete", __extension__ ({gboolean *z = (arg); z;})
 #define MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg)	"default_name", __extension__ ({gchar **z = (arg); z;})
 #define MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(arg)	"default_check_delay", __extension__ ({gint *z = (arg); z;})
 #else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_MAILBOX_PROPERTIES_PROP_DIALOG(arg)    	"dialog",(GtkWidget * )(arg)
+#define MN_MAILBOX_PROPERTIES_GET_PROP_DIALOG(arg)	"dialog",(GtkWidget * *)(arg)
 #define MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg)	"complete",(gboolean *)(arg)
 #define MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg)	"default_name",(gchar **)(arg)
 #define MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(arg)	"default_check_delay",(gint *)(arg)
diff --git a/src/mn-mailbox-view-private.h b/src/mn-mailbox-view-private.h
@@ -10,19 +10,19 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNMailboxViewPrivate {
-#line 76 "mn-mailbox-view.gob"
+#line 78 "mn-mailbox-view.gob"
 	GtkWidget * menu;
-#line 77 "mn-mailbox-view.gob"
+#line 79 "mn-mailbox-view.gob"
 	GtkWidget * properties_item;
-#line 78 "mn-mailbox-view.gob"
+#line 80 "mn-mailbox-view.gob"
 	GtkWidget * update_item;
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
 	GtkWidget * remove_item;
-#line 80 "mn-mailbox-view.gob"
+#line 82 "mn-mailbox-view.gob"
 	GtkWidget * cut_item;
-#line 81 "mn-mailbox-view.gob"
+#line 83 "mn-mailbox-view.gob"
 	GtkWidget * copy_item;
-#line 82 "mn-mailbox-view.gob"
+#line 84 "mn-mailbox-view.gob"
 	GtkWidget * paste_item;
 #line 28 "mn-mailbox-view-private.h"
 };
diff --git a/src/mn-mailbox-view.c b/src/mn-mailbox-view.c
@@ -20,7 +20,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-mailbox-view.gob"
+#line 26 "mn-mailbox-view.gob"
 
 #include "config.h"
 #include <string.h>
@@ -33,6 +33,7 @@
 #include "mn-conf.h"
 #include "mn-mailbox.h"
 #include "nautilus-cell-renderer-pixbuf-emblem.h"
+#include "mn-test-mailbox.h"
 
 enum
 {
@@ -69,7 +70,7 @@ static struct
 
 static GtkClipboard *global_clipboard;
 
-#line 73 "mn-mailbox-view.c"
+#line 74 "mn-mailbox-view.c"
 /* self casting macros */
 #define SELF(x) MN_MAILBOX_VIEW(x)
 #define SELF_CONST(x) MN_MAILBOX_VIEW_CONST(x)
@@ -247,16 +248,16 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 76 "mn-mailbox-view.gob"
+#line 78 "mn-mailbox-view.gob"
 	if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; }
-#line 253 "mn-mailbox-view.c"
+#line 254 "mn-mailbox-view.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 261 "mn-mailbox-view.gob"
+#line 263 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
-#line 260 "mn-mailbox-view.c"
+#line 261 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -322,24 +323,24 @@ mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
 
-#line 84 "mn-mailbox-view.gob"
+#line 86 "mn-mailbox-view.gob"
 	class->activate_update = ___real_mn_mailbox_view_activate_update;
-#line 106 "mn-mailbox-view.gob"
+#line 108 "mn-mailbox-view.gob"
 	class->activate_properties = ___real_mn_mailbox_view_activate_properties;
-#line 146 "mn-mailbox-view.gob"
+#line 148 "mn-mailbox-view.gob"
 	class->activate_add = ___real_mn_mailbox_view_activate_add;
-#line 161 "mn-mailbox-view.gob"
+#line 163 "mn-mailbox-view.gob"
 	class->activate_remove = ___real_mn_mailbox_view_activate_remove;
-#line 167 "mn-mailbox-view.gob"
+#line 169 "mn-mailbox-view.gob"
 	class->activate_cut = ___real_mn_mailbox_view_activate_cut;
-#line 174 "mn-mailbox-view.gob"
+#line 176 "mn-mailbox-view.gob"
 	class->activate_copy = ___real_mn_mailbox_view_activate_copy;
-#line 180 "mn-mailbox-view.gob"
+#line 182 "mn-mailbox-view.gob"
 	class->activate_paste = ___real_mn_mailbox_view_activate_paste;
-#line 340 "mn-mailbox-view.c"
+#line 341 "mn-mailbox-view.c"
 	g_object_class->finalize = ___finalize;
  {
-#line 262 "mn-mailbox-view.gob"
+#line 264 "mn-mailbox-view.gob"
 
     GtkBindingSet *binding_set;
     int i;
@@ -370,22 +371,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 374 "mn-mailbox-view.c"
+#line 375 "mn-mailbox-view.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 293 "mn-mailbox-view.gob"
+#line 295 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
-#line 381 "mn-mailbox-view.c"
+#line 382 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAILBOX_VIEW,MNMailboxViewPrivate);
-#line 76 "mn-mailbox-view.gob"
+#line 78 "mn-mailbox-view.gob"
 	self->_priv->menu = gtk_menu_new();
-#line 387 "mn-mailbox-view.c"
+#line 388 "mn-mailbox-view.c"
  {
-#line 294 "mn-mailbox-view.gob"
+#line 296 "mn-mailbox-view.gob"
 
     GtkMenuShell *shell;
     GtkWidget *add_item;
@@ -473,7 +474,13 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
     gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
 
     MN_LIST_FOREACH(l, mn_shell->mailboxes->list)
-      self_append(self, l->data);
+      {
+	MNMailbox *mailbox = l->data;
+
+	if (! MN_IS_TEST_MAILBOX(mailbox))
+	  self_append(self, l->data);
+      }
+
     self_update_sensitivity(self);
 
     mn_g_object_connect(self,
@@ -495,15 +502,15 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
 		     "signal::row-activated", self_row_activated_h, NULL,
 		     NULL);
   
-#line 499 "mn-mailbox-view.c"
+#line 506 "mn-mailbox-view.c"
  }
 }
 #undef __GOB_FUNCTION__
 
-#line 84 "mn-mailbox-view.gob"
+#line 86 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_update (MNMailboxView * self)
-#line 507 "mn-mailbox-view.c"
+#line 514 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -511,11 +518,11 @@ mn_mailbox_view_activate_update (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 84 "mn-mailbox-view.gob"
+#line 86 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 84 "mn-mailbox-view.gob"
+#line 86 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 519 "mn-mailbox-view.c"
+#line 526 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -528,31 +535,31 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 84 "mn-mailbox-view.gob"
+#line 86 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_update (MNMailboxView * self G_GNUC_UNUSED)
-#line 535 "mn-mailbox-view.c"
+#line 542 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_update"
 {
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
 
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_selected_foreach(selection, self_activate_update_cb, self);
   }}
-#line 546 "mn-mailbox-view.c"
+#line 553 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 93 "mn-mailbox-view.gob"
+#line 95 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_activate_update_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 552 "mn-mailbox-view.c"
+#line 559 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_update_cb"
 {
-#line 98 "mn-mailbox-view.gob"
+#line 100 "mn-mailbox-view.gob"
 	
     MNMailbox *mailbox;
 
@@ -560,13 +567,13 @@ mn_mailbox_view_activate_update_cb (GtkTreeModel * model, GtkTreePath * path, Gt
     mn_mailbox_check(mailbox);
     g_object_unref(mailbox);
   }}
-#line 564 "mn-mailbox-view.c"
+#line 571 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 106 "mn-mailbox-view.gob"
+#line 108 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_properties (MNMailboxView * self)
-#line 570 "mn-mailbox-view.c"
+#line 577 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -574,11 +581,11 @@ mn_mailbox_view_activate_properties (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 106 "mn-mailbox-view.gob"
+#line 108 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 106 "mn-mailbox-view.gob"
+#line 108 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 582 "mn-mailbox-view.c"
+#line 589 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -591,31 +598,31 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 106 "mn-mailbox-view.gob"
+#line 108 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_properties (MNMailboxView * self G_GNUC_UNUSED)
-#line 598 "mn-mailbox-view.c"
+#line 605 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties"
 {
-#line 108 "mn-mailbox-view.gob"
+#line 110 "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 609 "mn-mailbox-view.c"
+#line 616 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 115 "mn-mailbox-view.gob"
+#line 117 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 615 "mn-mailbox-view.c"
+#line 622 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties_cb"
 {
-#line 120 "mn-mailbox-view.gob"
+#line 122 "mn-mailbox-view.gob"
 	
     Self *self = data;
     MNMailbox *mailbox;
@@ -641,13 +648,13 @@ mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path
 
     g_object_unref(mailbox);
   }}
-#line 645 "mn-mailbox-view.c"
+#line 652 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 146 "mn-mailbox-view.gob"
+#line 148 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_add (MNMailboxView * self)
-#line 651 "mn-mailbox-view.c"
+#line 658 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -655,11 +662,11 @@ mn_mailbox_view_activate_add (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 146 "mn-mailbox-view.gob"
+#line 148 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 146 "mn-mailbox-view.gob"
+#line 148 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 663 "mn-mailbox-view.c"
+#line 670 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -672,14 +679,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 146 "mn-mailbox-view.gob"
+#line 148 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_add (MNMailboxView * self G_GNUC_UNUSED)
-#line 679 "mn-mailbox-view.c"
+#line 686 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_add"
 {
-#line 148 "mn-mailbox-view.gob"
+#line 150 "mn-mailbox-view.gob"
 	
     GtkWidget *dialog;
 
@@ -692,13 +699,13 @@ ___real_mn_mailbox_view_activate_add (MNMailboxView * self G_GNUC_UNUSED)
 
     gtk_widget_show(dialog);
   }}
-#line 696 "mn-mailbox-view.c"
+#line 703 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 161 "mn-mailbox-view.gob"
+#line 163 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_remove (MNMailboxView * self)
-#line 702 "mn-mailbox-view.c"
+#line 709 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -706,11 +713,11 @@ mn_mailbox_view_activate_remove (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 161 "mn-mailbox-view.gob"
+#line 163 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 161 "mn-mailbox-view.gob"
+#line 163 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 714 "mn-mailbox-view.c"
+#line 721 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -723,24 +730,24 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 161 "mn-mailbox-view.gob"
+#line 163 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_remove (MNMailboxView * self G_GNUC_UNUSED)
-#line 730 "mn-mailbox-view.c"
+#line 737 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_remove"
 {
-#line 163 "mn-mailbox-view.gob"
+#line 165 "mn-mailbox-view.gob"
 	
     self_remove_mailbox(self);
   }}
-#line 738 "mn-mailbox-view.c"
+#line 745 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 167 "mn-mailbox-view.gob"
+#line 169 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_cut (MNMailboxView * self)
-#line 744 "mn-mailbox-view.c"
+#line 751 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -748,11 +755,11 @@ mn_mailbox_view_activate_cut (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 167 "mn-mailbox-view.gob"
+#line 169 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 167 "mn-mailbox-view.gob"
+#line 169 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 756 "mn-mailbox-view.c"
+#line 763 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -765,25 +772,25 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 167 "mn-mailbox-view.gob"
+#line 169 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_cut (MNMailboxView * self G_GNUC_UNUSED)
-#line 772 "mn-mailbox-view.c"
+#line 779 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_cut"
 {
-#line 169 "mn-mailbox-view.gob"
+#line 171 "mn-mailbox-view.gob"
 	
     self_copy_mailbox(self);
     self_remove_mailbox(self);
   }}
-#line 781 "mn-mailbox-view.c"
+#line 788 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 174 "mn-mailbox-view.gob"
+#line 176 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_copy (MNMailboxView * self)
-#line 787 "mn-mailbox-view.c"
+#line 794 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -791,11 +798,11 @@ mn_mailbox_view_activate_copy (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 174 "mn-mailbox-view.gob"
+#line 176 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 174 "mn-mailbox-view.gob"
+#line 176 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 799 "mn-mailbox-view.c"
+#line 806 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -808,24 +815,24 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 174 "mn-mailbox-view.gob"
+#line 176 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_copy (MNMailboxView * self G_GNUC_UNUSED)
-#line 815 "mn-mailbox-view.c"
+#line 822 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_copy"
 {
-#line 176 "mn-mailbox-view.gob"
+#line 178 "mn-mailbox-view.gob"
 	
     self_copy_mailbox(self);
   }}
-#line 823 "mn-mailbox-view.c"
+#line 830 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 180 "mn-mailbox-view.gob"
+#line 182 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_paste (MNMailboxView * self)
-#line 829 "mn-mailbox-view.c"
+#line 836 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -833,11 +840,11 @@ mn_mailbox_view_activate_paste (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 180 "mn-mailbox-view.gob"
+#line 182 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 180 "mn-mailbox-view.gob"
+#line 182 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 841 "mn-mailbox-view.c"
+#line 848 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -850,14 +857,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 180 "mn-mailbox-view.gob"
+#line 182 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_paste (MNMailboxView * self G_GNUC_UNUSED)
-#line 857 "mn-mailbox-view.c"
+#line 864 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_paste"
 {
-#line 182 "mn-mailbox-view.gob"
+#line 184 "mn-mailbox-view.gob"
 	
     GtkSelectionData *data;
 
@@ -936,19 +943,19 @@ ___real_mn_mailbox_view_activate_paste (MNMailboxView * self G_GNUC_UNUSED)
 	gtk_selection_data_free(data);
       }
   }}
-#line 940 "mn-mailbox-view.c"
+#line 947 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
 
 
-#line 404 "mn-mailbox-view.gob"
+#line 412 "mn-mailbox-view.gob"
 static int 
 mn_mailbox_view_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data)
-#line 948 "mn-mailbox-view.c"
+#line 955 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::sort_cb"
 {
-#line 409 "mn-mailbox-view.gob"
+#line 417 "mn-mailbox-view.gob"
 	
     MNMailbox *mailbox_a;
     MNMailbox *mailbox_b;
@@ -964,17 +971,17 @@ mn_mailbox_view_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b,
 
     return cmp;
   }}
-#line 968 "mn-mailbox-view.c"
+#line 975 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 425 "mn-mailbox-view.gob"
+#line 433 "mn-mailbox-view.gob"
 static gboolean 
 mn_mailbox_view_search_equal_cb (GtkTreeModel * model, int column, const char * key, GtkTreeIter * iter, gpointer search_data)
-#line 974 "mn-mailbox-view.c"
+#line 981 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::search_equal_cb"
 {
-#line 431 "mn-mailbox-view.gob"
+#line 439 "mn-mailbox-view.gob"
 	
     gboolean status = TRUE;
     GValue value = { 0, };
@@ -1032,26 +1039,26 @@ mn_mailbox_view_search_equal_cb (GtkTreeModel * model, int column, const char * 
 
     return status;
   }}
-#line 1036 "mn-mailbox-view.c"
+#line 1043 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 489 "mn-mailbox-view.gob"
+#line 497 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox)
-#line 1042 "mn-mailbox-view.c"
+#line 1049 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::append"
-#line 489 "mn-mailbox-view.gob"
+#line 497 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 489 "mn-mailbox-view.gob"
+#line 497 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 489 "mn-mailbox-view.gob"
+#line 497 "mn-mailbox-view.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 489 "mn-mailbox-view.gob"
+#line 497 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1053 "mn-mailbox-view.c"
+#line 1060 "mn-mailbox-view.c"
 {
-#line 491 "mn-mailbox-view.gob"
+#line 499 "mn-mailbox-view.gob"
 	
     GtkTreeModel *model;
     GtkTreeIter iter;
@@ -1060,33 +1067,34 @@ mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox)
     gtk_list_store_append(GTK_LIST_STORE(model), &iter);
     self_update_iter(self, &iter, mailbox);
   }}
-#line 1064 "mn-mailbox-view.c"
+#line 1071 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 500 "mn-mailbox-view.gob"
+#line 508 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_mailbox_added_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
-#line 1070 "mn-mailbox-view.c"
+#line 1077 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_added_h"
 {
-#line 504 "mn-mailbox-view.gob"
+#line 512 "mn-mailbox-view.gob"
 	
     Self *self = user_data;
 
-    self_append(self, mailbox);
+    if (! MN_IS_TEST_MAILBOX(mailbox))
+      self_append(self, mailbox);
   }}
-#line 1080 "mn-mailbox-view.c"
+#line 1088 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 510 "mn-mailbox-view.gob"
+#line 519 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_mailbox_notify_h (MNMailboxes * mailboxes, MNMailbox * mailbox, GParamSpec * pspec, gpointer user_data)
-#line 1086 "mn-mailbox-view.c"
+#line 1094 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_notify_h"
 {
-#line 515 "mn-mailbox-view.gob"
+#line 524 "mn-mailbox-view.gob"
 	
     Self *self = user_data;
     GtkTreeIter iter;
@@ -1094,17 +1102,17 @@ mn_mailbox_view_mailbox_notify_h (MNMailboxes * mailboxes, MNMailbox * mailbox, 
     if (self_find_mailbox(self, mailbox, &iter))
       self_update_iter(self, &iter, mailbox);
   }}
-#line 1098 "mn-mailbox-view.c"
+#line 1106 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 523 "mn-mailbox-view.gob"
+#line 532 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
-#line 1104 "mn-mailbox-view.c"
+#line 1112 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_removed_h"
 {
-#line 527 "mn-mailbox-view.gob"
+#line 536 "mn-mailbox-view.gob"
 	
     Self *self = user_data;
     GtkTreeIter iter;
@@ -1117,28 +1125,28 @@ mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox,
 	gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
       }
   }}
-#line 1121 "mn-mailbox-view.c"
+#line 1129 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 540 "mn-mailbox-view.gob"
+#line 549 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox * mailbox)
-#line 1127 "mn-mailbox-view.c"
+#line 1135 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::update_iter"
-#line 540 "mn-mailbox-view.gob"
+#line 549 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 540 "mn-mailbox-view.gob"
+#line 549 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 540 "mn-mailbox-view.gob"
+#line 549 "mn-mailbox-view.gob"
 	g_return_if_fail (iter != NULL);
-#line 540 "mn-mailbox-view.gob"
+#line 549 "mn-mailbox-view.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 540 "mn-mailbox-view.gob"
+#line 549 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1140 "mn-mailbox-view.c"
+#line 1148 "mn-mailbox-view.c"
 {
-#line 544 "mn-mailbox-view.gob"
+#line 553 "mn-mailbox-view.gob"
 	
     GtkTreeModel *model;
     char *status;
@@ -1208,28 +1216,28 @@ mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox
     g_free(markup);
     g_free(text);
   }}
-#line 1212 "mn-mailbox-view.c"
+#line 1220 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 614 "mn-mailbox-view.gob"
+#line 623 "mn-mailbox-view.gob"
 static gboolean 
 mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTreeIter * iter)
-#line 1218 "mn-mailbox-view.c"
+#line 1226 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::find_mailbox"
-#line 614 "mn-mailbox-view.gob"
+#line 623 "mn-mailbox-view.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 614 "mn-mailbox-view.gob"
+#line 623 "mn-mailbox-view.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_VIEW (self), (gboolean )0);
-#line 614 "mn-mailbox-view.gob"
+#line 623 "mn-mailbox-view.gob"
 	g_return_val_if_fail (mailbox != NULL, (gboolean )0);
-#line 614 "mn-mailbox-view.gob"
+#line 623 "mn-mailbox-view.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (gboolean )0);
-#line 614 "mn-mailbox-view.gob"
+#line 623 "mn-mailbox-view.gob"
 	g_return_val_if_fail (iter != NULL, (gboolean )0);
-#line 1231 "mn-mailbox-view.c"
+#line 1239 "mn-mailbox-view.c"
 {
-#line 618 "mn-mailbox-view.gob"
+#line 627 "mn-mailbox-view.gob"
 	
     GtkTreeModel *model;
     GtkTreeIter our_iter;
@@ -1258,22 +1266,22 @@ mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTree
 
     return FALSE;
   }}
-#line 1262 "mn-mailbox-view.c"
+#line 1270 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 647 "mn-mailbox-view.gob"
+#line 656 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_update_sensitivity (MNMailboxView * self)
-#line 1268 "mn-mailbox-view.c"
+#line 1276 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::update_sensitivity"
-#line 647 "mn-mailbox-view.gob"
+#line 656 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 647 "mn-mailbox-view.gob"
+#line 656 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1275 "mn-mailbox-view.c"
+#line 1283 "mn-mailbox-view.c"
 {
-#line 649 "mn-mailbox-view.gob"
+#line 658 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
     SensitivityInfo info = { FALSE, FALSE };
@@ -1287,17 +1295,17 @@ mn_mailbox_view_update_sensitivity (MNMailboxView * self)
     gtk_widget_set_sensitive(selfp->cut_item, info.has_selection);
     gtk_widget_set_sensitive(selfp->copy_item, info.has_selection);
   }}
-#line 1291 "mn-mailbox-view.c"
+#line 1299 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 663 "mn-mailbox-view.gob"
+#line 672 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_update_sensitivity_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 1297 "mn-mailbox-view.c"
+#line 1305 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::update_sensitivity_cb"
 {
-#line 668 "mn-mailbox-view.gob"
+#line 677 "mn-mailbox-view.gob"
 	
     SensitivityInfo *info = data;
 
@@ -1312,39 +1320,39 @@ mn_mailbox_view_update_sensitivity_cb (GtkTreeModel * model, GtkTreePath * path,
 	g_object_unref(mailbox);
       }
   }}
-#line 1316 "mn-mailbox-view.c"
+#line 1324 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 683 "mn-mailbox-view.gob"
+#line 692 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_remove_mailbox (MNMailboxView * self)
-#line 1322 "mn-mailbox-view.c"
+#line 1330 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox"
-#line 683 "mn-mailbox-view.gob"
+#line 692 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 683 "mn-mailbox-view.gob"
+#line 692 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1329 "mn-mailbox-view.c"
+#line 1337 "mn-mailbox-view.c"
 {
-#line 685 "mn-mailbox-view.gob"
+#line 694 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
 
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_selected_foreach(selection, self_remove_mailbox_cb, NULL);
   }}
-#line 1338 "mn-mailbox-view.c"
+#line 1346 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 692 "mn-mailbox-view.gob"
+#line 701 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 1344 "mn-mailbox-view.c"
+#line 1352 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox_cb"
 {
-#line 697 "mn-mailbox-view.gob"
+#line 706 "mn-mailbox-view.gob"
 	
     MNMailbox *mailbox;
 
@@ -1352,22 +1360,22 @@ mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, Gtk
     mn_mailboxes_queue_remove(mn_shell->mailboxes, mailbox);
     g_object_unref(mailbox);
   }}
-#line 1356 "mn-mailbox-view.c"
+#line 1364 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 705 "mn-mailbox-view.gob"
+#line 714 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_copy_mailbox (MNMailboxView * self)
-#line 1362 "mn-mailbox-view.c"
+#line 1370 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox"
-#line 705 "mn-mailbox-view.gob"
+#line 714 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 705 "mn-mailbox-view.gob"
+#line 714 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1369 "mn-mailbox-view.c"
+#line 1377 "mn-mailbox-view.c"
 {
-#line 707 "mn-mailbox-view.gob"
+#line 716 "mn-mailbox-view.gob"
 	
     GSList *configurations = NULL;
     GtkTreeSelection *selection;
@@ -1387,17 +1395,17 @@ mn_mailbox_view_copy_mailbox (MNMailboxView * self)
 					 configurations);
     g_assert(status == TRUE);
   }}
-#line 1391 "mn-mailbox-view.c"
+#line 1399 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 727 "mn-mailbox-view.gob"
+#line 736 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_copy_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 1397 "mn-mailbox-view.c"
+#line 1405 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox_cb"
 {
-#line 732 "mn-mailbox-view.gob"
+#line 741 "mn-mailbox-view.gob"
 	
     GSList **configurations = data;
     MNMailbox *mailbox;
@@ -1406,17 +1414,17 @@ mn_mailbox_view_copy_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTr
     *configurations = g_slist_append(*configurations, mn_mailbox_get_configuration(mailbox));
     g_object_unref(mailbox);
   }}
-#line 1410 "mn-mailbox-view.c"
+#line 1418 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 741 "mn-mailbox-view.gob"
+#line 750 "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 1416 "mn-mailbox-view.c"
+#line 1424 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::get_clipboard_cb"
 {
-#line 746 "mn-mailbox-view.gob"
+#line 755 "mn-mailbox-view.gob"
 	
     const GSList *configurations = user_data_or_owner;
     unsigned char buf[sizeof(configurations)];
@@ -1428,59 +1436,57 @@ mn_mailbox_view_get_clipboard_cb (GtkClipboard * clipboard, GtkSelectionData * s
 			   buf,
 			   sizeof(buf));
   }}
-#line 1432 "mn-mailbox-view.c"
+#line 1440 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 758 "mn-mailbox-view.gob"
+#line 767 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_clear_clipboard_cb (GtkClipboard * clipboard, gpointer user_data_or_owner)
-#line 1438 "mn-mailbox-view.c"
+#line 1446 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::clear_clipboard_cb"
 {
-#line 760 "mn-mailbox-view.gob"
+#line 769 "mn-mailbox-view.gob"
 	
     GSList *configurations = user_data_or_owner;
 
     eel_g_slist_free_deep_custom(configurations, (GFunc) mn_mailbox_configuration_free, NULL);
   }}
-#line 1448 "mn-mailbox-view.c"
+#line 1456 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 766 "mn-mailbox-view.gob"
+#line 775 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_select_all (MNMailboxView * self)
-#line 1454 "mn-mailbox-view.c"
+#line 1462 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::select_all"
-#line 766 "mn-mailbox-view.gob"
+#line 775 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 766 "mn-mailbox-view.gob"
+#line 775 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1461 "mn-mailbox-view.c"
+#line 1469 "mn-mailbox-view.c"
 {
-#line 768 "mn-mailbox-view.gob"
+#line 777 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
 
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_select_all(selection);
   }}
-#line 1470 "mn-mailbox-view.c"
+#line 1478 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 775 "mn-mailbox-view.gob"
+#line 784 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 1476 "mn-mailbox-view.c"
+#line 1484 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::properties_add_response_h"
 {
-#line 779 "mn-mailbox-view.gob"
+#line 788 "mn-mailbox-view.gob"
 	
-    if (response == GTK_RESPONSE_HELP)
-      mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
-    else if (response == GTK_RESPONSE_CANCEL)
+    if (response == GTK_RESPONSE_CANCEL)
       gtk_widget_destroy(GTK_WIDGET(dialog));
     else if (response == GTK_RESPONSE_ACCEPT)
       {
@@ -1496,59 +1502,54 @@ mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpo
 	gtk_widget_destroy(GTK_WIDGET(dialog));
       }
   }}
-#line 1500 "mn-mailbox-view.c"
+#line 1506 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 799 "mn-mailbox-view.gob"
+#line 806 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_properties_edit_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 1506 "mn-mailbox-view.c"
+#line 1512 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::properties_edit_response_h"
 {
-#line 803 "mn-mailbox-view.gob"
+#line 810 "mn-mailbox-view.gob"
 	
-    if (response == GTK_RESPONSE_HELP)
-      mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
-    else
-      {
-	if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
-	  mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog));
-	if (response == GTK_RESPONSE_CANCEL || response == GTK_RESPONSE_OK)
-	  gtk_widget_destroy(GTK_WIDGET(dialog));
-      }
+    if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
+      mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog));
+    if (response == GTK_RESPONSE_CANCEL || response == GTK_RESPONSE_OK)
+      gtk_widget_destroy(GTK_WIDGET(dialog));
   }}
-#line 1522 "mn-mailbox-view.c"
+#line 1523 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 815 "mn-mailbox-view.gob"
+#line 817 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_popup_menu (MNMailboxView * self, unsigned int button, guint32 activate_time)
-#line 1528 "mn-mailbox-view.c"
+#line 1529 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu"
-#line 815 "mn-mailbox-view.gob"
+#line 817 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 815 "mn-mailbox-view.gob"
+#line 817 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1535 "mn-mailbox-view.c"
+#line 1536 "mn-mailbox-view.c"
 {
-#line 817 "mn-mailbox-view.gob"
+#line 819 "mn-mailbox-view.gob"
 	
     gtk_clipboard_request_targets(global_clipboard, self_popup_menu_targets_received_cb, self);
     gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, NULL, NULL, button, activate_time);
   }}
-#line 1542 "mn-mailbox-view.c"
+#line 1543 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 822 "mn-mailbox-view.gob"
+#line 824 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_popup_menu_targets_received_cb (GtkClipboard * clipboard, GdkAtom * atoms, int n_atoms, gpointer data)
-#line 1548 "mn-mailbox-view.c"
+#line 1549 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_targets_received_cb"
 {
-#line 827 "mn-mailbox-view.gob"
+#line 829 "mn-mailbox-view.gob"
 	
     Self *self = data;
     int i;
@@ -1564,17 +1565,17 @@ mn_mailbox_view_popup_menu_targets_received_cb (GtkClipboard * clipboard, GdkAto
 
     gtk_widget_set_sensitive(selfp->paste_item, can_paste);
   }}
-#line 1568 "mn-mailbox-view.c"
+#line 1569 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 843 "mn-mailbox-view.gob"
+#line 845 "mn-mailbox-view.gob"
 static gboolean 
 mn_mailbox_view_popup_menu_h (GtkWidget * widget, gpointer user_data)
-#line 1574 "mn-mailbox-view.c"
+#line 1575 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_h"
 {
-#line 845 "mn-mailbox-view.gob"
+#line 847 "mn-mailbox-view.gob"
 	
     Self *self = SELF(widget);
 
@@ -1583,51 +1584,51 @@ mn_mailbox_view_popup_menu_h (GtkWidget * widget, gpointer user_data)
 
     return TRUE;		/* a menu was activated */
   }}
-#line 1587 "mn-mailbox-view.c"
+#line 1588 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 854 "mn-mailbox-view.gob"
+#line 856 "mn-mailbox-view.gob"
 static gboolean 
 mn_mailbox_view_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 1593 "mn-mailbox-view.c"
+#line 1594 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::button_press_event_h"
 {
-#line 858 "mn-mailbox-view.gob"
+#line 860 "mn-mailbox-view.gob"
 	
     if (event->button == 3)
       self_popup_menu(SELF(widget), event->button, event->time);
 
     return FALSE;			/* propagate event */
   }}
-#line 1604 "mn-mailbox-view.c"
+#line 1605 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 865 "mn-mailbox-view.gob"
+#line 867 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_row_activated_h (GtkTreeView * treeview, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data)
-#line 1610 "mn-mailbox-view.c"
+#line 1611 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::row_activated_h"
 {
-#line 870 "mn-mailbox-view.gob"
+#line 872 "mn-mailbox-view.gob"
 	
     self_activate_properties(SELF(treeview));
   }}
-#line 1618 "mn-mailbox-view.c"
+#line 1619 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 874 "mn-mailbox-view.gob"
+#line 876 "mn-mailbox-view.gob"
 GtkWidget * 
 mn_mailbox_view_new (void)
-#line 1624 "mn-mailbox-view.c"
+#line 1625 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::new"
 {
-#line 876 "mn-mailbox-view.gob"
+#line 878 "mn-mailbox-view.gob"
 	
     g_return_val_if_fail(mn_shell != NULL, NULL);
     return GTK_WIDGET(GET_NEW);
   }}
-#line 1633 "mn-mailbox-view.c"
+#line 1634 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox-view.gob b/src/mn-mailbox-view.gob
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -34,6 +35,7 @@ requires 2.0.14
 #include "mn-conf.h"
 #include "mn-mailbox.h"
 #include "nautilus-cell-renderer-pixbuf-emblem.h"
+#include "mn-test-mailbox.h"
 
 enum
 {
@@ -378,7 +380,13 @@ class MN:Mailbox:View from Gtk:Tree:View
     gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
 
     MN_LIST_FOREACH(l, mn_shell->mailboxes->list)
-      self_append(self, l->data);
+      {
+	MNMailbox *mailbox = l->data;
+
+	if (! MN_IS_TEST_MAILBOX(mailbox))
+	  self_append(self, l->data);
+      }
+
     self_update_sensitivity(self);
 
     mn_g_object_connect(self,
@@ -504,7 +512,8 @@ class MN:Mailbox:View from Gtk:Tree:View
   {
     Self *self = user_data;
 
-    self_append(self, mailbox);
+    if (! MN_IS_TEST_MAILBOX(mailbox))
+      self_append(self, mailbox);
   }
 
   private void
@@ -777,9 +786,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 			       int response,
 			       gpointer user_data)
   {
-    if (response == GTK_RESPONSE_HELP)
-      mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
-    else if (response == GTK_RESPONSE_CANCEL)
+    if (response == GTK_RESPONSE_CANCEL)
       gtk_widget_destroy(GTK_WIDGET(dialog));
     else if (response == GTK_RESPONSE_ACCEPT)
       {
@@ -801,15 +808,10 @@ class MN:Mailbox:View from Gtk:Tree:View
 				int response,
 				gpointer user_data)
   {
-    if (response == GTK_RESPONSE_HELP)
-      mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
-    else
-      {
-	if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
-	  mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog));
-	if (response == GTK_RESPONSE_CANCEL || response == GTK_RESPONSE_OK)
-	  gtk_widget_destroy(GTK_WIDGET(dialog));
-      }
+    if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
+      mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog));
+    if (response == GTK_RESPONSE_CANCEL || response == GTK_RESPONSE_OK)
+      gtk_widget_destroy(GTK_WIDGET(dialog));
   }
 
   private void
diff --git a/src/mn-mailbox.c b/src/mn-mailbox.c
@@ -22,13 +22,13 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 51 "mn-mailbox.gob"
+#line 53 "mn-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include <libgnomevfs/gnome-vfs.h>
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-system-vfs-mailbox.h"
 #include "mn-custom-vfs-mailbox.h"
 #endif
@@ -85,11 +85,12 @@ static void ___real_mn_mailbox_added (MNMailbox * self);
 static void ___real_mn_mailbox_removed (MNMailbox * self);
 static void mn_mailbox_update_check_timeout (MNMailbox * self) G_GNUC_UNUSED;
 static void mn_mailbox_filter_messages (MNMailbox * self) G_GNUC_UNUSED;
+static gboolean mn_mailbox_clean_messages_marked_as_read_cb (const char * id, MNMessage * message, GHashTable * messages) G_GNUC_UNUSED;
 static gboolean mn_mailbox_compare_messages (GHashTable * messages1, GHashTable * messages2) G_GNUC_UNUSED;
 static void mn_mailbox_compare_messages_cb (const char * id, MNMessage * message, CompareMessagesInfo * info) G_GNUC_UNUSED;
 static void mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new) G_GNUC_UNUSED;
 static void mn_mailbox_init (MNMailbox * self) G_GNUC_UNUSED;
-static void ___14_mn_mailbox_finalize (GObject * object) G_GNUC_UNUSED;
+static void ___15_mn_mailbox_finalize (GObject * object) G_GNUC_UNUSED;
 static void mn_mailbox_notify_display_seen_messages_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
 static MNMailbox * mn_mailbox_parse_obsolete_uri (const char * uri) G_GNUC_UNUSED;
 static gboolean mn_mailbox_check_timeout_cb (gpointer data) G_GNUC_UNUSED;
@@ -97,8 +98,6 @@ static gboolean mn_mailbox_validate (MNMailbox * self, GError ** err) G_GNUC_UNU
 static void ___real_mn_mailbox_seal (MNMailbox * self);
 static MNMailbox * mn_mailbox_parse_uri (MNMailbox * self, const char * uri) G_GNUC_UNUSED;
 static void ___real_mn_mailbox_check (MNMailbox * self);
-static gboolean mn_mailbox_import_string (GValue * value, const char * str) G_GNUC_UNUSED;
-static char * mn_mailbox_export_string (const GValue * value) G_GNUC_UNUSED;
 
 /*
  * Signal connection wrapper macro shortcuts
@@ -155,6 +154,9 @@ enum {
 enum {
 	PROP_0,
 	PROP_NAME,
+	PROP_OPEN_COMMAND,
+	PROP_MARK_AS_READ_COMMAND,
+	PROP_MARK_AS_SPAM_COMMAND,
 	PROP_STOCK_ID,
 	PROP_FORMAT,
 	PROP_CHECK_DELAY,
@@ -181,6 +183,7 @@ static GObjectClass *parent_class = NULL;
 #define self_get_messages mn_mailbox_get_messages
 #define self_set_messages mn_mailbox_set_messages
 #define self_filter_messages mn_mailbox_filter_messages
+#define self_clean_messages_marked_as_read_cb mn_mailbox_clean_messages_marked_as_read_cb
 #define self_compare_messages mn_mailbox_compare_messages
 #define self_compare_messages_cb mn_mailbox_compare_messages_cb
 #define self_messages_changed mn_mailbox_messages_changed
@@ -204,8 +207,9 @@ static GObjectClass *parent_class = NULL;
 #define self_check mn_mailbox_check
 #define self_notice mn_mailbox_notice
 #define self_warning mn_mailbox_warning
-#define self_import_string mn_mailbox_import_string
-#define self_export_string mn_mailbox_export_string
+#define self_mark_as_read mn_mailbox_mark_as_read
+#define self_get_command mn_mailbox_get_command
+#define self_has_command mn_mailbox_has_command
 GType
 mn_mailbox_get_type (void)
 {
@@ -255,33 +259,45 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Mailbox::finalize"
 	MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 415 "mn-mailbox.gob"
-	___14_mn_mailbox_finalize(obj_self);
-#line 261 "mn-mailbox.c"
-#line 128 "mn-mailbox.gob"
-	if(self->runtime_name) { g_free ((gpointer) self->runtime_name); self->runtime_name = NULL; }
-#line 264 "mn-mailbox.c"
+#line 450 "mn-mailbox.gob"
+	___15_mn_mailbox_finalize(obj_self);
+#line 265 "mn-mailbox.c"
 #line 130 "mn-mailbox.gob"
+	if(self->runtime_name) { g_free ((gpointer) self->runtime_name); self->runtime_name = NULL; }
+#line 268 "mn-mailbox.c"
+#line 132 "mn-mailbox.gob"
 	if(self->name) { g_free ((gpointer) self->name); self->name = NULL; }
-#line 267 "mn-mailbox.c"
-#line 133 "mn-mailbox.gob"
+#line 271 "mn-mailbox.c"
+#line 135 "mn-mailbox.gob"
+	if(self->open_command) { g_free ((gpointer) self->open_command); self->open_command = NULL; }
+#line 274 "mn-mailbox.c"
+#line 138 "mn-mailbox.gob"
+	if(self->mark_as_read_command) { g_free ((gpointer) self->mark_as_read_command); self->mark_as_read_command = NULL; }
+#line 277 "mn-mailbox.c"
+#line 141 "mn-mailbox.gob"
+	if(self->mark_as_spam_command) { g_free ((gpointer) self->mark_as_spam_command); self->mark_as_spam_command = NULL; }
+#line 280 "mn-mailbox.c"
+#line 144 "mn-mailbox.gob"
 	if(self->stock_id) { g_free ((gpointer) self->stock_id); self->stock_id = NULL; }
-#line 270 "mn-mailbox.c"
-#line 136 "mn-mailbox.gob"
+#line 283 "mn-mailbox.c"
+#line 147 "mn-mailbox.gob"
 	if(self->format) { g_free ((gpointer) self->format); self->format = NULL; }
-#line 273 "mn-mailbox.c"
-#line 181 "mn-mailbox.gob"
+#line 286 "mn-mailbox.c"
+#line 192 "mn-mailbox.gob"
 	if(self->_priv->unfiltered_messages) { mn_g_object_slist_free ((gpointer) self->_priv->unfiltered_messages); self->_priv->unfiltered_messages = NULL; }
-#line 276 "mn-mailbox.c"
-#line 184 "mn-mailbox.gob"
+#line 289 "mn-mailbox.c"
+#line 194 "mn-mailbox.gob"
+	if(self->_priv->messages_marked_as_read) { g_hash_table_destroy ((gpointer) self->_priv->messages_marked_as_read); self->_priv->messages_marked_as_read = NULL; }
+#line 292 "mn-mailbox.c"
+#line 197 "mn-mailbox.gob"
 	if(self->messages) { mn_g_object_slist_free ((gpointer) self->messages); self->messages = NULL; }
-#line 279 "mn-mailbox.c"
-#line 203 "mn-mailbox.gob"
+#line 295 "mn-mailbox.c"
+#line 216 "mn-mailbox.gob"
 	if(self->_priv->messages_hash_table) { g_hash_table_destroy ((gpointer) self->_priv->messages_hash_table); self->_priv->messages_hash_table = NULL; }
-#line 282 "mn-mailbox.c"
-#line 329 "mn-mailbox.gob"
+#line 298 "mn-mailbox.c"
+#line 362 "mn-mailbox.gob"
 	if(self->error) { g_free ((gpointer) self->error); self->error = NULL; }
-#line 285 "mn-mailbox.c"
+#line 301 "mn-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -292,9 +308,9 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
 
 	g_type_class_add_private(c,sizeof(MNMailboxPrivate));
-#line 51 "mn-mailbox.gob"
+#line 53 "mn-mailbox.gob"
 	c->default_check_delay = -1;
-#line 298 "mn-mailbox.c"
+#line 314 "mn-mailbox.c"
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
@@ -324,24 +340,24 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_BOOLEAN);
 	if ___GOB_UNLIKELY(sizeof(gboolean ) != sizeof(gboolean ) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailbox.gob line 326: Type mismatch of \"messages_changed\" signal signature");
+		g_error("mn-mailbox.gob line 359: Type mismatch of \"messages_changed\" signal signature");
 	}
 
-#line 106 "mn-mailbox.gob"
+#line 108 "mn-mailbox.gob"
 	c->added = ___real_mn_mailbox_added;
-#line 122 "mn-mailbox.gob"
+#line 124 "mn-mailbox.gob"
 	c->removed = ___real_mn_mailbox_removed;
-#line 335 "mn-mailbox.c"
+#line 351 "mn-mailbox.c"
 	c->messages_changed = NULL;
-#line 415 "mn-mailbox.gob"
+#line 450 "mn-mailbox.gob"
 	g_object_class->finalize = ___finalize;
-#line 957 "mn-mailbox.gob"
+#line 916 "mn-mailbox.gob"
 	c->seal = ___real_mn_mailbox_seal;
-#line 341 "mn-mailbox.c"
+#line 357 "mn-mailbox.c"
 	c->parse_uri = NULL;
-#line 974 "mn-mailbox.gob"
+#line 933 "mn-mailbox.gob"
 	c->check = ___real_mn_mailbox_check;
-#line 345 "mn-mailbox.c"
+#line 361 "mn-mailbox.c"
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
     {
@@ -357,6 +373,33 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 		PROP_NAME,
 		param_spec);
 	param_spec = g_param_spec_string
+		("open_command" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_PERMANENT));
+	g_object_class_install_property (g_object_class,
+		PROP_OPEN_COMMAND,
+		param_spec);
+	param_spec = g_param_spec_string
+		("mark_as_read_command" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_PERMANENT));
+	g_object_class_install_property (g_object_class,
+		PROP_MARK_AS_READ_COMMAND,
+		param_spec);
+	param_spec = g_param_spec_string
+		("mark_as_spam_command" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_PERMANENT));
+	g_object_class_install_property (g_object_class,
+		PROP_MARK_AS_SPAM_COMMAND,
+		param_spec);
+	param_spec = g_param_spec_string
 		("stock_id" /* name */,
 		 NULL /* nick */,
 		 NULL /* blurb */,
@@ -414,22 +457,25 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
     }
 }
 #undef __GOB_FUNCTION__
-#line 410 "mn-mailbox.gob"
+#line 445 "mn-mailbox.gob"
 static void 
 mn_mailbox_init (MNMailbox * self G_GNUC_UNUSED)
-#line 421 "mn-mailbox.c"
+#line 464 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAILBOX,MNMailboxPrivate);
-#line 124 "mn-mailbox.gob"
+#line 126 "mn-mailbox.gob"
 	self->_priv->poll = TRUE;
-#line 427 "mn-mailbox.c"
+#line 470 "mn-mailbox.c"
+#line 194 "mn-mailbox.gob"
+	self->_priv->messages_marked_as_read = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref);
+#line 473 "mn-mailbox.c"
  {
-#line 411 "mn-mailbox.gob"
+#line 446 "mn-mailbox.gob"
 
     mn_g_object_gconf_notification_add_gdk_locked(self, MN_CONF_DISPLAY_SEEN_MAIL, self_notify_display_seen_messages_cb, self);
   
-#line 433 "mn-mailbox.c"
+#line 479 "mn-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -448,35 +494,56 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_NAME:
 		{
-#line 131 "mn-mailbox.gob"
+#line 133 "mn-mailbox.gob"
 { char *old = self->name; self->name = g_value_dup_string (VAL); g_free (old); }
-#line 454 "mn-mailbox.c"
+#line 500 "mn-mailbox.c"
+		}
+		break;
+	case PROP_OPEN_COMMAND:
+		{
+#line 136 "mn-mailbox.gob"
+{ char *old = self->open_command; self->open_command = g_value_dup_string (VAL); g_free (old); }
+#line 507 "mn-mailbox.c"
+		}
+		break;
+	case PROP_MARK_AS_READ_COMMAND:
+		{
+#line 139 "mn-mailbox.gob"
+{ char *old = self->mark_as_read_command; self->mark_as_read_command = g_value_dup_string (VAL); g_free (old); }
+#line 514 "mn-mailbox.c"
+		}
+		break;
+	case PROP_MARK_AS_SPAM_COMMAND:
+		{
+#line 142 "mn-mailbox.gob"
+{ char *old = self->mark_as_spam_command; self->mark_as_spam_command = g_value_dup_string (VAL); g_free (old); }
+#line 521 "mn-mailbox.c"
 		}
 		break;
 	case PROP_STOCK_ID:
 		{
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 { char *old = self->stock_id; self->stock_id = g_value_dup_string (VAL); g_free (old); }
-#line 461 "mn-mailbox.c"
+#line 528 "mn-mailbox.c"
 		}
 		break;
 	case PROP_FORMAT:
 		{
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 { char *old = self->format; self->format = g_value_dup_string (VAL); g_free (old); }
-#line 468 "mn-mailbox.c"
+#line 535 "mn-mailbox.c"
 		}
 		break;
 	case PROP_CHECK_DELAY:
 		{
-#line 144 "mn-mailbox.gob"
+#line 155 "mn-mailbox.gob"
 self->check_delay = g_value_get_int (VAL);
-#line 475 "mn-mailbox.c"
+#line 542 "mn-mailbox.c"
 		}
 		break;
 	case PROP_POLL:
 		{
-#line 151 "mn-mailbox.gob"
+#line 162 "mn-mailbox.gob"
 
       gboolean new_poll = g_value_get_boolean(VAL);
 
@@ -491,24 +558,24 @@ self->check_delay = g_value_get_int (VAL);
 	    self_update_check_timeout(self);
 	}
     
-#line 495 "mn-mailbox.c"
+#line 562 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MESSAGES:
 		{
-#line 192 "mn-mailbox.gob"
+#line 205 "mn-mailbox.gob"
 
       mn_g_object_slist_free(selfp->unfiltered_messages);
       selfp->unfiltered_messages = mn_g_object_slist_copy(g_value_get_pointer(VAL));
 
       self_filter_messages(self);
     
-#line 507 "mn-mailbox.c"
+#line 574 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 332 "mn-mailbox.gob"
+#line 365 "mn-mailbox.gob"
 
       g_free(self->error);
       self->error = g_value_dup_string(VAL);
@@ -517,7 +584,7 @@ self->check_delay = g_value_get_int (VAL);
       if (self->error)
 	self_set_messages(self, NULL);
     
-#line 521 "mn-mailbox.c"
+#line 588 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -546,57 +613,78 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_NAME:
 		{
-#line 131 "mn-mailbox.gob"
+#line 133 "mn-mailbox.gob"
 g_value_set_string (VAL, self->name);
-#line 552 "mn-mailbox.c"
+#line 619 "mn-mailbox.c"
+		}
+		break;
+	case PROP_OPEN_COMMAND:
+		{
+#line 136 "mn-mailbox.gob"
+g_value_set_string (VAL, self->open_command);
+#line 626 "mn-mailbox.c"
+		}
+		break;
+	case PROP_MARK_AS_READ_COMMAND:
+		{
+#line 139 "mn-mailbox.gob"
+g_value_set_string (VAL, self->mark_as_read_command);
+#line 633 "mn-mailbox.c"
+		}
+		break;
+	case PROP_MARK_AS_SPAM_COMMAND:
+		{
+#line 142 "mn-mailbox.gob"
+g_value_set_string (VAL, self->mark_as_spam_command);
+#line 640 "mn-mailbox.c"
 		}
 		break;
 	case PROP_STOCK_ID:
 		{
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 g_value_set_string (VAL, self->stock_id);
-#line 559 "mn-mailbox.c"
+#line 647 "mn-mailbox.c"
 		}
 		break;
 	case PROP_FORMAT:
 		{
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 g_value_set_string (VAL, self->format);
-#line 566 "mn-mailbox.c"
+#line 654 "mn-mailbox.c"
 		}
 		break;
 	case PROP_CHECK_DELAY:
 		{
-#line 144 "mn-mailbox.gob"
+#line 155 "mn-mailbox.gob"
 g_value_set_int (VAL, self->check_delay);
-#line 573 "mn-mailbox.c"
+#line 661 "mn-mailbox.c"
 		}
 		break;
 	case PROP_POLL:
 		{
-#line 166 "mn-mailbox.gob"
+#line 177 "mn-mailbox.gob"
 
       g_value_set_boolean(VAL, selfp->poll);
     
-#line 582 "mn-mailbox.c"
+#line 670 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MESSAGES:
 		{
-#line 199 "mn-mailbox.gob"
+#line 212 "mn-mailbox.gob"
 
       g_value_set_pointer(VAL, self->messages);
     
-#line 591 "mn-mailbox.c"
+#line 679 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 341 "mn-mailbox.gob"
+#line 374 "mn-mailbox.gob"
 
       g_value_set_string(VAL, self->error);
     
-#line 600 "mn-mailbox.c"
+#line 688 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -619,10 +707,10 @@ g_value_set_int (VAL, self->check_delay);
  * This signal gets emitted after the mailbox is removed from the
  * mailboxes list.
  **/
-#line 106 "mn-mailbox.gob"
+#line 108 "mn-mailbox.gob"
 void 
 mn_mailbox_added (MNMailbox * self)
-#line 626 "mn-mailbox.c"
+#line 714 "mn-mailbox.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -630,11 +718,11 @@ mn_mailbox_added (MNMailbox * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 106 "mn-mailbox.gob"
+#line 108 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 106 "mn-mailbox.gob"
+#line 108 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 638 "mn-mailbox.c"
+#line 726 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -647,21 +735,21 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 106 "mn-mailbox.gob"
+#line 108 "mn-mailbox.gob"
 static void 
 ___real_mn_mailbox_added (MNMailbox * self G_GNUC_UNUSED)
-#line 654 "mn-mailbox.c"
+#line 742 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::added"
 {
-#line 108 "mn-mailbox.gob"
+#line 110 "mn-mailbox.gob"
 	
     selfp->added = TRUE;
 
     self_update_check_timeout(self);
     self_check(self);
   }}
-#line 665 "mn-mailbox.c"
+#line 753 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -671,10 +759,10 @@ ___real_mn_mailbox_added (MNMailbox * self G_GNUC_UNUSED)
  * This signal gets emitted after the mailbox is removed from the
  * mailboxes list.
  **/
-#line 122 "mn-mailbox.gob"
+#line 124 "mn-mailbox.gob"
 void 
 mn_mailbox_removed (MNMailbox * self)
-#line 678 "mn-mailbox.c"
+#line 766 "mn-mailbox.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -682,11 +770,11 @@ mn_mailbox_removed (MNMailbox * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 122 "mn-mailbox.gob"
+#line 124 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 122 "mn-mailbox.gob"
+#line 124 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 690 "mn-mailbox.c"
+#line 778 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -699,111 +787,111 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 122 "mn-mailbox.gob"
+#line 124 "mn-mailbox.gob"
 static void 
 ___real_mn_mailbox_removed (MNMailbox * self G_GNUC_UNUSED)
-#line 706 "mn-mailbox.c"
+#line 794 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::removed"
 {
-#line 124 "mn-mailbox.gob"
+#line 126 "mn-mailbox.gob"
 	
     mn_locked_g_source_clear(&selfp->check_timeout_source);
   }}
-#line 714 "mn-mailbox.c"
+#line 802 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 gchar * 
 mn_mailbox_get_stock_id (MNMailbox * self)
-#line 720 "mn-mailbox.c"
+#line 808 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_stock_id"
 {
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 		gchar* val; g_object_get (G_OBJECT (self), "stock_id", &val, NULL); return val;
 }}
-#line 727 "mn-mailbox.c"
+#line 815 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 void 
 mn_mailbox_set_stock_id (MNMailbox * self, gchar * val)
-#line 733 "mn-mailbox.c"
+#line 821 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_stock_id"
 {
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "stock_id", val, NULL);
 }}
-#line 740 "mn-mailbox.c"
+#line 828 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 gchar * 
 mn_mailbox_get_format (MNMailbox * self)
-#line 746 "mn-mailbox.c"
+#line 834 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_format"
 {
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 		gchar* val; g_object_get (G_OBJECT (self), "format", &val, NULL); return val;
 }}
-#line 753 "mn-mailbox.c"
+#line 841 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 void 
 mn_mailbox_set_format (MNMailbox * self, gchar * val)
-#line 759 "mn-mailbox.c"
+#line 847 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_format"
 {
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "format", val, NULL);
 }}
-#line 766 "mn-mailbox.c"
+#line 854 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 166 "mn-mailbox.gob"
+#line 177 "mn-mailbox.gob"
 gboolean 
 mn_mailbox_get_poll (MNMailbox * self)
-#line 772 "mn-mailbox.c"
+#line 860 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_poll"
 {
-#line 149 "mn-mailbox.gob"
+#line 160 "mn-mailbox.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "poll", &val, NULL); return val;
 }}
-#line 779 "mn-mailbox.c"
+#line 867 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 151 "mn-mailbox.gob"
+#line 162 "mn-mailbox.gob"
 void 
 mn_mailbox_set_poll (MNMailbox * self, gboolean val)
-#line 785 "mn-mailbox.c"
+#line 873 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_poll"
 {
-#line 149 "mn-mailbox.gob"
+#line 160 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "poll", val, NULL);
 }}
-#line 792 "mn-mailbox.c"
+#line 880 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 170 "mn-mailbox.gob"
+#line 181 "mn-mailbox.gob"
 static void 
 mn_mailbox_update_check_timeout (MNMailbox * self)
-#line 798 "mn-mailbox.c"
+#line 886 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::update_check_timeout"
-#line 170 "mn-mailbox.gob"
+#line 181 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 170 "mn-mailbox.gob"
+#line 181 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 805 "mn-mailbox.c"
+#line 893 "mn-mailbox.c"
 {
-#line 172 "mn-mailbox.gob"
+#line 183 "mn-mailbox.gob"
 	
     g_assert(selfp->added == TRUE);
 
@@ -811,59 +899,61 @@ mn_mailbox_update_check_timeout (MNMailbox * self)
     if (selfp->poll && self->runtime_check_delay > 0)
       selfp->check_timeout_source = mn_g_timeout_add_gdk_locked(self->runtime_check_delay * 1000, self_check_timeout_cb, self);
   }}
-#line 815 "mn-mailbox.c"
+#line 903 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 199 "mn-mailbox.gob"
+#line 212 "mn-mailbox.gob"
 const GSList * 
 mn_mailbox_get_messages (MNMailbox * self)
-#line 821 "mn-mailbox.c"
+#line 909 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_messages"
 {
-#line 190 "mn-mailbox.gob"
+#line 203 "mn-mailbox.gob"
 		const GSList* val; g_object_get (G_OBJECT (self), "messages", &val, NULL); return val;
 }}
-#line 828 "mn-mailbox.c"
+#line 916 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 192 "mn-mailbox.gob"
+#line 205 "mn-mailbox.gob"
 void 
 mn_mailbox_set_messages (MNMailbox * self, const GSList * val)
-#line 834 "mn-mailbox.c"
+#line 922 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_messages"
 {
-#line 190 "mn-mailbox.gob"
+#line 203 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "messages", val, NULL);
 }}
-#line 841 "mn-mailbox.c"
+#line 929 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
  * mn_mailbox_filter_messages:
  * @self: the mailbox to act upon
  *
- * Apply the "seen mail" filter to @self->unfiltered_messages, and
- * store the resulting list in @self->messages. Additionally, if
- * @self->messages has changed, emit the "messages-changed" signal.
+ * Filter @self->unfiltered_messages with the "seen mail" filter and
+ * @selfp->messages_marked_as_read, and store the resulting list in
+ * @self->messages. Additionally, if @self->messages has changed,
+ * emit the "messages-changed" signal.
  **/
-#line 213 "mn-mailbox.gob"
+#line 227 "mn-mailbox.gob"
 static void 
 mn_mailbox_filter_messages (MNMailbox * self)
-#line 855 "mn-mailbox.c"
+#line 944 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::filter_messages"
-#line 213 "mn-mailbox.gob"
+#line 227 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 213 "mn-mailbox.gob"
+#line 227 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 862 "mn-mailbox.c"
+#line 951 "mn-mailbox.c"
 {
-#line 215 "mn-mailbox.gob"
+#line 229 "mn-mailbox.gob"
 	
     gboolean display_seen_mail;
     GSList *messages = NULL;
+    GHashTable *all_messages_hash_table;
     GHashTable *messages_hash_table;
     GSList *l;
     gboolean changed = FALSE;
@@ -874,6 +964,7 @@ mn_mailbox_filter_messages (MNMailbox * self)
     self->n_messages = 0;
     self->timestamp = 0;
 
+    all_messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
     messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
     display_seen_mail = eel_gconf_get_boolean(MN_CONF_DISPLAY_SEEN_MAIL);
 
@@ -881,7 +972,12 @@ mn_mailbox_filter_messages (MNMailbox * self)
       {
 	MNMessage *message = l->data;
 
-	if (display_seen_mail || message->error || (message->flags & MN_MESSAGE_NEW) != 0)
+	g_hash_table_replace(all_messages_hash_table, message->id, message);
+
+	if ((display_seen_mail
+	     || message->error
+	     || (message->flags & MN_MESSAGE_NEW) != 0)
+	    && ! g_hash_table_lookup(selfp->messages_marked_as_read, message->id))
 	  {
 	    self->n_messages++;
 	    if (message->sent_time > self->timestamp)
@@ -892,6 +988,10 @@ mn_mailbox_filter_messages (MNMailbox * self)
 	  }
       }
 
+    /* remove stale messages from messages_marked_as_read */
+    g_hash_table_foreach_remove(selfp->messages_marked_as_read, (GHRFunc) self_clean_messages_marked_as_read_cb, all_messages_hash_table);
+    g_hash_table_destroy(all_messages_hash_table);
+
     if (! messages)
       {
 	g_hash_table_destroy(messages_hash_table);
@@ -917,7 +1017,21 @@ mn_mailbox_filter_messages (MNMailbox * self)
     if (changed)
       self_messages_changed(self, has_new);
   }}
-#line 921 "mn-mailbox.c"
+#line 1021 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 297 "mn-mailbox.gob"
+static gboolean 
+mn_mailbox_clean_messages_marked_as_read_cb (const char * id, MNMessage * message, GHashTable * messages)
+#line 1027 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::clean_messages_marked_as_read_cb"
+{
+#line 301 "mn-mailbox.gob"
+	
+    return g_hash_table_lookup(messages, id) == NULL;
+  }}
+#line 1035 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -930,14 +1044,14 @@ mn_mailbox_filter_messages (MNMailbox * self)
  * Return value: %TRUE if @messages1 contains messages not present
  * in @messages2, %FALSE otherwise.
  **/
-#line 282 "mn-mailbox.gob"
+#line 315 "mn-mailbox.gob"
 static gboolean 
 mn_mailbox_compare_messages (GHashTable * messages1, GHashTable * messages2)
-#line 937 "mn-mailbox.c"
+#line 1051 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::compare_messages"
 {
-#line 284 "mn-mailbox.gob"
+#line 317 "mn-mailbox.gob"
 	
     if (messages1)
       {
@@ -957,28 +1071,28 @@ mn_mailbox_compare_messages (GHashTable * messages1, GHashTable * messages2)
     else
       return FALSE;
   }}
-#line 961 "mn-mailbox.c"
+#line 1075 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 304 "mn-mailbox.gob"
+#line 337 "mn-mailbox.gob"
 static void 
 mn_mailbox_compare_messages_cb (const char * id, MNMessage * message, CompareMessagesInfo * info)
-#line 967 "mn-mailbox.c"
+#line 1081 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::compare_messages_cb"
 {
-#line 308 "mn-mailbox.gob"
+#line 341 "mn-mailbox.gob"
 	
     if (! info->changed && ! g_hash_table_lookup(info->other, id))
       info->changed = TRUE;
   }}
-#line 976 "mn-mailbox.c"
+#line 1090 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 326 "mn-mailbox.gob"
+#line 359 "mn-mailbox.gob"
 static void 
 mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new)
-#line 982 "mn-mailbox.c"
+#line 1096 "mn-mailbox.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -986,11 +1100,11 @@ mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 326 "mn-mailbox.gob"
+#line 359 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 326 "mn-mailbox.gob"
+#line 359 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 994 "mn-mailbox.c"
+#line 1108 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -1009,19 +1123,19 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[1]);
 }
 
-#line 345 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
 void 
 mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
-#line 1016 "mn-mailbox.c"
+#line 1130 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_error"
-#line 345 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 345 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1023 "mn-mailbox.c"
+#line 1137 "mn-mailbox.c"
 {
-#line 347 "mn-mailbox.gob"
+#line 380 "mn-mailbox.gob"
 	
     va_list args;
     char *error = NULL;
@@ -1036,21 +1150,21 @@ 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 1040 "mn-mailbox.c"
+#line 1154 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 362 "mn-mailbox.gob"
+#line 395 "mn-mailbox.gob"
 void 
 mn_mailbox_init_types (void)
-#line 1046 "mn-mailbox.c"
+#line 1160 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::init_types"
 {
-#line 364 "mn-mailbox.gob"
+#line 397 "mn-mailbox.gob"
 	
     int i = 0;
 
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     /*
      * MNSystemVFSMailbox must be registered before
      * MNCustomVFSMailbox, because the latter's parse_uri() method
@@ -1073,48 +1187,50 @@ mn_mailbox_init_types (void)
 #endif
     mn_mailbox_types[i] = 0;
   }}
-#line 1077 "mn-mailbox.c"
+#line 1191 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 391 "mn-mailbox.gob"
+#line 424 "mn-mailbox.gob"
 GType 
 mn_mailbox_get_type_from_name (const char * type)
-#line 1083 "mn-mailbox.c"
+#line 1197 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_type_from_name"
 {
-#line 393 "mn-mailbox.gob"
+#line 426 "mn-mailbox.gob"
 	
     int i;
 
     for (i = 0; mn_mailbox_types[i]; i++)
       {
 	SelfClass *class;
+	gboolean found;
 
-	class = g_type_class_peek(mn_mailbox_types[i]);
-	g_assert(class != NULL);
+	class = g_type_class_ref(mn_mailbox_types[i]);
+	found = ! strcmp(class->type, type);
+	g_type_class_unref(class);
 
-	if (! strcmp(class->type, type))
+	if (found)
 	  return mn_mailbox_types[i];
       }
 
     return 0;
   }}
-#line 1104 "mn-mailbox.c"
+#line 1220 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
 
-#line 415 "mn-mailbox.gob"
+#line 450 "mn-mailbox.gob"
 static void 
-___14_mn_mailbox_finalize (GObject * object G_GNUC_UNUSED)
-#line 1111 "mn-mailbox.c"
+___15_mn_mailbox_finalize (GObject * object G_GNUC_UNUSED)
+#line 1227 "mn-mailbox.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::finalize"
 {
-#line 417 "mn-mailbox.gob"
+#line 452 "mn-mailbox.gob"
 	
     Self *self = SELF(object);
 
@@ -1128,37 +1244,37 @@ ___14_mn_mailbox_finalize (GObject * object G_GNUC_UNUSED)
 
     PARENT_HANDLER(object);
   }}
-#line 1132 "mn-mailbox.c"
+#line 1248 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 431 "mn-mailbox.gob"
+#line 466 "mn-mailbox.gob"
 static void 
 mn_mailbox_notify_display_seen_messages_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 1139 "mn-mailbox.c"
+#line 1255 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::notify_display_seen_messages_cb"
 {
-#line 436 "mn-mailbox.gob"
+#line 471 "mn-mailbox.gob"
 	
     Self *self = user_data;
 
     self_filter_messages(self);
   }}
-#line 1149 "mn-mailbox.c"
+#line 1265 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 442 "mn-mailbox.gob"
+#line 477 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new (const char * type, const char * first, ...)
-#line 1155 "mn-mailbox.c"
+#line 1271 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new"
-#line 442 "mn-mailbox.gob"
+#line 477 "mn-mailbox.gob"
 	g_return_val_if_fail (type != NULL, (MNMailbox * )0);
-#line 1160 "mn-mailbox.c"
+#line 1276 "mn-mailbox.c"
 {
-#line 444 "mn-mailbox.gob"
+#line 479 "mn-mailbox.gob"
 	
     va_list args;
     GType type_id;
@@ -1174,26 +1290,23 @@ mn_mailbox_new (const char * type, const char * first, ...)
 
     return SELF(object);
   }}
-#line 1178 "mn-mailbox.c"
+#line 1294 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 460 "mn-mailbox.gob"
+#line 495 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err)
-#line 1184 "mn-mailbox.c"
+#line 1300 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_xml_node"
-#line 460 "mn-mailbox.gob"
+#line 495 "mn-mailbox.gob"
 	g_return_val_if_fail (node != NULL, (MNMailbox * )0);
-#line 1189 "mn-mailbox.c"
+#line 1305 "mn-mailbox.c"
 {
-#line 462 "mn-mailbox.gob"
+#line 497 "mn-mailbox.gob"
 	
     char *type;
     Self *self = NULL;
-    GParamSpec **properties;
-    unsigned int n_properties;
-    int i;
 
     type = xmlGetProp(node, "type");
     if (! type)
@@ -1209,30 +1322,7 @@ mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err)
 	goto end;
       }
 
-    properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties);
-    for (i = 0; i < n_properties; i++)
-      if ((properties[i]->flags & MN_MAILBOX_PARAM_PERMANENT) != 0)
-	{
-	  char *content;
-
-	  content = xmlGetProp(node, g_param_spec_get_name(properties[i]));
-	  if (content)
-	    {
-	      GValue value = { 0, };
-
-	      g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
-
-	      if (self_import_string(&value, content))
-		g_object_set_property(G_OBJECT(self), g_param_spec_get_name(properties[i]), &value);
-	      else
-		g_warning(_("property \"%s\": unable to transform string \"%s\" into a value of type \"%s\""),
-			  g_param_spec_get_name(properties[i]), content, G_VALUE_TYPE_NAME(&value));
-
-	      g_value_unset(&value);
-	      g_free(content);
-	    }
-	}
-    g_free(properties);
+    mn_xml_import_properties(G_OBJECT(self), node);
 
     if (! self_validate(self, err))
       {
@@ -1244,146 +1334,96 @@ mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err)
     g_free(type);
     return self;
   }}
-#line 1248 "mn-mailbox.c"
+#line 1338 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 519 "mn-mailbox.gob"
+#line 528 "mn-mailbox.gob"
 xmlNode * 
 mn_mailbox_xml_node_new (MNMailbox * self)
-#line 1254 "mn-mailbox.c"
+#line 1344 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::xml_node_new"
-#line 519 "mn-mailbox.gob"
+#line 528 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (xmlNode * )0);
-#line 519 "mn-mailbox.gob"
+#line 528 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (xmlNode * )0);
-#line 1261 "mn-mailbox.c"
+#line 1351 "mn-mailbox.c"
 {
-#line 521 "mn-mailbox.gob"
+#line 530 "mn-mailbox.gob"
 	
     xmlNode *node;
-    GParamSpec **properties;
-    unsigned int n_properties;
-    int i;
 
     node = xmlNewNode(NULL, "mailbox");
     xmlSetProp(node, "type", SELF_GET_CLASS(self)->type);
-
-    properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties);
-    for (i = 0; i < n_properties; i++)
-      if ((properties[i]->flags & MN_MAILBOX_PARAM_PERMANENT) != 0)
-	{
-	  GValue value = { 0, };
-	  gboolean is_default;
-
-	  g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
-	  g_object_get_property(G_OBJECT(self), g_param_spec_get_name(properties[i]), &value);
-
-	  if ((properties[i]->flags & MN_MAILBOX_PARAM_IGNORE_CASE) != 0)
-	    {
-	      GValue default_value = { 0, };
-	      const char *str;
-	      const char *default_str;
-
-	      g_assert(G_IS_PARAM_SPEC_STRING(properties[i]));
-
-	      g_value_init(&default_value, G_TYPE_STRING);
-	      g_param_value_set_default(properties[i], &default_value);
-
-	      str = g_value_get_string(&value);
-	      default_str = g_value_get_string(&default_value);
-
-	      is_default = str && default_str && ! mn_utf8_strcasecmp(str, default_str);
-
-	      g_value_unset(&default_value);
-	    }
-	  else
-	    is_default = g_param_value_defaults(properties[i], &value);
-
-	  if (! is_default)
-	    {
-	      char *str;
-
-	      str = self_export_string(&value);
-	      xmlSetProp(node, g_param_spec_get_name(properties[i]), str);
-	      g_free(str);
-	    }
-
-	  g_value_unset(&value);
-	}
-    g_free(properties);
+    mn_xml_export_properties(G_OBJECT(self), node);
 
     return node;
   }}
-#line 1319 "mn-mailbox.c"
+#line 1363 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 577 "mn-mailbox.gob"
+#line 540 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_uri (const char * uri)
-#line 1325 "mn-mailbox.c"
+#line 1369 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_uri"
-#line 577 "mn-mailbox.gob"
+#line 540 "mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 1330 "mn-mailbox.c"
+#line 1374 "mn-mailbox.c"
 {
-#line 579 "mn-mailbox.gob"
+#line 542 "mn-mailbox.gob"
 	
     int i;
 
     for (i = 0; mn_mailbox_types[i]; i++)
       {
 	MNMailboxClass *class;
+	MNMailbox *mailbox;
 
-	class = g_type_class_peek(mn_mailbox_types[i]);
-	g_assert(class != NULL);
+	class = g_type_class_ref(mn_mailbox_types[i]);
+	mailbox = class->parse_uri ? class->parse_uri(NULL, uri) : NULL;
+	g_type_class_unref(class);
 
-	if (class->parse_uri)
-	  {
-	    MNMailbox *mailbox;
-
-	    mailbox = class->parse_uri(NULL, uri);
-	    if (mailbox)
-	      return mailbox;
-	  }
+	if (mailbox)
+	  return mailbox;
       }
 
     return NULL;
   }}
-#line 1355 "mn-mailbox.c"
+#line 1395 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 602 "mn-mailbox.gob"
+#line 561 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_configuration (MNMailboxConfiguration * config)
-#line 1361 "mn-mailbox.c"
+#line 1401 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_configuration"
-#line 602 "mn-mailbox.gob"
+#line 561 "mn-mailbox.gob"
 	g_return_val_if_fail (config != NULL, (MNMailbox * )0);
-#line 1366 "mn-mailbox.c"
+#line 1406 "mn-mailbox.c"
 {
-#line 604 "mn-mailbox.gob"
+#line 563 "mn-mailbox.gob"
 	
     return g_object_newv(config->type, config->n_parameters, config->parameters);
   }}
-#line 1372 "mn-mailbox.c"
+#line 1412 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 608 "mn-mailbox.gob"
+#line 567 "mn-mailbox.gob"
 MNMailboxConfiguration * 
 mn_mailbox_get_configuration (MNMailbox * self)
-#line 1378 "mn-mailbox.c"
+#line 1418 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_configuration"
-#line 608 "mn-mailbox.gob"
+#line 567 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxConfiguration * )0);
-#line 608 "mn-mailbox.gob"
+#line 567 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMailboxConfiguration * )0);
-#line 1385 "mn-mailbox.c"
+#line 1425 "mn-mailbox.c"
 {
-#line 610 "mn-mailbox.gob"
+#line 569 "mn-mailbox.gob"
 	
     GObject *object = G_OBJECT(self);
     GArray *parameters;
@@ -1416,20 +1456,20 @@ mn_mailbox_get_configuration (MNMailbox * self)
 
     return config;
   }}
-#line 1420 "mn-mailbox.c"
+#line 1460 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 643 "mn-mailbox.gob"
+#line 602 "mn-mailbox.gob"
 void 
 mn_mailbox_configuration_free (MNMailboxConfiguration * config)
-#line 1426 "mn-mailbox.c"
+#line 1466 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::configuration_free"
-#line 643 "mn-mailbox.gob"
+#line 602 "mn-mailbox.gob"
 	g_return_if_fail (config != NULL);
-#line 1431 "mn-mailbox.c"
+#line 1471 "mn-mailbox.c"
 {
-#line 645 "mn-mailbox.gob"
+#line 604 "mn-mailbox.gob"
 	
     int i;
 
@@ -1439,20 +1479,20 @@ mn_mailbox_configuration_free (MNMailboxConfiguration * config)
     g_free(config->parameters);
     g_free(config);
   }}
-#line 1443 "mn-mailbox.c"
+#line 1483 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 655 "mn-mailbox.gob"
+#line 614 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_obsolete_uri (const char * uri)
-#line 1449 "mn-mailbox.c"
+#line 1489 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_obsolete_uri"
-#line 655 "mn-mailbox.gob"
+#line 614 "mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 1454 "mn-mailbox.c"
+#line 1494 "mn-mailbox.c"
 {
-#line 657 "mn-mailbox.gob"
+#line 616 "mn-mailbox.gob"
 	
     char *real_uri;
     char *scheme;
@@ -1484,20 +1524,20 @@ mn_mailbox_new_from_obsolete_uri (const char * uri)
 
     return self;
   }}
-#line 1488 "mn-mailbox.c"
+#line 1528 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 689 "mn-mailbox.gob"
+#line 648 "mn-mailbox.gob"
 static MNMailbox * 
 mn_mailbox_parse_obsolete_uri (const char * uri)
-#line 1494 "mn-mailbox.c"
+#line 1534 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::parse_obsolete_uri"
-#line 689 "mn-mailbox.gob"
+#line 648 "mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 1499 "mn-mailbox.c"
+#line 1539 "mn-mailbox.c"
 {
-#line 691 "mn-mailbox.gob"
+#line 650 "mn-mailbox.gob"
 	
     int len;
     int buflen;
@@ -1717,17 +1757,17 @@ mn_mailbox_parse_obsolete_uri (const char * uri)
 
     return self;
   }}
-#line 1721 "mn-mailbox.c"
+#line 1761 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 911 "mn-mailbox.gob"
+#line 870 "mn-mailbox.gob"
 static gboolean 
 mn_mailbox_check_timeout_cb (gpointer data)
-#line 1727 "mn-mailbox.c"
+#line 1767 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::check_timeout_cb"
 {
-#line 913 "mn-mailbox.gob"
+#line 872 "mn-mailbox.gob"
 	
     Self *self = data;
 
@@ -1735,22 +1775,22 @@ mn_mailbox_check_timeout_cb (gpointer data)
 
     return TRUE;		/* continue */
   }}
-#line 1739 "mn-mailbox.c"
+#line 1779 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 921 "mn-mailbox.gob"
+#line 880 "mn-mailbox.gob"
 static gboolean 
 mn_mailbox_validate (MNMailbox * self, GError ** err)
-#line 1745 "mn-mailbox.c"
+#line 1785 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::validate"
-#line 921 "mn-mailbox.gob"
+#line 880 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 921 "mn-mailbox.gob"
+#line 880 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0);
-#line 1752 "mn-mailbox.c"
+#line 1792 "mn-mailbox.c"
 {
-#line 923 "mn-mailbox.gob"
+#line 882 "mn-mailbox.gob"
 	
     GParamSpec **properties;
     unsigned int n_properties;
@@ -1784,33 +1824,33 @@ mn_mailbox_validate (MNMailbox * self, GError ** err)
 
     return TRUE;
   }}
-#line 1788 "mn-mailbox.c"
+#line 1828 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 957 "mn-mailbox.gob"
+#line 916 "mn-mailbox.gob"
 void 
 mn_mailbox_seal (MNMailbox * self)
-#line 1794 "mn-mailbox.c"
+#line 1834 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 957 "mn-mailbox.gob"
+#line 916 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 957 "mn-mailbox.gob"
+#line 916 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1801 "mn-mailbox.c"
+#line 1841 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->seal)
 		(*klass->seal)(self);
 }
-#line 957 "mn-mailbox.gob"
+#line 916 "mn-mailbox.gob"
 static void 
 ___real_mn_mailbox_seal (MNMailbox * self G_GNUC_UNUSED)
-#line 1810 "mn-mailbox.c"
+#line 1850 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::seal"
 {
-#line 959 "mn-mailbox.gob"
+#line 918 "mn-mailbox.gob"
 	
     if (self->name)
       {
@@ -1822,20 +1862,20 @@ ___real_mn_mailbox_seal (MNMailbox * self G_GNUC_UNUSED)
       ? self->check_delay
       : SELF_GET_CLASS(self)->default_check_delay;
   }}
-#line 1826 "mn-mailbox.c"
+#line 1866 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 971 "mn-mailbox.gob"
+#line 930 "mn-mailbox.gob"
 static MNMailbox * 
 mn_mailbox_parse_uri (MNMailbox * self, const char * uri)
-#line 1832 "mn-mailbox.c"
+#line 1872 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 971 "mn-mailbox.gob"
+#line 930 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (MNMailbox * )0);
-#line 971 "mn-mailbox.gob"
+#line 930 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMailbox * )0);
-#line 1839 "mn-mailbox.c"
+#line 1879 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->parse_uri)
@@ -1844,51 +1884,51 @@ mn_mailbox_parse_uri (MNMailbox * self, const char * uri)
 		return (MNMailbox * )(0);
 }
 
-#line 974 "mn-mailbox.gob"
+#line 933 "mn-mailbox.gob"
 void 
 mn_mailbox_check (MNMailbox * self)
-#line 1851 "mn-mailbox.c"
+#line 1891 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 974 "mn-mailbox.gob"
+#line 933 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 974 "mn-mailbox.gob"
+#line 933 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1858 "mn-mailbox.c"
+#line 1898 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->check)
 		(*klass->check)(self);
 }
-#line 974 "mn-mailbox.gob"
+#line 933 "mn-mailbox.gob"
 static void 
 ___real_mn_mailbox_check (MNMailbox * self G_GNUC_UNUSED)
-#line 1867 "mn-mailbox.c"
+#line 1907 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::check"
 {
-#line 976 "mn-mailbox.gob"
+#line 935 "mn-mailbox.gob"
 	
     g_assert(selfp->added == TRUE);
   }}
-#line 1875 "mn-mailbox.c"
+#line 1915 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 980 "mn-mailbox.gob"
+#line 939 "mn-mailbox.gob"
 void 
 mn_mailbox_notice (MNMailbox * self, const char * format, ...)
-#line 1881 "mn-mailbox.c"
+#line 1921 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::notice"
-#line 980 "mn-mailbox.gob"
+#line 939 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 980 "mn-mailbox.gob"
+#line 939 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 980 "mn-mailbox.gob"
+#line 939 "mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 1890 "mn-mailbox.c"
+#line 1930 "mn-mailbox.c"
 {
-#line 982 "mn-mailbox.gob"
+#line 941 "mn-mailbox.gob"
 	
     va_list args;
     char *message;
@@ -1900,24 +1940,24 @@ mn_mailbox_notice (MNMailbox * self, const char * format, ...)
     mn_info("%s: %s", self->runtime_name, message);
     g_free(message);
   }}
-#line 1904 "mn-mailbox.c"
+#line 1944 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 994 "mn-mailbox.gob"
+#line 953 "mn-mailbox.gob"
 void 
 mn_mailbox_warning (MNMailbox * self, const char * format, ...)
-#line 1910 "mn-mailbox.c"
+#line 1950 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::warning"
-#line 994 "mn-mailbox.gob"
+#line 953 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 994 "mn-mailbox.gob"
+#line 953 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 994 "mn-mailbox.gob"
+#line 953 "mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 1919 "mn-mailbox.c"
+#line 1959 "mn-mailbox.c"
 {
-#line 996 "mn-mailbox.gob"
+#line 955 "mn-mailbox.gob"
 	
     va_list args;
     char *message;
@@ -1929,113 +1969,92 @@ mn_mailbox_warning (MNMailbox * self, const char * format, ...)
     g_warning("%s: %s", self->runtime_name, message);
     g_free(message);
   }}
-#line 1933 "mn-mailbox.c"
+#line 1973 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1008 "mn-mailbox.gob"
-static gboolean 
-mn_mailbox_import_string (GValue * value, const char * str)
-#line 1939 "mn-mailbox.c"
+#line 973 "mn-mailbox.gob"
+void 
+mn_mailbox_mark_as_read (gpointer _message)
+#line 1979 "mn-mailbox.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox::import_string"
-#line 1008 "mn-mailbox.gob"
-	g_return_val_if_fail (value != NULL, (gboolean )0);
-#line 1008 "mn-mailbox.gob"
-	g_return_val_if_fail (str != NULL, (gboolean )0);
-#line 1946 "mn-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Mailbox::mark_as_read"
 {
-#line 1010 "mn-mailbox.gob"
+#line 975 "mn-mailbox.gob"
 	
-    g_return_val_if_fail(G_IS_VALUE(value), FALSE);
+    MNMessage *message;
+    Self *self;
 
-    if (G_VALUE_HOLDS_BOOLEAN(value))
-      {
-	if (! strcmp(str, "false"))
-	  g_value_set_boolean(value, FALSE);
-	else if (! strcmp(str, "true"))
-	  g_value_set_boolean(value, TRUE);
-	else
-	  return FALSE;
-      }
-    else if (G_VALUE_HOLDS_INT(value))
-      {
-	int n;
-	char *endptr;
+    message = MN_MESSAGE(_message);
+    g_return_if_fail(message != NULL);
 
-	n = strtol(str, &endptr, 10);
-	if (*endptr == '\0')	/* successful conversion */
-	  g_value_set_int(value, n);
-	else
-	  return FALSE;
-      }
-    else if (G_VALUE_HOLDS_STRING(value))
-      g_value_set_string(value, str);
-    else if (G_VALUE_HOLDS_ENUM(value))
-      {
-	GEnumClass *enum_class;
-	GEnumValue *enum_value;
-	gboolean found;
+    self = message->mailbox;
+    g_assert(self != NULL);
 
-	enum_class = g_type_class_ref(G_VALUE_TYPE(value));
-	enum_value = g_enum_get_value_by_nick(enum_class, str);
+    g_hash_table_replace(selfp->messages_marked_as_read, message->id, g_object_ref(message));
 
-	if (enum_value)
-	  {
-	    g_value_set_enum(value, enum_value->value);
-	    found = TRUE;
-	  }
-	else
-	  found = FALSE;
+    self_filter_messages(self);
+  }}
+#line 1998 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
 
-	g_type_class_unref(enum_class);
+#line 990 "mn-mailbox.gob"
+char * 
+mn_mailbox_get_command (MNMailbox * self, const char * id)
+#line 2004 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::get_command"
+#line 990 "mn-mailbox.gob"
+	g_return_val_if_fail (self != NULL, (char * )0);
+#line 990 "mn-mailbox.gob"
+	g_return_val_if_fail (MN_IS_MAILBOX (self), (char * )0);
+#line 990 "mn-mailbox.gob"
+	g_return_val_if_fail (id != NULL, (char * )0);
+#line 2013 "mn-mailbox.c"
+{
+#line 992 "mn-mailbox.gob"
+	
+    char *prop;
+    char *command;
 
-	if (! found)
-	  return FALSE;
+    prop = g_strconcat(id, "-command", NULL);
+    g_object_get(self, prop, &command, NULL);
+    g_free(prop);
+
+    if (command && ! *command)
+      {
+	g_free(command);
+	return NULL;
       }
-    else
-      g_return_val_if_reached(FALSE);
 
-    return TRUE;
+    return command;
   }}
-#line 2001 "mn-mailbox.c"
+#line 2032 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1063 "mn-mailbox.gob"
-static char * 
-mn_mailbox_export_string (const GValue * value)
-#line 2007 "mn-mailbox.c"
+#line 1009 "mn-mailbox.gob"
+gboolean 
+mn_mailbox_has_command (MNMailbox * self, const char * id)
+#line 2038 "mn-mailbox.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox::export_string"
-#line 1063 "mn-mailbox.gob"
-	g_return_val_if_fail (value != NULL, (char * )0);
-#line 2012 "mn-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Mailbox::has_command"
+#line 1009 "mn-mailbox.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 1009 "mn-mailbox.gob"
+	g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0);
+#line 1009 "mn-mailbox.gob"
+	g_return_val_if_fail (id != NULL, (gboolean )0);
+#line 2047 "mn-mailbox.c"
 {
-#line 1065 "mn-mailbox.gob"
+#line 1011 "mn-mailbox.gob"
 	
-    char *str;
-
-    if (G_VALUE_HOLDS_BOOLEAN(value))
-      str = g_strdup(g_value_get_boolean(value) ? "true" : "false");
-    else if (G_VALUE_HOLDS_INT(value))
-      str = g_strdup_printf("%i", g_value_get_int(value));
-    else if (G_VALUE_HOLDS_STRING(value))
-      str = g_value_dup_string(value);
-    else if (G_VALUE_HOLDS_ENUM(value))
-      {
-	GEnumClass *enum_class;
-	GEnumValue *enum_value;
+    char *command;
+    gboolean has;
 
-	enum_class = g_type_class_ref(G_VALUE_TYPE(value));
-	enum_value = g_enum_get_value(enum_class, g_value_get_enum(value));
-	g_assert(enum_value != NULL);
-
-	str = g_strdup(enum_value->value_nick);
-	g_type_class_unref(enum_class);
-      }
-    else
-      g_return_val_if_reached(NULL);
+    command = self_get_command(self, id);
+    has = command != NULL;
+    g_free(command);
 
-    return str;
+    return has;
   }}
-#line 2041 "mn-mailbox.c"
+#line 2060 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox.gob b/src/mn-mailbox.gob
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -34,17 +35,18 @@ typedef struct _MNMailboxConfiguration MNMailboxConfiguration;
 
 %privateheader{
 #include "mn-locked-callback.h"
+#include "mn-xml.h"
 
 typedef enum
 {
   /* save to mailboxes.xml */
-  MN_MAILBOX_PARAM_PERMANENT	= 1 << (G_PARAM_USER_SHIFT + 0),
-
-  /* require a string property to be non-empty */
-  MN_MAILBOX_PARAM_REQUIRED	= 1 << (G_PARAM_USER_SHIFT + 1),
+  MN_MAILBOX_PARAM_PERMANENT	= MN_XML_PARAM_IMPORT_EXPORT,
 
   /* ignore the case of a string property when checking if it has the default value */
-  MN_MAILBOX_PARAM_IGNORE_CASE	= 1 << (G_PARAM_USER_SHIFT + 2)
+  MN_MAILBOX_PARAM_IGNORE_CASE	= MN_XML_PARAM_IGNORE_CASE,
+
+  /* require a string property to be non-empty */
+  MN_MAILBOX_PARAM_REQUIRED	= 1 << (MN_XML_PARAM_USER_SHIFT + 0),
 } MNMailboxParamFlags;
 %}
 
@@ -53,7 +55,7 @@ typedef enum
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include <libgnomevfs/gnome-vfs.h>
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-system-vfs-mailbox.h"
 #include "mn-custom-vfs-mailbox.h"
 #endif
@@ -130,6 +132,15 @@ class MN:Mailbox from G:Object (abstract)
   public char *name destroywith g_free;
   property STRING name (link, flags = MN_MAILBOX_PARAM_PERMANENT);
 
+  public char *open_command destroywith g_free;
+  property STRING open_command (link, flags = MN_MAILBOX_PARAM_PERMANENT);
+
+  public char *mark_as_read_command destroywith g_free;
+  property STRING mark_as_read_command (link, flags = MN_MAILBOX_PARAM_PERMANENT);
+
+  public char *mark_as_spam_command destroywith g_free;
+  property STRING mark_as_spam_command (link, flags = MN_MAILBOX_PARAM_PERMANENT);
+
   public char *stock_id destroywith g_free;
   property STRING stock_id (link, export);
 
@@ -180,6 +191,8 @@ class MN:Mailbox from G:Object (abstract)
   /* all unread (unseen and seen) messages */
   private GSList *unfiltered_messages destroywith mn_g_object_slist_free;
 
+  private GHashTable *messages_marked_as_read = {g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify) g_object_unref)} destroywith g_hash_table_destroy;
+
   /* unfiltered_messages after applying the "seen messages" filter */
   public GSList *messages destroywith mn_g_object_slist_free;
 
@@ -206,15 +219,17 @@ class MN:Mailbox from G:Object (abstract)
    * filter_messages:
    * @self: the mailbox to act upon
    *
-   * Apply the "seen mail" filter to @self->unfiltered_messages, and
-   * store the resulting list in @self->messages. Additionally, if
-   * @self->messages has changed, emit the "messages-changed" signal.
+   * Filter @self->unfiltered_messages with the "seen mail" filter and
+   * @selfp->messages_marked_as_read, and store the resulting list in
+   * @self->messages. Additionally, if @self->messages has changed,
+   * emit the "messages-changed" signal.
    **/
   private void
     filter_messages (self)
   {
     gboolean display_seen_mail;
     GSList *messages = NULL;
+    GHashTable *all_messages_hash_table;
     GHashTable *messages_hash_table;
     GSList *l;
     gboolean changed = FALSE;
@@ -225,6 +240,7 @@ class MN:Mailbox from G:Object (abstract)
     self->n_messages = 0;
     self->timestamp = 0;
 
+    all_messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
     messages_hash_table = g_hash_table_new(g_str_hash, g_str_equal);
     display_seen_mail = eel_gconf_get_boolean(MN_CONF_DISPLAY_SEEN_MAIL);
 
@@ -232,7 +248,12 @@ class MN:Mailbox from G:Object (abstract)
       {
 	MNMessage *message = l->data;
 
-	if (display_seen_mail || message->error || (message->flags & MN_MESSAGE_NEW) != 0)
+	g_hash_table_replace(all_messages_hash_table, message->id, message);
+
+	if ((display_seen_mail
+	     || message->error
+	     || (message->flags & MN_MESSAGE_NEW) != 0)
+	    && ! g_hash_table_lookup(selfp->messages_marked_as_read, message->id))
 	  {
 	    self->n_messages++;
 	    if (message->sent_time > self->timestamp)
@@ -243,6 +264,10 @@ class MN:Mailbox from G:Object (abstract)
 	  }
       }
 
+    /* remove stale messages from messages_marked_as_read */
+    g_hash_table_foreach_remove(selfp->messages_marked_as_read, (GHRFunc) self_clean_messages_marked_as_read_cb, all_messages_hash_table);
+    g_hash_table_destroy(all_messages_hash_table);
+
     if (! messages)
       {
 	g_hash_table_destroy(messages_hash_table);
@@ -269,6 +294,14 @@ class MN:Mailbox from G:Object (abstract)
       self_messages_changed(self, has_new);
   }
 
+  private gboolean
+    clean_messages_marked_as_read_cb (const char *id,
+				      MNMessage *message,
+				      GHashTable *messages)
+  {
+    return g_hash_table_lookup(messages, id) == NULL;
+  }
+
   /**
    * compare_messages:
    * @messages1: a %GHashTable containing %MNMessage objects
@@ -364,7 +397,7 @@ class MN:Mailbox from G:Object (abstract)
   {
     int i = 0;
 
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     /*
      * MNSystemVFSMailbox must be registered before
      * MNCustomVFSMailbox, because the latter's parse_uri() method
@@ -396,11 +429,13 @@ class MN:Mailbox from G:Object (abstract)
     for (i = 0; mn_mailbox_types[i]; i++)
       {
 	SelfClass *class;
+	gboolean found;
 
-	class = g_type_class_peek(mn_mailbox_types[i]);
-	g_assert(class != NULL);
+	class = g_type_class_ref(mn_mailbox_types[i]);
+	found = ! strcmp(class->type, type);
+	g_type_class_unref(class);
 
-	if (! strcmp(class->type, type))
+	if (found)
 	  return mn_mailbox_types[i];
       }
 
@@ -462,9 +497,6 @@ class MN:Mailbox from G:Object (abstract)
   {
     char *type;
     Self *self = NULL;
-    GParamSpec **properties;
-    unsigned int n_properties;
-    int i;
 
     type = xmlGetProp(node, "type");
     if (! type)
@@ -480,30 +512,7 @@ class MN:Mailbox from G:Object (abstract)
 	goto end;
       }
 
-    properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties);
-    for (i = 0; i < n_properties; i++)
-      if ((properties[i]->flags & MN_MAILBOX_PARAM_PERMANENT) != 0)
-	{
-	  char *content;
-
-	  content = xmlGetProp(node, g_param_spec_get_name(properties[i]));
-	  if (content)
-	    {
-	      GValue value = { 0, };
-
-	      g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
-
-	      if (self_import_string(&value, content))
-		g_object_set_property(G_OBJECT(self), g_param_spec_get_name(properties[i]), &value);
-	      else
-		g_warning(_("property \"%s\": unable to transform string \"%s\" into a value of type \"%s\""),
-			  g_param_spec_get_name(properties[i]), content, G_VALUE_TYPE_NAME(&value));
-
-	      g_value_unset(&value);
-	      g_free(content);
-	    }
-	}
-    g_free(properties);
+    mn_xml_import_properties(G_OBJECT(self), node);
 
     if (! self_validate(self, err))
       {
@@ -520,56 +529,10 @@ class MN:Mailbox from G:Object (abstract)
     xml_node_new (self)
   {
     xmlNode *node;
-    GParamSpec **properties;
-    unsigned int n_properties;
-    int i;
 
     node = xmlNewNode(NULL, "mailbox");
     xmlSetProp(node, "type", SELF_GET_CLASS(self)->type);
-
-    properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties);
-    for (i = 0; i < n_properties; i++)
-      if ((properties[i]->flags & MN_MAILBOX_PARAM_PERMANENT) != 0)
-	{
-	  GValue value = { 0, };
-	  gboolean is_default;
-
-	  g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
-	  g_object_get_property(G_OBJECT(self), g_param_spec_get_name(properties[i]), &value);
-
-	  if ((properties[i]->flags & MN_MAILBOX_PARAM_IGNORE_CASE) != 0)
-	    {
-	      GValue default_value = { 0, };
-	      const char *str;
-	      const char *default_str;
-
-	      g_assert(G_IS_PARAM_SPEC_STRING(properties[i]));
-
-	      g_value_init(&default_value, G_TYPE_STRING);
-	      g_param_value_set_default(properties[i], &default_value);
-
-	      str = g_value_get_string(&value);
-	      default_str = g_value_get_string(&default_value);
-
-	      is_default = str && default_str && ! mn_utf8_strcasecmp(str, default_str);
-
-	      g_value_unset(&default_value);
-	    }
-	  else
-	    is_default = g_param_value_defaults(properties[i], &value);
-
-	  if (! is_default)
-	    {
-	      char *str;
-
-	      str = self_export_string(&value);
-	      xmlSetProp(node, g_param_spec_get_name(properties[i]), str);
-	      g_free(str);
-	    }
-
-	  g_value_unset(&value);
-	}
-    g_free(properties);
+    mn_xml_export_properties(G_OBJECT(self), node);
 
     return node;
   }
@@ -582,18 +545,14 @@ class MN:Mailbox from G:Object (abstract)
     for (i = 0; mn_mailbox_types[i]; i++)
       {
 	MNMailboxClass *class;
+	MNMailbox *mailbox;
 
-	class = g_type_class_peek(mn_mailbox_types[i]);
-	g_assert(class != NULL);
-
-	if (class->parse_uri)
-	  {
-	    MNMailbox *mailbox;
+	class = g_type_class_ref(mn_mailbox_types[i]);
+	mailbox = class->parse_uri ? class->parse_uri(NULL, uri) : NULL;
+	g_type_class_unref(class);
 
-	    mailbox = class->parse_uri(NULL, uri);
-	    if (mailbox)
-	      return mailbox;
-	  }
+	if (mailbox)
+	  return mailbox;
       }
 
     return NULL;
@@ -1005,87 +964,58 @@ class MN:Mailbox from G:Object (abstract)
     g_free(message);
   }
 
-  private gboolean
-    import_string (GValue *value (check null), const char *str (check null))
+  /*
+   * There can be a slight (or large if polling is in effect) delay
+   * between marking a message as read and having the next mail check
+   * catch the change. This function is used to conceal the delay from
+   * the user.
+   */
+  public void
+    mark_as_read (gpointer _message) /* cannot include mn-message.h */
   {
-    g_return_val_if_fail(G_IS_VALUE(value), FALSE);
+    MNMessage *message;
+    Self *self;
 
-    if (G_VALUE_HOLDS_BOOLEAN(value))
-      {
-	if (! strcmp(str, "false"))
-	  g_value_set_boolean(value, FALSE);
-	else if (! strcmp(str, "true"))
-	  g_value_set_boolean(value, TRUE);
-	else
-	  return FALSE;
-      }
-    else if (G_VALUE_HOLDS_INT(value))
-      {
-	int n;
-	char *endptr;
+    message = MN_MESSAGE(_message);
+    g_return_if_fail(message != NULL);
 
-	n = strtol(str, &endptr, 10);
-	if (*endptr == '\0')	/* successful conversion */
-	  g_value_set_int(value, n);
-	else
-	  return FALSE;
-      }
-    else if (G_VALUE_HOLDS_STRING(value))
-      g_value_set_string(value, str);
-    else if (G_VALUE_HOLDS_ENUM(value))
-      {
-	GEnumClass *enum_class;
-	GEnumValue *enum_value;
-	gboolean found;
+    self = message->mailbox;
+    g_assert(self != NULL);
 
-	enum_class = g_type_class_ref(G_VALUE_TYPE(value));
-	enum_value = g_enum_get_value_by_nick(enum_class, str);
+    g_hash_table_replace(selfp->messages_marked_as_read, message->id, g_object_ref(message));
 
-	if (enum_value)
-	  {
-	    g_value_set_enum(value, enum_value->value);
-	    found = TRUE;
-	  }
-	else
-	  found = FALSE;
+    self_filter_messages(self);
+  }
 
-	g_type_class_unref(enum_class);
+  public char *
+    get_command (self, const char *id (check null))
+  {
+    char *prop;
+    char *command;
+
+    prop = g_strconcat(id, "-command", NULL);
+    g_object_get(self, prop, &command, NULL);
+    g_free(prop);
 
-	if (! found)
-	  return FALSE;
+    if (command && ! *command)
+      {
+	g_free(command);
+	return NULL;
       }
-    else
-      g_return_val_if_reached(FALSE);
 
-    return TRUE;
+    return command;
   }
 
-  private char *
-    export_string (const GValue *value (check null))
+  public gboolean
+    has_command (self, const char *id (check null))
   {
-    char *str;
-
-    if (G_VALUE_HOLDS_BOOLEAN(value))
-      str = g_strdup(g_value_get_boolean(value) ? "true" : "false");
-    else if (G_VALUE_HOLDS_INT(value))
-      str = g_strdup_printf("%i", g_value_get_int(value));
-    else if (G_VALUE_HOLDS_STRING(value))
-      str = g_value_dup_string(value);
-    else if (G_VALUE_HOLDS_ENUM(value))
-      {
-	GEnumClass *enum_class;
-	GEnumValue *enum_value;
-
-	enum_class = g_type_class_ref(G_VALUE_TYPE(value));
-	enum_value = g_enum_get_value(enum_class, g_value_get_enum(value));
-	g_assert(enum_value != NULL);
+    char *command;
+    gboolean has;
 
-	str = g_strdup(enum_value->value_nick);
-	g_type_class_unref(enum_class);
-      }
-    else
-      g_return_val_if_reached(NULL);
+    command = self_get_command(self, id);
+    has = command != NULL;
+    g_free(command);
 
-    return str;
+    return has;
   }
 }
diff --git a/src/mn-mailbox.h b/src/mn-mailbox.h
@@ -50,6 +50,9 @@ struct _MNMailbox {
 	/*< public >*/
 	char * runtime_name;
 	char * name;
+	char * open_command;
+	char * mark_as_read_command;
+	char * mark_as_spam_command;
 	char * stock_id;
 	char * format;
 	int runtime_check_delay;
@@ -112,6 +115,11 @@ void 	mn_mailbox_configuration_free	(MNMailboxConfiguration * config);
 MNMailbox * 	mn_mailbox_new_from_obsolete_uri	(const char * uri);
 void 	mn_mailbox_seal	(MNMailbox * self);
 void 	mn_mailbox_check	(MNMailbox * self);
+void 	mn_mailbox_mark_as_read	(gpointer _message);
+char * 	mn_mailbox_get_command	(MNMailbox * self,
+					const char * id);
+gboolean 	mn_mailbox_has_command	(MNMailbox * self,
+					const char * id);
 
 /*
  * Signal connection wrapper macros
@@ -145,6 +153,12 @@ void 	mn_mailbox_check	(MNMailbox * self);
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 #define MN_MAILBOX_PROP_NAME(arg)    	"name", __extension__ ({gchar *z = (arg); z;})
 #define MN_MAILBOX_GET_PROP_NAME(arg)	"name", __extension__ ({gchar **z = (arg); z;})
+#define MN_MAILBOX_PROP_OPEN_COMMAND(arg)    	"open_command", __extension__ ({gchar *z = (arg); z;})
+#define MN_MAILBOX_GET_PROP_OPEN_COMMAND(arg)	"open_command", __extension__ ({gchar **z = (arg); z;})
+#define MN_MAILBOX_PROP_MARK_AS_READ_COMMAND(arg)    	"mark_as_read_command", __extension__ ({gchar *z = (arg); z;})
+#define MN_MAILBOX_GET_PROP_MARK_AS_READ_COMMAND(arg)	"mark_as_read_command", __extension__ ({gchar **z = (arg); z;})
+#define MN_MAILBOX_PROP_MARK_AS_SPAM_COMMAND(arg)    	"mark_as_spam_command", __extension__ ({gchar *z = (arg); z;})
+#define MN_MAILBOX_GET_PROP_MARK_AS_SPAM_COMMAND(arg)	"mark_as_spam_command", __extension__ ({gchar **z = (arg); z;})
 #define MN_MAILBOX_PROP_STOCK_ID(arg)    	"stock_id", __extension__ ({gchar *z = (arg); z;})
 #define MN_MAILBOX_GET_PROP_STOCK_ID(arg)	"stock_id", __extension__ ({gchar **z = (arg); z;})
 #define MN_MAILBOX_PROP_FORMAT(arg)    	"format", __extension__ ({gchar *z = (arg); z;})
@@ -160,6 +174,12 @@ void 	mn_mailbox_check	(MNMailbox * self);
 #else /* __GNUC__ && !__STRICT_ANSI__ */
 #define MN_MAILBOX_PROP_NAME(arg)    	"name",(gchar *)(arg)
 #define MN_MAILBOX_GET_PROP_NAME(arg)	"name",(gchar **)(arg)
+#define MN_MAILBOX_PROP_OPEN_COMMAND(arg)    	"open_command",(gchar *)(arg)
+#define MN_MAILBOX_GET_PROP_OPEN_COMMAND(arg)	"open_command",(gchar **)(arg)
+#define MN_MAILBOX_PROP_MARK_AS_READ_COMMAND(arg)    	"mark_as_read_command",(gchar *)(arg)
+#define MN_MAILBOX_GET_PROP_MARK_AS_READ_COMMAND(arg)	"mark_as_read_command",(gchar **)(arg)
+#define MN_MAILBOX_PROP_MARK_AS_SPAM_COMMAND(arg)    	"mark_as_spam_command",(gchar *)(arg)
+#define MN_MAILBOX_GET_PROP_MARK_AS_SPAM_COMMAND(arg)	"mark_as_spam_command",(gchar **)(arg)
 #define MN_MAILBOX_PROP_STOCK_ID(arg)    	"stock_id",(gchar *)(arg)
 #define MN_MAILBOX_GET_PROP_STOCK_ID(arg)	"stock_id",(gchar **)(arg)
 #define MN_MAILBOX_PROP_FORMAT(arg)    	"format",(gchar *)(arg)
diff --git a/src/mn-mailboxes-private.h b/src/mn-mailboxes-private.h
@@ -10,17 +10,17 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 25 "mn-mailboxes.gob"
+#line 26 "mn-mailboxes.gob"
 
 #include "mn-locked-callback.h"
 
 #line 18 "mn-mailboxes-private.h"
 struct _MNMailboxesPrivate {
-#line 51 "mn-mailboxes.gob"
+#line 53 "mn-mailboxes.gob"
 	GSList * add_queue;
-#line 52 "mn-mailboxes.gob"
+#line 54 "mn-mailboxes.gob"
 	GSList * remove_queue;
-#line 53 "mn-mailboxes.gob"
+#line 55 "mn-mailboxes.gob"
 	MNLockedGSource * queue_idle_source;
 #line 26 "mn-mailboxes-private.h"
 };
diff --git a/src/mn-mailboxes.c b/src/mn-mailboxes.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-mailboxes.gob"
+#line 30 "mn-mailboxes.gob"
 
 #include "config.h"
 #include <stdio.h>
@@ -38,8 +38,9 @@
 #include "mn-conf.h"
 #include "mn-message.h"
 #include "mn-mailbox-private.h"
+#include "mn-test-mailbox.h"
 
-#line 43 "mn-mailboxes.c"
+#line 44 "mn-mailboxes.c"
 /* self casting macros */
 #define SELF(x) MN_MAILBOXES(x)
 #define SELF_CONST(x) MN_MAILBOXES_CONST(x)
@@ -242,6 +243,7 @@ static GObjectClass *parent_class = NULL;
 #define self_add mn_mailboxes_add
 #define self_queue_add mn_mailboxes_queue_add
 #define self_remove_real mn_mailboxes_remove_real
+#define self_remove mn_mailboxes_remove
 #define self_queue_remove mn_mailboxes_queue_remove
 #define self_queue_idle_cb mn_mailboxes_queue_idle_cb
 #define self_compare_by_name_func mn_mailboxes_compare_by_name_func
@@ -295,21 +297,21 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Mailboxes::finalize"
 	MNMailboxes *self G_GNUC_UNUSED = MN_MAILBOXES (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 247 "mn-mailboxes.gob"
+#line 249 "mn-mailboxes.gob"
 	___a_mn_mailboxes_finalize(obj_self);
-#line 301 "mn-mailboxes.c"
-#line 48 "mn-mailboxes.gob"
+#line 303 "mn-mailboxes.c"
+#line 50 "mn-mailboxes.gob"
 	if(self->list) { eel_g_object_list_free ((gpointer) self->list); self->list = NULL; }
-#line 304 "mn-mailboxes.c"
-#line 49 "mn-mailboxes.gob"
-	if(self->messages) { mn_g_object_slist_free ((gpointer) self->messages); self->messages = NULL; }
-#line 307 "mn-mailboxes.c"
+#line 306 "mn-mailboxes.c"
 #line 51 "mn-mailboxes.gob"
+	if(self->messages) { mn_g_object_slist_free ((gpointer) self->messages); self->messages = NULL; }
+#line 309 "mn-mailboxes.c"
+#line 53 "mn-mailboxes.gob"
 	if(self->_priv->add_queue) { mn_g_object_slist_free ((gpointer) self->_priv->add_queue); self->_priv->add_queue = NULL; }
-#line 310 "mn-mailboxes.c"
-#line 52 "mn-mailboxes.gob"
+#line 312 "mn-mailboxes.c"
+#line 54 "mn-mailboxes.gob"
 	if(self->_priv->remove_queue) { mn_g_object_slist_free ((gpointer) self->_priv->remove_queue); self->_priv->remove_queue = NULL; }
-#line 313 "mn-mailboxes.c"
+#line 315 "mn-mailboxes.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -333,7 +335,7 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_OBJECT);
 	if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailboxes.gob line 62: Type mismatch of \"mailbox_added\" signal signature");
+		g_error("mn-mailboxes.gob line 64: Type mismatch of \"mailbox_added\" signal signature");
 	}
 	object_signals[MAILBOX_REMOVED_SIGNAL] =
 		g_signal_new ("mailbox_removed",
@@ -345,7 +347,7 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_OBJECT);
 	if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailboxes.gob line 85: Type mismatch of \"mailbox_removed\" signal signature");
+		g_error("mn-mailboxes.gob line 87: Type mismatch of \"mailbox_removed\" signal signature");
 	}
 	object_signals[MAILBOX_NOTIFY_SIGNAL] =
 		g_signal_new ("mailbox_notify",
@@ -358,7 +360,7 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			G_TYPE_OBJECT,
 			G_TYPE_POINTER);
 	if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || sizeof(GParamSpec * ) != sizeof(gpointer ) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailboxes.gob line 104: Type mismatch of \"mailbox_notify\" signal signature");
+		g_error("mn-mailboxes.gob line 106: Type mismatch of \"mailbox_notify\" signal signature");
 	}
 	object_signals[LIST_CHANGED_SIGNAL] =
 		g_signal_new ("list_changed",
@@ -378,7 +380,7 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			G_TYPE_NONE, 1,
 			G_TYPE_BOOLEAN);
 	if ___GOB_UNLIKELY(sizeof(gboolean ) != sizeof(gboolean ) || parent_class == NULL /* avoid warning */) {
-		g_error("mn-mailboxes.gob line 138: Type mismatch of \"messages_changed\" signal signature");
+		g_error("mn-mailboxes.gob line 140: Type mismatch of \"messages_changed\" signal signature");
 	}
 	object_signals[ERROR_CHANGED_SIGNAL] =
 		g_signal_new ("error_changed",
@@ -389,21 +391,21 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
 
-#line 62 "mn-mailboxes.gob"
+#line 64 "mn-mailboxes.gob"
 	c->mailbox_added = ___real_mn_mailboxes_mailbox_added;
-#line 85 "mn-mailboxes.gob"
+#line 87 "mn-mailboxes.gob"
 	c->mailbox_removed = ___real_mn_mailboxes_mailbox_removed;
-#line 397 "mn-mailboxes.c"
+#line 399 "mn-mailboxes.c"
 	c->mailbox_notify = NULL;
-#line 117 "mn-mailboxes.gob"
+#line 119 "mn-mailboxes.gob"
 	c->list_changed = ___real_mn_mailboxes_list_changed;
-#line 138 "mn-mailboxes.gob"
+#line 140 "mn-mailboxes.gob"
 	c->messages_changed = ___real_mn_mailboxes_messages_changed;
-#line 403 "mn-mailboxes.c"
+#line 405 "mn-mailboxes.c"
 	c->error_changed = NULL;
-#line 247 "mn-mailboxes.gob"
+#line 249 "mn-mailboxes.gob"
 	g_object_class->finalize = ___finalize;
-#line 407 "mn-mailboxes.c"
+#line 409 "mn-mailboxes.c"
 	g_object_class->get_property = ___object_get_property;
     {
 	GParamSpec   *param_spec;
@@ -420,15 +422,15 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
     }
 }
 #undef __GOB_FUNCTION__
-#line 194 "mn-mailboxes.gob"
+#line 196 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
-#line 427 "mn-mailboxes.c"
+#line 429 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAILBOXES,MNMailboxesPrivate);
  {
-#line 195 "mn-mailboxes.gob"
+#line 197 "mn-mailboxes.gob"
 
     char *filename;
     gboolean exists;
@@ -480,7 +482,7 @@ mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
 	eel_g_slist_free_deep(gconf_mailboxes);
       }
   
-#line 484 "mn-mailboxes.c"
+#line 486 "mn-mailboxes.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -499,7 +501,7 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_POLL:
 		{
-#line 176 "mn-mailboxes.gob"
+#line 178 "mn-mailboxes.gob"
 
       gboolean global_poll = FALSE;
       GList *l;
@@ -517,7 +519,7 @@ ___object_get_property (GObject *object,
 
       g_value_set_boolean(VAL, global_poll);
     
-#line 521 "mn-mailboxes.c"
+#line 523 "mn-mailboxes.c"
 		}
 		break;
 	default:
@@ -533,10 +535,10 @@ ___object_get_property (GObject *object,
 #undef __GOB_FUNCTION__
 
 
-#line 62 "mn-mailboxes.gob"
+#line 64 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
-#line 540 "mn-mailboxes.c"
+#line 542 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -544,15 +546,15 @@ mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 62 "mn-mailboxes.gob"
+#line 64 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 62 "mn-mailboxes.gob"
+#line 64 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 62 "mn-mailboxes.gob"
+#line 64 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 62 "mn-mailboxes.gob"
+#line 64 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 556 "mn-mailboxes.c"
+#line 558 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -570,14 +572,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 	g_value_unset (&___param_values[1]);
 }
-#line 62 "mn-mailboxes.gob"
+#line 64 "mn-mailboxes.gob"
 static void 
 ___real_mn_mailboxes_mailbox_added (MNMailboxes * self G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 577 "mn-mailboxes.c"
+#line 579 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_added"
 {
-#line 64 "mn-mailboxes.gob"
+#line 66 "mn-mailboxes.gob"
 	
     /* connect signals */
     g_object_connect(mailbox,
@@ -590,13 +592,13 @@ ___real_mn_mailboxes_mailbox_added (MNMailboxes * self G_GNUC_UNUSED, MNMailbox 
     /* emit the "added" signal on the mailbox */
     mn_mailbox_added(mailbox);
   }}
-#line 594 "mn-mailboxes.c"
+#line 596 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 85 "mn-mailboxes.gob"
+#line 87 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
-#line 600 "mn-mailboxes.c"
+#line 602 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -604,15 +606,15 @@ mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 85 "mn-mailboxes.gob"
+#line 87 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 85 "mn-mailboxes.gob"
+#line 87 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 85 "mn-mailboxes.gob"
+#line 87 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 85 "mn-mailboxes.gob"
+#line 87 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 616 "mn-mailboxes.c"
+#line 618 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -630,14 +632,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 	g_value_unset (&___param_values[1]);
 }
-#line 85 "mn-mailboxes.gob"
+#line 87 "mn-mailboxes.gob"
 static void 
 ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 637 "mn-mailboxes.c"
+#line 639 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_removed"
 {
-#line 87 "mn-mailboxes.gob"
+#line 89 "mn-mailboxes.gob"
 	
     /* disconnect signals */
     g_object_disconnect(mailbox,
@@ -654,13 +656,13 @@ ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self G_GNUC_UNUSED, MNMailbo
     self_messages_changed(self, FALSE);
     self_error_changed(self);
   }}
-#line 658 "mn-mailboxes.c"
+#line 660 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 104 "mn-mailboxes.gob"
+#line 106 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify (MNMailboxes * self, MNMailbox * mailbox, GParamSpec * pspec)
-#line 664 "mn-mailboxes.c"
+#line 666 "mn-mailboxes.c"
 {
 	GValue ___param_values[3];
 	GValue ___return_val;
@@ -668,17 +670,17 @@ mn_mailboxes_mailbox_notify (MNMailboxes * self, MNMailbox * mailbox, GParamSpec
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 104 "mn-mailboxes.gob"
+#line 106 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 104 "mn-mailboxes.gob"
+#line 106 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 104 "mn-mailboxes.gob"
+#line 106 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 104 "mn-mailboxes.gob"
+#line 106 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 104 "mn-mailboxes.gob"
+#line 106 "mn-mailboxes.gob"
 	g_return_if_fail (pspec != NULL);
-#line 682 "mn-mailboxes.c"
+#line 684 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -702,10 +704,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[2]);
 }
 
-#line 117 "mn-mailboxes.gob"
+#line 119 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_list_changed (MNMailboxes * self)
-#line 709 "mn-mailboxes.c"
+#line 711 "mn-mailboxes.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -713,11 +715,11 @@ mn_mailboxes_list_changed (MNMailboxes * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 117 "mn-mailboxes.gob"
+#line 119 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 117 "mn-mailboxes.gob"
+#line 119 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 721 "mn-mailboxes.c"
+#line 723 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -730,25 +732,25 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 117 "mn-mailboxes.gob"
+#line 119 "mn-mailboxes.gob"
 static void 
 ___real_mn_mailboxes_list_changed (MNMailboxes * self G_GNUC_UNUSED)
-#line 737 "mn-mailboxes.c"
+#line 739 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::list_changed"
 {
-#line 119 "mn-mailboxes.gob"
+#line 121 "mn-mailboxes.gob"
 	
     /* poll has possibly changed */
     g_object_notify(G_OBJECT(self), "poll");
   }}
-#line 746 "mn-mailboxes.c"
+#line 748 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 138 "mn-mailboxes.gob"
+#line 140 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
-#line 752 "mn-mailboxes.c"
+#line 754 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -756,11 +758,11 @@ mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 138 "mn-mailboxes.gob"
+#line 140 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 138 "mn-mailboxes.gob"
+#line 140 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 764 "mn-mailboxes.c"
+#line 766 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -778,14 +780,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 	g_value_unset (&___param_values[1]);
 }
-#line 138 "mn-mailboxes.gob"
+#line 140 "mn-mailboxes.gob"
 static void 
 ___real_mn_mailboxes_messages_changed (MNMailboxes * self G_GNUC_UNUSED, gboolean has_new)
-#line 785 "mn-mailboxes.c"
+#line 787 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::messages_changed"
 {
-#line 140 "mn-mailboxes.gob"
+#line 142 "mn-mailboxes.gob"
 	
     GList *la;
 
@@ -800,28 +802,28 @@ ___real_mn_mailboxes_messages_changed (MNMailboxes * self G_GNUC_UNUSED, gboolea
 	  self->messages = g_slist_insert_sorted(self->messages, g_object_ref(lb->data), (GCompareFunc) self_messages_sort_cb);
       }
   }}
-#line 804 "mn-mailboxes.c"
+#line 806 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 155 "mn-mailboxes.gob"
+#line 157 "mn-mailboxes.gob"
 static int 
 mn_mailboxes_messages_sort_cb (MNMessage * a, MNMessage * b)
-#line 810 "mn-mailboxes.c"
+#line 812 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::messages_sort_cb"
 {
-#line 157 "mn-mailboxes.gob"
+#line 159 "mn-mailboxes.gob"
 	
     /* sort by sent time in descending order */
     return b->sent_time - a->sent_time;
   }}
-#line 819 "mn-mailboxes.c"
+#line 821 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 171 "mn-mailboxes.gob"
+#line 173 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_error_changed (MNMailboxes * self)
-#line 825 "mn-mailboxes.c"
+#line 827 "mn-mailboxes.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -829,11 +831,11 @@ mn_mailboxes_error_changed (MNMailboxes * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 171 "mn-mailboxes.gob"
+#line 173 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 171 "mn-mailboxes.gob"
+#line 173 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 837 "mn-mailboxes.c"
+#line 839 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -847,31 +849,31 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 176 "mn-mailboxes.gob"
+#line 178 "mn-mailboxes.gob"
 gboolean 
 mn_mailboxes_get_poll (MNMailboxes * self)
-#line 854 "mn-mailboxes.c"
+#line 856 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::get_poll"
 {
-#line 174 "mn-mailboxes.gob"
+#line 176 "mn-mailboxes.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "poll", &val, NULL); return val;
 }}
-#line 861 "mn-mailboxes.c"
+#line 863 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
 
-#line 247 "mn-mailboxes.gob"
+#line 249 "mn-mailboxes.gob"
 static void 
 ___a_mn_mailboxes_finalize (GObject * object G_GNUC_UNUSED)
-#line 868 "mn-mailboxes.c"
+#line 870 "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 249 "mn-mailboxes.gob"
+#line 251 "mn-mailboxes.gob"
 	
     Self *self = SELF(object);
 
@@ -880,23 +882,23 @@ ___a_mn_mailboxes_finalize (GObject * object G_GNUC_UNUSED)
 
     PARENT_HANDLER(object);
   }}
-#line 884 "mn-mailboxes.c"
+#line 886 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 258 "mn-mailboxes.gob"
+#line 260 "mn-mailboxes.gob"
 void 
 mn_mailboxes_load (MNMailboxes * self)
-#line 891 "mn-mailboxes.c"
+#line 893 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::load"
-#line 258 "mn-mailboxes.gob"
+#line 260 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 258 "mn-mailboxes.gob"
+#line 260 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 898 "mn-mailboxes.c"
+#line 900 "mn-mailboxes.c"
 {
-#line 260 "mn-mailboxes.gob"
+#line 262 "mn-mailboxes.gob"
 	
     GError *err = NULL;
 
@@ -906,22 +908,22 @@ mn_mailboxes_load (MNMailboxes * self)
 	g_error_free(err);
       }
   }}
-#line 910 "mn-mailboxes.c"
+#line 912 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 270 "mn-mailboxes.gob"
+#line 272 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, ...)
-#line 916 "mn-mailboxes.c"
+#line 918 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::add_error"
-#line 270 "mn-mailboxes.gob"
+#line 272 "mn-mailboxes.gob"
 	g_return_if_fail (errors != NULL);
-#line 270 "mn-mailboxes.gob"
+#line 272 "mn-mailboxes.gob"
 	g_return_if_fail (n_errors != NULL);
-#line 923 "mn-mailboxes.c"
+#line 925 "mn-mailboxes.c"
 {
-#line 274 "mn-mailboxes.gob"
+#line 276 "mn-mailboxes.gob"
 	
     va_list args;
     char *message;
@@ -940,22 +942,22 @@ mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, 
 
     (*n_errors)++;
   }}
-#line 944 "mn-mailboxes.c"
+#line 946 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 293 "mn-mailboxes.gob"
+#line 295 "mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_load_real (MNMailboxes * self, GError ** err)
-#line 950 "mn-mailboxes.c"
+#line 952 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::load_real"
-#line 293 "mn-mailboxes.gob"
+#line 295 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 293 "mn-mailboxes.gob"
+#line 295 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0);
-#line 957 "mn-mailboxes.c"
+#line 959 "mn-mailboxes.c"
 {
-#line 295 "mn-mailboxes.gob"
+#line 297 "mn-mailboxes.gob"
 	
     char *filename;
     xmlDoc *doc;
@@ -1039,22 +1041,22 @@ mn_mailboxes_load_real (MNMailboxes * self, GError ** err)
 
     return status;
   }}
-#line 1043 "mn-mailboxes.c"
+#line 1045 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 379 "mn-mailboxes.gob"
+#line 381 "mn-mailboxes.gob"
 void 
 mn_mailboxes_save (MNMailboxes * self)
-#line 1049 "mn-mailboxes.c"
+#line 1051 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::save"
-#line 379 "mn-mailboxes.gob"
+#line 381 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 379 "mn-mailboxes.gob"
+#line 381 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1056 "mn-mailboxes.c"
+#line 1058 "mn-mailboxes.c"
 {
-#line 381 "mn-mailboxes.gob"
+#line 383 "mn-mailboxes.gob"
 	
     GError *err = NULL;
 
@@ -1064,22 +1066,22 @@ mn_mailboxes_save (MNMailboxes * self)
 	g_error_free(err);
       }
   }}
-#line 1068 "mn-mailboxes.c"
+#line 1070 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 391 "mn-mailboxes.gob"
+#line 393 "mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_save_real (MNMailboxes * self, GError ** err)
-#line 1074 "mn-mailboxes.c"
+#line 1076 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::save_real"
-#line 391 "mn-mailboxes.gob"
+#line 393 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 391 "mn-mailboxes.gob"
+#line 393 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0);
-#line 1081 "mn-mailboxes.c"
+#line 1083 "mn-mailboxes.c"
 {
-#line 393 "mn-mailboxes.gob"
+#line 395 "mn-mailboxes.gob"
 	
     int indent;
     xmlDoc *doc;
@@ -1188,17 +1190,17 @@ mn_mailboxes_save_real (MNMailboxes * self, GError ** err)
 
     return status;
   }}
-#line 1192 "mn-mailboxes.c"
+#line 1194 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 502 "mn-mailboxes.gob"
+#line 504 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data)
-#line 1198 "mn-mailboxes.c"
+#line 1200 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_messages_changed_h"
 {
-#line 506 "mn-mailboxes.gob"
+#line 508 "mn-mailboxes.gob"
 	
     Self *self = user_data;
 
@@ -1207,17 +1209,17 @@ mn_mailboxes_mailbox_messages_changed_h (MNMailbox * mailbox, gboolean has_new, 
 
     self_messages_changed(self, has_new);
   }}
-#line 1211 "mn-mailboxes.c"
+#line 1213 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 515 "mn-mailboxes.gob"
+#line 517 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 1217 "mn-mailboxes.c"
+#line 1219 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_h"
 {
-#line 517 "mn-mailboxes.gob"
+#line 519 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     char *detailed_signal;
@@ -1226,17 +1228,17 @@ mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer us
     g_signal_emit_by_name(self, detailed_signal, object, pspec);
     g_free(detailed_signal);
   }}
-#line 1230 "mn-mailboxes.c"
+#line 1232 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 526 "mn-mailboxes.gob"
+#line 528 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 1236 "mn-mailboxes.c"
+#line 1238 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_error_h"
 {
-#line 530 "mn-mailboxes.gob"
+#line 532 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     MNMailbox *mailbox = MN_MAILBOX(object);
@@ -1246,39 +1248,39 @@ mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpoin
 
     self_error_changed(self);
   }}
-#line 1250 "mn-mailboxes.c"
+#line 1252 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 540 "mn-mailboxes.gob"
+#line 542 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify_poll_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 1256 "mn-mailboxes.c"
+#line 1258 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_poll_h"
 {
-#line 544 "mn-mailboxes.gob"
+#line 546 "mn-mailboxes.gob"
 	
     Self *self = user_data;
 
     /* poll has possibly changed */
     g_object_notify(G_OBJECT(self), "poll");
   }}
-#line 1267 "mn-mailboxes.c"
+#line 1269 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 551 "mn-mailboxes.gob"
+#line 553 "mn-mailboxes.gob"
 void 
 mn_mailboxes_check (MNMailboxes * self)
-#line 1273 "mn-mailboxes.c"
+#line 1275 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::check"
-#line 551 "mn-mailboxes.gob"
+#line 553 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 551 "mn-mailboxes.gob"
+#line 553 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1280 "mn-mailboxes.c"
+#line 1282 "mn-mailboxes.c"
 {
-#line 553 "mn-mailboxes.gob"
+#line 555 "mn-mailboxes.gob"
 	
     GList *l;
 
@@ -1290,76 +1292,77 @@ mn_mailboxes_check (MNMailboxes * self)
 	  mn_mailbox_check(mailbox);
       }
   }}
-#line 1294 "mn-mailboxes.c"
+#line 1296 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 565 "mn-mailboxes.gob"
+#line 567 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_add_real (MNMailboxes * self, MNMailbox * mailbox)
-#line 1300 "mn-mailboxes.c"
+#line 1302 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::add_real"
-#line 565 "mn-mailboxes.gob"
+#line 567 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 565 "mn-mailboxes.gob"
+#line 567 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 565 "mn-mailboxes.gob"
+#line 567 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 565 "mn-mailboxes.gob"
+#line 567 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1311 "mn-mailboxes.c"
+#line 1313 "mn-mailboxes.c"
 {
-#line 567 "mn-mailboxes.gob"
+#line 569 "mn-mailboxes.gob"
 	
     g_object_ref(mailbox);
     self->list = g_list_insert_sorted(self->list, mailbox, self_compare_by_name_func);
     self_mailbox_added(self, mailbox);
   }}
-#line 1319 "mn-mailboxes.c"
+#line 1321 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 573 "mn-mailboxes.gob"
+#line 575 "mn-mailboxes.gob"
 void 
 mn_mailboxes_add (MNMailboxes * self, MNMailbox * mailbox)
-#line 1325 "mn-mailboxes.c"
+#line 1327 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::add"
-#line 573 "mn-mailboxes.gob"
+#line 575 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 573 "mn-mailboxes.gob"
+#line 575 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 573 "mn-mailboxes.gob"
+#line 575 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 573 "mn-mailboxes.gob"
+#line 575 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1336 "mn-mailboxes.c"
+#line 1338 "mn-mailboxes.c"
 {
-#line 575 "mn-mailboxes.gob"
+#line 577 "mn-mailboxes.gob"
 	
     self_add_real(self, mailbox);
     self_list_changed(self);
-    self_save(self);
+    if (! MN_IS_TEST_MAILBOX(mailbox))
+      self_save(self);
   }}
-#line 1344 "mn-mailboxes.c"
+#line 1347 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 581 "mn-mailboxes.gob"
+#line 584 "mn-mailboxes.gob"
 void 
 mn_mailboxes_queue_add (MNMailboxes * self, MNMailbox * mailbox)
-#line 1350 "mn-mailboxes.c"
+#line 1353 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::queue_add"
-#line 581 "mn-mailboxes.gob"
+#line 584 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 581 "mn-mailboxes.gob"
+#line 584 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 581 "mn-mailboxes.gob"
+#line 584 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 581 "mn-mailboxes.gob"
+#line 584 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1361 "mn-mailboxes.c"
+#line 1364 "mn-mailboxes.c"
 {
-#line 583 "mn-mailboxes.gob"
+#line 586 "mn-mailboxes.gob"
 	
     g_object_ref(mailbox);
     selfp->add_queue = g_slist_append(selfp->add_queue, mailbox);
@@ -1367,51 +1370,77 @@ mn_mailboxes_queue_add (MNMailboxes * self, MNMailbox * mailbox)
     if (! selfp->queue_idle_source)
       selfp->queue_idle_source = mn_g_idle_add_gdk_locked(self_queue_idle_cb, self);
   }}
-#line 1371 "mn-mailboxes.c"
+#line 1374 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 591 "mn-mailboxes.gob"
+#line 594 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_remove_real (MNMailboxes * self, MNMailbox * mailbox)
-#line 1377 "mn-mailboxes.c"
+#line 1380 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::remove_real"
-#line 591 "mn-mailboxes.gob"
+#line 594 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 591 "mn-mailboxes.gob"
+#line 594 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 591 "mn-mailboxes.gob"
+#line 594 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 591 "mn-mailboxes.gob"
+#line 594 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1388 "mn-mailboxes.c"
+#line 1391 "mn-mailboxes.c"
 {
-#line 593 "mn-mailboxes.gob"
+#line 596 "mn-mailboxes.gob"
 	
     self->list = g_list_remove(self->list, mailbox);
     self_mailbox_removed(self, mailbox);
     g_object_unref(mailbox);
   }}
-#line 1396 "mn-mailboxes.c"
+#line 1399 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 599 "mn-mailboxes.gob"
+#line 602 "mn-mailboxes.gob"
+void 
+mn_mailboxes_remove (MNMailboxes * self, MNMailbox * mailbox)
+#line 1405 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::remove"
+#line 602 "mn-mailboxes.gob"
+	g_return_if_fail (self != NULL);
+#line 602 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 602 "mn-mailboxes.gob"
+	g_return_if_fail (mailbox != NULL);
+#line 602 "mn-mailboxes.gob"
+	g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 1416 "mn-mailboxes.c"
+{
+#line 604 "mn-mailboxes.gob"
+	
+    self_remove_real(self, mailbox);
+    self_list_changed(self);
+    if (! MN_IS_TEST_MAILBOX(mailbox))
+      self_save(self);
+  }}
+#line 1425 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 611 "mn-mailboxes.gob"
 void 
 mn_mailboxes_queue_remove (MNMailboxes * self, MNMailbox * mailbox)
-#line 1402 "mn-mailboxes.c"
+#line 1431 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::queue_remove"
-#line 599 "mn-mailboxes.gob"
+#line 611 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 599 "mn-mailboxes.gob"
+#line 611 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 599 "mn-mailboxes.gob"
+#line 611 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 599 "mn-mailboxes.gob"
+#line 611 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1413 "mn-mailboxes.c"
+#line 1442 "mn-mailboxes.c"
 {
-#line 601 "mn-mailboxes.gob"
+#line 613 "mn-mailboxes.gob"
 	
     g_object_ref(mailbox);
     selfp->remove_queue = g_slist_append(selfp->remove_queue, mailbox);
@@ -1419,17 +1448,17 @@ mn_mailboxes_queue_remove (MNMailboxes * self, MNMailbox * mailbox)
     if (! selfp->queue_idle_source)
       selfp->queue_idle_source = mn_g_idle_add_gdk_locked(self_queue_idle_cb, self);
   }}
-#line 1423 "mn-mailboxes.c"
+#line 1452 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 609 "mn-mailboxes.gob"
+#line 621 "mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_queue_idle_cb (gpointer data)
-#line 1429 "mn-mailboxes.c"
+#line 1458 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::queue_idle_cb"
 {
-#line 611 "mn-mailboxes.gob"
+#line 623 "mn-mailboxes.gob"
 	
     Self *self = data;
     GSList *l;
@@ -1450,36 +1479,36 @@ mn_mailboxes_queue_idle_cb (gpointer data)
     selfp->queue_idle_source = NULL;
     return FALSE;		/* remove */
   }}
-#line 1454 "mn-mailboxes.c"
+#line 1483 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 632 "mn-mailboxes.gob"
+#line 644 "mn-mailboxes.gob"
 int 
 mn_mailboxes_compare_by_name_func (gconstpointer a, gconstpointer b)
-#line 1460 "mn-mailboxes.c"
+#line 1489 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::compare_by_name_func"
 {
-#line 634 "mn-mailboxes.gob"
+#line 646 "mn-mailboxes.gob"
 	
     MNMailbox *mailbox_a = (MNMailbox *) a;
     MNMailbox *mailbox_b = (MNMailbox *) b;
 
     return g_utf8_collate(mailbox_a->runtime_name, mailbox_b->runtime_name);
   }}
-#line 1471 "mn-mailboxes.c"
+#line 1500 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 641 "mn-mailboxes.gob"
+#line 653 "mn-mailboxes.gob"
 MNMailboxes * 
 mn_mailboxes_new (void)
-#line 1477 "mn-mailboxes.c"
+#line 1506 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::new"
 {
-#line 643 "mn-mailboxes.gob"
+#line 655 "mn-mailboxes.gob"
 	
     return GET_NEW;
   }}
-#line 1485 "mn-mailboxes.c"
+#line 1514 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailboxes.gob b/src/mn-mailboxes.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -41,6 +42,7 @@ requires 2.0.14
 #include "mn-conf.h"
 #include "mn-message.h"
 #include "mn-mailbox-private.h"
+#include "mn-test-mailbox.h"
 %}
 
 class MN:Mailboxes from G:Object
@@ -575,7 +577,8 @@ class MN:Mailboxes from G:Object
   {
     self_add_real(self, mailbox);
     self_list_changed(self);
-    self_save(self);
+    if (! MN_IS_TEST_MAILBOX(mailbox))
+      self_save(self);
   }
 
   public void
@@ -597,6 +600,15 @@ class MN:Mailboxes from G:Object
   }
 
   public void
+    remove (self, MN:Mailbox *mailbox (check null type))
+  {
+    self_remove_real(self, mailbox);
+    self_list_changed(self);
+    if (! MN_IS_TEST_MAILBOX(mailbox))
+      self_save(self);
+  }
+
+  public void
     queue_remove (self, MN:Mailbox *mailbox (check null type))
   {
     g_object_ref(mailbox);
diff --git a/src/mn-mailboxes.h b/src/mn-mailboxes.h
@@ -71,6 +71,8 @@ void 	mn_mailboxes_add	(MNMailboxes * self,
 					MNMailbox * mailbox);
 void 	mn_mailboxes_queue_add	(MNMailboxes * self,
 					MNMailbox * mailbox);
+void 	mn_mailboxes_remove	(MNMailboxes * self,
+					MNMailbox * mailbox);
 void 	mn_mailboxes_queue_remove	(MNMailboxes * self,
 					MNMailbox * mailbox);
 int 	mn_mailboxes_compare_by_name_func	(gconstpointer a,
diff --git a/src/mn-maildir-mailbox-backend.c b/src/mn-maildir-mailbox-backend.c
@@ -20,10 +20,11 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-maildir-mailbox-backend.gob"
+#line 26 "mn-maildir-mailbox-backend.gob"
 
 #include "config.h"
 #include <string.h>
+#include <stdlib.h>
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include "mn-mailbox-private.h"
@@ -33,7 +34,7 @@
 #include "mn-util.h"
 #include "mn-message-mime.h"
 
-#line 37 "mn-maildir-mailbox-backend.c"
+#line 38 "mn-maildir-mailbox-backend.c"
 /* self casting macros */
 #define SELF(x) MN_MAILDIR_MAILBOX_BACKEND(x)
 #define SELF_CONST(x) MN_MAILDIR_MAILBOX_BACKEND_CONST(x)
@@ -51,10 +52,12 @@ typedef MNMaildirMailboxBackendClass SelfClass;
 static void mn_maildir_mailbox_backend_init (MNMaildirMailboxBackend * o) G_GNUC_UNUSED;
 static void mn_maildir_mailbox_backend_class_init (MNMaildirMailboxBackendClass * class) G_GNUC_UNUSED;
 static void ___2_mn_maildir_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend, const char * info_uri, GnomeVFSMonitorEventType event_type) G_GNUC_UNUSED;
-static gboolean ___3_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailbox * mailbox) G_GNUC_UNUSED;
+static gboolean ___3_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox) G_GNUC_UNUSED;
 static void mn_maildir_mailbox_backend_monitor_directory (MNMaildirMailboxBackend * self, unsigned long check_id, const char * dir) G_GNUC_UNUSED;
 static gboolean mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, unsigned long check_id, const char * dir, gboolean new, GSList ** messages, GError ** err) G_GNUC_UNUSED;
 static void ___6_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend, unsigned long check_id) G_GNUC_UNUSED;
+static int mn_maildir_mailbox_backend_flags_sort_cb (const void * a, const void * b) G_GNUC_UNUSED;
+static gboolean ___8_mn_maildir_mailbox_backend_mark_as_read (MNVFSMailboxBackend * dummy, MNVFSMessage * message, GError ** err) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static MNVFSMailboxBackendClass *parent_class = NULL;
@@ -62,6 +65,7 @@ static MNVFSMailboxBackendClass *parent_class = NULL;
 /* Short form macros */
 #define self_monitor_directory mn_maildir_mailbox_backend_monitor_directory
 #define self_scan_directory mn_maildir_mailbox_backend_scan_directory
+#define self_flags_sort_cb mn_maildir_mailbox_backend_flags_sort_cb
 GType
 mn_maildir_mailbox_backend_get_type (void)
 {
@@ -110,46 +114,48 @@ mn_maildir_mailbox_backend_init (MNMaildirMailboxBackend * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::init"
 }
 #undef __GOB_FUNCTION__
-#line 40 "mn-maildir-mailbox-backend.gob"
+#line 42 "mn-maildir-mailbox-backend.gob"
 static void 
 mn_maildir_mailbox_backend_class_init (MNMaildirMailboxBackendClass * class G_GNUC_UNUSED)
-#line 117 "mn-maildir-mailbox-backend.c"
+#line 121 "mn-maildir-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::class_init"
 	MNVFSMailboxBackendClass *mn_vfs_mailbox_backend_class = (MNVFSMailboxBackendClass *)class;
 
 	parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND);
 
-#line 45 "mn-maildir-mailbox-backend.gob"
+#line 47 "mn-maildir-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->monitor_cb = ___2_mn_maildir_mailbox_backend_monitor_cb;
-#line 67 "mn-maildir-mailbox-backend.gob"
+#line 69 "mn-maildir-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->is = ___3_mn_maildir_mailbox_backend_is;
-#line 182 "mn-maildir-mailbox-backend.gob"
+#line 187 "mn-maildir-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->check = ___6_mn_maildir_mailbox_backend_check;
-#line 130 "mn-maildir-mailbox-backend.c"
+#line 231 "mn-maildir-mailbox-backend.gob"
+	mn_vfs_mailbox_backend_class->mark_as_read = ___8_mn_maildir_mailbox_backend_mark_as_read;
+#line 136 "mn-maildir-mailbox-backend.c"
  {
-#line 41 "mn-maildir-mailbox-backend.gob"
+#line 43 "mn-maildir-mailbox-backend.gob"
 
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Maildir";
   
-#line 136 "mn-maildir-mailbox-backend.c"
+#line 142 "mn-maildir-mailbox-backend.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 45 "mn-maildir-mailbox-backend.gob"
+#line 47 "mn-maildir-mailbox-backend.gob"
 static void 
 ___2_mn_maildir_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUSED, const char * info_uri, GnomeVFSMonitorEventType event_type)
-#line 146 "mn-maildir-mailbox-backend.c"
+#line 152 "mn-maildir-mailbox-backend.c"
 #define PARENT_HANDLER(___backend,___info_uri,___event_type) \
 	{ if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb) \
 		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb)(___backend,___info_uri,___event_type); }
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::monitor_cb"
 {
-#line 49 "mn-maildir-mailbox-backend.gob"
+#line 51 "mn-maildir-mailbox-backend.gob"
 	
     if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED
 	|| event_type == GNOME_VFS_MONITOR_EVENT_DELETED
@@ -167,25 +173,25 @@ ___2_mn_maildir_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC
 	  }
       }
   }}
-#line 171 "mn-maildir-mailbox-backend.c"
+#line 177 "mn-maildir-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 67 "mn-maildir-mailbox-backend.gob"
+#line 69 "mn-maildir-mailbox-backend.gob"
 static gboolean 
-___3_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailbox * mailbox)
-#line 178 "mn-maildir-mailbox-backend.c"
-#define PARENT_HANDLER(___dummy,___mailbox) \
+___3_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox)
+#line 184 "mn-maildir-mailbox-backend.c"
+#define PARENT_HANDLER(___dummy,___class,___mailbox) \
 	((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \
-		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___mailbox): \
+		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___class,___mailbox): \
 		((gboolean )0))
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::is"
 {
-#line 69 "mn-maildir-mailbox-backend.gob"
+#line 73 "mn-maildir-mailbox-backend.gob"
 	
     int i; 
-    const char *constitutive_dirs[] = { "cur", "new", "tmp" };
+    static const char *constitutive_dirs[] = { "cur", "new", "tmp" };
     gboolean is = FALSE;
 
     for (i = 0; i < G_N_ELEMENTS(constitutive_dirs); i++)
@@ -202,25 +208,25 @@ ___3_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, M
 
     return is;
   }}
-#line 206 "mn-maildir-mailbox-backend.c"
+#line 212 "mn-maildir-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 89 "mn-maildir-mailbox-backend.gob"
+#line 93 "mn-maildir-mailbox-backend.gob"
 static void 
 mn_maildir_mailbox_backend_monitor_directory (MNMaildirMailboxBackend * self, unsigned long check_id, const char * dir)
-#line 213 "mn-maildir-mailbox-backend.c"
+#line 219 "mn-maildir-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::monitor_directory"
-#line 89 "mn-maildir-mailbox-backend.gob"
+#line 93 "mn-maildir-mailbox-backend.gob"
 	g_return_if_fail (self != NULL);
-#line 89 "mn-maildir-mailbox-backend.gob"
+#line 93 "mn-maildir-mailbox-backend.gob"
 	g_return_if_fail (MN_IS_MAILDIR_MAILBOX_BACKEND (self));
-#line 89 "mn-maildir-mailbox-backend.gob"
+#line 93 "mn-maildir-mailbox-backend.gob"
 	g_return_if_fail (dir != NULL);
-#line 222 "mn-maildir-mailbox-backend.c"
+#line 228 "mn-maildir-mailbox-backend.c"
 {
-#line 91 "mn-maildir-mailbox-backend.gob"
+#line 95 "mn-maildir-mailbox-backend.gob"
 	
     MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self);
     GnomeVFSURI *uri;
@@ -233,26 +239,26 @@ mn_maildir_mailbox_backend_monitor_directory (MNMaildirMailboxBackend * self, un
     mn_vfs_mailbox_backend_monitor(backend, check_id, text_uri, GNOME_VFS_MONITOR_DIRECTORY);
     g_free(text_uri);
   }}
-#line 237 "mn-maildir-mailbox-backend.c"
+#line 243 "mn-maildir-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 104 "mn-maildir-mailbox-backend.gob"
+#line 108 "mn-maildir-mailbox-backend.gob"
 static gboolean 
 mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, unsigned long check_id, const char * dir, gboolean new, GSList ** messages, GError ** err)
-#line 243 "mn-maildir-mailbox-backend.c"
+#line 249 "mn-maildir-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::scan_directory"
-#line 104 "mn-maildir-mailbox-backend.gob"
+#line 108 "mn-maildir-mailbox-backend.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 104 "mn-maildir-mailbox-backend.gob"
+#line 108 "mn-maildir-mailbox-backend.gob"
 	g_return_val_if_fail (MN_IS_MAILDIR_MAILBOX_BACKEND (self), (gboolean )0);
-#line 104 "mn-maildir-mailbox-backend.gob"
+#line 108 "mn-maildir-mailbox-backend.gob"
 	g_return_val_if_fail (dir != NULL, (gboolean )0);
-#line 104 "mn-maildir-mailbox-backend.gob"
+#line 108 "mn-maildir-mailbox-backend.gob"
 	g_return_val_if_fail (messages != NULL, (gboolean )0);
-#line 254 "mn-maildir-mailbox-backend.c"
+#line 260 "mn-maildir-mailbox-backend.c"
 {
-#line 111 "mn-maildir-mailbox-backend.gob"
+#line 115 "mn-maildir-mailbox-backend.gob"
 	
     MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self);
     GnomeVFSURI *uri;
@@ -276,7 +282,6 @@ mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, unsig
     while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK)
       if (file_info->name[0] != '.')
 	{
-	  GnomeVFSURI *message_uri;
 	  MNMessageFlags flags = 0;
 
 	  if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
@@ -300,9 +305,11 @@ mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, unsig
 		continue; /* no info, or message seen/trashed: ignore it */
 	    }
 
-	  message_uri = gnome_vfs_uri_append_file_name(uri, file_info->name);
-	  *messages = g_slist_prepend(*messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, flags, FALSE));
-	  gnome_vfs_uri_unref(message_uri);
+	  *messages = g_slist_prepend(*messages, mn_vfs_message_new(backend,
+								    uri,
+								    file_info->name,
+								    flags,
+								    FALSE));
 	}
     gnome_vfs_uri_unref(uri);
     gnome_vfs_file_info_unref(file_info);
@@ -323,20 +330,20 @@ mn_maildir_mailbox_backend_scan_directory (MNMaildirMailboxBackend * self, unsig
 
     return FALSE;
   }}
-#line 327 "mn-maildir-mailbox-backend.c"
+#line 334 "mn-maildir-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 182 "mn-maildir-mailbox-backend.gob"
+#line 187 "mn-maildir-mailbox-backend.gob"
 static void 
 ___6_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, unsigned long check_id)
-#line 333 "mn-maildir-mailbox-backend.c"
+#line 340 "mn-maildir-mailbox-backend.c"
 #define PARENT_HANDLER(___backend,___check_id) \
 	{ if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check) \
 		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check)(___backend,___check_id); }
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::check"
 {
-#line 184 "mn-maildir-mailbox-backend.gob"
+#line 189 "mn-maildir-mailbox-backend.gob"
 	
     Self *self = SELF(backend);
     GSList *messages = NULL;
@@ -367,6 +374,97 @@ ___6_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUS
     if (err)
       g_error_free(err);
   }}
-#line 371 "mn-maildir-mailbox-backend.c"
+#line 378 "mn-maildir-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 220 "mn-maildir-mailbox-backend.gob"
+static int 
+mn_maildir_mailbox_backend_flags_sort_cb (const void * a, const void * b)
+#line 385 "mn-maildir-mailbox-backend.c"
+{
+#define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::flags_sort_cb"
+{
+#line 222 "mn-maildir-mailbox-backend.gob"
+	
+    char ca = *((char *) a);
+    char cb = *((char *) b);
+
+    /* sort flags using ASCII order, see http://cr.yp.to/proto/maildir.html */
+
+    return ca - cb;
+  }}
+#line 398 "mn-maildir-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+
+#line 231 "mn-maildir-mailbox-backend.gob"
+static gboolean 
+___8_mn_maildir_mailbox_backend_mark_as_read (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMessage * message, GError ** err)
+#line 404 "mn-maildir-mailbox-backend.c"
+#define PARENT_HANDLER(___dummy,___message,___err) \
+	((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->mark_as_read)? \
+		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->mark_as_read)(___dummy,___message,___err): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::mark_as_read"
+{
+#line 235 "mn-maildir-mailbox-backend.gob"
+	
+    char *old_flags;
+    char *old_filename;
+    char *new_filename;
+    GnomeVFSURI *dir_uri;
+    GnomeVFSURI *new_uri;
+    GnomeVFSResult result;
+    gboolean status;
+
+    /* http://cr.yp.to/proto/maildir.html */
+
+    old_filename = gnome_vfs_uri_extract_short_name(message->vfs_uri);
+
+    old_flags = strrchr(old_filename, ',');
+    if (old_flags)
+      {
+	char *new_flags;
+	int old_len;
+	char *base_filename;
+
+	/* append the S (seen) flag */
+
+	old_flags++;
+	g_assert(strchr(old_flags, 'S') == NULL);
+
+	old_len = strlen(old_flags);
+	new_flags = g_new(char, old_len + 2); /* + space for S and nul */
+	memcpy(new_flags, old_flags, old_len);
+	new_flags[old_len] = 'S';
+	new_flags[old_len + 1] = 0;
+	qsort(new_flags, old_len + 1, sizeof(char), self_flags_sort_cb);
+
+	base_filename = g_strndup(old_filename, old_flags - old_filename - 1);
+	new_filename = g_strdup_printf("%s,%s", base_filename, new_flags);
+	g_free(base_filename);
+	g_free(new_flags);
+      }
+    else
+      new_filename = g_strconcat(old_filename, ":2,S", NULL);
+
+    g_free(old_filename);
+
+    dir_uri = gnome_vfs_uri_append_path(MN_VFS_MAILBOX(MN_MESSAGE(message)->mailbox)->vfs_uri, "cur");
+    new_uri = gnome_vfs_uri_append_file_name(dir_uri, new_filename);
+    gnome_vfs_uri_unref(dir_uri);
+    g_free(new_filename);
+
+    result = gnome_vfs_move_uri(message->vfs_uri, new_uri, TRUE);
+    status = result == GNOME_VFS_OK;
+    if (! status)
+      g_set_error(err, 0, 0, "%s", gnome_vfs_result_to_string(result));
+
+    gnome_vfs_uri_unref(new_uri);
+
+    return status;
+  }}
+#line 469 "mn-maildir-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-maildir-mailbox-backend.gob b/src/mn-maildir-mailbox-backend.gob
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -25,6 +26,7 @@ requires 2.0.14
 %{
 #include "config.h"
 #include <string.h>
+#include <stdlib.h>
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include "mn-mailbox-private.h"
@@ -65,10 +67,12 @@ class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend
   }
 
   override (MN:VFS:Mailbox:Backend) gboolean
-    is (MNVFSMailboxBackend *dummy, MNVFSMailbox *mailbox)
+    is (MNVFSMailboxBackend *dummy,
+	MNVFSMailboxBackendClass *class,
+	MNVFSMailbox *mailbox)
   {
     int i; 
-    const char *constitutive_dirs[] = { "cur", "new", "tmp" };
+    static const char *constitutive_dirs[] = { "cur", "new", "tmp" };
     gboolean is = FALSE;
 
     for (i = 0; i < G_N_ELEMENTS(constitutive_dirs); i++)
@@ -131,7 +135,6 @@ class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend
     while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK)
       if (file_info->name[0] != '.')
 	{
-	  GnomeVFSURI *message_uri;
 	  MNMessageFlags flags = 0;
 
 	  if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
@@ -155,9 +158,11 @@ class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend
 		continue; /* no info, or message seen/trashed: ignore it */
 	    }
 
-	  message_uri = gnome_vfs_uri_append_file_name(uri, file_info->name);
-	  *messages = g_slist_prepend(*messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, flags, FALSE));
-	  gnome_vfs_uri_unref(message_uri);
+	  *messages = g_slist_prepend(*messages, mn_vfs_message_new(backend,
+								    uri,
+								    file_info->name,
+								    flags,
+								    FALSE));
 	}
     gnome_vfs_uri_unref(uri);
     gnome_vfs_file_info_unref(file_info);
@@ -211,4 +216,76 @@ class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend
     if (err)
       g_error_free(err);
   }
+
+  private int
+    flags_sort_cb (const void *a, const void *b)
+  {
+    char ca = *((char *) a);
+    char cb = *((char *) b);
+
+    /* sort flags using ASCII order, see http://cr.yp.to/proto/maildir.html */
+
+    return ca - cb;
+  }
+
+  override (MN:VFS:Mailbox:Backend) gboolean
+    mark_as_read (MNVFSMailboxBackend *dummy,
+		  MNVFSMessage *message,
+		  GError **err)
+  {
+    char *old_flags;
+    char *old_filename;
+    char *new_filename;
+    GnomeVFSURI *dir_uri;
+    GnomeVFSURI *new_uri;
+    GnomeVFSResult result;
+    gboolean status;
+
+    /* http://cr.yp.to/proto/maildir.html */
+
+    old_filename = gnome_vfs_uri_extract_short_name(message->vfs_uri);
+
+    old_flags = strrchr(old_filename, ',');
+    if (old_flags)
+      {
+	char *new_flags;
+	int old_len;
+	char *base_filename;
+
+	/* append the S (seen) flag */
+
+	old_flags++;
+	g_assert(strchr(old_flags, 'S') == NULL);
+
+	old_len = strlen(old_flags);
+	new_flags = g_new(char, old_len + 2); /* + space for S and nul */
+	memcpy(new_flags, old_flags, old_len);
+	new_flags[old_len] = 'S';
+	new_flags[old_len + 1] = 0;
+	qsort(new_flags, old_len + 1, sizeof(char), self_flags_sort_cb);
+
+	base_filename = g_strndup(old_filename, old_flags - old_filename - 1);
+	new_filename = g_strdup_printf("%s,%s", base_filename, new_flags);
+	g_free(base_filename);
+	g_free(new_flags);
+      }
+    else
+      new_filename = g_strconcat(old_filename, ":2,S", NULL);
+
+    g_free(old_filename);
+
+    dir_uri = gnome_vfs_uri_append_path(MN_VFS_MAILBOX(MN_MESSAGE(message)->mailbox)->vfs_uri, "cur");
+    new_uri = gnome_vfs_uri_append_file_name(dir_uri, new_filename);
+    gnome_vfs_uri_unref(dir_uri);
+    g_free(new_filename);
+
+    result = gnome_vfs_move_uri(message->vfs_uri, new_uri, TRUE);
+    status = result == GNOME_VFS_OK;
+    if (! status)
+      g_set_error(err, 0, 0, "%s", gnome_vfs_result_to_string(result));
+
+    gnome_vfs_uri_unref(new_uri);
+
+    return status;
+  }
 }
diff --git a/src/mn-main.c b/src/mn-main.c
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
@@ -21,15 +22,18 @@
 #include <signal.h>
 #include <gnome.h>
 #include <libgnomevfs/gnome-vfs.h>
+#include <libnotify/notify.h>
 #if WITH_MIME
 #include <gmime/gmime.h>
 #include "mn-gmime-stream-vfs.h"
 #endif
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-vfs-mailbox.h"
+#include "mn-vfs-message.h"
 #endif
 #if WITH_EVOLUTION
-#include "mn-corba-object.h"
+#include "mn-bonobo-unknown.h"
+#include "mn-evolution-message.h"
 #endif
 #include "mn-locked-callback.h"
 #include "mn-conf.h"
@@ -77,6 +81,11 @@ static void	mn_main_init_classes	(void);
 static void	mn_main_handle_bonobo_exception (CORBA_Environment *env,
 						 const char        *method);
 
+static gboolean	mn_main_has_icon_path		(const char *path);
+static void	mn_main_ensure_icon_path	(void);
+
+static void	mn_main_report_option_ignored	(const char *option_name);
+
 /*** implementation **********************************************************/
 
 static BonoboObject *
@@ -108,7 +117,7 @@ mn_main_print_version (void)
    * order of (believed) popularity.
    */
 
-  Component mailbox_backends[] = {
+  static const Component mailbox_backends[] = {
     { "mbox",			WITH_MBOX		},
     { "mh",			WITH_MH			},
     { "Maildir",		WITH_MAILDIR		},
@@ -116,16 +125,17 @@ mn_main_print_version (void)
     { "IMAP",			WITH_IMAP		},
     { "Gmail",			WITH_GMAIL		},
     { "Evolution",		WITH_EVOLUTION		},
+    { "Mozilla products",	WITH_MOZILLA		},
     { "Sylpheed",		WITH_SYLPHEED		}
   };
 
-  Component pi_features[] = {
+  static const Component pi_features[] = {
     { "SSL/TLS",		WITH_SSL		},
     { "SASL",			WITH_SASL		},
     { "IPv6",			WITH_IPV6		}
   };
 
-  Component sylpheed_features[] = {
+  static const Component sylpheed_features[] = {
     { ".sylpheed_mark locking",	WITH_SYLPHEED_LOCKING	}
   };
 
@@ -163,25 +173,22 @@ mn_main_init_classes (void)
 {
   int i;
 
-  g_type_class_ref(MN_TYPE_AUTOMATION);
 #if WITH_MIME
   g_type_class_ref(MN_TYPE_GMIME_STREAM_VFS);
   g_type_class_ref(GMIME_TYPE_PARSER);
   g_type_class_ref(GMIME_TYPE_STREAM_MEM);
   g_type_class_ref(GMIME_TYPE_MESSAGE);
 #endif /* WITH_MIME */
-  for (i = 0; mn_mailbox_types[i]; i++)
-    g_type_class_ref(mn_mailbox_types[i]);
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
   for (i = 0; mn_vfs_mailbox_backend_types[i]; i++)
     g_type_class_ref(mn_vfs_mailbox_backend_types[i]);
+  g_type_class_ref(MN_TYPE_VFS_MESSAGE);
 #endif
 #if WITH_EVOLUTION
-  g_type_class_ref(MN_TYPE_CORBA_OBJECT);
+  g_type_class_ref(MN_TYPE_BONOBO_UNKNOWN);
+  g_type_class_ref(MN_TYPE_EVOLUTION_MESSAGE);
 #endif
-  g_type_class_ref(MN_TYPE_MAILBOXES);
   g_type_class_ref(MN_TYPE_MESSAGE);
-  g_type_class_ref(MN_TYPE_SHELL);
 }
 
 static void
@@ -200,14 +207,54 @@ mn_main_handle_bonobo_exception (CORBA_Environment *env, const char *method)
     }
 }
 
+static gboolean
+mn_main_has_icon_path (const char *path)
+{
+  char **paths;
+  int i;
+  gboolean has = FALSE;
+
+  gtk_icon_theme_get_search_path(gtk_icon_theme_get_default(), &paths, NULL);
+  for (i = 0; paths[i]; i++)
+    if (! strcmp(paths[i], path))
+      {
+	has = TRUE;
+	break;
+      }
+  g_strfreev(paths);
+
+  return has;
+}
+
+/*
+ * This is needed when MN is not installed in the standard prefix (as
+ * is the case for my test builds).
+ */
+static void
+mn_main_ensure_icon_path (void)
+{
+#define icon_path DATADIR G_DIR_SEPARATOR_S "icons"
+  if (! mn_main_has_icon_path(icon_path))
+    gtk_icon_theme_prepend_search_path(gtk_icon_theme_get_default(), icon_path);
+#undef icon_path
+}
+
+static void
+mn_main_report_option_ignored (const char *option_name)
+{
+  g_return_if_fail(option_name != NULL);
+
+  g_message(_("%s option ignored since Mail Notification is not already running"), option_name);
+}
+
 int
 main (int argc, char **argv)
 {
   gboolean arg_version = FALSE;
   gboolean arg_display_properties = FALSE;
   gboolean arg_display_about = FALSE;
-  gboolean arg_close_popup = FALSE;
   gboolean arg_update = FALSE;
+  gboolean arg_print_summary = FALSE;
   gboolean arg_unset_obsolete_configuration = FALSE;
   gboolean arg_quit = FALSE;
   const struct poptOption popt_options[] = {
@@ -248,21 +295,21 @@ main (int argc, char **argv)
       NULL
     },
     {
-      "close-popup",
-      'c',
+      "update",
+      'u',
       POPT_ARG_NONE,
-      &arg_close_popup,
+      &arg_update,
       0,
-      N_("Close the mail summary popup"),
+      N_("Update the mail status"),
       NULL
     },
     {
-      "update",
-      'u',
+      "print-summary",
+      's',
       POPT_ARG_NONE,
-      &arg_update,
+      &arg_print_summary,
       0,
-      N_("Update the mail status"),
+      N_("Print a XML mail summary"),
       NULL
     },
     {
@@ -285,7 +332,6 @@ main (int argc, char **argv)
     },
     POPT_TABLEEND
   };
-  GdkPixbuf *icon;
   BonoboGenericFactory *automation_factory;
   GClosure *automation_factory_closure;
   Bonobo_RegistrationResult result;
@@ -334,12 +380,8 @@ main (int argc, char **argv)
 
   GDK_THREADS_ENTER();
 
-  icon = mn_pixbuf_new(GNOMEPIXMAPSDIR G_DIR_SEPARATOR_S "mail-notification.png");
-  if (icon)
-    {
-      gtk_window_set_default_icon(icon);
-      g_object_unref(icon);
-    }
+  mn_main_ensure_icon_path();
+  gtk_window_set_default_icon_name("mail-notification");
 
   mn_stock_init();
   bonobo_activate();
@@ -379,7 +421,7 @@ main (int argc, char **argv)
 	    if (result != Bonobo_ACTIVATION_REG_ALREADY_ACTIVE)
 	      {
 		mn_mailbox_init_types();
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 		mn_vfs_mailbox_init_types();
 #endif
 
@@ -395,14 +437,19 @@ main (int argc, char **argv)
 		g_mime_init(0);
 #endif
 
+		if (! notify_init(_("Mail Notification")))
+		  mn_error_dialog(NULL,
+				  _("An initialization error has occurred in Mail Notification"),
+				  _("Unable to initialize the notification library. Message popups will not be displayed."));
+
 		mn_locked_callback_init();
 		mn_conf_init();
 
 		/*
 		 * Work around
 		 * http://bugzilla.gnome.org/show_bug.cgi?id=64764:
-		 * initialize our non GTK-based classes before any
-		 * thread is created.
+		 * initialize the classes we will be using
+		 * concurrently before any thread is created.
 		 */
 		mn_main_init_classes();
 
@@ -426,10 +473,6 @@ main (int argc, char **argv)
 	      {
 		AUTOMATION_METHOD(displayAbout);
 	      }
-	    if (arg_close_popup)
-	      {
-		AUTOMATION_METHOD(closePopup);
-	      }
 
 	    if (result == Bonobo_ACTIVATION_REG_ALREADY_ACTIVE)
 	      {
@@ -438,13 +481,28 @@ main (int argc, char **argv)
 		    g_message(_("updating the mail status"));
 		    AUTOMATION_METHOD(update);
 		  }
+		if (arg_print_summary)
+		  {
+		    CORBA_string summary;
+
+		    summary = AUTOMATION_METHOD(getSummary);
+		    g_print("%s", summary);
+		    CORBA_free(summary);
+		  }
 
 		if (! (display_properties
 		       || arg_display_about
-		       || arg_close_popup
-		       || arg_update))
+		       || arg_update
+		       || arg_print_summary))
 		  g_message(_("Mail Notification is already running"));
 	      }
+	    else
+	      {
+		if (arg_update)
+		  mn_main_report_option_ignored("--update");
+		if (arg_print_summary)
+		  mn_main_report_option_ignored("--print-summary");
+	      }
 	  }
 
 	bonobo_object_release_unref(automation, &env);
diff --git a/src/mn-mbox-mailbox-backend-private.h b/src/mn-mbox-mailbox-backend-private.h
@@ -9,19 +9,6 @@
 extern "C" {
 #endif /* __cplusplus */
 
-struct _MNmboxMailboxBackendPrivate {
-#line 40 "mn-mbox-mailbox-backend.gob"
-	GnomeVFSURI * uri;
-#line 41 "mn-mbox-mailbox-backend.gob"
-	GnomeVFSFileSize last_size;
-#line 42 "mn-mbox-mailbox-backend.gob"
-	time_t last_mtime;
-#line 43 "mn-mbox-mailbox-backend.gob"
-	time_t last_ctime;
-#line 45 "mn-mbox-mailbox-backend.gob"
-	GMutex * mutex;
-#line 24 "mn-mbox-mailbox-backend-private.h"
-};
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-mbox-mailbox-backend.c b/src/mn-mbox-mailbox-backend.c
@@ -8,6 +8,8 @@
 
 #define selfp (self->_priv)
 
+#include <string.h> /* memset() */
+
 #include "mn-mbox-mailbox-backend.h"
 
 #include "mn-mbox-mailbox-backend-private.h"
@@ -20,20 +22,13 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-mbox-mailbox-backend.gob"
+#line 26 "mn-mbox-mailbox-backend.gob"
 
 #include "config.h"
-#include <string.h>
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include "mn-mailbox-private.h"
-#include "mn-reentrant-mailbox-private.h"
-#include "mn-vfs-mailbox-backend-private.h"
+#include "mn-base-mbox-mailbox-backend-private.h"
 #include "mn-message-mime.h"
-#include "mn-gmime-stream-vfs.h"
-#include "mn-util.h"
 
-#line 37 "mn-mbox-mailbox-backend.c"
+#line 32 "mn-mbox-mailbox-backend.c"
 /* self casting macros */
 #define SELF(x) MN_MBOX_MAILBOX_BACKEND(x)
 #define SELF_CONST(x) MN_MBOX_MAILBOX_BACKEND_CONST(x)
@@ -44,21 +39,17 @@
 #define SELF_GET_CLASS(x) MN_MBOX_MAILBOX_BACKEND_GET_CLASS(x)
 
 /* self typedefs */
-typedef MNmboxMailboxBackend Self;
-typedef MNmboxMailboxBackendClass SelfClass;
+typedef MNMboxMailboxBackend Self;
+typedef MNMboxMailboxBackendClass SelfClass;
 
 /* here are local prototypes */
-static void mn_mbox_mailbox_backend_init (MNmboxMailboxBackend * o) G_GNUC_UNUSED;
-static void mn_mbox_mailbox_backend_class_init (MNmboxMailboxBackendClass * class) G_GNUC_UNUSED;
-static gboolean ___2_mn_mbox_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailbox * mailbox) G_GNUC_UNUSED;
-static void ___3_mn_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend, unsigned long check_id) G_GNUC_UNUSED;
-static GnomeVFSURI * mn_mbox_mailbox_backend_get_uncompressed_uri (GnomeVFSURI * uri, GnomeVFSFileInfo * file_info) G_GNUC_UNUSED;
+static void mn_mbox_mailbox_backend_init (MNMboxMailboxBackend * o) G_GNUC_UNUSED;
+static void mn_mbox_mailbox_backend_class_init (MNMboxMailboxBackendClass * class) G_GNUC_UNUSED;
+static MNMessage * ___2_mn_mbox_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * backend, GMimeMessage * mime_message) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
-static MNVFSMailboxBackendClass *parent_class = NULL;
+static MNBaseMboxMailboxBackendClass *parent_class = NULL;
 
-/* Short form macros */
-#define self_get_uncompressed_uri mn_mbox_mailbox_backend_get_uncompressed_uri
 GType
 mn_mbox_mailbox_backend_get_type (void)
 {
@@ -66,431 +57,87 @@ mn_mbox_mailbox_backend_get_type (void)
 
 	if ___GOB_UNLIKELY(type == 0) {
 		static const GTypeInfo info = {
-			sizeof (MNmboxMailboxBackendClass),
+			sizeof (MNMboxMailboxBackendClass),
 			(GBaseInitFunc) NULL,
 			(GBaseFinalizeFunc) NULL,
 			(GClassInitFunc) mn_mbox_mailbox_backend_class_init,
 			(GClassFinalizeFunc) NULL,
 			NULL /* class_data */,
-			sizeof (MNmboxMailboxBackend),
+			sizeof (MNMboxMailboxBackend),
 			0 /* n_preallocs */,
 			(GInstanceInitFunc) mn_mbox_mailbox_backend_init,
 			NULL
 		};
 
-		type = g_type_register_static (MN_TYPE_VFS_MAILBOX_BACKEND, "MNmboxMailboxBackend", &info, (GTypeFlags)0);
+		type = g_type_register_static (MN_TYPE_BASE_MBOX_MAILBOX_BACKEND, "MNMboxMailboxBackend", &info, (GTypeFlags)0);
 	}
 
 	return type;
 }
 
 /* a macro for creating a new object of our type */
-#define GET_NEW ((MNmboxMailboxBackend *)g_object_new(mn_mbox_mailbox_backend_get_type(), NULL))
+#define GET_NEW ((MNMboxMailboxBackend *)g_object_new(mn_mbox_mailbox_backend_get_type(), NULL))
 
 /* a function for creating a new object of our type */
 #include <stdarg.h>
-static MNmboxMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
-static MNmboxMailboxBackend *
+static MNMboxMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNMboxMailboxBackend *
 GET_NEW_VARG (const char *first, ...)
 {
-	MNmboxMailboxBackend *ret;
+	MNMboxMailboxBackend *ret;
 	va_list ap;
 	va_start (ap, first);
-	ret = (MNmboxMailboxBackend *)g_object_new_valist (mn_mbox_mailbox_backend_get_type (), first, ap);
+	ret = (MNMboxMailboxBackend *)g_object_new_valist (mn_mbox_mailbox_backend_get_type (), first, ap);
 	va_end (ap);
 	return ret;
 }
 
-
-static void
-___dispose (GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:mbox:Mailbox:Backend::dispose"
-	MNmboxMailboxBackend *self G_GNUC_UNUSED = MN_MBOX_MAILBOX_BACKEND (obj_self);
-	if (G_OBJECT_CLASS (parent_class)->dispose) \
-		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 40 "mn-mbox-mailbox-backend.gob"
-	if(self->_priv->uri) { gnome_vfs_uri_unref ((gpointer) self->_priv->uri); self->_priv->uri = NULL; }
-#line 115 "mn-mbox-mailbox-backend.c"
-}
-#undef __GOB_FUNCTION__
-
-
-static void
-___finalize(GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:mbox:Mailbox:Backend::finalize"
-	MNmboxMailboxBackend *self G_GNUC_UNUSED = MN_MBOX_MAILBOX_BACKEND (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 45 "mn-mbox-mailbox-backend.gob"
-	if(self->_priv->mutex) { g_mutex_free ((gpointer) self->_priv->mutex); self->_priv->mutex = NULL; }
-#line 130 "mn-mbox-mailbox-backend.c"
-}
-#undef __GOB_FUNCTION__
-
 static void 
-mn_mbox_mailbox_backend_init (MNmboxMailboxBackend * o G_GNUC_UNUSED)
+mn_mbox_mailbox_backend_init (MNMboxMailboxBackend * o G_GNUC_UNUSED)
 {
-#define __GOB_FUNCTION__ "MN:mbox:Mailbox:Backend::init"
-	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_MBOX_MAILBOX_BACKEND,MNmboxMailboxBackendPrivate);
-#line 45 "mn-mbox-mailbox-backend.gob"
-	o->_priv->mutex = g_mutex_new();
-#line 141 "mn-mbox-mailbox-backend.c"
+#define __GOB_FUNCTION__ "MN:Mbox:Mailbox:Backend::init"
 }
 #undef __GOB_FUNCTION__
-#line 47 "mn-mbox-mailbox-backend.gob"
+#line 34 "mn-mbox-mailbox-backend.gob"
 static void 
-mn_mbox_mailbox_backend_class_init (MNmboxMailboxBackendClass * class G_GNUC_UNUSED)
-#line 147 "mn-mbox-mailbox-backend.c"
+mn_mbox_mailbox_backend_class_init (MNMboxMailboxBackendClass * class G_GNUC_UNUSED)
+#line 105 "mn-mbox-mailbox-backend.c"
 {
-#define __GOB_FUNCTION__ "MN:mbox:Mailbox:Backend::class_init"
-	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
-	MNVFSMailboxBackendClass *mn_vfs_mailbox_backend_class = (MNVFSMailboxBackendClass *)class;
-
-	g_type_class_add_private(class,sizeof(MNmboxMailboxBackendPrivate));
+#define __GOB_FUNCTION__ "MN:Mbox:Mailbox:Backend::class_init"
+	MNBaseMboxMailboxBackendClass *mn_base_mbox_mailbox_backend_class = (MNBaseMboxMailboxBackendClass *)class;
 
-	parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND);
+	parent_class = g_type_class_ref (MN_TYPE_BASE_MBOX_MAILBOX_BACKEND);
 
-#line 52 "mn-mbox-mailbox-backend.gob"
-	mn_vfs_mailbox_backend_class->is = ___2_mn_mbox_mailbox_backend_is;
-#line 117 "mn-mbox-mailbox-backend.gob"
-	mn_vfs_mailbox_backend_class->check = ___3_mn_mbox_mailbox_backend_check;
-#line 161 "mn-mbox-mailbox-backend.c"
-	g_object_class->dispose = ___dispose;
-	g_object_class->finalize = ___finalize;
+#line 39 "mn-mbox-mailbox-backend.gob"
+	mn_base_mbox_mailbox_backend_class->get_new_message = ___2_mn_mbox_mailbox_backend_get_new_message;
+#line 114 "mn-mbox-mailbox-backend.c"
  {
-#line 48 "mn-mbox-mailbox-backend.gob"
+#line 35 "mn-mbox-mailbox-backend.gob"
 
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "mbox";
   
-#line 169 "mn-mbox-mailbox-backend.c"
+#line 120 "mn-mbox-mailbox-backend.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 52 "mn-mbox-mailbox-backend.gob"
-static gboolean 
-___2_mn_mbox_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailbox * mailbox)
-#line 179 "mn-mbox-mailbox-backend.c"
-#define PARENT_HANDLER(___dummy,___mailbox) \
-	((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \
-		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___mailbox): \
-		((gboolean )0))
+#line 39 "mn-mbox-mailbox-backend.gob"
+static MNMessage * 
+___2_mn_mbox_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * backend G_GNUC_UNUSED, GMimeMessage * mime_message)
+#line 130 "mn-mbox-mailbox-backend.c"
+#define PARENT_HANDLER(___backend,___mime_message) \
+	((MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(parent_class)->get_new_message)? \
+		(* MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(parent_class)->get_new_message)(___backend,___mime_message): \
+		((MNMessage * )0))
 {
-#define __GOB_FUNCTION__ "MN:mbox:Mailbox:Backend::is"
+#define __GOB_FUNCTION__ "MN:Mbox:Mailbox:Backend::get_new_message"
 {
-#line 54 "mn-mbox-mailbox-backend.gob"
+#line 41 "mn-mbox-mailbox-backend.gob"
 	
-    gboolean is = FALSE;
-    GnomeVFSURI *uri;
-    GnomeVFSFileInfo *file_info;
-
-    uri = gnome_vfs_uri_ref(mailbox->vfs_uri);
-    file_info = gnome_vfs_file_info_new();
-
-    if (gnome_vfs_get_file_info_uri(uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK)
-      {
-	GnomeVFSURI *uncompressed_uri;
-
-	/* handle a compressed mailbox */
-	uncompressed_uri = self_get_uncompressed_uri(uri, file_info);
-	if (uncompressed_uri)
-	  {
-	    GnomeVFSFileInfo *uncompressed_file_info;
-
-	    uncompressed_file_info = gnome_vfs_file_info_new();
-	    if (gnome_vfs_get_file_info_uri(uncompressed_uri, uncompressed_file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK)
-	      {
-		gnome_vfs_file_info_unref(file_info);
-		file_info = uncompressed_file_info;
-
-		gnome_vfs_uri_unref(uri);
-		uri = uncompressed_uri;
-	      }
-	    else
-	      {
-		gnome_vfs_file_info_unref(uncompressed_file_info);
-		gnome_vfs_uri_unref(uncompressed_uri);
-	      }
-	  }
-
-	if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) != 0
-	    && file_info->type == GNOME_VFS_FILE_TYPE_REGULAR)
-	  {
-	    GnomeVFSHandle *handle;
-
-	    if (gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_READ) == GNOME_VFS_OK)
-	      {
-		char buf[5];
-		GnomeVFSResult result;
-		GnomeVFSFileSize bytes_read;
-
-		result = gnome_vfs_read(handle, buf, sizeof(buf), &bytes_read);
-		if ((result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
-		    && (bytes_read == 0
-			|| (bytes_read == sizeof(buf)
-			    && ! strncmp(buf, "From ", sizeof(buf)))))
-		  is = TRUE;
-
-		gnome_vfs_close(handle);
-	      }
-	  }
-      }
-
-    gnome_vfs_uri_unref(uri);
-    gnome_vfs_file_info_unref(file_info);
-
-    return is;
+    return mn_message_new_from_mime_message(MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mime_message, NULL, 0, TRUE);
   }}
-#line 250 "mn-mbox-mailbox-backend.c"
+#line 142 "mn-mbox-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
-
-#line 117 "mn-mbox-mailbox-backend.gob"
-static void 
-___3_mn_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, unsigned long check_id)
-#line 257 "mn-mbox-mailbox-backend.c"
-#define PARENT_HANDLER(___backend,___check_id) \
-	{ if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check) \
-		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check)(___backend,___check_id); }
-{
-#define __GOB_FUNCTION__ "MN:mbox:Mailbox:Backend::check"
-{
-#line 119 "mn-mbox-mailbox-backend.gob"
-	
-    Self *self = SELF(backend);
-    gboolean aborted;
-    gboolean polled;
-    GnomeVFSResult result;
-    GnomeVFSHandle *handle;
-    gboolean uri_set;
-
-    mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_FILE);
-
-    GDK_THREADS_ENTER();
-
-    if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-      aborted = TRUE;
-    else
-      {
-	aborted = FALSE;
-	polled = mn_mailbox_get_poll(MN_MAILBOX(backend->mailbox));
-      }
-
-    gdk_flush();
-    GDK_THREADS_LEAVE();
-
-    if (aborted)
-      return;
-
-    if (polled)
-      {
-	GnomeVFSFileInfo *file_info;
-	GnomeVFSResult result;
-	gboolean check;
-
-	/*
-	 * We are here because the mailbox has to be polled; only
-	 * check it if necessary.
-	 */
-
-	file_info = gnome_vfs_file_info_new();
-	result = gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
-
-	g_mutex_lock(selfp->mutex);
-
-	if (result == GNOME_VFS_OK
-	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) != 0
-	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MTIME) != 0
-	    && file_info->size == selfp->last_size
-	    && file_info->mtime == selfp->last_mtime)
-	  {
-	    if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_CTIME) != 0)
-	      check = file_info->ctime != selfp->last_ctime;
-	    else
-	      /*
-	       * The ctime is often missing for remote mailboxes;
-	       * since anyway the size and mtime do not have changed,
-	       * we do not check the mailbox.
-	       */
-	      check = FALSE;
-	  }
-	else
-	  check = TRUE;
-
-	if (check)
-	  {
-	    selfp->last_size = file_info->size;
-	    selfp->last_mtime = file_info->mtime;
-	    selfp->last_ctime = file_info->ctime;
-
-	    if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-	      check = FALSE;
-	  }
-
-	g_mutex_unlock(selfp->mutex);
-
-	gnome_vfs_file_info_unref(file_info);
-
-	if (! check)
-	  return;
-      }
-
-    g_mutex_lock(selfp->mutex);
-    uri_set = selfp->uri != NULL;
-    g_mutex_unlock(selfp->mutex);
-
-    if (! uri_set)
-      {
-	GnomeVFSFileInfo *file_info;
-	GnomeVFSURI *uri;
-
-	file_info = gnome_vfs_file_info_new();
-	if (gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK)
-	  uri = self_get_uncompressed_uri(backend->mailbox->vfs_uri, file_info);
-	gnome_vfs_file_info_unref(file_info);
-
-	if (! uri)
-	  uri = gnome_vfs_uri_ref(backend->mailbox->vfs_uri);
-
-	g_mutex_lock(selfp->mutex);
-
-	if (! selfp->uri)
-	  {
-	    selfp->uri = uri;
-	    uri = NULL;
-	  }
-	if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-	  aborted = TRUE;
-
-	g_mutex_unlock(selfp->mutex);
-
-	if (uri)
-	  gnome_vfs_uri_unref(uri);
-
-	if (aborted)
-	  return;
-      }
-
-    result = gnome_vfs_open_uri(&handle, selfp->uri, GNOME_VFS_OPEN_READ);
-    if (result == GNOME_VFS_OK)
-      {
-	GMimeStream *stream;
-
-	stream = mn_gmime_stream_vfs_new(handle, selfp->uri, &result);
-	if (stream)
-	  {
-	    GMimeParser *parser;
-	    GSList *messages = NULL;
-	    GnomeVFSResult close_result;
-
-	    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;
-
-		if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-		  break;
-
-		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, 'R'))
-		      messages = g_slist_prepend(messages, mn_message_new_from_mime_message(MN_MAILBOX(backend->mailbox), mime_message, 0, TRUE));
-
-		    g_object_unref(mime_message);
-		  }
-	      }
-
-	    g_object_unref(parser);
-	    close_result = gnome_vfs_close(handle);
-
-	    GDK_THREADS_ENTER();
-
-	    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-	      {
-		if (close_result == GNOME_VFS_OK)
-		  mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages);
-		else
-		  mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close file: %s"), gnome_vfs_result_to_string(close_result));
-	      }
-
-	    mn_g_object_slist_free(messages);
-
-	    gdk_flush();
-	    GDK_THREADS_LEAVE();
-
-	    return;
-	  }
-	else
-	  gnome_vfs_close(handle);
-      }
-
-    GDK_THREADS_ENTER();
-
-    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open mailbox: %s"), gnome_vfs_result_to_string(result));
-
-    gdk_flush();
-    GDK_THREADS_LEAVE();
-  }}
-#line 449 "mn-mbox-mailbox-backend.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 304 "mn-mbox-mailbox-backend.gob"
-static GnomeVFSURI * 
-mn_mbox_mailbox_backend_get_uncompressed_uri (GnomeVFSURI * uri, GnomeVFSFileInfo * file_info)
-#line 456 "mn-mbox-mailbox-backend.c"
-{
-#define __GOB_FUNCTION__ "MN:mbox:Mailbox:Backend::get_uncompressed_uri"
-#line 304 "mn-mbox-mailbox-backend.gob"
-	g_return_val_if_fail (uri != NULL, (GnomeVFSURI * )0);
-#line 304 "mn-mbox-mailbox-backend.gob"
-	g_return_val_if_fail (file_info != NULL, (GnomeVFSURI * )0);
-#line 463 "mn-mbox-mailbox-backend.c"
-{
-#line 307 "mn-mbox-mailbox-backend.gob"
-	
-    if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE) != 0 && file_info->mime_type)
-      {
-	/* compression methods supported by GnomeVFS */
-	const struct
-	{
-	  const char *mime_type;
-	  const char *method;
-	} compressions[] = {
-	  { "application/x-gzip", "gzip" },
-	  { "application/x-bzip", "bzip2" }
-	};
-	int i;
-
-	for (i = 0; i < G_N_ELEMENTS(compressions); i++)
-	  if (! strcmp(file_info->mime_type, compressions[i].mime_type))
-	    {
-	      char *str;
-	      GnomeVFSURI *uncompressed_uri;
-
-	      str = g_strdup_printf("%s%s:/", GNOME_VFS_URI_MAGIC_STR, compressions[i].method);
-	      uncompressed_uri = gnome_vfs_uri_append_string(uri, str);
-	      g_free(str);
-
-	      return uncompressed_uri;
-	    }
-      }
-
-    return NULL;
-  }}
-#line 496 "mn-mbox-mailbox-backend.c"
-#undef __GOB_FUNCTION__
diff --git a/src/mn-mbox-mailbox-backend.gob b/src/mn-mbox-mailbox-backend.gob
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,327 +12,33 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
 
 %headertop{
-#include "mn-vfs-mailbox-backend.h"
+#include "mn-base-mbox-mailbox-backend.h"
 %}
 
 %{
 #include "config.h"
-#include <string.h>
-#include <glib/gi18n.h>
-#include <gtk/gtk.h>
-#include "mn-mailbox-private.h"
-#include "mn-reentrant-mailbox-private.h"
-#include "mn-vfs-mailbox-backend-private.h"
+#include "mn-base-mbox-mailbox-backend-private.h"
 #include "mn-message-mime.h"
-#include "mn-gmime-stream-vfs.h"
-#include "mn-util.h"
 %}
 
-class MN:mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend
+class MN:Mbox:Mailbox:Backend from MN:Base:Mbox:Mailbox:Backend
 {
-  private GnomeVFSURI *uri unrefwith gnome_vfs_uri_unref;
-  private GnomeVFSFileSize last_size;
-  private time_t last_mtime;
-  private time_t last_ctime;
-
-  private GMutex *mutex = {g_mutex_new()} destroywith g_mutex_free;
-
   class_init (class)
   {
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "mbox";
   }
 
-  override (MN:VFS:Mailbox:Backend) gboolean
-    is (MNVFSMailboxBackend *dummy, MNVFSMailbox *mailbox)
+  override (MN:Base:Mbox:Mailbox:Backend) MNMessage *
+    get_new_message (MNBaseMboxMailboxBackend *backend, GMimeMessage *mime_message)
   {
-    gboolean is = FALSE;
-    GnomeVFSURI *uri;
-    GnomeVFSFileInfo *file_info;
-
-    uri = gnome_vfs_uri_ref(mailbox->vfs_uri);
-    file_info = gnome_vfs_file_info_new();
-
-    if (gnome_vfs_get_file_info_uri(uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK)
-      {
-	GnomeVFSURI *uncompressed_uri;
-
-	/* handle a compressed mailbox */
-	uncompressed_uri = self_get_uncompressed_uri(uri, file_info);
-	if (uncompressed_uri)
-	  {
-	    GnomeVFSFileInfo *uncompressed_file_info;
-
-	    uncompressed_file_info = gnome_vfs_file_info_new();
-	    if (gnome_vfs_get_file_info_uri(uncompressed_uri, uncompressed_file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK)
-	      {
-		gnome_vfs_file_info_unref(file_info);
-		file_info = uncompressed_file_info;
-
-		gnome_vfs_uri_unref(uri);
-		uri = uncompressed_uri;
-	      }
-	    else
-	      {
-		gnome_vfs_file_info_unref(uncompressed_file_info);
-		gnome_vfs_uri_unref(uncompressed_uri);
-	      }
-	  }
-
-	if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) != 0
-	    && file_info->type == GNOME_VFS_FILE_TYPE_REGULAR)
-	  {
-	    GnomeVFSHandle *handle;
-
-	    if (gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_READ) == GNOME_VFS_OK)
-	      {
-		char buf[5];
-		GnomeVFSResult result;
-		GnomeVFSFileSize bytes_read;
-
-		result = gnome_vfs_read(handle, buf, sizeof(buf), &bytes_read);
-		if ((result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
-		    && (bytes_read == 0
-			|| (bytes_read == sizeof(buf)
-			    && ! strncmp(buf, "From ", sizeof(buf)))))
-		  is = TRUE;
-
-		gnome_vfs_close(handle);
-	      }
-	  }
-      }
-
-    gnome_vfs_uri_unref(uri);
-    gnome_vfs_file_info_unref(file_info);
-
-    return is;
-  }
-
-  override (MN:VFS:Mailbox:Backend) void
-    check (MNVFSMailboxBackend *backend, unsigned long check_id)
-  {
-    Self *self = SELF(backend);
-    gboolean aborted;
-    gboolean polled;
-    GnomeVFSResult result;
-    GnomeVFSHandle *handle;
-    gboolean uri_set;
-
-    mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_FILE);
-
-    GDK_THREADS_ENTER();
-
-    if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-      aborted = TRUE;
-    else
-      {
-	aborted = FALSE;
-	polled = mn_mailbox_get_poll(MN_MAILBOX(backend->mailbox));
-      }
-
-    gdk_flush();
-    GDK_THREADS_LEAVE();
-
-    if (aborted)
-      return;
-
-    if (polled)
-      {
-	GnomeVFSFileInfo *file_info;
-	GnomeVFSResult result;
-	gboolean check;
-
-	/*
-	 * We are here because the mailbox has to be polled; only
-	 * check it if necessary.
-	 */
-
-	file_info = gnome_vfs_file_info_new();
-	result = gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
-
-	g_mutex_lock(selfp->mutex);
-
-	if (result == GNOME_VFS_OK
-	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) != 0
-	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MTIME) != 0
-	    && file_info->size == selfp->last_size
-	    && file_info->mtime == selfp->last_mtime)
-	  {
-	    if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_CTIME) != 0)
-	      check = file_info->ctime != selfp->last_ctime;
-	    else
-	      /*
-	       * The ctime is often missing for remote mailboxes;
-	       * since anyway the size and mtime do not have changed,
-	       * we do not check the mailbox.
-	       */
-	      check = FALSE;
-	  }
-	else
-	  check = TRUE;
-
-	if (check)
-	  {
-	    selfp->last_size = file_info->size;
-	    selfp->last_mtime = file_info->mtime;
-	    selfp->last_ctime = file_info->ctime;
-
-	    if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-	      check = FALSE;
-	  }
-
-	g_mutex_unlock(selfp->mutex);
-
-	gnome_vfs_file_info_unref(file_info);
-
-	if (! check)
-	  return;
-      }
-
-    g_mutex_lock(selfp->mutex);
-    uri_set = selfp->uri != NULL;
-    g_mutex_unlock(selfp->mutex);
-
-    if (! uri_set)
-      {
-	GnomeVFSFileInfo *file_info;
-	GnomeVFSURI *uri;
-
-	file_info = gnome_vfs_file_info_new();
-	if (gnome_vfs_get_file_info_uri(backend->mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS | GNOME_VFS_FILE_INFO_GET_MIME_TYPE) == GNOME_VFS_OK)
-	  uri = self_get_uncompressed_uri(backend->mailbox->vfs_uri, file_info);
-	gnome_vfs_file_info_unref(file_info);
-
-	if (! uri)
-	  uri = gnome_vfs_uri_ref(backend->mailbox->vfs_uri);
-
-	g_mutex_lock(selfp->mutex);
-
-	if (! selfp->uri)
-	  {
-	    selfp->uri = uri;
-	    uri = NULL;
-	  }
-	if (mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-	  aborted = TRUE;
-
-	g_mutex_unlock(selfp->mutex);
-
-	if (uri)
-	  gnome_vfs_uri_unref(uri);
-
-	if (aborted)
-	  return;
-      }
-
-    result = gnome_vfs_open_uri(&handle, selfp->uri, GNOME_VFS_OPEN_READ);
-    if (result == GNOME_VFS_OK)
-      {
-	GMimeStream *stream;
-
-	stream = mn_gmime_stream_vfs_new(handle, selfp->uri, &result);
-	if (stream)
-	  {
-	    GMimeParser *parser;
-	    GSList *messages = NULL;
-	    GnomeVFSResult close_result;
-
-	    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;
-
-		if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-		  break;
-
-		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, 'R'))
-		      messages = g_slist_prepend(messages, mn_message_new_from_mime_message(MN_MAILBOX(backend->mailbox), mime_message, 0, TRUE));
-
-		    g_object_unref(mime_message);
-		  }
-	      }
-
-	    g_object_unref(parser);
-	    close_result = gnome_vfs_close(handle);
-
-	    GDK_THREADS_ENTER();
-
-	    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-	      {
-		if (close_result == GNOME_VFS_OK)
-		  mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages);
-		else
-		  mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close file: %s"), gnome_vfs_result_to_string(close_result));
-	      }
-
-	    mn_g_object_slist_free(messages);
-
-	    gdk_flush();
-	    GDK_THREADS_LEAVE();
-
-	    return;
-	  }
-	else
-	  gnome_vfs_close(handle);
-      }
-
-    GDK_THREADS_ENTER();
-
-    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to open mailbox: %s"), gnome_vfs_result_to_string(result));
-
-    gdk_flush();
-    GDK_THREADS_LEAVE();
-  }
-
-  private GnomeVFSURI *
-    get_uncompressed_uri (GnomeVFSURI *uri (check null),
-			  GnomeVFSFileInfo *file_info (check null))
-  {
-    if ((file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_MIME_TYPE) != 0 && file_info->mime_type)
-      {
-	/* compression methods supported by GnomeVFS */
-	const struct
-	{
-	  const char *mime_type;
-	  const char *method;
-	} compressions[] = {
-	  { "application/x-gzip", "gzip" },
-	  { "application/x-bzip", "bzip2" }
-	};
-	int i;
-
-	for (i = 0; i < G_N_ELEMENTS(compressions); i++)
-	  if (! strcmp(file_info->mime_type, compressions[i].mime_type))
-	    {
-	      char *str;
-	      GnomeVFSURI *uncompressed_uri;
-
-	      str = g_strdup_printf("%s%s:/", GNOME_VFS_URI_MAGIC_STR, compressions[i].method);
-	      uncompressed_uri = gnome_vfs_uri_append_string(uri, str);
-	      g_free(str);
-
-	      return uncompressed_uri;
-	    }
-      }
-
-    return NULL;
+    return mn_message_new_from_mime_message(MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mime_message, NULL, 0, TRUE);
   }
 }
diff --git a/src/mn-mbox-mailbox-backend.h b/src/mn-mbox-mailbox-backend.h
@@ -4,7 +4,7 @@
 #include <glib-object.h>
 
 
-#include "mn-vfs-mailbox-backend.h"
+#include "mn-base-mbox-mailbox-backend.h"
 
 #ifndef __MN_MBOX_MAILBOX_BACKEND_H__
 #define __MN_MBOX_MAILBOX_BACKEND_H__
@@ -18,35 +18,30 @@ extern "C" {
  * Type checking and casting macros
  */
 #define MN_TYPE_MBOX_MAILBOX_BACKEND	(mn_mbox_mailbox_backend_get_type())
-#define MN_MBOX_MAILBOX_BACKEND(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mbox_mailbox_backend_get_type(), MNmboxMailboxBackend)
-#define MN_MBOX_MAILBOX_BACKEND_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mbox_mailbox_backend_get_type(), MNmboxMailboxBackend const)
-#define MN_MBOX_MAILBOX_BACKEND_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_mbox_mailbox_backend_get_type(), MNmboxMailboxBackendClass)
+#define MN_MBOX_MAILBOX_BACKEND(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mbox_mailbox_backend_get_type(), MNMboxMailboxBackend)
+#define MN_MBOX_MAILBOX_BACKEND_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mbox_mailbox_backend_get_type(), MNMboxMailboxBackend const)
+#define MN_MBOX_MAILBOX_BACKEND_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_mbox_mailbox_backend_get_type(), MNMboxMailboxBackendClass)
 #define MN_IS_MBOX_MAILBOX_BACKEND(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mbox_mailbox_backend_get_type ())
 
-#define MN_MBOX_MAILBOX_BACKEND_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_mbox_mailbox_backend_get_type(), MNmboxMailboxBackendClass)
-
-/* Private structure type */
-typedef struct _MNmboxMailboxBackendPrivate MNmboxMailboxBackendPrivate;
+#define MN_MBOX_MAILBOX_BACKEND_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_mbox_mailbox_backend_get_type(), MNMboxMailboxBackendClass)
 
 /*
  * Main object structure
  */
 #ifndef __TYPEDEF_MN_MBOX_MAILBOX_BACKEND__
 #define __TYPEDEF_MN_MBOX_MAILBOX_BACKEND__
-typedef struct _MNmboxMailboxBackend MNmboxMailboxBackend;
+typedef struct _MNMboxMailboxBackend MNMboxMailboxBackend;
 #endif
-struct _MNmboxMailboxBackend {
-	MNVFSMailboxBackend __parent__;
-	/*< private >*/
-	MNmboxMailboxBackendPrivate *_priv;
+struct _MNMboxMailboxBackend {
+	MNBaseMboxMailboxBackend __parent__;
 };
 
 /*
  * Class definition
  */
-typedef struct _MNmboxMailboxBackendClass MNmboxMailboxBackendClass;
-struct _MNmboxMailboxBackendClass {
-	MNVFSMailboxBackendClass __parent__;
+typedef struct _MNMboxMailboxBackendClass MNMboxMailboxBackendClass;
+struct _MNMboxMailboxBackendClass {
+	MNBaseMboxMailboxBackendClass __parent__;
 };
 
 
diff --git a/src/mn-md5.c b/src/mn-md5.c
@@ -26,7 +26,7 @@
  * edited for clarity and style only.
  */
 
-#include <sys/types.h>
+#include <stdint.h>
 #include <string.h>
 #include <glib.h>
 #include "mn-md5.h"
@@ -38,11 +38,11 @@
 #define mn_md5_decode memcpy
 #else /* i386 || __i386 || __i386__ */
 /*
- * Encodes input (u_int32_t) into output (unsigned char). Assumes len
+ * Encodes input (uint32_t) into output (unsigned char). Assumes len
  * is a multiple of 4.
  */
 static void
-mn_md5_encode (unsigned char *output, u_int32_t *input, unsigned int len)
+mn_md5_encode (unsigned char *output, uint32_t *input, unsigned int len)
 {
   unsigned int i, j;
 
@@ -56,17 +56,17 @@ mn_md5_encode (unsigned char *output, u_int32_t *input, unsigned int len)
 }
 
 /*
- * Decodes input (unsigned char) into output (u_int32_t). Assumes len
+ * Decodes input (unsigned char) into output (uint32_t). Assumes len
  * is a multiple of 4.
  */
 static void
-mn_md5_decode (u_int32_t *output, const unsigned char *input, unsigned int len)
+mn_md5_decode (uint32_t *output, const unsigned char *input, unsigned int len)
 {
   unsigned int i, j;
 
   for (i = 0, j = 0; j < len; i++, j += 4)
-    output[i] = ((u_int32_t) input[j]) | (((u_int32_t) input[j + 1]) << 8) |
-      (((u_int32_t) input[j + 2]) << 16) | (((u_int32_t) input[j + 3]) << 24);
+    output[i] = ((uint32_t) input[j]) | (((uint32_t) input[j + 1]) << 8) |
+      (((uint32_t) input[j + 2]) << 16) | (((uint32_t) input[j + 3]) << 24);
 }
 #endif /* i386 || __i386 || __i386__ */
 
@@ -84,22 +84,22 @@ mn_md5_decode (u_int32_t *output, const unsigned char *input, unsigned int len)
  * Rotation is separate from addition to prevent recomputation.
  */
 #define FF(a, b, c, d, x, s, ac) { \
-    (a) += F((b), (c), (d)) + (x) + (u_int32_t) (ac);	\
+    (a) += F((b), (c), (d)) + (x) + (uint32_t) (ac);	\
     (a) = ROTATE_LEFT((a), (s));			\
     (a) += (b);						\
   }
 #define GG(a, b, c, d, x, s, ac) { \
-    (a) += G((b), (c), (d)) + (x) + (u_int32_t) (ac);	\
+    (a) += G((b), (c), (d)) + (x) + (uint32_t) (ac);	\
     (a) = ROTATE_LEFT((a), (s));			\
     (a) += (b);						\
   }
 #define HH(a, b, c, d, x, s, ac) { \
-    (a) += H((b), (c), (d)) + (x) + (u_int32_t) (ac);	\
+    (a) += H((b), (c), (d)) + (x) + (uint32_t) (ac);	\
     (a) = ROTATE_LEFT((a), (s));			\
     (a) += (b);						\
   }
 #define II(a, b, c, d, x, s, ac) { \
-    (a) += I((b), (c), (d)) + (x) + (u_int32_t) (ac);	\
+    (a) += I((b), (c), (d)) + (x) + (uint32_t) (ac);	\
     (a) = ROTATE_LEFT((a), (s));			\
     (a) += (b);						\
   }
@@ -116,7 +116,7 @@ static unsigned char PADDING[64] = {
 
 /*** functions ***************************************************************/
 
-static void mn_md5_transform (u_int32_t state[4], const unsigned char block[64]);
+static void mn_md5_transform (uint32_t state[4], const unsigned char block[64]);
 
 /*** implementation **********************************************************/
 
@@ -158,9 +158,9 @@ mn_md5_update (MNMD5Context *context,
   index = (unsigned int) ((context->count[0] >> 3) & 0x3F);
 
   /* update number of bits */
-  if ((context->count[0] += ((u_int32_t) len << 3)) < ((u_int32_t) len << 3))
+  if ((context->count[0] += ((uint32_t) len << 3)) < ((uint32_t) len << 3))
     context->count[1]++;
-  context->count[1] += ((u_int32_t) len >> 29);
+  context->count[1] += ((uint32_t) len >> 29);
 
   part_len = 64 - index;
 
@@ -247,9 +247,9 @@ mn_md5_end (MNMD5Context *context, char *buf)
 }
 
 static void
-mn_md5_transform (u_int32_t state[4], const unsigned char block[64])
+mn_md5_transform (uint32_t state[4], const unsigned char block[64])
 {
-  u_int32_t a = state[0], b = state[1], c = state[2], d = state[3], x[16];
+  uint32_t a = state[0], b = state[1], c = state[2], d = state[3], x[16];
 
   mn_md5_decode(x, block, 64);
 
diff --git a/src/mn-md5.h b/src/mn-md5.h
@@ -29,12 +29,12 @@
 #ifndef _MN_MD5_H
 #define _MN_MD5_H
 
-#include <sys/types.h>
+#include <stdint.h>
 
 typedef struct
 {
-  u_int32_t state[4];		/* state (ABCD) */
-  u_int32_t count[2];		/* number of bits, modulo 2^64 (lsb first) */
+  uint32_t state[4];		/* state (ABCD) */
+  uint32_t count[2];		/* number of bits, modulo 2^64 (lsb first) */
   unsigned char buffer[64];	/* input buffer */
 } MNMD5Context;
 
diff --git a/src/mn-message-mime.c b/src/mn-message-mime.c
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
@@ -54,9 +55,26 @@ mn_message_mime_header_decode_text (const char *str)
 MNMessage *
 mn_message_new_from_mime_message (MNMailbox *mailbox,
 				  GMimeMessage *mime_message,
+				  const char *uri,
 				  MNMessageFlags flags,
 				  gboolean handle_status)
 {
+  return mn_message_new_from_mime_message_full(MN_TYPE_MESSAGE,
+					       mailbox,
+					       mime_message,
+					       uri,
+					       flags,
+					       handle_status);
+}
+
+MNMessage *
+mn_message_new_from_mime_message_full (GType type,
+				       MNMailbox *mailbox,
+				       GMimeMessage *mime_message,
+				       const char *uri,
+				       MNMessageFlags flags,
+				       gboolean handle_status)
+{
   MNMessage *message;
   const char *message_id;
   time_t sent_time;
@@ -65,29 +83,40 @@ mn_message_new_from_mime_message (MNMailbox *mailbox,
   char *decoded_from;
   char *decoded_subject;
 
+  g_return_val_if_fail(type != 0, NULL);
   g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), 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;
-
   if (handle_status)
     {
       const char *status;
 
       status = g_mime_message_get_header(mime_message, "Status");
-      if (status && strchr(status, 'O'))
+      if (status && strchr(status, 'R'))
+	return NULL;		/* the message was read */
+      else if (status && strchr(status, 'O'))
 	flags &= ~MN_MESSAGE_NEW;
       else
 	flags |= MN_MESSAGE_NEW;
     }
 
-  message = mn_message_new(mailbox, NULL, sent_time, message_id, decoded_from, decoded_subject, flags);
+  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 = g_object_new(type,
+			 MN_MESSAGE_PROP_MAILBOX(mailbox),
+			 MN_MESSAGE_PROP_SENT_TIME(sent_time),
+			 MN_MESSAGE_PROP_ID((char *) message_id),
+			 MN_MESSAGE_PROP_FROM(decoded_from),
+			 MN_MESSAGE_PROP_SUBJECT(decoded_subject),
+			 MN_MESSAGE_PROP_URI((char *) uri),
+			 MN_MESSAGE_PROP_FLAGS(flags),
+			 NULL);
 
   g_free(decoded_from);
   g_free(decoded_subject);
@@ -98,13 +127,31 @@ mn_message_new_from_mime_message (MNMailbox *mailbox,
 MNMessage *
 mn_message_new_from_mime_stream (MNMailbox *mailbox,
 				 GMimeStream *mime_stream,
+				 const char *uri,
 				 MNMessageFlags flags,
 				 gboolean handle_status)
 {
+  return mn_message_new_from_mime_stream_full(MN_TYPE_MESSAGE,
+					      mailbox,
+					      mime_stream,
+					      uri,
+					      flags,
+					      handle_status);
+}
+
+MNMessage *
+mn_message_new_from_mime_stream_full (GType type,
+				      MNMailbox *mailbox,
+				      GMimeStream *mime_stream,
+				      const char *uri,
+				      MNMessageFlags flags,
+				      gboolean handle_status)
+{
   GMimeParser *parser;
   GMimeMessage *mime_message;
   MNMessage *message;
 
+  g_return_val_if_fail(type != 0, NULL);
   g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), NULL);
   g_return_val_if_fail(GMIME_IS_STREAM(mime_stream), NULL);
 
@@ -114,7 +161,7 @@ mn_message_new_from_mime_stream (MNMailbox *mailbox,
 
   if (mime_message)
     {
-      message = mn_message_new_from_mime_message(mailbox, mime_message, flags, handle_status);
+      message = mn_message_new_from_mime_message_full(type, mailbox, mime_message, uri, flags, handle_status);
       g_object_unref(mime_message);
     }
   else
@@ -129,9 +176,24 @@ mn_message_new_from_uri (MNMailbox *mailbox,
 			 MNMessageFlags flags,
 			 gboolean handle_status)
 {
+  return mn_message_new_from_uri_full(MN_TYPE_MESSAGE,
+				      mailbox,
+				      uri,
+				      flags,
+				      handle_status);
+}
+
+MNMessage *
+mn_message_new_from_uri_full (GType type,
+			      MNMailbox *mailbox,
+			      GnomeVFSURI *uri,
+			      MNMessageFlags flags,
+			      gboolean handle_status)
+{
   GnomeVFSResult result;
   GnomeVFSHandle *handle;
 
+  g_return_val_if_fail(type != 0, NULL);
   g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), NULL);
   g_return_val_if_fail(uri != NULL, NULL);
 
@@ -144,8 +206,13 @@ mn_message_new_from_uri (MNMailbox *mailbox,
       if (stream)
 	{
 	  MNMessage *message;
+	  char *text_uri;
+
+	  text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE);
+
+	  message = mn_message_new_from_mime_stream_full(type, mailbox, stream, text_uri, flags, handle_status);
 
-	  message = mn_message_new_from_mime_stream(mailbox, stream, flags, handle_status);
+	  g_free(text_uri);
 	  g_object_unref(stream);
 
 	  result = gnome_vfs_close(handle);
@@ -175,7 +242,7 @@ mn_message_new_from_buffer (MNMailbox *mailbox,
   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, stream, flags, handle_status);
+  message = mn_message_new_from_mime_stream(mailbox, stream, NULL, flags, handle_status);
   g_object_unref(stream);
 
   return message;
diff --git a/src/mn-message-mime.h b/src/mn-message-mime.h
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_MESSAGE_MIME_H
@@ -24,16 +25,35 @@
 
 MNMessage *mn_message_new_from_mime_message (MNMailbox *mailbox,
 					     GMimeMessage *mime_message,
+					     const char *uri,
 					     MNMessageFlags flags,
 					     gboolean handle_status);
+MNMessage *mn_message_new_from_mime_message_full (GType type,
+						  MNMailbox *mailbox,
+						  GMimeMessage *mime_message,
+						  const char *uri,
+						  MNMessageFlags flags,
+						  gboolean handle_status);
 MNMessage *mn_message_new_from_mime_stream (MNMailbox *mailbox,
 					    GMimeStream *mime_stream,
+					    const char *uri,
 					    MNMessageFlags flags,
 					    gboolean handle_status);
+MNMessage *mn_message_new_from_mime_stream_full (GType type,
+						 MNMailbox *mailbox,
+						 GMimeStream *mime_stream,
+						 const char *uri,
+						 MNMessageFlags flags,
+						 gboolean handle_status);
 MNMessage *mn_message_new_from_uri (MNMailbox *mailbox,
 				    GnomeVFSURI *uri,
 				    MNMessageFlags flags,
 				    gboolean handle_status);
+MNMessage *mn_message_new_from_uri_full (GType type,
+					 MNMailbox *mailbox,
+					 GnomeVFSURI *uri,
+					 MNMessageFlags flags,
+					 gboolean handle_status);
 MNMessage *mn_message_new_from_buffer (MNMailbox *mailbox,
 				       const char *buffer,
 				       unsigned int len,
diff --git a/src/mn-message-private.h b/src/mn-message-private.h
@@ -10,6 +10,18 @@ extern "C" {
 #endif /* __cplusplus */
 
 
+#line 34 "mn-message.gob"
+
+#include "mn-xml.h"
+
+typedef enum
+{
+  /* include in the XML summary and allow as a command format */
+  MN_MESSAGE_PARAM_EXPORT	= MN_XML_PARAM_IMPORT_EXPORT,
+} MNMessageParamFlags;
+
+#line 24 "mn-message-private.h"
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/src/mn-message-view-private.h b/src/mn-message-view-private.h
@@ -10,13 +10,13 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 25 "mn-message-view.gob"
+#line 26 "mn-message-view.gob"
 
 #include <time.h>
 
 #line 18 "mn-message-view-private.h"
 struct _MNMessageViewPrivate {
-#line 47 "mn-message-view.gob"
+#line 48 "mn-message-view.gob"
 	GSList * past_time_cells;
 #line 22 "mn-message-view-private.h"
 };
diff --git a/src/mn-message-view.c b/src/mn-message-view.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-message-view.gob"
+#line 30 "mn-message-view.gob"
 
 #include "mn-locked-callback.h"
 #include "mn-util.h"
@@ -128,7 +128,7 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Message:View::finalize"
 	MNMessageView *self G_GNUC_UNUSED = MN_MESSAGE_VIEW (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 60 "mn-message-view.gob"
+#line 61 "mn-message-view.gob"
 	___3_mn_message_view_finalize(obj_self);
 #line 134 "mn-message-view.c"
 }
@@ -141,7 +141,7 @@ mn_message_view_init (MNMessageView * o G_GNUC_UNUSED)
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_MESSAGE_VIEW,MNMessageViewPrivate);
 }
 #undef __GOB_FUNCTION__
-#line 55 "mn-message-view.gob"
+#line 56 "mn-message-view.gob"
 static void 
 mn_message_view_class_init (MNMessageViewClass * class G_GNUC_UNUSED)
 #line 148 "mn-message-view.c"
@@ -155,13 +155,13 @@ mn_message_view_class_init (MNMessageViewClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_TEXT_TABLE);
 
-#line 60 "mn-message-view.gob"
+#line 61 "mn-message-view.gob"
 	g_object_class->finalize = ___finalize;
-#line 70 "mn-message-view.gob"
+#line 71 "mn-message-view.gob"
 	gtk_widget_class->realize = ___4_mn_message_view_realize;
 #line 163 "mn-message-view.c"
 	class->update = NULL;
-#line 91 "mn-message-view.gob"
+#line 92 "mn-message-view.gob"
 	mn_text_table_class->clear = ___6_mn_message_view_clear;
 #line 167 "mn-message-view.c"
 	g_object_class->set_property = ___object_set_property;
@@ -178,7 +178,7 @@ mn_message_view_class_init (MNMessageViewClass * class G_GNUC_UNUSED)
 		param_spec);
     }
  {
-#line 56 "mn-message-view.gob"
+#line 57 "mn-message-view.gob"
 
     past_time_cells = g_queue_new();
   
@@ -201,7 +201,7 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_MESSAGES:
 		{
-#line 51 "mn-message-view.gob"
+#line 52 "mn-message-view.gob"
 
       self_update(self, g_value_get_pointer(VAL));
     
@@ -221,21 +221,21 @@ ___object_set_property (GObject *object,
 #undef __GOB_FUNCTION__
 
 
-#line 51 "mn-message-view.gob"
+#line 52 "mn-message-view.gob"
 void 
 mn_message_view_set_messages (MNMessageView * self, gpointer val)
 #line 228 "mn-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Message:View::set_messages"
 {
-#line 49 "mn-message-view.gob"
+#line 50 "mn-message-view.gob"
 		g_object_set (G_OBJECT (self), "messages", val, NULL);
 }}
 #line 235 "mn-message-view.c"
 #undef __GOB_FUNCTION__
 
 
-#line 60 "mn-message-view.gob"
+#line 61 "mn-message-view.gob"
 static void 
 ___3_mn_message_view_finalize (GObject * object G_GNUC_UNUSED)
 #line 242 "mn-message-view.c"
@@ -245,7 +245,7 @@ ___3_mn_message_view_finalize (GObject * object G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Message:View::finalize"
 {
-#line 62 "mn-message-view.gob"
+#line 63 "mn-message-view.gob"
 	
     Self *self = SELF(object);
 
@@ -257,7 +257,7 @@ ___3_mn_message_view_finalize (GObject * object G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 70 "mn-message-view.gob"
+#line 71 "mn-message-view.gob"
 static void 
 ___4_mn_message_view_realize (GtkWidget * widget G_GNUC_UNUSED)
 #line 264 "mn-message-view.c"
@@ -267,7 +267,7 @@ ___4_mn_message_view_realize (GtkWidget * widget G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Message:View::realize"
 {
-#line 72 "mn-message-view.gob"
+#line 73 "mn-message-view.gob"
 	
     GtkWidget *toplevel;
     GtkStateType state;
@@ -287,15 +287,15 @@ ___4_mn_message_view_realize (GtkWidget * widget G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 88 "mn-message-view.gob"
+#line 89 "mn-message-view.gob"
 static void 
 mn_message_view_update (MNMessageView * self, GSList * messages)
 #line 294 "mn-message-view.c"
 {
 	MNMessageViewClass *klass;
-#line 88 "mn-message-view.gob"
+#line 89 "mn-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 88 "mn-message-view.gob"
+#line 89 "mn-message-view.gob"
 	g_return_if_fail (MN_IS_MESSAGE_VIEW (self));
 #line 301 "mn-message-view.c"
 	klass = MN_MESSAGE_VIEW_GET_CLASS(self);
@@ -304,7 +304,7 @@ mn_message_view_update (MNMessageView * self, GSList * messages)
 		(*klass->update)(self,messages);
 }
 
-#line 91 "mn-message-view.gob"
+#line 92 "mn-message-view.gob"
 static void 
 ___6_mn_message_view_clear (MNTextTable * table G_GNUC_UNUSED)
 #line 311 "mn-message-view.c"
@@ -314,7 +314,7 @@ ___6_mn_message_view_clear (MNTextTable * table G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Message:View::clear"
 {
-#line 93 "mn-message-view.gob"
+#line 94 "mn-message-view.gob"
 	
     self_clear_past_time_cells(SELF(table));
 
@@ -324,19 +324,19 @@ ___6_mn_message_view_clear (MNTextTable * table G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 99 "mn-message-view.gob"
+#line 100 "mn-message-view.gob"
 void 
 mn_message_view_append_past_time_cell (MNMessageView * self, time_t past_time, time_t now)
 #line 331 "mn-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Message:View::append_past_time_cell"
-#line 99 "mn-message-view.gob"
+#line 100 "mn-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 99 "mn-message-view.gob"
+#line 100 "mn-message-view.gob"
 	g_return_if_fail (MN_IS_MESSAGE_VIEW (self));
 #line 338 "mn-message-view.c"
 {
-#line 101 "mn-message-view.gob"
+#line 102 "mn-message-view.gob"
 	
     PastTimeCell *pcell;
 
@@ -358,19 +358,19 @@ mn_message_view_append_past_time_cell (MNMessageView * self, time_t past_time, t
 #line 359 "mn-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 120 "mn-message-view.gob"
+#line 121 "mn-message-view.gob"
 static void 
 mn_message_view_clear_past_time_cells (MNMessageView * self)
 #line 365 "mn-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Message:View::clear_past_time_cells"
-#line 120 "mn-message-view.gob"
+#line 121 "mn-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 120 "mn-message-view.gob"
+#line 121 "mn-message-view.gob"
 	g_return_if_fail (MN_IS_MESSAGE_VIEW (self));
 #line 372 "mn-message-view.c"
 {
-#line 122 "mn-message-view.gob"
+#line 123 "mn-message-view.gob"
 	
     GSList *l;
 
@@ -393,14 +393,14 @@ mn_message_view_clear_past_time_cells (MNMessageView * self)
 #line 394 "mn-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 142 "mn-message-view.gob"
+#line 143 "mn-message-view.gob"
 static gboolean 
 mn_message_view_update_past_time_cells_cb (gpointer data)
 #line 400 "mn-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Message:View::update_past_time_cells_cb"
 {
-#line 144 "mn-message-view.gob"
+#line 145 "mn-message-view.gob"
 	
     time_t now;
     GList *l;
@@ -414,17 +414,17 @@ mn_message_view_update_past_time_cells_cb (gpointer data)
 #line 415 "mn-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 155 "mn-message-view.gob"
+#line 156 "mn-message-view.gob"
 static void 
 mn_message_view_update_past_time_cell (PastTimeCell * pcell, time_t now)
 #line 421 "mn-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Message:View::update_past_time_cell"
-#line 155 "mn-message-view.gob"
+#line 156 "mn-message-view.gob"
 	g_return_if_fail (pcell != NULL);
 #line 426 "mn-message-view.c"
 {
-#line 157 "mn-message-view.gob"
+#line 158 "mn-message-view.gob"
 	
     char *formatted;
 
diff --git a/src/mn-message-view.gob b/src/mn-message-view.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
diff --git a/src/mn-message.c b/src/mn-message.c
@@ -22,13 +22,15 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 33 "mn-message.gob"
+#line 44 "mn-message.gob"
 
 #include "config.h"
-#include <glib/gi18n.h>
+#include <errno.h>
+#include <gnome.h>
+#include <libgnomevfs/gnome-vfs.h>
 #include "mn-util.h"
 
-#line 32 "mn-message.c"
+#line 34 "mn-message.c"
 /* self casting macros */
 #define SELF(x) MN_MESSAGE(x)
 #define SELF_CONST(x) MN_MESSAGE_CONST(x)
@@ -48,15 +50,34 @@ static void ___object_get_property (GObject *object, guint property_id, GValue *
 static void mn_message_init (MNMessage * o) G_GNUC_UNUSED;
 static void mn_message_class_init (MNMessageClass * c) G_GNUC_UNUSED;
 static GObject * ___1_mn_message_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static gboolean mn_message_get_subst (MNMessage * self, const char * prop_name, char ** result) G_GNUC_UNUSED;
+static char * mn_message_subst_command (MNMessage * self, const char * command, GError ** err) G_GNUC_UNUSED;
+static gboolean mn_message_execute_command_real (MNMessage * self, const char * command, GError ** err) G_GNUC_UNUSED;
+static gboolean mn_message_execute_command (MNMessage * self, const char * id, gboolean * status, GError ** err) G_GNUC_UNUSED;
+static gboolean ___real_mn_message_can_open_impl (MNMessage * self);
+static gboolean mn_message_can_open_impl (MNMessage * self) G_GNUC_UNUSED;
+static gboolean ___real_mn_message_open_impl (MNMessage * self, GError ** err);
+static gboolean mn_message_open_impl (MNMessage * self, GError ** err) G_GNUC_UNUSED;
+static gboolean ___real_mn_message_can_mark_as_read_impl (MNMessage * self);
+static gboolean mn_message_can_mark_as_read_impl (MNMessage * self) G_GNUC_UNUSED;
+static gboolean mn_message_mark_as_read_real (MNMessage * self, GError ** err) G_GNUC_UNUSED;
+static gboolean mn_message_mark_as_read_impl (MNMessage * self, GError ** err) G_GNUC_UNUSED;
+static gboolean ___real_mn_message_can_mark_as_spam (MNMessage * self);
+static gboolean ___real_mn_message_can_mark_as_spam_impl (MNMessage * self);
+static gboolean mn_message_can_mark_as_spam_impl (MNMessage * self) G_GNUC_UNUSED;
+static gboolean mn_message_mark_as_spam_real (MNMessage * self, GError ** err) G_GNUC_UNUSED;
+static gboolean mn_message_mark_as_spam_impl (MNMessage * self, GError ** err) G_GNUC_UNUSED;
 
 enum {
 	PROP_0,
-	PROP_MAILBOX_NAME,
+	PROP_MAILBOX,
 	PROP_ERROR,
 	PROP_SENT_TIME,
 	PROP_ID,
 	PROP_FROM,
 	PROP_SUBJECT,
+	PROP_URI,
+	PROP_FILENAME,
 	PROP_FLAGS
 };
 
@@ -64,8 +85,27 @@ enum {
 static GObjectClass *parent_class = NULL;
 
 /* Short form macros */
+#define self_get_subst mn_message_get_subst
+#define self_subst_command mn_message_subst_command
+#define self_execute_command_real mn_message_execute_command_real
+#define self_execute_command mn_message_execute_command
+#define self_can_open mn_message_can_open
+#define self_can_open_impl mn_message_can_open_impl
+#define self_open mn_message_open
+#define self_open_impl mn_message_open_impl
+#define self_can_mark_as_read mn_message_can_mark_as_read
+#define self_can_mark_as_read_impl mn_message_can_mark_as_read_impl
+#define self_mark_as_read_real mn_message_mark_as_read_real
+#define self_mark_as_read mn_message_mark_as_read
+#define self_mark_as_read_impl mn_message_mark_as_read_impl
+#define self_can_mark_as_spam mn_message_can_mark_as_spam
+#define self_can_mark_as_spam_impl mn_message_can_mark_as_spam_impl
+#define self_mark_as_spam_real mn_message_mark_as_spam_real
+#define self_mark_as_spam mn_message_mark_as_spam
+#define self_mark_as_spam_impl mn_message_mark_as_spam_impl
 #define self_new mn_message_new
 #define self_new_from_error mn_message_new_from_error
+#define self_xml_node_new mn_message_xml_node_new
 GType
 mn_message_get_type (void)
 {
@@ -116,21 +156,21 @@ ___finalize(GObject *obj_self)
 	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 42 "mn-message.gob"
-	if(self->mailbox_name) { g_free ((gpointer) self->mailbox_name); self->mailbox_name = NULL; }
-#line 122 "mn-message.c"
-#line 46 "mn-message.gob"
+#line 67 "mn-message.gob"
 	if(self->error) { g_free ((gpointer) self->error); self->error = NULL; }
-#line 125 "mn-message.c"
-#line 54 "mn-message.gob"
+#line 162 "mn-message.c"
+#line 75 "mn-message.gob"
 	if(self->id) { g_free ((gpointer) self->id); self->id = NULL; }
-#line 128 "mn-message.c"
-#line 58 "mn-message.gob"
+#line 165 "mn-message.c"
+#line 79 "mn-message.gob"
 	if(self->from) { g_free ((gpointer) self->from); self->from = NULL; }
-#line 131 "mn-message.c"
-#line 62 "mn-message.gob"
+#line 168 "mn-message.c"
+#line 83 "mn-message.gob"
 	if(self->subject) { g_free ((gpointer) self->subject); self->subject = NULL; }
-#line 134 "mn-message.c"
+#line 171 "mn-message.c"
+#line 87 "mn-message.gob"
+	if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; }
+#line 174 "mn-message.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -148,30 +188,42 @@ mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 68 "mn-message.gob"
+#line 99 "mn-message.gob"
 	g_object_class->constructor = ___1_mn_message_constructor;
-#line 154 "mn-message.c"
+#line 326 "mn-message.gob"
+	c->can_open_impl = ___real_mn_message_can_open_impl;
+#line 346 "mn-message.gob"
+	c->open_impl = ___real_mn_message_open_impl;
+#line 358 "mn-message.gob"
+	c->can_mark_as_read_impl = ___real_mn_message_can_mark_as_read_impl;
+#line 200 "mn-message.c"
+	c->mark_as_read_impl = NULL;
+#line 390 "mn-message.gob"
+	c->can_mark_as_spam = ___real_mn_message_can_mark_as_spam;
+#line 396 "mn-message.gob"
+	c->can_mark_as_spam_impl = ___real_mn_message_can_mark_as_spam_impl;
+#line 206 "mn-message.c"
+	c->mark_as_spam_impl = NULL;
 	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_string
-		("mailbox_name" /* name */,
+	param_spec = g_param_spec_pointer
+		("mailbox" /* 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_MAILBOX_NAME,
+		PROP_MAILBOX,
 		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));
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (g_object_class,
 		PROP_ERROR,
 		param_spec);
@@ -182,7 +234,7 @@ mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
 		 0 /* minimum */,
 		 G_MAXULONG /* maximum */,
 		 0 /* default_value */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (g_object_class,
 		PROP_SENT_TIME,
 		param_spec);
@@ -191,7 +243,7 @@ mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
 		 NULL /* nick */,
 		 NULL /* blurb */,
 		 NULL /* default_value */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (g_object_class,
 		PROP_ID,
 		param_spec);
@@ -200,7 +252,7 @@ mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
 		 NULL /* nick */,
 		 NULL /* blurb */,
 		 NULL /* default_value */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (g_object_class,
 		PROP_FROM,
 		param_spec);
@@ -209,10 +261,28 @@ mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
 		 NULL /* nick */,
 		 NULL /* blurb */,
 		 NULL /* default_value */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY));
 	g_object_class_install_property (g_object_class,
 		PROP_SUBJECT,
 		param_spec);
+	param_spec = g_param_spec_string
+		("uri" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MESSAGE_PARAM_EXPORT | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_URI,
+		param_spec);
+	param_spec = g_param_spec_string
+		("filename" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 NULL /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | MN_MESSAGE_PARAM_EXPORT));
+	g_object_class_install_property (g_object_class,
+		PROP_FILENAME,
+		param_spec);
 	param_spec = g_param_spec_uint
 		("flags" /* name */,
 		 NULL /* nick */,
@@ -240,53 +310,60 @@ ___object_set_property (GObject *object,
 	self = MN_MESSAGE (object);
 
 	switch (property_id) {
-	case PROP_MAILBOX_NAME:
+	case PROP_MAILBOX:
 		{
-#line 43 "mn-message.gob"
-{ char *old = self->mailbox_name; self->mailbox_name = g_value_dup_string (VAL); g_free (old); }
-#line 248 "mn-message.c"
+#line 64 "mn-message.gob"
+self->mailbox = g_value_get_pointer (VAL);
+#line 318 "mn-message.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 47 "mn-message.gob"
+#line 68 "mn-message.gob"
 { char *old = self->error; self->error = g_value_dup_string (VAL); g_free (old); }
-#line 255 "mn-message.c"
+#line 325 "mn-message.c"
 		}
 		break;
 	case PROP_SENT_TIME:
 		{
-#line 51 "mn-message.gob"
+#line 72 "mn-message.gob"
 self->sent_time = g_value_get_ulong (VAL);
-#line 262 "mn-message.c"
+#line 332 "mn-message.c"
 		}
 		break;
 	case PROP_ID:
 		{
-#line 55 "mn-message.gob"
+#line 76 "mn-message.gob"
 { char *old = self->id; self->id = g_value_dup_string (VAL); g_free (old); }
-#line 269 "mn-message.c"
+#line 339 "mn-message.c"
 		}
 		break;
 	case PROP_FROM:
 		{
-#line 59 "mn-message.gob"
+#line 80 "mn-message.gob"
 { char *old = self->from; self->from = g_value_dup_string (VAL); g_free (old); }
-#line 276 "mn-message.c"
+#line 346 "mn-message.c"
 		}
 		break;
 	case PROP_SUBJECT:
 		{
-#line 63 "mn-message.gob"
+#line 84 "mn-message.gob"
 { char *old = self->subject; self->subject = g_value_dup_string (VAL); g_free (old); }
-#line 283 "mn-message.c"
+#line 353 "mn-message.c"
+		}
+		break;
+	case PROP_URI:
+		{
+#line 88 "mn-message.gob"
+{ char *old = self->uri; self->uri = g_value_dup_string (VAL); g_free (old); }
+#line 360 "mn-message.c"
 		}
 		break;
 	case PROP_FLAGS:
 		{
-#line 66 "mn-message.gob"
+#line 97 "mn-message.gob"
 self->flags = g_value_get_uint (VAL);
-#line 290 "mn-message.c"
+#line 367 "mn-message.c"
 		}
 		break;
 	default:
@@ -313,53 +390,69 @@ ___object_get_property (GObject *object,
 	self = MN_MESSAGE (object);
 
 	switch (property_id) {
-	case PROP_MAILBOX_NAME:
+	case PROP_MAILBOX:
 		{
-#line 43 "mn-message.gob"
-g_value_set_string (VAL, self->mailbox_name);
-#line 321 "mn-message.c"
+#line 64 "mn-message.gob"
+g_value_set_pointer (VAL, self->mailbox);
+#line 398 "mn-message.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 47 "mn-message.gob"
+#line 68 "mn-message.gob"
 g_value_set_string (VAL, self->error);
-#line 328 "mn-message.c"
+#line 405 "mn-message.c"
 		}
 		break;
 	case PROP_SENT_TIME:
 		{
-#line 51 "mn-message.gob"
+#line 72 "mn-message.gob"
 g_value_set_ulong (VAL, self->sent_time);
-#line 335 "mn-message.c"
+#line 412 "mn-message.c"
 		}
 		break;
 	case PROP_ID:
 		{
-#line 55 "mn-message.gob"
+#line 76 "mn-message.gob"
 g_value_set_string (VAL, self->id);
-#line 342 "mn-message.c"
+#line 419 "mn-message.c"
 		}
 		break;
 	case PROP_FROM:
 		{
-#line 59 "mn-message.gob"
+#line 80 "mn-message.gob"
 g_value_set_string (VAL, self->from);
-#line 349 "mn-message.c"
+#line 426 "mn-message.c"
 		}
 		break;
 	case PROP_SUBJECT:
 		{
-#line 63 "mn-message.gob"
+#line 84 "mn-message.gob"
 g_value_set_string (VAL, self->subject);
-#line 356 "mn-message.c"
+#line 433 "mn-message.c"
+		}
+		break;
+	case PROP_URI:
+		{
+#line 88 "mn-message.gob"
+g_value_set_string (VAL, self->uri);
+#line 440 "mn-message.c"
+		}
+		break;
+	case PROP_FILENAME:
+		{
+#line 92 "mn-message.gob"
+
+      g_value_take_string(VAL, self->uri ? gnome_vfs_get_local_path_from_uri(self->uri) : NULL);
+    
+#line 449 "mn-message.c"
 		}
 		break;
 	case PROP_FLAGS:
 		{
-#line 66 "mn-message.gob"
+#line 97 "mn-message.gob"
 g_value_set_uint (VAL, self->flags);
-#line 363 "mn-message.c"
+#line 456 "mn-message.c"
 		}
 		break;
 	default:
@@ -376,10 +469,10 @@ g_value_set_uint (VAL, self->flags);
 
 
 
-#line 68 "mn-message.gob"
+#line 99 "mn-message.gob"
 static GObject * 
 ___1_mn_message_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 383 "mn-message.c"
+#line 476 "mn-message.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): \
@@ -387,7 +480,7 @@ ___1_mn_message_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_
 {
 #define __GOB_FUNCTION__ "MN:Message::constructor"
 {
-#line 70 "mn-message.gob"
+#line 101 "mn-message.gob"
 	
     GObject *object;
     Self *self;
@@ -395,6 +488,8 @@ ___1_mn_message_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_
     object = PARENT_HANDLER(type, n_construct_properties, construct_params);
     self = SELF(object);
 
+    g_assert(MN_IS_MAILBOX(self->mailbox));
+
     if (! self->id)
       {
 	GString *id;
@@ -435,49 +530,671 @@ ___1_mn_message_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_
 
     return object;
   }}
-#line 439 "mn-message.c"
+#line 534 "mn-message.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 118 "mn-message.gob"
+#line 151 "mn-message.gob"
+static gboolean 
+mn_message_get_subst (MNMessage * self, const char * prop_name, char ** result)
+#line 541 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::get_subst"
+#line 151 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 151 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 151 "mn-message.gob"
+	g_return_val_if_fail (prop_name != NULL, (gboolean )0);
+#line 151 "mn-message.gob"
+	g_return_val_if_fail (result != NULL, (gboolean )0);
+#line 552 "mn-message.c"
+{
+#line 155 "mn-message.gob"
+	
+    GParamSpec **properties;
+    unsigned int n_properties;
+    gboolean status = FALSE;
+    int i;
+
+    properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties);
+    for (i = 0; i < n_properties; i++)
+      if ((properties[i]->flags & MN_MESSAGE_PARAM_EXPORT) != 0
+	  && ! strcmp(g_param_spec_get_name(properties[i]), prop_name))
+	{
+	  GValue value = { 0, };
+
+	  g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
+	  g_object_get_property(G_OBJECT(self), prop_name, &value);
+
+	  *result = mn_g_value_to_string(&value);
+	  g_value_unset(&value);
+
+	  status = TRUE;
+	  break;
+	}
+    g_free(properties);
+
+    return status;
+  }}
+#line 581 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 182 "mn-message.gob"
+static char * 
+mn_message_subst_command (MNMessage * self, const char * command, GError ** err)
+#line 587 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::subst_command"
+#line 182 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (char * )0);
+#line 182 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (char * )0);
+#line 182 "mn-message.gob"
+	g_return_val_if_fail (command != NULL, (char * )0);
+#line 596 "mn-message.c"
+{
+#line 184 "mn-message.gob"
+	
+    GString *result;
+    const char *p;
+
+    result = g_string_new(NULL);
+
+    for (p = command; *p;)
+      if (*p == '%')
+	{
+	  char *prop_name = NULL;
+
+	  if (p[1] == '%')
+	    {
+	      g_string_append_c(result, '%');
+	      p += 2;
+	    }
+	  else if (p[1] == '{')
+	    {
+	      char *end;
+
+	      end = strchr(p + 2, '}');
+	      if (! end)
+		{
+		  g_set_error(err, 0, 0, _("unterminated substitution"));
+		  goto error;
+		}
+
+	      prop_name = g_strndup(p + 2, end - p - 2);
+	      p = end + 1;
+	    }
+	  else
+	    {
+	      const char *end = p + 1;
+
+	      while (g_ascii_isalnum(*end) || *end == '-' || *end == '_')
+		end++;
+
+	      prop_name = g_strndup(p + 1, end - p - 1);
+	      p = end;
+	    }
+
+	  if (prop_name)
+	    {
+	      gboolean ok = FALSE;
+
+	      if (*prop_name)
+		{
+		  char *value;
+
+		  if (self_get_subst(self, prop_name, &value))
+		    {
+		      char *quoted;
+
+		      quoted = mn_shell_quote_safe(value ? value : "");
+		      g_free(value);
+
+		      g_string_append(result, quoted);
+		      g_free(quoted);
+
+		      ok = TRUE;
+		    }
+		  else
+		    g_set_error(err, 0, 0, _("unknown substitution \"%s\""), prop_name);
+		}
+	      else
+		g_set_error(err, 0, 0, _("empty substitution"));
+
+	      g_free(prop_name);
+	      if (! ok)
+		goto error;
+	    }
+	}
+      else
+	{
+	  g_string_append_c(result, *p);
+	  p++;
+	}
+
+    goto end;			/* success */
+
+  error:
+    g_string_free(result, TRUE);
+    result = NULL;
+
+  end:
+    return result ? g_string_free(result, FALSE) : NULL;
+  }}
+#line 686 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 272 "mn-message.gob"
+static gboolean 
+mn_message_execute_command_real (MNMessage * self, const char * command, GError ** err)
+#line 692 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::execute_command_real"
+#line 272 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 272 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 272 "mn-message.gob"
+	g_return_val_if_fail (command != NULL, (gboolean )0);
+#line 701 "mn-message.c"
+{
+#line 276 "mn-message.gob"
+	
+    char *subst;
+    int status;
+
+    subst = self_subst_command(self, command, err);
+    if (! subst)
+      return FALSE;
+
+    status = gnome_execute_shell(NULL, subst);
+    g_free(subst);
+
+    if (status < 0)
+      {
+	g_set_error(err, 0, 0, "%s", g_strerror(errno));
+	return FALSE;
+      }
+
+    return TRUE;
+  }}
+#line 723 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 296 "mn-message.gob"
+static gboolean 
+mn_message_execute_command (MNMessage * self, const char * id, gboolean * status, GError ** err)
+#line 729 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::execute_command"
+#line 296 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 296 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 296 "mn-message.gob"
+	g_return_val_if_fail (id != NULL, (gboolean )0);
+#line 296 "mn-message.gob"
+	g_return_val_if_fail (status != NULL, (gboolean )0);
+#line 740 "mn-message.c"
+{
+#line 301 "mn-message.gob"
+	
+    char *command;
+    GError *tmp_err = NULL;
+
+    command = mn_mailbox_get_command(self->mailbox, id);
+    if (! command)
+      return FALSE;
+
+    *status = self_execute_command_real(self, command, &tmp_err);
+    if (! *status)
+      {
+	g_set_error(err, 0, 0, _("Unable to execute \"%s\": %s."), command, tmp_err->message);
+	g_error_free(tmp_err);
+      }
+
+    g_free(command);
+    return TRUE;
+  }}
+#line 761 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 320 "mn-message.gob"
+gboolean 
+mn_message_can_open (MNMessage * self)
+#line 767 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::can_open"
+#line 320 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 320 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 774 "mn-message.c"
+{
+#line 322 "mn-message.gob"
+	
+    return mn_mailbox_has_command(self->mailbox, "open") || self_can_open_impl(self);
+  }}
+#line 780 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 326 "mn-message.gob"
+static gboolean 
+mn_message_can_open_impl (MNMessage * self)
+#line 786 "mn-message.c"
+{
+	MNMessageClass *klass;
+#line 326 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 326 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 793 "mn-message.c"
+	klass = MN_MESSAGE_GET_CLASS(self);
+
+	if(klass->can_open_impl)
+		return (*klass->can_open_impl)(self);
+	else
+		return (gboolean )(0);
+}
+#line 326 "mn-message.gob"
+static gboolean 
+___real_mn_message_can_open_impl (MNMessage * self G_GNUC_UNUSED)
+#line 804 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::can_open_impl"
+{
+#line 328 "mn-message.gob"
+	
+    return self->uri != NULL;
+  }}
+#line 812 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 332 "mn-message.gob"
+gboolean 
+mn_message_open (MNMessage * self, GError ** err)
+#line 818 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::open"
+#line 332 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 332 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 825 "mn-message.c"
+{
+#line 334 "mn-message.gob"
+	
+    gboolean status;
+
+    if (self_execute_command(self, "open", &status, err))
+      {
+	mn_mailbox_mark_as_read(self);
+	return status;
+      }
+    else
+      return self_open_impl(self, err);
+  }}
+#line 839 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 346 "mn-message.gob"
+static gboolean 
+mn_message_open_impl (MNMessage * self, GError ** err)
+#line 845 "mn-message.c"
+{
+	MNMessageClass *klass;
+#line 346 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 346 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 852 "mn-message.c"
+	klass = MN_MESSAGE_GET_CLASS(self);
+
+	if(klass->open_impl)
+		return (*klass->open_impl)(self,err);
+	else
+		return (gboolean )(0);
+}
+#line 346 "mn-message.gob"
+static gboolean 
+___real_mn_message_open_impl (MNMessage * self G_GNUC_UNUSED, GError ** err)
+#line 863 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::open_impl"
+{
+#line 348 "mn-message.gob"
+	
+    return gnome_url_show(self->uri, err);
+  }}
+#line 871 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 352 "mn-message.gob"
+gboolean 
+mn_message_can_mark_as_read (MNMessage * self)
+#line 877 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::can_mark_as_read"
+#line 352 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 352 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 884 "mn-message.c"
+{
+#line 354 "mn-message.gob"
+	
+    return mn_mailbox_has_command(self->mailbox, "mark-as-read") || self_can_mark_as_read_impl(self);
+  }}
+#line 890 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 358 "mn-message.gob"
+static gboolean 
+mn_message_can_mark_as_read_impl (MNMessage * self)
+#line 896 "mn-message.c"
+{
+	MNMessageClass *klass;
+#line 358 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 358 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 903 "mn-message.c"
+	klass = MN_MESSAGE_GET_CLASS(self);
+
+	if(klass->can_mark_as_read_impl)
+		return (*klass->can_mark_as_read_impl)(self);
+	else
+		return (gboolean )(0);
+}
+#line 358 "mn-message.gob"
+static gboolean 
+___real_mn_message_can_mark_as_read_impl (MNMessage * self G_GNUC_UNUSED)
+#line 914 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::can_mark_as_read_impl"
+{
+#line 360 "mn-message.gob"
+	
+    return SELF_GET_CLASS(self)->mark_as_read_impl != NULL;
+  }}
+#line 922 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 364 "mn-message.gob"
+static gboolean 
+mn_message_mark_as_read_real (MNMessage * self, GError ** err)
+#line 928 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::mark_as_read_real"
+#line 364 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 364 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 935 "mn-message.c"
+{
+#line 366 "mn-message.gob"
+	
+    gboolean status;
+
+    if (self_execute_command(self, "mark-as-read", &status, err))
+      return status;
+    else
+      return self_mark_as_read_impl(self, err);
+  }}
+#line 946 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 375 "mn-message.gob"
+gboolean 
+mn_message_mark_as_read (MNMessage * self, GError ** err)
+#line 952 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::mark_as_read"
+#line 375 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 375 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 959 "mn-message.c"
+{
+#line 377 "mn-message.gob"
+	
+    if (self_mark_as_read_real(self, err))
+      {
+	mn_mailbox_mark_as_read(self);
+	return TRUE;
+      }
+    else
+      return FALSE;
+  }}
+#line 971 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 387 "mn-message.gob"
+static gboolean 
+mn_message_mark_as_read_impl (MNMessage * self, GError ** err)
+#line 977 "mn-message.c"
+{
+	MNMessageClass *klass;
+#line 387 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 387 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 984 "mn-message.c"
+	klass = MN_MESSAGE_GET_CLASS(self);
+
+	if(klass->mark_as_read_impl)
+		return (*klass->mark_as_read_impl)(self,err);
+	else
+		return (gboolean )(0);
+}
+
+#line 390 "mn-message.gob"
+gboolean 
+mn_message_can_mark_as_spam (MNMessage * self)
+#line 996 "mn-message.c"
+{
+	MNMessageClass *klass;
+#line 390 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 390 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 1003 "mn-message.c"
+	klass = MN_MESSAGE_GET_CLASS(self);
+
+	if(klass->can_mark_as_spam)
+		return (*klass->can_mark_as_spam)(self);
+	else
+		return (gboolean )(0);
+}
+#line 390 "mn-message.gob"
+static gboolean 
+___real_mn_message_can_mark_as_spam (MNMessage * self G_GNUC_UNUSED)
+#line 1014 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::can_mark_as_spam"
+{
+#line 392 "mn-message.gob"
+	
+    return mn_mailbox_has_command(self->mailbox, "mark-as-spam") || self_can_mark_as_spam_impl(self);
+  }}
+#line 1022 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 396 "mn-message.gob"
+static gboolean 
+mn_message_can_mark_as_spam_impl (MNMessage * self)
+#line 1028 "mn-message.c"
+{
+	MNMessageClass *klass;
+#line 396 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 396 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 1035 "mn-message.c"
+	klass = MN_MESSAGE_GET_CLASS(self);
+
+	if(klass->can_mark_as_spam_impl)
+		return (*klass->can_mark_as_spam_impl)(self);
+	else
+		return (gboolean )(0);
+}
+#line 396 "mn-message.gob"
+static gboolean 
+___real_mn_message_can_mark_as_spam_impl (MNMessage * self G_GNUC_UNUSED)
+#line 1046 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::can_mark_as_spam_impl"
+{
+#line 398 "mn-message.gob"
+	
+    return SELF_GET_CLASS(self)->mark_as_spam_impl != NULL;
+  }}
+#line 1054 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 402 "mn-message.gob"
+static gboolean 
+mn_message_mark_as_spam_real (MNMessage * self, GError ** err)
+#line 1060 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::mark_as_spam_real"
+#line 402 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 402 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 1067 "mn-message.c"
+{
+#line 404 "mn-message.gob"
+	
+    gboolean status;
+
+    if (self_execute_command(self, "mark-as-spam", &status, err))
+      return status;
+    else
+      return self_mark_as_spam_impl(self, err);
+  }}
+#line 1078 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 413 "mn-message.gob"
+gboolean 
+mn_message_mark_as_spam (MNMessage * self, GError ** err)
+#line 1084 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::mark_as_spam"
+#line 413 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 413 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 1091 "mn-message.c"
+{
+#line 415 "mn-message.gob"
+	
+    if (self_mark_as_spam_real(self, err))
+      {
+	mn_mailbox_mark_as_read(self);
+	return TRUE;
+      }
+    else
+      return FALSE;
+  }}
+#line 1103 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 425 "mn-message.gob"
+static gboolean 
+mn_message_mark_as_spam_impl (MNMessage * self, GError ** err)
+#line 1109 "mn-message.c"
+{
+	MNMessageClass *klass;
+#line 425 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 425 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (gboolean )0);
+#line 1116 "mn-message.c"
+	klass = MN_MESSAGE_GET_CLASS(self);
+
+	if(klass->mark_as_spam_impl)
+		return (*klass->mark_as_spam_impl)(self,err);
+	else
+		return (gboolean )(0);
+}
+
+#line 428 "mn-message.gob"
 MNMessage * 
-mn_message_new (MNMailbox * mailbox, const char * error, time_t sent_time, const char * id, const char * from, const char * subject, MNMessageFlags flags)
-#line 446 "mn-message.c"
+mn_message_new (MNMailbox * mailbox, const char * error, time_t sent_time, const char * id, const char * from, const char * subject, const char * uri, MNMessageFlags flags)
+#line 1128 "mn-message.c"
 {
 #define __GOB_FUNCTION__ "MN:Message::new"
+#line 428 "mn-message.gob"
+	g_return_val_if_fail (mailbox != NULL, (MNMessage * )0);
+#line 428 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (MNMessage * )0);
+#line 1135 "mn-message.c"
 {
-#line 126 "mn-message.gob"
+#line 437 "mn-message.gob"
 	
-    g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), NULL);
-
-    /* translators: "none" is used like "Mailbox: none" */
-    return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX_NAME(mailbox ? mailbox->runtime_name : _("none")),
+    return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX(mailbox),
 			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),
+			MN_MESSAGE_PROP_URI((char *) uri),
 			MN_MESSAGE_PROP_FLAGS(flags),
 			NULL);
   }}
-#line 464 "mn-message.c"
+#line 1149 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 140 "mn-message.gob"
+#line 449 "mn-message.gob"
 MNMessage * 
 mn_message_new_from_error (MNMailbox * mailbox, const char * error, MNMessageFlags flags)
-#line 470 "mn-message.c"
+#line 1155 "mn-message.c"
 {
 #define __GOB_FUNCTION__ "MN:Message::new_from_error"
-#line 140 "mn-message.gob"
+#line 449 "mn-message.gob"
+	g_return_val_if_fail (mailbox != NULL, (MNMessage * )0);
+#line 449 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (MNMessage * )0);
+#line 449 "mn-message.gob"
 	g_return_val_if_fail (error != NULL, (MNMessage * )0);
-#line 475 "mn-message.c"
+#line 1164 "mn-message.c"
 {
-#line 144 "mn-message.gob"
+#line 453 "mn-message.gob"
 	
-    g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), NULL);
+    return self_new(mailbox, error, 0, NULL, NULL, NULL, NULL, flags);
+  }}
+#line 1170 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 457 "mn-message.gob"
+xmlNode * 
+mn_message_xml_node_new (MNMessage * self)
+#line 1176 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::xml_node_new"
+#line 457 "mn-message.gob"
+	g_return_val_if_fail (self != NULL, (xmlNode * )0);
+#line 457 "mn-message.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (self), (xmlNode * )0);
+#line 1183 "mn-message.c"
+{
+#line 459 "mn-message.gob"
+	
+    xmlNode *node;
+
+    node = xmlNewNode(NULL, "message");
+
+    xmlSetProp(node, "mailbox", self->mailbox->runtime_name);
+
+    if ((self->flags & MN_MESSAGE_NEW) != 0)
+      xmlSetProp(node, "new", "true");
+
+    mn_xml_export_properties(G_OBJECT(self), node);
 
-    return self_new(mailbox, error, 0, NULL, NULL, NULL, flags);
+    return node;
   }}
-#line 483 "mn-message.c"
+#line 1200 "mn-message.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-message.gob b/src/mn-message.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -30,40 +31,70 @@ typedef enum
 } MNMessageFlags;
 %}
 
+%privateheader{
+#include "mn-xml.h"
+
+typedef enum
+{
+  /* include in the XML summary and allow as a command format */
+  MN_MESSAGE_PARAM_EXPORT	= MN_XML_PARAM_IMPORT_EXPORT,
+} MNMessageParamFlags;
+%}
+
 %{
 #include "config.h"
-#include <glib/gi18n.h>
+#include <errno.h>
+#include <gnome.h>
+#include <libgnomevfs/gnome-vfs.h>
 #include "mn-util.h"
 %}
 
 class MN:Message from G:Object
 {
-  /* always set */
-  public char *mailbox_name destroywith g_free;
-  property STRING mailbox_name (flags = CONSTRUCT_ONLY, link);
+  /*
+   * May be NULL.
+   *
+   * In order to not create reference cycles, we do not hold a
+   * reference to the mailbox. The code is arranged so that a message
+   * cannot survive its containing mailbox (whenever the mailbox is
+   * removed, subsystems handle the messages-changed signal and
+   * dereference the mailbox messages).
+   */
+  public MNMailbox *mailbox;
+  property POINTER mailbox (flags = CONSTRUCT_ONLY, link, type = MNMailbox *);
 
   /* may be NULL */
   public char *error destroywith g_free;
-  property STRING error (flags = CONSTRUCT_ONLY, link);
+  property STRING error (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT);
 
   /* sent time, may be 0 */
   public time_t sent_time;
-  property ULONG sent_time (flags = CONSTRUCT_ONLY, link, type = time_t);
+  property ULONG sent_time (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT, link, type = time_t);
 
   /* always set */
   public char *id destroywith g_free;
-  property STRING id (flags = CONSTRUCT_ONLY, link);
+  property STRING id (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT);
 
   /* always set */
   public char *from destroywith g_free;
-  property STRING from (flags = CONSTRUCT_ONLY, link);
+  property STRING from (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT);
 
   /* always set */
   public char *subject destroywith g_free;
-  property STRING subject (flags = CONSTRUCT_ONLY, link);
+  property STRING subject (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT);
+
+  /* may be NULL */
+  public char *uri destroywith g_free;
+  property STRING uri (link, flags = CONSTRUCT_ONLY | MN_MESSAGE_PARAM_EXPORT);
+
+  /* may be NULL */
+  property STRING filename (flags = MN_MESSAGE_PARAM_EXPORT)
+    get {
+      g_value_take_string(VAL, self->uri ? gnome_vfs_get_local_path_from_uri(self->uri) : NULL);
+    };
 
   public MNMessageFlags flags;
-  property UINT flags (flags = CONSTRUCT_ONLY, link, type = MNMessageFlags);
+  property UINT flags (link, flags = CONSTRUCT_ONLY);
 
   override (G:Object) GObject *
     constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
@@ -74,6 +105,8 @@ class MN:Message from G:Object
     object = PARENT_HANDLER(type, n_construct_properties, construct_params);
     self = SELF(object);
 
+    g_assert(MN_IS_MAILBOX(self->mailbox));
+
     if (! self->id)
       {
 	GString *id;
@@ -115,35 +148,326 @@ class MN:Message from G:Object
     return object;
   }
 
+  private gboolean
+    get_subst (self,
+	       const char *prop_name (check null),
+	       char **result (check null))
+  {
+    GParamSpec **properties;
+    unsigned int n_properties;
+    gboolean status = FALSE;
+    int i;
+
+    properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(self), &n_properties);
+    for (i = 0; i < n_properties; i++)
+      if ((properties[i]->flags & MN_MESSAGE_PARAM_EXPORT) != 0
+	  && ! strcmp(g_param_spec_get_name(properties[i]), prop_name))
+	{
+	  GValue value = { 0, };
+
+	  g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
+	  g_object_get_property(G_OBJECT(self), prop_name, &value);
+
+	  *result = mn_g_value_to_string(&value);
+	  g_value_unset(&value);
+
+	  status = TRUE;
+	  break;
+	}
+    g_free(properties);
+
+    return status;
+  }
+
+  private char *
+    subst_command (self, const char *command (check null), GError **err)
+  {
+    GString *result;
+    const char *p;
+
+    result = g_string_new(NULL);
+
+    for (p = command; *p;)
+      if (*p == '%')
+	{
+	  char *prop_name = NULL;
+
+	  if (p[1] == '%')
+	    {
+	      g_string_append_c(result, '%');
+	      p += 2;
+	    }
+	  else if (p[1] == '{')
+	    {
+	      char *end;
+
+	      end = strchr(p + 2, '}');
+	      if (! end)
+		{
+		  g_set_error(err, 0, 0, _("unterminated substitution"));
+		  goto error;
+		}
+
+	      prop_name = g_strndup(p + 2, end - p - 2);
+	      p = end + 1;
+	    }
+	  else
+	    {
+	      const char *end = p + 1;
+
+	      while (g_ascii_isalnum(*end) || *end == '-' || *end == '_')
+		end++;
+
+	      prop_name = g_strndup(p + 1, end - p - 1);
+	      p = end;
+	    }
+
+	  if (prop_name)
+	    {
+	      gboolean ok = FALSE;
+
+	      if (*prop_name)
+		{
+		  char *value;
+
+		  if (self_get_subst(self, prop_name, &value))
+		    {
+		      char *quoted;
+
+		      quoted = mn_shell_quote_safe(value ? value : "");
+		      g_free(value);
+
+		      g_string_append(result, quoted);
+		      g_free(quoted);
+
+		      ok = TRUE;
+		    }
+		  else
+		    g_set_error(err, 0, 0, _("unknown substitution \"%s\""), prop_name);
+		}
+	      else
+		g_set_error(err, 0, 0, _("empty substitution"));
+
+	      g_free(prop_name);
+	      if (! ok)
+		goto error;
+	    }
+	}
+      else
+	{
+	  g_string_append_c(result, *p);
+	  p++;
+	}
+
+    goto end;			/* success */
+
+  error:
+    g_string_free(result, TRUE);
+    result = NULL;
+
+  end:
+    return result ? g_string_free(result, FALSE) : NULL;
+  }
+
+  private gboolean
+    execute_command_real (self,
+			  const char *command (check null),
+			  GError **err)
+  {
+    char *subst;
+    int status;
+
+    subst = self_subst_command(self, command, err);
+    if (! subst)
+      return FALSE;
+
+    status = gnome_execute_shell(NULL, subst);
+    g_free(subst);
+
+    if (status < 0)
+      {
+	g_set_error(err, 0, 0, "%s", g_strerror(errno));
+	return FALSE;
+      }
+
+    return TRUE;
+  }
+
+  private gboolean
+    execute_command (self,
+		     const char *id (check null),
+		     gboolean *status (check null),
+		     GError **err)
+  {
+    char *command;
+    GError *tmp_err = NULL;
+
+    command = mn_mailbox_get_command(self->mailbox, id);
+    if (! command)
+      return FALSE;
+
+    *status = self_execute_command_real(self, command, &tmp_err);
+    if (! *status)
+      {
+	g_set_error(err, 0, 0, _("Unable to execute \"%s\": %s."), command, tmp_err->message);
+	g_error_free(tmp_err);
+      }
+
+    g_free(command);
+    return TRUE;
+  }
+
+  public gboolean
+    can_open (self)
+  {
+    return mn_mailbox_has_command(self->mailbox, "open") || self_can_open_impl(self);
+  }
+
+  virtual private gboolean
+    can_open_impl (self)
+  {
+    return self->uri != NULL;
+  }
+
+  public gboolean
+    open (self, GError **err)
+  {
+    gboolean status;
+
+    if (self_execute_command(self, "open", &status, err))
+      {
+	mn_mailbox_mark_as_read(self);
+	return status;
+      }
+    else
+      return self_open_impl(self, err);
+  }
+
+  virtual private gboolean
+    open_impl (self, GError **err)
+  {
+    return gnome_url_show(self->uri, err);
+  }
+
+  public gboolean
+    can_mark_as_read (self)
+  {
+    return mn_mailbox_has_command(self->mailbox, "mark-as-read") || self_can_mark_as_read_impl(self);
+  }
+
+  virtual private gboolean
+    can_mark_as_read_impl (self)
+  {
+    return SELF_GET_CLASS(self)->mark_as_read_impl != NULL;
+  }
+
+  private gboolean
+    mark_as_read_real (self, GError **err)
+  {
+    gboolean status;
+
+    if (self_execute_command(self, "mark-as-read", &status, err))
+      return status;
+    else
+      return self_mark_as_read_impl(self, err);
+  }
+
+  public gboolean
+    mark_as_read (self, GError **err)
+  {
+    if (self_mark_as_read_real(self, err))
+      {
+	mn_mailbox_mark_as_read(self);
+	return TRUE;
+      }
+    else
+      return FALSE;
+  }
+
+  virtual private gboolean
+    mark_as_read_impl (self, GError **err);
+
+  virtual public gboolean
+    can_mark_as_spam (self)
+  {
+    return mn_mailbox_has_command(self->mailbox, "mark-as-spam") || self_can_mark_as_spam_impl(self);
+  }
+
+  virtual private gboolean
+    can_mark_as_spam_impl (self)
+  {
+    return SELF_GET_CLASS(self)->mark_as_spam_impl != NULL;
+  }
+
+  private gboolean
+    mark_as_spam_real (self, GError **err)
+  {
+    gboolean status;
+
+    if (self_execute_command(self, "mark-as-spam", &status, err))
+      return status;
+    else
+      return self_mark_as_spam_impl(self, err);
+  }
+
+  public gboolean
+    mark_as_spam (self, GError **err)
+  {
+    if (self_mark_as_spam_real(self, err))
+      {
+	mn_mailbox_mark_as_read(self);
+	return TRUE;
+      }
+    else
+      return FALSE;
+  }
+
+  virtual private gboolean
+    mark_as_spam_impl (self, GError **err);
+
   public MNMessage *
-    new (MNMailbox *mailbox,
+    new (MN:Mailbox *mailbox (check null type),
 	 const char *error,
 	 time_t sent_time,
 	 const char *id,
 	 const char *from,
 	 const char *subject,
+	 const char *uri,
 	 MNMessageFlags flags)
   {
-    g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), NULL);
-
-    /* translators: "none" is used like "Mailbox: none" */
-    return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX_NAME(mailbox ? mailbox->runtime_name : _("none")),
+    return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX(mailbox),
 			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),
+			MN_MESSAGE_PROP_URI((char *) uri),
 			MN_MESSAGE_PROP_FLAGS(flags),
 			NULL);
   }
 
   public MNMessage *
-    new_from_error (MNMailbox *mailbox,
+    new_from_error (MN:Mailbox *mailbox (check null type),
 		    const char *error (check null),
 		    MNMessageFlags flags)
   {
-    g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), NULL);
+    return self_new(mailbox, error, 0, NULL, NULL, NULL, NULL, flags);
+  }
+
+  public xmlNode *
+    xml_node_new (self)
+  {
+    xmlNode *node;
+
+    node = xmlNewNode(NULL, "message");
+
+    xmlSetProp(node, "mailbox", self->mailbox->runtime_name);
+
+    if ((self->flags & MN_MESSAGE_NEW) != 0)
+      xmlSetProp(node, "new", "true");
+
+    mn_xml_export_properties(G_OBJECT(self), node);
 
-    return self_new(mailbox, error, 0, NULL, NULL, NULL, flags);
+    return node;
   }
 }
diff --git a/src/mn-message.h b/src/mn-message.h
@@ -43,12 +43,13 @@ typedef struct _MNMessage MNMessage;
 struct _MNMessage {
 	GObject __parent__;
 	/*< public >*/
-	char * mailbox_name;
+	MNMailbox * mailbox;
 	char * error;
 	time_t sent_time;
 	char * id;
 	char * from;
 	char * subject;
+	char * uri;
 	MNMessageFlags flags;
 };
 
@@ -58,6 +59,13 @@ struct _MNMessage {
 typedef struct _MNMessageClass MNMessageClass;
 struct _MNMessageClass {
 	GObjectClass __parent__;
+	gboolean (* can_open_impl) (MNMessage * self);
+	gboolean (* open_impl) (MNMessage * self, GError ** err);
+	gboolean (* can_mark_as_read_impl) (MNMessage * self);
+	gboolean (* mark_as_read_impl) (MNMessage * self, GError ** err);
+	gboolean (* can_mark_as_spam) (MNMessage * self);
+	gboolean (* can_mark_as_spam_impl) (MNMessage * self);
+	gboolean (* mark_as_spam_impl) (MNMessage * self, GError ** err);
 };
 
 
@@ -65,23 +73,34 @@ struct _MNMessageClass {
  * Public methods
  */
 GType	mn_message_get_type	(void);
+gboolean 	mn_message_can_open	(MNMessage * self);
+gboolean 	mn_message_open	(MNMessage * self,
+					GError ** err);
+gboolean 	mn_message_can_mark_as_read	(MNMessage * self);
+gboolean 	mn_message_mark_as_read	(MNMessage * self,
+					GError ** err);
+gboolean 	mn_message_can_mark_as_spam	(MNMessage * self);
+gboolean 	mn_message_mark_as_spam	(MNMessage * self,
+					GError ** err);
 MNMessage * 	mn_message_new	(MNMailbox * mailbox,
 					const char * error,
 					time_t sent_time,
 					const char * id,
 					const char * from,
 					const char * subject,
+					const char * uri,
 					MNMessageFlags flags);
 MNMessage * 	mn_message_new_from_error	(MNMailbox * mailbox,
 					const char * error,
 					MNMessageFlags flags);
+xmlNode * 	mn_message_xml_node_new	(MNMessage * self);
 
 /*
  * Argument wrapping macros
  */
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-#define MN_MESSAGE_PROP_MAILBOX_NAME(arg)    	"mailbox_name", __extension__ ({gchar *z = (arg); z;})
-#define MN_MESSAGE_GET_PROP_MAILBOX_NAME(arg)	"mailbox_name", __extension__ ({gchar **z = (arg); z;})
+#define MN_MESSAGE_PROP_MAILBOX(arg)    	"mailbox", __extension__ ({MNMailbox * z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_MAILBOX(arg)	"mailbox", __extension__ ({MNMailbox * *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__ ({time_t z = (arg); z;})
@@ -92,11 +111,14 @@ MNMessage * 	mn_message_new_from_error	(MNMailbox * mailbox,
 #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;})
-#define MN_MESSAGE_PROP_FLAGS(arg)    	"flags", __extension__ ({MNMessageFlags z = (arg); z;})
-#define MN_MESSAGE_GET_PROP_FLAGS(arg)	"flags", __extension__ ({MNMessageFlags *z = (arg); z;})
+#define MN_MESSAGE_PROP_URI(arg)    	"uri", __extension__ ({gchar *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_URI(arg)	"uri", __extension__ ({gchar **z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_FILENAME(arg)	"filename", __extension__ ({gchar **z = (arg); z;})
+#define MN_MESSAGE_PROP_FLAGS(arg)    	"flags", __extension__ ({guint z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_FLAGS(arg)	"flags", __extension__ ({guint *z = (arg); z;})
 #else /* __GNUC__ && !__STRICT_ANSI__ */
-#define MN_MESSAGE_PROP_MAILBOX_NAME(arg)    	"mailbox_name",(gchar *)(arg)
-#define MN_MESSAGE_GET_PROP_MAILBOX_NAME(arg)	"mailbox_name",(gchar **)(arg)
+#define MN_MESSAGE_PROP_MAILBOX(arg)    	"mailbox",(MNMailbox * )(arg)
+#define MN_MESSAGE_GET_PROP_MAILBOX(arg)	"mailbox",(MNMailbox * *)(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",(time_t )(arg)
@@ -107,8 +129,11 @@ MNMessage * 	mn_message_new_from_error	(MNMailbox * mailbox,
 #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)
-#define MN_MESSAGE_PROP_FLAGS(arg)    	"flags",(MNMessageFlags )(arg)
-#define MN_MESSAGE_GET_PROP_FLAGS(arg)	"flags",(MNMessageFlags *)(arg)
+#define MN_MESSAGE_PROP_URI(arg)    	"uri",(gchar *)(arg)
+#define MN_MESSAGE_GET_PROP_URI(arg)	"uri",(gchar **)(arg)
+#define MN_MESSAGE_GET_PROP_FILENAME(arg)	"filename",(gchar **)(arg)
+#define MN_MESSAGE_PROP_FLAGS(arg)    	"flags",(guint )(arg)
+#define MN_MESSAGE_GET_PROP_FLAGS(arg)	"flags",(guint *)(arg)
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
 
 
diff --git a/src/mn-mh-mailbox-backend.c b/src/mn-mh-mailbox-backend.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-mh-mailbox-backend.gob"
+#line 26 "mn-mh-mailbox-backend.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -54,7 +54,7 @@ typedef MNMHMailboxBackendClass SelfClass;
 static void mn_mh_mailbox_backend_init (MNMHMailboxBackend * o) G_GNUC_UNUSED;
 static void mn_mh_mailbox_backend_class_init (MNMHMailboxBackendClass * class) G_GNUC_UNUSED;
 static void ___2_mn_mh_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend, const char * info_uri, GnomeVFSMonitorEventType event_type) G_GNUC_UNUSED;
-static gboolean ___3_mn_mh_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailbox * mailbox) G_GNUC_UNUSED;
+static gboolean ___3_mn_mh_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox) G_GNUC_UNUSED;
 static void ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend, unsigned long check_id) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
@@ -108,7 +108,7 @@ mn_mh_mailbox_backend_init (MNMHMailboxBackend * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::init"
 }
 #undef __GOB_FUNCTION__
-#line 41 "mn-mh-mailbox-backend.gob"
+#line 42 "mn-mh-mailbox-backend.gob"
 static void 
 mn_mh_mailbox_backend_class_init (MNMHMailboxBackendClass * class G_GNUC_UNUSED)
 #line 115 "mn-mh-mailbox-backend.c"
@@ -118,15 +118,15 @@ mn_mh_mailbox_backend_class_init (MNMHMailboxBackendClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND);
 
-#line 46 "mn-mh-mailbox-backend.gob"
+#line 47 "mn-mh-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->monitor_cb = ___2_mn_mh_mailbox_backend_monitor_cb;
-#line 68 "mn-mh-mailbox-backend.gob"
+#line 69 "mn-mh-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->is = ___3_mn_mh_mailbox_backend_is;
-#line 81 "mn-mh-mailbox-backend.gob"
+#line 84 "mn-mh-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->check = ___4_mn_mh_mailbox_backend_check;
 #line 128 "mn-mh-mailbox-backend.c"
  {
-#line 42 "mn-mh-mailbox-backend.gob"
+#line 43 "mn-mh-mailbox-backend.gob"
 
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "MH";
   
@@ -137,7 +137,7 @@ mn_mh_mailbox_backend_class_init (MNMHMailboxBackendClass * class G_GNUC_UNUSED)
 
 
 
-#line 46 "mn-mh-mailbox-backend.gob"
+#line 47 "mn-mh-mailbox-backend.gob"
 static void 
 ___2_mn_mh_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUSED, const char * info_uri, GnomeVFSMonitorEventType event_type)
 #line 144 "mn-mh-mailbox-backend.c"
@@ -147,7 +147,7 @@ ___2_mn_mh_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUS
 {
 #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::monitor_cb"
 {
-#line 50 "mn-mh-mailbox-backend.gob"
+#line 51 "mn-mh-mailbox-backend.gob"
 	
     if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED
 	|| event_type == GNOME_VFS_MONITOR_EVENT_DELETED
@@ -169,18 +169,18 @@ ___2_mn_mh_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUS
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 68 "mn-mh-mailbox-backend.gob"
+#line 69 "mn-mh-mailbox-backend.gob"
 static gboolean 
-___3_mn_mh_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailbox * mailbox)
+___3_mn_mh_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox)
 #line 176 "mn-mh-mailbox-backend.c"
-#define PARENT_HANDLER(___dummy,___mailbox) \
+#define PARENT_HANDLER(___dummy,___class,___mailbox) \
 	((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \
-		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___mailbox): \
+		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___class,___mailbox): \
 		((gboolean )0))
 {
 #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::is"
 {
-#line 70 "mn-mh-mailbox-backend.gob"
+#line 73 "mn-mh-mailbox-backend.gob"
 	
     GnomeVFSURI *sequences_uri;
     gboolean is;
@@ -195,7 +195,7 @@ ___3_mn_mh_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSM
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 81 "mn-mh-mailbox-backend.gob"
+#line 84 "mn-mh-mailbox-backend.gob"
 static void 
 ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, unsigned long check_id)
 #line 202 "mn-mh-mailbox-backend.c"
@@ -205,7 +205,7 @@ ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, u
 {
 #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::check"
 {
-#line 83 "mn-mh-mailbox-backend.gob"
+#line 86 "mn-mh-mailbox-backend.gob"
 	
     GnomeVFSURI *sequences_uri;
     GnomeVFSResult result;
diff --git a/src/mn-mh-mailbox-backend.gob b/src/mn-mh-mailbox-backend.gob
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -44,7 +45,7 @@ class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend
   }
 
   override (MN:VFS:Mailbox:Backend) void
-    monitor_cb (MNVFSMailbox:Backend *backend,
+    monitor_cb (MNVFSMailboxBackend *backend,
 		const char *info_uri,
 		GnomeVFSMonitorEventType event_type)
   {
@@ -66,7 +67,9 @@ class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend
   }
 
   override (MN:VFS:Mailbox:Backend) gboolean
-    is (MNVFSMailboxBackend *dummy, MNVFSMailbox *mailbox)
+    is (MNVFSMailboxBackend *dummy,
+	MNVFSMailboxBackendClass *class,
+	MNVFSMailbox *mailbox)
   {
     GnomeVFSURI *sequences_uri;
     gboolean is;
diff --git a/src/mn-mozilla-mailbox-backend-private.h b/src/mn-mozilla-mailbox-backend-private.h
@@ -0,0 +1,17 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_MOZILLA_MAILBOX_BACKEND_PRIVATE_H__
+#define __MN_MOZILLA_MAILBOX_BACKEND_PRIVATE_H__
+
+#include "mn-mozilla-mailbox-backend.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-mozilla-mailbox-backend.c b/src/mn-mozilla-mailbox-backend.c
@@ -0,0 +1,197 @@
+/* Generated by GOB (v2.0.14)   (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 14
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-mozilla-mailbox-backend.h"
+
+#include "mn-mozilla-mailbox-backend-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-mozilla-mailbox-backend.gob"
+
+#include "config.h"
+#include <stdlib.h>
+#include <limits.h>
+#include "mn-base-mbox-mailbox-backend-private.h"
+#include "mn-message-mime.h"
+#include "mn-util.h"
+
+/* taken from base/public/nsMsgMessageFlags.h in the Mozilla Mail&News sources */
+/* in X-Mozilla-Status */
+#define MOZILLA_MSG_FLAG_READ		0x0001
+#define MOZILLA_MSG_FLAG_EXPUNGED	0x0008
+/* in X-Mozilla-Status2 */
+#define MOZILLA_MSG_FLAG_NEW		0x10000
+
+#line 42 "mn-mozilla-mailbox-backend.c"
+/* self casting macros */
+#define SELF(x) MN_MOZILLA_MAILBOX_BACKEND(x)
+#define SELF_CONST(x) MN_MOZILLA_MAILBOX_BACKEND_CONST(x)
+#define IS_SELF(x) MN_IS_MOZILLA_MAILBOX_BACKEND(x)
+#define TYPE_SELF MN_TYPE_MOZILLA_MAILBOX_BACKEND
+#define SELF_CLASS(x) MN_MOZILLA_MAILBOX_BACKEND_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_MOZILLA_MAILBOX_BACKEND_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNMozillaMailboxBackend Self;
+typedef MNMozillaMailboxBackendClass SelfClass;
+
+/* here are local prototypes */
+static void mn_mozilla_mailbox_backend_init (MNMozillaMailboxBackend * o) G_GNUC_UNUSED;
+static void mn_mozilla_mailbox_backend_class_init (MNMozillaMailboxBackendClass * class) G_GNUC_UNUSED;
+static MNMessage * ___2_mn_mozilla_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * backend, GMimeMessage * mime_message) G_GNUC_UNUSED;
+static int mn_mozilla_mailbox_backend_get_status_flags (GMimeMessage * mime_message, const char * header_name) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static MNBaseMboxMailboxBackendClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_get_status_flags mn_mozilla_mailbox_backend_get_status_flags
+GType
+mn_mozilla_mailbox_backend_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNMozillaMailboxBackendClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_mozilla_mailbox_backend_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNMozillaMailboxBackend),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_mozilla_mailbox_backend_init,
+			NULL
+		};
+
+		type = g_type_register_static (MN_TYPE_BASE_MBOX_MAILBOX_BACKEND, "MNMozillaMailboxBackend", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNMozillaMailboxBackend *)g_object_new(mn_mozilla_mailbox_backend_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNMozillaMailboxBackend * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNMozillaMailboxBackend *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNMozillaMailboxBackend *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNMozillaMailboxBackend *)g_object_new_valist (mn_mozilla_mailbox_backend_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+static void 
+mn_mozilla_mailbox_backend_init (MNMozillaMailboxBackend * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Mozilla:Mailbox:Backend::init"
+}
+#undef __GOB_FUNCTION__
+#line 44 "mn-mozilla-mailbox-backend.gob"
+static void 
+mn_mozilla_mailbox_backend_class_init (MNMozillaMailboxBackendClass * class G_GNUC_UNUSED)
+#line 118 "mn-mozilla-mailbox-backend.c"
+{
+#define __GOB_FUNCTION__ "MN:Mozilla:Mailbox:Backend::class_init"
+	MNBaseMboxMailboxBackendClass *mn_base_mbox_mailbox_backend_class = (MNBaseMboxMailboxBackendClass *)class;
+
+	parent_class = g_type_class_ref (MN_TYPE_BASE_MBOX_MAILBOX_BACKEND);
+
+#line 49 "mn-mozilla-mailbox-backend.gob"
+	mn_base_mbox_mailbox_backend_class->get_new_message = ___2_mn_mozilla_mailbox_backend_get_new_message;
+#line 127 "mn-mozilla-mailbox-backend.c"
+ {
+#line 45 "mn-mozilla-mailbox-backend.gob"
+
+    MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Mozilla";
+  
+#line 133 "mn-mozilla-mailbox-backend.c"
+ }
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 49 "mn-mozilla-mailbox-backend.gob"
+static MNMessage * 
+___2_mn_mozilla_mailbox_backend_get_new_message (MNBaseMboxMailboxBackend * backend G_GNUC_UNUSED, GMimeMessage * mime_message)
+#line 143 "mn-mozilla-mailbox-backend.c"
+#define PARENT_HANDLER(___backend,___mime_message) \
+	((MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(parent_class)->get_new_message)? \
+		(* MN_BASE_MBOX_MAILBOX_BACKEND_CLASS(parent_class)->get_new_message)(___backend,___mime_message): \
+		((MNMessage * )0))
+{
+#define __GOB_FUNCTION__ "MN:Mozilla:Mailbox:Backend::get_new_message"
+{
+#line 51 "mn-mozilla-mailbox-backend.gob"
+	
+    int flags;
+
+    flags = self_get_status_flags(mime_message, "X-Mozilla-Status");
+    if ((flags & MOZILLA_MSG_FLAG_READ) == 0
+	&& (flags & MOZILLA_MSG_FLAG_EXPUNGED) == 0)
+      {
+	int mn_flags = 0;
+
+	if ((self_get_status_flags(mime_message, "X-Mozilla-Status2") & MOZILLA_MSG_FLAG_NEW) != 0)
+	  mn_flags |= MN_MESSAGE_NEW;
+
+	return mn_message_new_from_mime_message(MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mime_message, NULL, mn_flags, FALSE);
+      }
+    else
+      return NULL;
+  }}
+#line 169 "mn-mozilla-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 69 "mn-mozilla-mailbox-backend.gob"
+static int 
+mn_mozilla_mailbox_backend_get_status_flags (GMimeMessage * mime_message, const char * header_name)
+#line 176 "mn-mozilla-mailbox-backend.c"
+{
+#define __GOB_FUNCTION__ "MN:Mozilla:Mailbox:Backend::get_status_flags"
+#line 69 "mn-mozilla-mailbox-backend.gob"
+	g_return_val_if_fail (mime_message != NULL, (int )0);
+#line 69 "mn-mozilla-mailbox-backend.gob"
+	g_return_val_if_fail (GMIME_IS_MESSAGE (mime_message), (int )0);
+#line 69 "mn-mozilla-mailbox-backend.gob"
+	g_return_val_if_fail (header_name != NULL, (int )0);
+#line 185 "mn-mozilla-mailbox-backend.c"
+{
+#line 72 "mn-mozilla-mailbox-backend.gob"
+	
+    const char *header;
+
+    header = g_mime_message_get_header(mime_message, header_name);
+    if (header && mn_str_ishex(header))
+      return strtol(header, NULL, 16);
+    else
+      return 0;
+  }}
+#line 197 "mn-mozilla-mailbox-backend.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-mozilla-mailbox-backend.gob b/src/mn-mozilla-mailbox-backend.gob
@@ -0,0 +1,81 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+requires 2.0.14
+
+%headertop{
+#include "mn-base-mbox-mailbox-backend.h"
+%}
+
+%{
+#include "config.h"
+#include <stdlib.h>
+#include <limits.h>
+#include "mn-base-mbox-mailbox-backend-private.h"
+#include "mn-message-mime.h"
+#include "mn-util.h"
+
+/* taken from base/public/nsMsgMessageFlags.h in the Mozilla Mail&News sources */
+/* in X-Mozilla-Status */
+#define MOZILLA_MSG_FLAG_READ		0x0001
+#define MOZILLA_MSG_FLAG_EXPUNGED	0x0008
+/* in X-Mozilla-Status2 */
+#define MOZILLA_MSG_FLAG_NEW		0x10000
+%}
+
+class MN:Mozilla:Mailbox:Backend from MN:Base:Mbox:Mailbox:Backend
+{
+  class_init (class)
+  {
+    MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Mozilla";
+  }
+
+  override (MN:Base:Mbox:Mailbox:Backend) MNMessage *
+    get_new_message (MNBaseMboxMailboxBackend *backend, GMimeMessage *mime_message)
+  {
+    int flags;
+
+    flags = self_get_status_flags(mime_message, "X-Mozilla-Status");
+    if ((flags & MOZILLA_MSG_FLAG_READ) == 0
+	&& (flags & MOZILLA_MSG_FLAG_EXPUNGED) == 0)
+      {
+	int mn_flags = 0;
+
+	if ((self_get_status_flags(mime_message, "X-Mozilla-Status2") & MOZILLA_MSG_FLAG_NEW) != 0)
+	  mn_flags |= MN_MESSAGE_NEW;
+
+	return mn_message_new_from_mime_message(MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), mime_message, NULL, mn_flags, FALSE);
+      }
+    else
+      return NULL;
+  }
+
+  private int
+    get_status_flags (GMime:Message *mime_message (check null type),
+		      const char *header_name (check null))
+  {
+    const char *header;
+
+    header = g_mime_message_get_header(mime_message, header_name);
+    if (header && mn_str_ishex(header))
+      return strtol(header, NULL, 16);
+    else
+      return 0;
+  }
+}
diff --git a/src/mn-corba-object.gob.stamp b/src/mn-mozilla-mailbox-backend.gob.stamp
diff --git a/src/mn-mozilla-mailbox-backend.h b/src/mn-mozilla-mailbox-backend.h
@@ -0,0 +1,57 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include "mn-base-mbox-mailbox-backend.h"
+
+#ifndef __MN_MOZILLA_MAILBOX_BACKEND_H__
+#define __MN_MOZILLA_MAILBOX_BACKEND_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_MOZILLA_MAILBOX_BACKEND	(mn_mozilla_mailbox_backend_get_type())
+#define MN_MOZILLA_MAILBOX_BACKEND(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mozilla_mailbox_backend_get_type(), MNMozillaMailboxBackend)
+#define MN_MOZILLA_MAILBOX_BACKEND_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_mozilla_mailbox_backend_get_type(), MNMozillaMailboxBackend const)
+#define MN_MOZILLA_MAILBOX_BACKEND_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_mozilla_mailbox_backend_get_type(), MNMozillaMailboxBackendClass)
+#define MN_IS_MOZILLA_MAILBOX_BACKEND(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_mozilla_mailbox_backend_get_type ())
+
+#define MN_MOZILLA_MAILBOX_BACKEND_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_mozilla_mailbox_backend_get_type(), MNMozillaMailboxBackendClass)
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_MOZILLA_MAILBOX_BACKEND__
+#define __TYPEDEF_MN_MOZILLA_MAILBOX_BACKEND__
+typedef struct _MNMozillaMailboxBackend MNMozillaMailboxBackend;
+#endif
+struct _MNMozillaMailboxBackend {
+	MNBaseMboxMailboxBackend __parent__;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNMozillaMailboxBackendClass MNMozillaMailboxBackendClass;
+struct _MNMozillaMailboxBackendClass {
+	MNBaseMboxMailboxBackendClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_mozilla_mailbox_backend_get_type	(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-pi-mailbox-private.h b/src/mn-pi-mailbox-private.h
@@ -10,7 +10,7 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 29 "mn-pi-mailbox.gob"
+#line 30 "mn-pi-mailbox.gob"
 
 #include <gtk/gtk.h>
 #include "mn-client-session.h"
@@ -22,9 +22,9 @@ extern "C" {
 
 #line 24 "mn-pi-mailbox-private.h"
 struct _MNPIMailboxPrivate {
-#line 90 "mn-pi-mailbox.gob"
+#line 92 "mn-pi-mailbox.gob"
 	GtkWidget * auth_dialog;
-#line 93 "mn-pi-mailbox.gob"
+#line 95 "mn-pi-mailbox.gob"
 	gboolean auth_failed;
 #line 30 "mn-pi-mailbox-private.h"
 };
diff --git a/src/mn-pi-mailbox-properties-private.h b/src/mn-pi-mailbox-properties-private.h
@@ -9,7 +9,7 @@
 extern "C" {
 #endif /* __cplusplus */
 
-void 	mn_pi_mailbox_properties_get_contents	(MNPIMailboxProperties * self, MNPIMailboxConnectionType * connection_type, char ** authmech, const char ** hostname, int * port);
+void 	mn_pi_mailbox_properties_get_contents	(MNPIMailboxProperties * self, MNPIMailboxConnectionType * connection_type, char ** authmech, const char ** server, int * port);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-pi-mailbox-properties.c b/src/mn-pi-mailbox-properties.c
@@ -22,17 +22,19 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 27 "mn-pi-mailbox-properties.gob"
+#line 28 "mn-pi-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
+#include "mn-mailbox-properties-dialog.h"
+#include "mn-mailbox-properties-dialog-private.h"
 #include "mn-mailbox-properties-private.h"
 #include "mn-authenticated-mailbox-properties-private.h"
 #include "mn-auth-combo-box.h"
 #include "mn-util.h"
 #include "mn-stock.h"
 
-#line 36 "mn-pi-mailbox-properties.c"
+#line 38 "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)
@@ -49,12 +51,13 @@ typedef MNPIMailboxPropertiesClass SelfClass;
 /* here are local prototypes */
 static void mn_pi_mailbox_properties_class_init (MNPIMailboxPropertiesClass * class) G_GNUC_UNUSED;
 static void mn_pi_mailbox_properties_init (MNPIMailboxProperties * self) G_GNUC_UNUSED;
-static void mn_pi_mailbox_properties_add_connection_type (MNPIMailboxProperties * self, MNPIMailboxConnectionType type, const char * mnemonic) G_GNUC_UNUSED;
+static void mn_pi_mailbox_properties_add_connection_type (MNPIMailboxProperties * self, GtkBox * type_vbox, MNPIMailboxConnectionType type, const char * mnemonic) G_GNUC_UNUSED;
 static void mn_pi_mailbox_properties_add_authentication (MNPIMailboxProperties * self) G_GNUC_UNUSED;
-static void mn_pi_mailbox_properties_notify_expanded_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
 static void mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data) G_GNUC_UNUSED;
-static void ___7_mn_pi_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox) G_GNUC_UNUSED;
-static MNMailbox * ___8_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties) G_GNUC_UNUSED;
+static void ___6_mn_pi_mailbox_properties_activate (MNMailboxProperties * properties) G_GNUC_UNUSED;
+static void ___7_mn_pi_mailbox_properties_deactivate (MNMailboxProperties * properties) G_GNUC_UNUSED;
+static void ___8_mn_pi_mailbox_properties_set_mailbox (MNMailboxProperties * properties, MNMailbox * mailbox) G_GNUC_UNUSED;
+static MNMailbox * ___9_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static MNAuthenticatedMailboxPropertiesClass *parent_class = NULL;
@@ -62,7 +65,6 @@ static MNAuthenticatedMailboxPropertiesClass *parent_class = NULL;
 /* Short form macros */
 #define self_add_connection_type mn_pi_mailbox_properties_add_connection_type
 #define self_add_authentication mn_pi_mailbox_properties_add_authentication
-#define self_notify_expanded_h mn_pi_mailbox_properties_notify_expanded_h
 #define self_radio_toggled_h mn_pi_mailbox_properties_radio_toggled_h
 #define self_get_contents mn_pi_mailbox_properties_get_contents
 GType
@@ -107,104 +109,114 @@ GET_NEW_VARG (const char *first, ...)
 	return ret;
 }
 
-#line 46 "mn-pi-mailbox-properties.gob"
+
+static void
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::dispose"
+	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 43 "mn-pi-mailbox-properties.gob"
+	if(self->connection_page) { g_object_unref ((gpointer) self->connection_page); self->connection_page = NULL; }
+#line 123 "mn-pi-mailbox-properties.c"
+#line 44 "mn-pi-mailbox-properties.gob"
+	if(self->connection_size_group) { g_object_unref ((gpointer) self->connection_size_group); self->connection_size_group = NULL; }
+#line 126 "mn-pi-mailbox-properties.c"
+}
+#undef __GOB_FUNCTION__
+
+#line 49 "mn-pi-mailbox-properties.gob"
 static void 
 mn_pi_mailbox_properties_class_init (MNPIMailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 114 "mn-pi-mailbox-properties.c"
+#line 133 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
 	MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)class;
 
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES);
 
-#line 217 "mn-pi-mailbox-properties.gob"
-	mn_mailbox_properties_class->set_mailbox = ___7_mn_pi_mailbox_properties_set_mailbox;
-#line 232 "mn-pi-mailbox-properties.gob"
-	mn_mailbox_properties_class->get_mailbox = ___8_mn_pi_mailbox_properties_get_mailbox;
-#line 125 "mn-pi-mailbox-properties.c"
+#line 197 "mn-pi-mailbox-properties.gob"
+	mn_mailbox_properties_class->activate = ___6_mn_pi_mailbox_properties_activate;
+#line 208 "mn-pi-mailbox-properties.gob"
+	mn_mailbox_properties_class->deactivate = ___7_mn_pi_mailbox_properties_deactivate;
+#line 216 "mn-pi-mailbox-properties.gob"
+	mn_mailbox_properties_class->set_mailbox = ___8_mn_pi_mailbox_properties_set_mailbox;
+#line 230 "mn-pi-mailbox-properties.gob"
+	mn_mailbox_properties_class->get_mailbox = ___9_mn_pi_mailbox_properties_get_mailbox;
+#line 149 "mn-pi-mailbox-properties.c"
+	g_object_class->dispose = ___dispose;
  {
-#line 47 "mn-pi-mailbox-properties.gob"
+#line 50 "mn-pi-mailbox-properties.gob"
 
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
 
     p_class->stock_id = MN_STOCK_REMOTE;
   
-#line 133 "mn-pi-mailbox-properties.c"
+#line 158 "mn-pi-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 53 "mn-pi-mailbox-properties.gob"
+#line 56 "mn-pi-mailbox-properties.gob"
 static void 
 mn_pi_mailbox_properties_init (MNPIMailboxProperties * self G_GNUC_UNUSED)
-#line 140 "mn-pi-mailbox-properties.c"
+#line 165 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::init"
+#line 44 "mn-pi-mailbox-properties.gob"
+	self->connection_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+#line 170 "mn-pi-mailbox-properties.c"
  {
-#line 54 "mn-pi-mailbox-properties.gob"
+#line 57 "mn-pi-mailbox-properties.gob"
 
     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self);
     GtkWidget *hbox;
     GtkWidget *label;
-    GtkWidget *expander;
-    GtkSizeGroup *radio_size_group;
+    GtkWidget *type_section;
+    GtkWidget *type_vbox;
     int i;
-    const struct
+    static const struct
     {
       MNPIMailboxConnectionType	type;
       const char		*mnemonic;
     } connection_types[] = {
-      { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL,		N_("sta_ndard")			},
-      { MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL,	N_("in-band SS_L/TLS")		},
-      { MN_PI_MAILBOX_CONNECTION_TYPE_SSL,		N_("SSL/TLS on sepa_rate port")	}
+      { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL,		N_("_Standard")			},
+      { MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL,	N_("In-_band SSL/TLS")		},
+      { MN_PI_MAILBOX_CONNECTION_TYPE_SSL,		N_("SSL/TLS on s_eparate port")	}
     };
 
     hbox = mn_authenticated_mailbox_properties_field_new(auth,
-							 _("Ho_stname:"),
+							 _("_Server:"),
 							 &label,
-							 &self->hostname_entry);
+							 &self->server_entry);
 
-    gtk_box_pack_start(GTK_BOX(self), hbox, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(self), auth->username_vbox, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(self), auth->password_vbox, FALSE, FALSE, 0);
-
-    self->details_size_group = gtk_size_group_new(GTK_SIZE_GROUP_NONE);
-
-    gtk_size_group_add_widget(self->details_size_group, auth->username_label);
-    gtk_size_group_add_widget(self->details_size_group, auth->password_label);
-    gtk_size_group_add_widget(self->details_size_group, label);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), hbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0);
 
     properties->entries = mn_g_slist_append_elements(properties->entries,
-						     self->hostname_entry,
+						     self->server_entry,
 						     auth->username_entry,
 						     auth->password_entry,
 						     NULL);
 
-    /* translators: header capitalization */
-    expander = gtk_expander_new_with_mnemonic(_("_Details"));
-    gtk_expander_set_spacing(GTK_EXPANDER(expander), 6);
-
-    self->details_vbox = gtk_vbox_new(FALSE, 6);
-    gtk_container_add(GTK_CONTAINER(expander), self->details_vbox);
+    self->connection_page = gtk_vbox_new(FALSE, 18);
+    gtk_container_set_border_width(GTK_CONTAINER(self->connection_page), 12);
+    mn_mailbox_properties_dialog_set_help_section(self->connection_page, "mailbox-properties-connection");
+    mn_gtk_object_ref_and_sink(GTK_OBJECT(self->connection_page));
 
-    gtk_box_pack_start(GTK_BOX(self), expander, FALSE, FALSE, 0);
-    gtk_widget_show_all(expander);
-
-    radio_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+    /* translators: header capitalization */
+    type_section = mn_hig_section_new_with_box(_("Connection Type"), NULL, &type_vbox);
+    gtk_box_pack_start(GTK_BOX(self->connection_page), type_section, FALSE, FALSE, 0);
+    gtk_widget_show(type_section);
 
     for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
-      {
-	self_add_connection_type(self,
-				 connection_types[i].type,
-				 _(connection_types[i].mnemonic));
-
-	gtk_size_group_add_widget(radio_size_group, self->conn_radio[i]);
-
-	properties->entries = g_slist_append(properties->entries, self->port_spin[i]);
-	g_signal_connect(self->conn_radio[i], "toggled", G_CALLBACK(self_radio_toggled_h), self);
-      }
-
-    g_object_unref(radio_size_group);
+      self_add_connection_type(self,
+			       GTK_BOX(type_vbox),
+			       connection_types[i].type,
+			       _(connection_types[i].mnemonic));
 
 #ifndef WITH_SSL
     gtk_widget_set_sensitive(self->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL], FALSE);
@@ -217,45 +229,43 @@ mn_pi_mailbox_properties_init (MNPIMailboxProperties * self G_GNUC_UNUSED)
 
     self_add_authentication(self);
 
-    g_object_connect(self->hostname_entry,
+    gtk_widget_show_all(self->connection_page);
+
+    g_object_connect(self->server_entry,
 		     "swapped-signal::changed", mn_mailbox_properties_notify_complete, self,
 		     "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self,
 		     NULL);
 
     g_signal_connect_swapped(auth->username_entry, "changed", G_CALLBACK(mn_mailbox_properties_notify_default_name), self);
-
-    g_signal_connect(expander, "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
   
-#line 230 "mn-pi-mailbox-properties.c"
+#line 242 "mn-pi-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 140 "mn-pi-mailbox-properties.gob"
+#line 127 "mn-pi-mailbox-properties.gob"
 static void 
-mn_pi_mailbox_properties_add_connection_type (MNPIMailboxProperties * self, MNPIMailboxConnectionType type, const char * mnemonic)
-#line 240 "mn-pi-mailbox-properties.c"
+mn_pi_mailbox_properties_add_connection_type (MNPIMailboxProperties * self, GtkBox * type_vbox, MNPIMailboxConnectionType type, const char * mnemonic)
+#line 252 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::add_connection_type"
-#line 140 "mn-pi-mailbox-properties.gob"
+#line 127 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 140 "mn-pi-mailbox-properties.gob"
+#line 127 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
-#line 140 "mn-pi-mailbox-properties.gob"
+#line 127 "mn-pi-mailbox-properties.gob"
+	g_return_if_fail (type_vbox != NULL);
+#line 127 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (mnemonic != NULL);
-#line 249 "mn-pi-mailbox-properties.c"
+#line 263 "mn-pi-mailbox-properties.c"
 {
-#line 144 "mn-pi-mailbox-properties.gob"
+#line 132 "mn-pi-mailbox-properties.gob"
 	
-    GtkWidget *label;
     GtkWidget *hbox;
     GtkWidget *port_label;
 
-    label = gtk_label_new(type == 0 ? _("Connection type:") : NULL);
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-
     self->conn_radio[type] = type == 0
       ? gtk_radio_button_new_with_mnemonic(NULL, mnemonic)
       : gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(self->conn_radio[0]), mnemonic);
@@ -263,40 +273,48 @@ mn_pi_mailbox_properties_add_connection_type (MNPIMailboxProperties * self, MNPI
     port_label = gtk_label_new(_("Port:"));
 
     self->port_spin[type] = gtk_spin_button_new_with_range(0, 0xFFFF, 1);
+    gtk_entry_set_activates_default(GTK_ENTRY(self->port_spin[type]), TRUE);
     gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(self->port_spin[type]), TRUE);
 
     hbox = gtk_hbox_new(FALSE, 12);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), self->conn_radio[type], TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(hbox), self->conn_radio[type], FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), port_label, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), self->port_spin[type], FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(self->details_vbox), hbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(type_vbox, hbox, FALSE, FALSE, 0);
     gtk_widget_show_all(hbox);
 
-    gtk_size_group_add_widget(self->details_size_group, label);
+    gtk_size_group_add_widget(self->connection_size_group, self->conn_radio[type]);
+
+    g_signal_connect(self->conn_radio[type], "toggled", G_CALLBACK(self_radio_toggled_h), self);
   }}
-#line 279 "mn-pi-mailbox-properties.c"
+#line 291 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 172 "mn-pi-mailbox-properties.gob"
+#line 158 "mn-pi-mailbox-properties.gob"
 static void 
 mn_pi_mailbox_properties_add_authentication (MNPIMailboxProperties * self)
-#line 285 "mn-pi-mailbox-properties.c"
+#line 297 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::add_authentication"
-#line 172 "mn-pi-mailbox-properties.gob"
+#line 158 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 172 "mn-pi-mailbox-properties.gob"
+#line 158 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
-#line 292 "mn-pi-mailbox-properties.c"
+#line 304 "mn-pi-mailbox-properties.c"
 {
-#line 174 "mn-pi-mailbox-properties.gob"
+#line 160 "mn-pi-mailbox-properties.gob"
 	
+    GtkWidget *section;
+    GtkWidget *vbox;
     GtkWidget *hbox;
     GtkWidget *label;
 
+    /* translators: header capitalization */
+    section = mn_hig_section_new_with_box(_("Authentication"), NULL, &vbox);
+    gtk_box_pack_start(GTK_BOX(self->connection_page), section, FALSE, FALSE, 0);
+
     hbox = gtk_hbox_new(FALSE, 12);
-    label = gtk_label_new_with_mnemonic(_("Authent_ication mechanism:"));
+    label = gtk_label_new_with_mnemonic(_("_Mechanism:"));
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
 
     self->auth_combo = mn_auth_combo_box_new();
@@ -304,48 +322,28 @@ mn_pi_mailbox_properties_add_authentication (MNPIMailboxProperties * self)
 
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), self->auth_combo, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(self->details_vbox), hbox, FALSE, FALSE, 0);
-    gtk_widget_show_all(hbox);
-
-    gtk_size_group_add_widget(self->details_size_group, label);
-  }}
-#line 313 "mn-pi-mailbox-properties.c"
-#undef __GOB_FUNCTION__
+    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
-#line 193 "mn-pi-mailbox-properties.gob"
-static void 
-mn_pi_mailbox_properties_notify_expanded_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 319 "mn-pi-mailbox-properties.c"
-{
-#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::notify_expanded_h"
-{
-#line 195 "mn-pi-mailbox-properties.gob"
-	
-    Self *self = user_data;
-
-    gtk_size_group_set_mode(self->details_size_group,
-			    gtk_expander_get_expanded(GTK_EXPANDER(object))
-			    ? GTK_SIZE_GROUP_HORIZONTAL
-			    : GTK_SIZE_GROUP_NONE);
+    gtk_size_group_add_widget(self->connection_size_group, label);
   }}
-#line 332 "mn-pi-mailbox-properties.c"
+#line 330 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 204 "mn-pi-mailbox-properties.gob"
+#line 184 "mn-pi-mailbox-properties.gob"
 static void 
 mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data)
-#line 338 "mn-pi-mailbox-properties.c"
+#line 336 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::radio_toggled_h"
-#line 204 "mn-pi-mailbox-properties.gob"
+#line 184 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (togglebutton != NULL);
-#line 204 "mn-pi-mailbox-properties.gob"
+#line 184 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_TOGGLE_BUTTON (togglebutton));
-#line 204 "mn-pi-mailbox-properties.gob"
+#line 184 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (user_data != NULL);
-#line 347 "mn-pi-mailbox-properties.c"
+#line 345 "mn-pi-mailbox-properties.c"
 {
-#line 207 "mn-pi-mailbox-properties.gob"
+#line 187 "mn-pi-mailbox-properties.gob"
 	
     Self *self = user_data;
     int i;
@@ -355,29 +353,63 @@ mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpoint
 
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 359 "mn-pi-mailbox-properties.c"
+#line 357 "mn-pi-mailbox-properties.c"
+#undef __GOB_FUNCTION__
+
+#line 197 "mn-pi-mailbox-properties.gob"
+static void 
+___6_mn_pi_mailbox_properties_activate (MNMailboxProperties * properties G_GNUC_UNUSED)
+#line 363 "mn-pi-mailbox-properties.c"
+#define PARENT_HANDLER(___properties) \
+	{ if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->activate) \
+		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->activate)(___properties); }
+{
+#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::activate"
+{
+#line 199 "mn-pi-mailbox-properties.gob"
+	
+    Self *self = SELF(properties);
+
+    PARENT_HANDLER(properties);
+
+    gtk_notebook_insert_page(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), self->connection_page, NULL, 1);
+    gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), self->connection_page, _("Connection"));
+  }}
+#line 379 "mn-pi-mailbox-properties.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 208 "mn-pi-mailbox-properties.gob"
+static void 
+___7_mn_pi_mailbox_properties_deactivate (MNMailboxProperties * properties G_GNUC_UNUSED)
+#line 386 "mn-pi-mailbox-properties.c"
+#define PARENT_HANDLER(___properties) \
+	{ if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->deactivate) \
+		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->deactivate)(___properties); }
+{
+#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::deactivate"
+{
+#line 210 "mn-pi-mailbox-properties.gob"
+	
+    PARENT_HANDLER(properties);
+
+    gtk_notebook_remove_page(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), 1);
+  }}
+#line 399 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
 
-#line 217 "mn-pi-mailbox-properties.gob"
+#line 216 "mn-pi-mailbox-properties.gob"
 static void 
-___7_mn_pi_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 365 "mn-pi-mailbox-properties.c"
+___8_mn_pi_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
+#line 406 "mn-pi-mailbox-properties.c"
 #define PARENT_HANDLER(___properties,___mailbox) \
 	{ if(MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox) \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::set_mailbox"
-#line 217 "mn-pi-mailbox-properties.gob"
-	g_return_if_fail (properties != NULL);
-#line 217 "mn-pi-mailbox-properties.gob"
-	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (properties));
-#line 217 "mn-pi-mailbox-properties.gob"
-	g_return_if_fail (mailbox != NULL);
-#line 217 "mn-pi-mailbox-properties.gob"
-	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 379 "mn-pi-mailbox-properties.c"
 {
-#line 220 "mn-pi-mailbox-properties.gob"
+#line 218 "mn-pi-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNPIMailbox *pi_mailbox = MN_PI_MAILBOX(mailbox);
@@ -386,17 +418,17 @@ ___7_mn_pi_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GN
 
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->conn_radio[pi_mailbox->connection_type]), TRUE);
     mn_auth_combo_box_set_active_mechanism(MN_AUTH_COMBO_BOX(self->auth_combo), pi_mailbox->authmech);
-    gtk_entry_set_text(GTK_ENTRY(self->hostname_entry), pi_mailbox->hostname);
+    gtk_entry_set_text(GTK_ENTRY(self->server_entry), pi_mailbox->hostname);
     gtk_spin_button_set_value(GTK_SPIN_BUTTON(self->port_spin[pi_mailbox->connection_type]), pi_mailbox->runtime_port);
   }}
-#line 393 "mn-pi-mailbox-properties.c"
+#line 425 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 232 "mn-pi-mailbox-properties.gob"
+#line 230 "mn-pi-mailbox-properties.gob"
 static MNMailbox * 
-___8_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
-#line 400 "mn-pi-mailbox-properties.c"
+___9_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
+#line 432 "mn-pi-mailbox-properties.c"
 #define PARENT_HANDLER(___properties) \
 	((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \
@@ -404,12 +436,12 @@ ___8_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GN
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::get_mailbox"
 {
-#line 234 "mn-pi-mailbox-properties.gob"
+#line 232 "mn-pi-mailbox-properties.gob"
 	
     MNMailbox *mailbox;
     MNPIMailboxConnectionType connection_type;
     char *authmech;
-    const char *hostname;
+    const char *server;
     int port;
 
     mailbox = PARENT_HANDLER(properties);
@@ -417,13 +449,13 @@ ___8_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GN
     self_get_contents(SELF(properties),
 		      &connection_type,
 		      &authmech,
-		      &hostname,
+		      &server,
 		      &port);
 
     g_object_set(mailbox,
 		 MN_PI_MAILBOX_PROP_CONNECTION_TYPE(connection_type),
 		 MN_PI_MAILBOX_PROP_AUTHMECH(authmech),
-		 MN_PI_MAILBOX_PROP_HOSTNAME((char *) hostname),
+		 MN_PI_MAILBOX_PROP_HOSTNAME((char *) server),
 		 MN_PI_MAILBOX_PROP_PORT(port),
 		 NULL);
 
@@ -431,23 +463,23 @@ ___8_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GN
 
     return mailbox;
   }}
-#line 435 "mn-pi-mailbox-properties.c"
+#line 467 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 261 "mn-pi-mailbox-properties.gob"
+#line 259 "mn-pi-mailbox-properties.gob"
 void 
-mn_pi_mailbox_properties_get_contents (MNPIMailboxProperties * self, MNPIMailboxConnectionType * connection_type, char ** authmech, const char ** hostname, int * port)
-#line 442 "mn-pi-mailbox-properties.c"
+mn_pi_mailbox_properties_get_contents (MNPIMailboxProperties * self, MNPIMailboxConnectionType * connection_type, char ** authmech, const char ** server, int * port)
+#line 474 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::get_contents"
-#line 261 "mn-pi-mailbox-properties.gob"
+#line 259 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 261 "mn-pi-mailbox-properties.gob"
+#line 259 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
-#line 449 "mn-pi-mailbox-properties.c"
+#line 481 "mn-pi-mailbox-properties.c"
 {
-#line 267 "mn-pi-mailbox-properties.gob"
+#line 265 "mn-pi-mailbox-properties.gob"
 	
     MNPIMailboxConnectionType _connection_type;
 
@@ -471,10 +503,10 @@ mn_pi_mailbox_properties_get_contents (MNPIMailboxProperties * self, MNPIMailbox
       *connection_type = _connection_type;
     if (authmech)
       *authmech = mn_auth_combo_box_get_active_mechanism(MN_AUTH_COMBO_BOX(self->auth_combo));
-    if (hostname)
-      *hostname = gtk_entry_get_text(GTK_ENTRY(self->hostname_entry));
+    if (server)
+      *server = gtk_entry_get_text(GTK_ENTRY(self->server_entry));
     if (port)
       *port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(self->port_spin[_connection_type]));
   }}
-#line 480 "mn-pi-mailbox-properties.c"
+#line 512 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pi-mailbox-properties.gob b/src/mn-pi-mailbox-properties.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -27,6 +28,8 @@ requires 2.0.14
 %{
 #include "config.h"
 #include <glib/gi18n.h>
+#include "mn-mailbox-properties-dialog.h"
+#include "mn-mailbox-properties-dialog-private.h"
 #include "mn-mailbox-properties-private.h"
 #include "mn-authenticated-mailbox-properties-private.h"
 #include "mn-auth-combo-box.h"
@@ -36,9 +39,9 @@ requires 2.0.14
 
 class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstract)
 {
-  protected GtkWidget *hostname_entry;
-  protected GtkWidget *details_vbox;
-  protected GtkSizeGroup *details_size_group;
+  protected GtkWidget *server_entry;
+  protected GtkWidget *connection_page unrefwith g_object_unref;
+  protected GtkSizeGroup *connection_size_group = {gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL)} unrefwith g_object_unref;
   protected GtkWidget *conn_radio[MN_PI_MAILBOX_N_CONNECTION_TYPES];
   protected GtkWidget *port_spin[MN_PI_MAILBOX_N_CONNECTION_TYPES];
   protected GtkWidget *auth_combo;
@@ -56,65 +59,49 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
     MNAuthenticatedMailboxProperties *auth = MN_AUTHENTICATED_MAILBOX_PROPERTIES(self);
     GtkWidget *hbox;
     GtkWidget *label;
-    GtkWidget *expander;
-    GtkSizeGroup *radio_size_group;
+    GtkWidget *type_section;
+    GtkWidget *type_vbox;
     int i;
-    const struct
+    static const struct
     {
       MNPIMailboxConnectionType	type;
       const char		*mnemonic;
     } connection_types[] = {
-      { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL,		N_("sta_ndard")			},
-      { MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL,	N_("in-band SS_L/TLS")		},
-      { MN_PI_MAILBOX_CONNECTION_TYPE_SSL,		N_("SSL/TLS on sepa_rate port")	}
+      { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL,		N_("_Standard")			},
+      { MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL,	N_("In-_band SSL/TLS")		},
+      { MN_PI_MAILBOX_CONNECTION_TYPE_SSL,		N_("SSL/TLS on s_eparate port")	}
     };
 
     hbox = mn_authenticated_mailbox_properties_field_new(auth,
-							 _("Ho_stname:"),
+							 _("_Server:"),
 							 &label,
-							 &self->hostname_entry);
+							 &self->server_entry);
 
-    gtk_box_pack_start(GTK_BOX(self), hbox, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(self), auth->username_vbox, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(self), auth->password_vbox, FALSE, FALSE, 0);
-
-    self->details_size_group = gtk_size_group_new(GTK_SIZE_GROUP_NONE);
-
-    gtk_size_group_add_widget(self->details_size_group, auth->username_label);
-    gtk_size_group_add_widget(self->details_size_group, auth->password_label);
-    gtk_size_group_add_widget(self->details_size_group, label);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), hbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->username_vbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(auth->account_vbox), auth->password_vbox, FALSE, FALSE, 0);
 
     properties->entries = mn_g_slist_append_elements(properties->entries,
-						     self->hostname_entry,
+						     self->server_entry,
 						     auth->username_entry,
 						     auth->password_entry,
 						     NULL);
 
-    /* translators: header capitalization */
-    expander = gtk_expander_new_with_mnemonic(_("_Details"));
-    gtk_expander_set_spacing(GTK_EXPANDER(expander), 6);
-
-    self->details_vbox = gtk_vbox_new(FALSE, 6);
-    gtk_container_add(GTK_CONTAINER(expander), self->details_vbox);
-
-    gtk_box_pack_start(GTK_BOX(self), expander, FALSE, FALSE, 0);
-    gtk_widget_show_all(expander);
+    self->connection_page = gtk_vbox_new(FALSE, 18);
+    gtk_container_set_border_width(GTK_CONTAINER(self->connection_page), 12);
+    mn_mailbox_properties_dialog_set_help_section(self->connection_page, "mailbox-properties-connection");
+    mn_gtk_object_ref_and_sink(GTK_OBJECT(self->connection_page));
 
-    radio_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+    /* translators: header capitalization */
+    type_section = mn_hig_section_new_with_box(_("Connection Type"), NULL, &type_vbox);
+    gtk_box_pack_start(GTK_BOX(self->connection_page), type_section, FALSE, FALSE, 0);
+    gtk_widget_show(type_section);
 
     for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
-      {
-	self_add_connection_type(self,
-				 connection_types[i].type,
-				 _(connection_types[i].mnemonic));
-
-	gtk_size_group_add_widget(radio_size_group, self->conn_radio[i]);
-
-	properties->entries = g_slist_append(properties->entries, self->port_spin[i]);
-	g_signal_connect(self->conn_radio[i], "toggled", G_CALLBACK(self_radio_toggled_h), self);
-      }
-
-    g_object_unref(radio_size_group);
+      self_add_connection_type(self,
+			       GTK_BOX(type_vbox),
+			       connection_types[i].type,
+			       _(connection_types[i].mnemonic));
 
 #ifndef WITH_SSL
     gtk_widget_set_sensitive(self->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL], FALSE);
@@ -127,28 +114,25 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
 
     self_add_authentication(self);
 
-    g_object_connect(self->hostname_entry,
+    gtk_widget_show_all(self->connection_page);
+
+    g_object_connect(self->server_entry,
 		     "swapped-signal::changed", mn_mailbox_properties_notify_complete, self,
 		     "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self,
 		     NULL);
 
     g_signal_connect_swapped(auth->username_entry, "changed", G_CALLBACK(mn_mailbox_properties_notify_default_name), self);
-
-    g_signal_connect(expander, "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
   }
 
   private void
     add_connection_type (self,
+			 Gtk:Box *type_vbox (check null),
 			 MNPIMailboxConnectionType type,
 			 const char *mnemonic (check null))
   {
-    GtkWidget *label;
     GtkWidget *hbox;
     GtkWidget *port_label;
 
-    label = gtk_label_new(type == 0 ? _("Connection type:") : NULL);
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-
     self->conn_radio[type] = type == 0
       ? gtk_radio_button_new_with_mnemonic(NULL, mnemonic)
       : gtk_radio_button_new_with_mnemonic_from_widget(GTK_RADIO_BUTTON(self->conn_radio[0]), mnemonic);
@@ -156,27 +140,35 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
     port_label = gtk_label_new(_("Port:"));
 
     self->port_spin[type] = gtk_spin_button_new_with_range(0, 0xFFFF, 1);
+    gtk_entry_set_activates_default(GTK_ENTRY(self->port_spin[type]), TRUE);
     gtk_spin_button_set_numeric(GTK_SPIN_BUTTON(self->port_spin[type]), TRUE);
 
     hbox = gtk_hbox_new(FALSE, 12);
-    gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(hbox), self->conn_radio[type], TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(hbox), self->conn_radio[type], FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), port_label, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), self->port_spin[type], FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(self->details_vbox), hbox, FALSE, FALSE, 0);
+    gtk_box_pack_start(type_vbox, hbox, FALSE, FALSE, 0);
     gtk_widget_show_all(hbox);
 
-    gtk_size_group_add_widget(self->details_size_group, label);
+    gtk_size_group_add_widget(self->connection_size_group, self->conn_radio[type]);
+
+    g_signal_connect(self->conn_radio[type], "toggled", G_CALLBACK(self_radio_toggled_h), self);
   }
 
   private void
     add_authentication (self)
   {
+    GtkWidget *section;
+    GtkWidget *vbox;
     GtkWidget *hbox;
     GtkWidget *label;
 
+    /* translators: header capitalization */
+    section = mn_hig_section_new_with_box(_("Authentication"), NULL, &vbox);
+    gtk_box_pack_start(GTK_BOX(self->connection_page), section, FALSE, FALSE, 0);
+
     hbox = gtk_hbox_new(FALSE, 12);
-    label = gtk_label_new_with_mnemonic(_("Authent_ication mechanism:"));
+    label = gtk_label_new_with_mnemonic(_("_Mechanism:"));
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
 
     self->auth_combo = mn_auth_combo_box_new();
@@ -184,21 +176,9 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
 
     gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), self->auth_combo, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(self->details_vbox), hbox, FALSE, FALSE, 0);
-    gtk_widget_show_all(hbox);
-
-    gtk_size_group_add_widget(self->details_size_group, label);
-  }
-
-  private void
-    notify_expanded_h (GObject *object, GParamSpec *pspec, gpointer user_data)
-  {
-    Self *self = user_data;
+    gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
 
-    gtk_size_group_set_mode(self->details_size_group,
-			    gtk_expander_get_expanded(GTK_EXPANDER(object))
-			    ? GTK_SIZE_GROUP_HORIZONTAL
-			    : GTK_SIZE_GROUP_NONE);
+    gtk_size_group_add_widget(self->connection_size_group, label);
   }
 
   private void
@@ -215,8 +195,26 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
   }
 
   override (MN:Mailbox:Properties) void
-    set_mailbox (MN:Mailbox:Properties *properties (check null type),
-		 MN:Mailbox *mailbox (check null type))
+    activate (MNMailboxProperties *properties)
+  {
+    Self *self = SELF(properties);
+
+    PARENT_HANDLER(properties);
+
+    gtk_notebook_insert_page(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), self->connection_page, NULL, 1);
+    gtk_notebook_set_tab_label_text(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), self->connection_page, _("Connection"));
+  }
+
+  override (MN:Mailbox:Properties) void
+    deactivate (MNMailboxProperties *properties)
+  {
+    PARENT_HANDLER(properties);
+
+    gtk_notebook_remove_page(GTK_NOTEBOOK(MN_MAILBOX_PROPERTIES_DIALOG(properties->dialog)->notebook), 1);
+  }
+
+  override (MN:Mailbox:Properties) void
+    set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox)
   {
     Self *self = SELF(properties);
     MNPIMailbox *pi_mailbox = MN_PI_MAILBOX(mailbox);
@@ -225,7 +223,7 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
 
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->conn_radio[pi_mailbox->connection_type]), TRUE);
     mn_auth_combo_box_set_active_mechanism(MN_AUTH_COMBO_BOX(self->auth_combo), pi_mailbox->authmech);
-    gtk_entry_set_text(GTK_ENTRY(self->hostname_entry), pi_mailbox->hostname);
+    gtk_entry_set_text(GTK_ENTRY(self->server_entry), pi_mailbox->hostname);
     gtk_spin_button_set_value(GTK_SPIN_BUTTON(self->port_spin[pi_mailbox->connection_type]), pi_mailbox->runtime_port);
   }
 
@@ -235,7 +233,7 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
     MNMailbox *mailbox;
     MNPIMailboxConnectionType connection_type;
     char *authmech;
-    const char *hostname;
+    const char *server;
     int port;
 
     mailbox = PARENT_HANDLER(properties);
@@ -243,13 +241,13 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
     self_get_contents(SELF(properties),
 		      &connection_type,
 		      &authmech,
-		      &hostname,
+		      &server,
 		      &port);
 
     g_object_set(mailbox,
 		 MN_PI_MAILBOX_PROP_CONNECTION_TYPE(connection_type),
 		 MN_PI_MAILBOX_PROP_AUTHMECH(authmech),
-		 MN_PI_MAILBOX_PROP_HOSTNAME((char *) hostname),
+		 MN_PI_MAILBOX_PROP_HOSTNAME((char *) server),
 		 MN_PI_MAILBOX_PROP_PORT(port),
 		 NULL);
 
@@ -262,7 +260,7 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
     get_contents (self,
 		  MNPIMailboxConnectionType *connection_type,
 		  char **authmech,
-		  const char **hostname,
+		  const char **server,
 		  int *port)
   {
     MNPIMailboxConnectionType _connection_type;
@@ -287,8 +285,8 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstrac
       *connection_type = _connection_type;
     if (authmech)
       *authmech = mn_auth_combo_box_get_active_mechanism(MN_AUTH_COMBO_BOX(self->auth_combo));
-    if (hostname)
-      *hostname = gtk_entry_get_text(GTK_ENTRY(self->hostname_entry));
+    if (server)
+      *server = gtk_entry_get_text(GTK_ENTRY(self->server_entry));
     if (port)
       *port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(self->port_spin[_connection_type]));
   }
diff --git a/src/mn-pi-mailbox-properties.h b/src/mn-pi-mailbox-properties.h
@@ -37,9 +37,9 @@ typedef struct _MNPIMailboxProperties MNPIMailboxProperties;
 struct _MNPIMailboxProperties {
 	MNAuthenticatedMailboxProperties __parent__;
 	/*< private >*/
-	GtkWidget * hostname_entry; /* protected */
-	GtkWidget * details_vbox; /* protected */
-	GtkSizeGroup * details_size_group; /* protected */
+	GtkWidget * server_entry; /* protected */
+	GtkWidget * connection_page; /* protected */
+	GtkSizeGroup * connection_size_group; /* protected */
 	GtkWidget * conn_radio[MN_PI_MAILBOX_N_CONNECTION_TYPES]; /* protected */
 	GtkWidget * port_spin[MN_PI_MAILBOX_N_CONNECTION_TYPES]; /* protected */
 	GtkWidget * auth_combo; /* protected */
diff --git a/src/mn-pi-mailbox.c b/src/mn-pi-mailbox.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 39 "mn-pi-mailbox.gob"
+#line 40 "mn-pi-mailbox.gob"
 
 #include "config.h"
 #include <gnome.h>
@@ -158,22 +158,22 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 73 "mn-pi-mailbox.gob"
+#line 74 "mn-pi-mailbox.gob"
 	if(self->authmech) { g_free ((gpointer) self->authmech); self->authmech = NULL; }
 #line 164 "mn-pi-mailbox.c"
-#line 76 "mn-pi-mailbox.gob"
+#line 78 "mn-pi-mailbox.gob"
 	if(self->hostname) { g_free ((gpointer) self->hostname); self->hostname = NULL; }
 #line 167 "mn-pi-mailbox.c"
-#line 87 "mn-pi-mailbox.gob"
+#line 89 "mn-pi-mailbox.gob"
 	if(self->runtime_username) { g_free ((gpointer) self->runtime_username); self->runtime_username = NULL; }
 #line 170 "mn-pi-mailbox.c"
-#line 88 "mn-pi-mailbox.gob"
+#line 90 "mn-pi-mailbox.gob"
 	if(self->runtime_password) { g_free ((gpointer) self->runtime_password); self->runtime_password = NULL; }
 #line 173 "mn-pi-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 95 "mn-pi-mailbox.gob"
+#line 97 "mn-pi-mailbox.gob"
 static void 
 mn_pi_mailbox_class_init (MNPIMailboxClass * class G_GNUC_UNUSED)
 #line 180 "mn-pi-mailbox.c"
@@ -187,11 +187,11 @@ mn_pi_mailbox_class_init (MNPIMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX);
 
-#line 111 "mn-pi-mailbox.gob"
+#line 113 "mn-pi-mailbox.gob"
 	mn_mailbox_class->removed = ___3_mn_pi_mailbox_removed;
-#line 122 "mn-pi-mailbox.gob"
+#line 124 "mn-pi-mailbox.gob"
 	mn_mailbox_class->seal = ___4_mn_pi_mailbox_seal;
-#line 138 "mn-pi-mailbox.gob"
+#line 140 "mn-pi-mailbox.gob"
 	mn_authenticated_mailbox_class->authenticated_check = ___5_mn_pi_mailbox_authenticated_check;
 #line 197 "mn-pi-mailbox.c"
 	g_object_class->finalize = ___finalize;
@@ -241,7 +241,7 @@ mn_pi_mailbox_class_init (MNPIMailboxClass * class G_GNUC_UNUSED)
 		param_spec);
     }
  {
-#line 96 "mn-pi-mailbox.gob"
+#line 98 "mn-pi-mailbox.gob"
 
     password_database = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
 
@@ -255,7 +255,7 @@ mn_pi_mailbox_class_init (MNPIMailboxClass * class G_GNUC_UNUSED)
  }
 }
 #undef __GOB_FUNCTION__
-#line 106 "mn-pi-mailbox.gob"
+#line 108 "mn-pi-mailbox.gob"
 static void 
 mn_pi_mailbox_init (MNPIMailbox * self G_GNUC_UNUSED)
 #line 262 "mn-pi-mailbox.c"
@@ -263,7 +263,7 @@ mn_pi_mailbox_init (MNPIMailbox * self G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_PI_MAILBOX,MNPIMailboxPrivate);
  {
-#line 107 "mn-pi-mailbox.gob"
+#line 109 "mn-pi-mailbox.gob"
 
     mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_REMOTE);
   
@@ -286,28 +286,28 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_CONNECTION_TYPE:
 		{
-#line 68 "mn-pi-mailbox.gob"
+#line 69 "mn-pi-mailbox.gob"
 self->connection_type = g_value_get_enum (VAL);
 #line 292 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_AUTHMECH:
 		{
-#line 74 "mn-pi-mailbox.gob"
+#line 75 "mn-pi-mailbox.gob"
 { char *old = self->authmech; self->authmech = g_value_dup_string (VAL); g_free (old); }
 #line 299 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_HOSTNAME:
 		{
-#line 77 "mn-pi-mailbox.gob"
+#line 79 "mn-pi-mailbox.gob"
 { char *old = self->hostname; self->hostname = g_value_dup_string (VAL); g_free (old); }
 #line 306 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_PORT:
 		{
-#line 80 "mn-pi-mailbox.gob"
+#line 82 "mn-pi-mailbox.gob"
 self->port = g_value_get_int (VAL);
 #line 313 "mn-pi-mailbox.c"
 		}
@@ -338,28 +338,28 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_CONNECTION_TYPE:
 		{
-#line 68 "mn-pi-mailbox.gob"
+#line 69 "mn-pi-mailbox.gob"
 g_value_set_enum (VAL, self->connection_type);
 #line 344 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_AUTHMECH:
 		{
-#line 74 "mn-pi-mailbox.gob"
+#line 75 "mn-pi-mailbox.gob"
 g_value_set_string (VAL, self->authmech);
 #line 351 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_HOSTNAME:
 		{
-#line 77 "mn-pi-mailbox.gob"
+#line 79 "mn-pi-mailbox.gob"
 g_value_set_string (VAL, self->hostname);
 #line 358 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_PORT:
 		{
-#line 80 "mn-pi-mailbox.gob"
+#line 82 "mn-pi-mailbox.gob"
 g_value_set_int (VAL, self->port);
 #line 365 "mn-pi-mailbox.c"
 		}
@@ -378,7 +378,7 @@ g_value_set_int (VAL, self->port);
 
 
 
-#line 111 "mn-pi-mailbox.gob"
+#line 113 "mn-pi-mailbox.gob"
 static void 
 ___3_mn_pi_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 385 "mn-pi-mailbox.c"
@@ -388,7 +388,7 @@ ___3_mn_pi_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::removed"
 {
-#line 113 "mn-pi-mailbox.gob"
+#line 115 "mn-pi-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -401,7 +401,7 @@ ___3_mn_pi_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 122 "mn-pi-mailbox.gob"
+#line 124 "mn-pi-mailbox.gob"
 static void 
 ___4_mn_pi_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 408 "mn-pi-mailbox.c"
@@ -411,7 +411,7 @@ ___4_mn_pi_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::seal"
 {
-#line 124 "mn-pi-mailbox.gob"
+#line 126 "mn-pi-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -429,7 +429,7 @@ ___4_mn_pi_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 138 "mn-pi-mailbox.gob"
+#line 140 "mn-pi-mailbox.gob"
 static void 
 ___5_mn_pi_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
 #line 436 "mn-pi-mailbox.c"
@@ -439,7 +439,7 @@ ___5_mn_pi_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::authenticated_check"
 {
-#line 140 "mn-pi-mailbox.gob"
+#line 142 "mn-pi-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -466,25 +466,25 @@ ___5_mn_pi_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 163 "mn-pi-mailbox.gob"
+#line 165 "mn-pi-mailbox.gob"
 gboolean 
 mn_pi_mailbox_split_uri (const char * uri, int maxlen, char * scheme, char * auth, char * location, gboolean * has_auth)
 #line 473 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::split_uri"
-#line 163 "mn-pi-mailbox.gob"
+#line 165 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 163 "mn-pi-mailbox.gob"
+#line 165 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (scheme != NULL, (gboolean )0);
-#line 163 "mn-pi-mailbox.gob"
+#line 165 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (auth != NULL, (gboolean )0);
-#line 163 "mn-pi-mailbox.gob"
+#line 165 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (location != NULL, (gboolean )0);
-#line 163 "mn-pi-mailbox.gob"
+#line 165 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (has_auth != NULL, (gboolean )0);
 #line 486 "mn-pi-mailbox.c"
 {
-#line 170 "mn-pi-mailbox.gob"
+#line 172 "mn-pi-mailbox.gob"
 	
     char *pat;
     int n;
@@ -508,25 +508,25 @@ mn_pi_mailbox_split_uri (const char * uri, int maxlen, char * scheme, char * aut
 #line 509 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 191 "mn-pi-mailbox.gob"
+#line 193 "mn-pi-mailbox.gob"
 gboolean 
 mn_pi_mailbox_split_uri_auth (const char * auth, int maxlen, char * username, char * authmech, gboolean * has_username, gboolean * has_authmech)
 #line 515 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::split_uri_auth"
-#line 191 "mn-pi-mailbox.gob"
+#line 193 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (auth != NULL, (gboolean )0);
-#line 191 "mn-pi-mailbox.gob"
+#line 193 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (username != NULL, (gboolean )0);
-#line 191 "mn-pi-mailbox.gob"
+#line 193 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (authmech != NULL, (gboolean )0);
-#line 191 "mn-pi-mailbox.gob"
+#line 193 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (has_username != NULL, (gboolean )0);
-#line 191 "mn-pi-mailbox.gob"
+#line 193 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (has_authmech != NULL, (gboolean )0);
 #line 528 "mn-pi-mailbox.c"
 {
-#line 198 "mn-pi-mailbox.gob"
+#line 200 "mn-pi-mailbox.gob"
 	
     char *pat;
     int n;
@@ -562,21 +562,21 @@ mn_pi_mailbox_split_uri_auth (const char * auth, int maxlen, char * username, ch
 #line 563 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 231 "mn-pi-mailbox.gob"
+#line 233 "mn-pi-mailbox.gob"
 void 
 mn_pi_mailbox_split_uri_hostport (const char * hostport, int maxlen, char * hostname, int * port)
 #line 569 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::split_uri_hostport"
-#line 231 "mn-pi-mailbox.gob"
+#line 233 "mn-pi-mailbox.gob"
 	g_return_if_fail (hostport != NULL);
-#line 231 "mn-pi-mailbox.gob"
+#line 233 "mn-pi-mailbox.gob"
 	g_return_if_fail (hostname != NULL);
-#line 231 "mn-pi-mailbox.gob"
+#line 233 "mn-pi-mailbox.gob"
 	g_return_if_fail (port != NULL);
 #line 578 "mn-pi-mailbox.c"
 {
-#line 236 "mn-pi-mailbox.gob"
+#line 238 "mn-pi-mailbox.gob"
 	
     char *pat;
     int n;
@@ -602,19 +602,19 @@ mn_pi_mailbox_split_uri_hostport (const char * hostport, int maxlen, char * host
 #line 603 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 259 "mn-pi-mailbox.gob"
+#line 261 "mn-pi-mailbox.gob"
 void 
 mn_pi_mailbox_auth_failed (MNPIMailbox * self)
 #line 609 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::auth_failed"
-#line 259 "mn-pi-mailbox.gob"
+#line 261 "mn-pi-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 259 "mn-pi-mailbox.gob"
+#line 261 "mn-pi-mailbox.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX (self));
 #line 616 "mn-pi-mailbox.c"
 {
-#line 261 "mn-pi-mailbox.gob"
+#line 263 "mn-pi-mailbox.gob"
 	
     MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(self);
 
@@ -638,19 +638,19 @@ mn_pi_mailbox_auth_failed (MNPIMailbox * self)
 #line 639 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 282 "mn-pi-mailbox.gob"
+#line 284 "mn-pi-mailbox.gob"
 gboolean 
 mn_pi_mailbox_fill_credentials (MNPIMailbox * self, gboolean need_username, gboolean need_password)
 #line 645 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::fill_credentials"
-#line 282 "mn-pi-mailbox.gob"
+#line 284 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 282 "mn-pi-mailbox.gob"
+#line 284 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (MN_IS_PI_MAILBOX (self), (gboolean )0);
 #line 652 "mn-pi-mailbox.c"
 {
-#line 284 "mn-pi-mailbox.gob"
+#line 286 "mn-pi-mailbox.gob"
 	
     MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(self);
 
@@ -709,21 +709,21 @@ mn_pi_mailbox_fill_credentials (MNPIMailbox * self, gboolean need_username, gboo
 #line 710 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 340 "mn-pi-mailbox.gob"
+#line 342 "mn-pi-mailbox.gob"
 static gboolean 
 mn_pi_mailbox_credentials_prompt (MNPIMailbox * self, char ** username, char ** password, const char * format, ...)
 #line 716 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::credentials_prompt"
-#line 340 "mn-pi-mailbox.gob"
+#line 342 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 340 "mn-pi-mailbox.gob"
+#line 342 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (MN_IS_PI_MAILBOX (self), (gboolean )0);
-#line 340 "mn-pi-mailbox.gob"
+#line 342 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (format != NULL, (gboolean )0);
 #line 725 "mn-pi-mailbox.c"
 {
-#line 346 "mn-pi-mailbox.gob"
+#line 348 "mn-pi-mailbox.gob"
 	
     va_list args;
     char *message;
@@ -768,19 +768,19 @@ mn_pi_mailbox_credentials_prompt (MNPIMailbox * self, char ** username, char ** 
 #line 769 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 388 "mn-pi-mailbox.gob"
+#line 390 "mn-pi-mailbox.gob"
 static char * 
 mn_pi_mailbox_build_auth_id (MNPIMailbox * self, const char * username)
 #line 775 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::build_auth_id"
-#line 388 "mn-pi-mailbox.gob"
+#line 390 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (char * )0);
-#line 388 "mn-pi-mailbox.gob"
+#line 390 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (MN_IS_PI_MAILBOX (self), (char * )0);
 #line 782 "mn-pi-mailbox.c"
 {
-#line 390 "mn-pi-mailbox.gob"
+#line 392 "mn-pi-mailbox.gob"
 	
     return g_strdup_printf("%s:%s:%i:%i:%s",
 			   MN_MAILBOX_GET_CLASS(self)->type,
@@ -792,21 +792,21 @@ mn_pi_mailbox_build_auth_id (MNPIMailbox * self, const char * username)
 #line 793 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 399 "mn-pi-mailbox.gob"
+#line 401 "mn-pi-mailbox.gob"
 static char * 
 mn_pi_mailbox_get_password (MNPIMailbox * self, const char * username)
 #line 799 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::get_password"
-#line 399 "mn-pi-mailbox.gob"
+#line 401 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (char * )0);
-#line 399 "mn-pi-mailbox.gob"
+#line 401 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (MN_IS_PI_MAILBOX (self), (char * )0);
-#line 399 "mn-pi-mailbox.gob"
+#line 401 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (username != NULL, (char * )0);
 #line 808 "mn-pi-mailbox.c"
 {
-#line 401 "mn-pi-mailbox.gob"
+#line 403 "mn-pi-mailbox.gob"
 	
     char *auth_id;
     char *password;
@@ -824,21 +824,21 @@ mn_pi_mailbox_get_password (MNPIMailbox * self, const char * username)
 #line 825 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 416 "mn-pi-mailbox.gob"
+#line 418 "mn-pi-mailbox.gob"
 static void 
 mn_pi_mailbox_set_password (MNPIMailbox * self, const char * username, const char * password)
 #line 831 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::set_password"
-#line 416 "mn-pi-mailbox.gob"
+#line 418 "mn-pi-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 416 "mn-pi-mailbox.gob"
+#line 418 "mn-pi-mailbox.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX (self));
-#line 416 "mn-pi-mailbox.gob"
+#line 418 "mn-pi-mailbox.gob"
 	g_return_if_fail (username != NULL);
 #line 840 "mn-pi-mailbox.c"
 {
-#line 418 "mn-pi-mailbox.gob"
+#line 420 "mn-pi-mailbox.gob"
 	
     char *auth_id;
 
@@ -856,21 +856,21 @@ mn_pi_mailbox_set_password (MNPIMailbox * self, const char * username, const cha
 #line 857 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 433 "mn-pi-mailbox.gob"
+#line 435 "mn-pi-mailbox.gob"
 void 
 mn_pi_mailbox_session_private_init (MNPIMailbox * self, MNClientSessionPrivate * priv)
 #line 863 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::session_private_init"
-#line 433 "mn-pi-mailbox.gob"
+#line 435 "mn-pi-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 433 "mn-pi-mailbox.gob"
+#line 435 "mn-pi-mailbox.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX (self));
-#line 433 "mn-pi-mailbox.gob"
+#line 435 "mn-pi-mailbox.gob"
 	g_return_if_fail (priv != NULL);
 #line 872 "mn-pi-mailbox.c"
 {
-#line 435 "mn-pi-mailbox.gob"
+#line 437 "mn-pi-mailbox.gob"
 	
     priv->mailbox = MN_MAILBOX(self);
     priv->pi_mailbox = MN_PI_MAILBOX(self);
@@ -878,14 +878,14 @@ mn_pi_mailbox_session_private_init (MNPIMailbox * self, MNClientSessionPrivate *
 #line 879 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 440 "mn-pi-mailbox.gob"
+#line 442 "mn-pi-mailbox.gob"
 gboolean 
 mn_pi_mailbox_sasl_get_credentials_cb (MNClientSession * session, MNClientSessionPrivate * priv, const char ** username, const char ** password)
 #line 885 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::sasl_get_credentials_cb"
 {
-#line 445 "mn-pi-mailbox.gob"
+#line 447 "mn-pi-mailbox.gob"
 	
 #if WITH_SASL
     g_return_val_if_fail(username != NULL || password != NULL, FALSE);
@@ -909,28 +909,28 @@ mn_pi_mailbox_sasl_get_credentials_cb (MNClientSession * session, MNClientSessio
 #line 910 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 466 "mn-pi-mailbox.gob"
+#line 468 "mn-pi-mailbox.gob"
 void 
 mn_pi_mailbox_notice_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv)
 #line 916 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::notice_cb"
 {
-#line 470 "mn-pi-mailbox.gob"
+#line 472 "mn-pi-mailbox.gob"
 	
     mn_mailbox_notice(priv->mailbox, "%s", message);
   }}
 #line 924 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 474 "mn-pi-mailbox.gob"
+#line 476 "mn-pi-mailbox.gob"
 void 
 mn_pi_mailbox_warning_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv)
 #line 930 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::warning_cb"
 {
-#line 478 "mn-pi-mailbox.gob"
+#line 480 "mn-pi-mailbox.gob"
 	
     mn_mailbox_warning(priv->mailbox, "%s", message);
   }}
diff --git a/src/mn-pi-mailbox.gob b/src/mn-pi-mailbox.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -73,6 +74,7 @@ class MN:PI:Mailbox from MN:Authenticated:Mailbox (abstract)
   public char *authmech destroywith g_free;
   property STRING authmech (link, flags = MN_MAILBOX_PARAM_PERMANENT);
 
+  /* named hostname and not server for historical reasons */
   public char *hostname destroywith g_free;
   property STRING hostname (link, flags = MN_MAILBOX_PARAM_PERMANENT | MN_MAILBOX_PARAM_REQUIRED);
 
diff --git a/src/mn-pop3-mailbox-private.h b/src/mn-pop3-mailbox-private.h
@@ -10,9 +10,9 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNPOP3MailboxPrivate {
-#line 124 "mn-pop3-mailbox.gob"
-	int login_delay;
 #line 125 "mn-pop3-mailbox.gob"
+	int login_delay;
+#line 126 "mn-pop3-mailbox.gob"
 	GTimer * authentication_timer;
 #line 18 "mn-pop3-mailbox-private.h"
 };
diff --git a/src/mn-pop3-mailbox-properties.c b/src/mn-pop3-mailbox-properties.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-pop3-mailbox-properties.gob"
+#line 26 "mn-pop3-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -104,7 +104,7 @@ GET_NEW_VARG (const char *first, ...)
 	return ret;
 }
 
-#line 79 "mn-pop3-mailbox-properties.gob"
+#line 80 "mn-pop3-mailbox-properties.gob"
 static void 
 mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GNUC_UNUSED)
 #line 111 "mn-pop3-mailbox-properties.c"
@@ -124,7 +124,7 @@ mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GN
 		"default_name");
     }
  {
-#line 80 "mn-pop3-mailbox-properties.gob"
+#line 81 "mn-pop3-mailbox-properties.gob"
 
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
 
@@ -135,14 +135,14 @@ mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GN
  }
 }
 #undef __GOB_FUNCTION__
-#line 87 "mn-pop3-mailbox-properties.gob"
+#line 88 "mn-pop3-mailbox-properties.gob"
 static void 
 mn_pop3_mailbox_properties_init (MNPOP3MailboxProperties * self G_GNUC_UNUSED)
 #line 142 "mn-pop3-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::init"
  {
-#line 88 "mn-pop3-mailbox-properties.gob"
+#line 89 "mn-pop3-mailbox-properties.gob"
 
     MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
     int i;
@@ -172,19 +172,19 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 41 "mn-pop3-mailbox-properties.gob"
+#line 42 "mn-pop3-mailbox-properties.gob"
 
       MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
       gboolean complete;
-      const char *hostname;
+      const char *server;
 
       mn_pi_mailbox_properties_get_contents(pi,
 					    NULL,
 					    NULL,
-					    &hostname,
+					    &server,
 					    NULL);
 
-      complete = *hostname != 0;
+      complete = *server != 0;
 #ifndef WITH_SSL
       if (complete)
 	complete = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pi->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL]));
@@ -197,10 +197,10 @@ ___object_get_property (GObject *object,
 		break;
 	case PROP_DEFAULT_NAME:
 		{
-#line 63 "mn-pop3-mailbox-properties.gob"
+#line 64 "mn-pop3-mailbox-properties.gob"
 
       const char *username;
-      const char *hostname;
+      const char *server;
 
       mn_authenticated_mailbox_properties_get_contents(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self),
 						       &username,
@@ -208,10 +208,10 @@ ___object_get_property (GObject *object,
       mn_pi_mailbox_properties_get_contents(MN_PI_MAILBOX_PROPERTIES(self),
 					    NULL,
 					    NULL,
-					    &hostname,
+					    &server,
 					    NULL);
 
-      g_value_take_string(VAL, mn_pop3_mailbox_build_name(username, hostname));
+      g_value_take_string(VAL, mn_pop3_mailbox_build_name(username, server));
     
 #line 217 "mn-pop3-mailbox-properties.c"
 		}
diff --git a/src/mn-pop3-mailbox-properties.gob b/src/mn-pop3-mailbox-properties.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -41,15 +42,15 @@ class MN:POP3:Mailbox:Properties from MN:PI:Mailbox:Properties
     {
       MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
       gboolean complete;
-      const char *hostname;
+      const char *server;
 
       mn_pi_mailbox_properties_get_contents(pi,
 					    NULL,
 					    NULL,
-					    &hostname,
+					    &server,
 					    NULL);
 
-      complete = *hostname != 0;
+      complete = *server != 0;
 #ifndef WITH_SSL
       if (complete)
 	complete = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(pi->conn_radio[MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL]));
@@ -62,7 +63,7 @@ class MN:POP3:Mailbox:Properties from MN:PI:Mailbox:Properties
     get
     {
       const char *username;
-      const char *hostname;
+      const char *server;
 
       mn_authenticated_mailbox_properties_get_contents(MN_AUTHENTICATED_MAILBOX_PROPERTIES(self),
 						       &username,
@@ -70,10 +71,10 @@ class MN:POP3:Mailbox:Properties from MN:PI:Mailbox:Properties
       mn_pi_mailbox_properties_get_contents(MN_PI_MAILBOX_PROPERTIES(self),
 					    NULL,
 					    NULL,
-					    &hostname,
+					    &server,
 					    NULL);
 
-      g_value_take_string(VAL, mn_pop3_mailbox_build_name(username, hostname));
+      g_value_take_string(VAL, mn_pop3_mailbox_build_name(username, server));
     };
 
   class_init (class)
diff --git a/src/mn-pop3-mailbox.c b/src/mn-pop3-mailbox.c
@@ -20,7 +20,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 39 "mn-pop3-mailbox.gob"
+#line 40 "mn-pop3-mailbox.gob"
 
 #include "config.h"
 #include <stdio.h>
@@ -230,13 +230,13 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 125 "mn-pop3-mailbox.gob"
+#line 126 "mn-pop3-mailbox.gob"
 	if(self->_priv->authentication_timer) { g_timer_destroy ((gpointer) self->_priv->authentication_timer); self->_priv->authentication_timer = NULL; }
 #line 236 "mn-pop3-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 127 "mn-pop3-mailbox.gob"
+#line 128 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class G_GNUC_UNUSED)
 #line 243 "mn-pop3-mailbox.c"
@@ -250,16 +250,16 @@ mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX);
 
-#line 138 "mn-pop3-mailbox.gob"
+#line 139 "mn-pop3-mailbox.gob"
 	mn_mailbox_class->seal = ___3_mn_pop3_mailbox_seal;
-#line 151 "mn-pop3-mailbox.gob"
+#line 152 "mn-pop3-mailbox.gob"
 	mn_mailbox_class->parse_uri = ___4_mn_pop3_mailbox_parse_uri;
-#line 735 "mn-pop3-mailbox.gob"
+#line 742 "mn-pop3-mailbox.gob"
 	mn_authenticated_mailbox_class->authenticated_check = ___18_mn_pop3_mailbox_authenticated_check;
 #line 260 "mn-pop3-mailbox.c"
 	g_object_class->finalize = ___finalize;
  {
-#line 128 "mn-pop3-mailbox.gob"
+#line 129 "mn-pop3-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "pop3";
     MN_PI_MAILBOX_CLASS(class)->default_ports = mn_pop3_mailbox_default_ports;
@@ -268,7 +268,7 @@ mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class G_GNUC_UNUSED)
  }
 }
 #undef __GOB_FUNCTION__
-#line 133 "mn-pop3-mailbox.gob"
+#line 134 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_init (MNPOP3Mailbox * self G_GNUC_UNUSED)
 #line 275 "mn-pop3-mailbox.c"
@@ -276,7 +276,7 @@ mn_pop3_mailbox_init (MNPOP3Mailbox * self G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_POP3_MAILBOX,MNPOP3MailboxPrivate);
  {
-#line 134 "mn-pop3-mailbox.gob"
+#line 135 "mn-pop3-mailbox.gob"
 
     mn_mailbox_set_format(MN_MAILBOX(self), "POP3");
   
@@ -287,7 +287,7 @@ mn_pop3_mailbox_init (MNPOP3Mailbox * self G_GNUC_UNUSED)
 
 
 
-#line 138 "mn-pop3-mailbox.gob"
+#line 139 "mn-pop3-mailbox.gob"
 static void 
 ___3_mn_pop3_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 294 "mn-pop3-mailbox.c"
@@ -297,7 +297,7 @@ ___3_mn_pop3_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::seal"
 {
-#line 140 "mn-pop3-mailbox.gob"
+#line 141 "mn-pop3-mailbox.gob"
 	
     PARENT_HANDLER(mailbox);
 
@@ -309,7 +309,7 @@ ___3_mn_pop3_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 151 "mn-pop3-mailbox.gob"
+#line 152 "mn-pop3-mailbox.gob"
 static MNMailbox * 
 ___4_mn_pop3_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri)
 #line 316 "mn-pop3-mailbox.c"
@@ -320,7 +320,7 @@ ___4_mn_pop3_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * ur
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::parse_uri"
 {
-#line 153 "mn-pop3-mailbox.gob"
+#line 154 "mn-pop3-mailbox.gob"
 	
     int len;
     int buflen;
@@ -390,14 +390,14 @@ ___4_mn_pop3_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * ur
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 219 "mn-pop3-mailbox.gob"
+#line 220 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 397 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_greeting_cb"
 {
-#line 223 "mn-pop3-mailbox.gob"
+#line 224 "mn-pop3-mailbox.gob"
 	
     priv->session = session;
 
@@ -430,28 +430,28 @@ mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionRe
 #line 431 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 253 "mn-pop3-mailbox.gob"
+#line 254 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_capa_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 437 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_capa_cb"
 {
-#line 256 "mn-pop3-mailbox.gob"
+#line 257 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "CAPA");
   }}
 #line 445 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 260 "mn-pop3-mailbox.gob"
+#line 261 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 451 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_capa_cb"
 {
-#line 264 "mn-pop3-mailbox.gob"
+#line 265 "mn-pop3-mailbox.gob"
 	
     self_handle_list_response(priv, response, FALSE);
 
@@ -543,14 +543,14 @@ mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionRespon
 #line 544 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 353 "mn-pop3-mailbox.gob"
+#line 354 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 550 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_stls_cb"
 {
-#line 356 "mn-pop3-mailbox.gob"
+#line 357 "mn-pop3-mailbox.gob"
 	
 #if WITH_SSL
     return mn_client_session_write(session, "STLS");
@@ -562,14 +562,14 @@ mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate
 #line 563 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 365 "mn-pop3-mailbox.gob"
+#line 366 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 569 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_stls_cb"
 {
-#line 369 "mn-pop3-mailbox.gob"
+#line 370 "mn-pop3-mailbox.gob"
 	
 #if WITH_SSL
     switch (response->type)
@@ -603,14 +603,14 @@ mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionRespon
 #line 604 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 400 "mn-pop3-mailbox.gob"
+#line 401 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 610 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_auth_cb"
 {
-#line 403 "mn-pop3-mailbox.gob"
+#line 404 "mn-pop3-mailbox.gob"
 	
 #if WITH_SASL
     /*
@@ -668,14 +668,14 @@ mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate
 #line 669 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 458 "mn-pop3-mailbox.gob"
+#line 459 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 675 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_auth_cb"
 {
-#line 462 "mn-pop3-mailbox.gob"
+#line 463 "mn-pop3-mailbox.gob"
 	
 #if WITH_SASL
     switch (response->type)
@@ -720,14 +720,14 @@ mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionRespon
 #line 721 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 504 "mn-pop3-mailbox.gob"
+#line 505 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 727 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_apop_cb"
 {
-#line 507 "mn-pop3-mailbox.gob"
+#line 508 "mn-pop3-mailbox.gob"
 	
     MNMD5Context context;
     char buf[33];
@@ -747,21 +747,21 @@ mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate
 #line 748 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 524 "mn-pop3-mailbox.gob"
+#line 525 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 754 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_apop_cb"
-#line 524 "mn-pop3-mailbox.gob"
+#line 525 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 524 "mn-pop3-mailbox.gob"
+#line 525 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 524 "mn-pop3-mailbox.gob"
+#line 525 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
 #line 763 "mn-pop3-mailbox.c"
 {
-#line 528 "mn-pop3-mailbox.gob"
+#line 529 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -778,19 +778,19 @@ mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionRespon
 #line 779 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 542 "mn-pop3-mailbox.gob"
+#line 543 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 785 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_user_cb"
-#line 542 "mn-pop3-mailbox.gob"
+#line 543 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 542 "mn-pop3-mailbox.gob"
+#line 543 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
 #line 792 "mn-pop3-mailbox.c"
 {
-#line 545 "mn-pop3-mailbox.gob"
+#line 546 "mn-pop3-mailbox.gob"
 	
     if (! mn_pi_mailbox_fill_credentials(priv->pi_mailbox, TRUE, TRUE))
       return STATE_QUIT;
@@ -800,14 +800,14 @@ mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSessionPrivate
 #line 801 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 552 "mn-pop3-mailbox.gob"
+#line 553 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 807 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_user_cb"
 {
-#line 556 "mn-pop3-mailbox.gob"
+#line 557 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -825,14 +825,14 @@ mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionRespon
 #line 826 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 571 "mn-pop3-mailbox.gob"
+#line 572 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 832 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_pass_cb"
 {
-#line 574 "mn-pop3-mailbox.gob"
+#line 575 "mn-pop3-mailbox.gob"
 	
     g_assert(priv->pi_mailbox->runtime_password != NULL);
 
@@ -841,14 +841,14 @@ mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate
 #line 842 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 580 "mn-pop3-mailbox.gob"
+#line 581 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 848 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_pass_cb"
 {
-#line 584 "mn-pop3-mailbox.gob"
+#line 585 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -865,28 +865,28 @@ mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionRespon
 #line 866 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 598 "mn-pop3-mailbox.gob"
+#line 599 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 872 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_list_cb"
 {
-#line 601 "mn-pop3-mailbox.gob"
+#line 602 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "LIST");
   }}
 #line 880 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 605 "mn-pop3-mailbox.gob"
+#line 606 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 886 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_cb"
 {
-#line 609 "mn-pop3-mailbox.gob"
+#line 610 "mn-pop3-mailbox.gob"
 	
     self_handle_list_response(priv, response, FALSE);
 
@@ -921,14 +921,14 @@ mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionRespon
 #line 922 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 641 "mn-pop3-mailbox.gob"
+#line 642 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_retr_top_cb (MNClientSession * session, MNClientSessionPrivate * priv)
 #line 928 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_retr_top_cb"
 {
-#line 644 "mn-pop3-mailbox.gob"
+#line 645 "mn-pop3-mailbox.gob"
 	
     if (priv->current_message_number)
       return mn_client_session_write(session, priv->top_supported ? "TOP %i 0" : "RETR %i", GPOINTER_TO_INT(priv->current_message_number->data));
@@ -955,14 +955,14 @@ mn_pop3_mailbox_enter_retr_top_cb (MNClientSession * session, MNClientSessionPri
 #line 956 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 668 "mn-pop3-mailbox.gob"
+#line 669 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_retr_top_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
 #line 962 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_retr_top_cb"
 {
-#line 672 "mn-pop3-mailbox.gob"
+#line 673 "mn-pop3-mailbox.gob"
 	
     self_handle_list_response(priv, response, TRUE);
 
@@ -975,14 +975,20 @@ mn_pop3_mailbox_handle_retr_top_cb (MNClientSession * session, MNClientSessionRe
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
 
       case RESPONSE_LIST_END:
-	priv->messages = g_slist_prepend(priv->messages,
-					 mn_message_new_from_buffer(priv->mailbox,
-								    priv->current_message->str,
-								    priv->current_message->len,
-								    0,
-								    TRUE));
-	priv->current_message_number = priv->current_message_number->next;
-	return STATE_RETR_TOP;
+	{
+	  MNMessage *message;
+
+	  message = mn_message_new_from_buffer(priv->mailbox,
+					       priv->current_message->str,
+					       priv->current_message->len,
+					       0,
+					       TRUE);
+	  if (message)
+	    priv->messages = g_slist_prepend(priv->messages, message);
+
+	  priv->current_message_number = priv->current_message_number->next;
+	  return STATE_RETR_TOP;
+	}
 
       case RESPONSE_ERR:
 	priv->messages = g_slist_prepend(priv->messages,
@@ -1000,31 +1006,31 @@ mn_pop3_mailbox_handle_retr_top_cb (MNClientSession * session, MNClientSessionRe
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 1004 "mn-pop3-mailbox.c"
+#line 1010 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 710 "mn-pop3-mailbox.gob"
+#line 717 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1010 "mn-pop3-mailbox.c"
+#line 1016 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_quit_cb"
 {
-#line 713 "mn-pop3-mailbox.gob"
+#line 720 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "QUIT");
   }}
-#line 1018 "mn-pop3-mailbox.c"
+#line 1024 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 717 "mn-pop3-mailbox.gob"
+#line 724 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1024 "mn-pop3-mailbox.c"
+#line 1030 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_quit_cb"
 {
-#line 721 "mn-pop3-mailbox.gob"
+#line 728 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -1038,23 +1044,23 @@ mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionRespon
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 1042 "mn-pop3-mailbox.c"
+#line 1048 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 735 "mn-pop3-mailbox.gob"
+#line 742 "mn-pop3-mailbox.gob"
 static void 
 ___18_mn_pop3_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
-#line 1048 "mn-pop3-mailbox.c"
+#line 1054 "mn-pop3-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \
 		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::authenticated_check"
 {
-#line 737 "mn-pop3-mailbox.gob"
+#line 744 "mn-pop3-mailbox.gob"
 	
     Self *self = SELF(mailbox);
-    MNClientSessionState states[] = {
+    static const MNClientSessionState states[] = {
       { STATE_GREETING,		NULL,			self_handle_greeting_cb },
       { STATE_CAPA,		self_enter_capa_cb,	self_handle_capa_cb },
 #if WITH_SSL
@@ -1072,7 +1078,7 @@ ___18_mn_pop3_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
 
       MN_CLIENT_SESSION_STATES_END
     };
-    MNClientSessionCallbacks callbacks = {
+    static const MNClientSessionCallbacks callbacks = {
       mn_pi_mailbox_notice_cb,
       mn_pi_mailbox_warning_cb,
       self_response_new_cb,
@@ -1155,18 +1161,18 @@ ___18_mn_pop3_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GN
     if (priv.current_message)
       g_string_free(priv.current_message, TRUE);
   }}
-#line 1159 "mn-pop3-mailbox.c"
+#line 1165 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 841 "mn-pop3-mailbox.gob"
+#line 848 "mn-pop3-mailbox.gob"
 static MNClientSessionResponse * 
 mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
-#line 1166 "mn-pop3-mailbox.c"
+#line 1172 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_new_cb"
 {
-#line 845 "mn-pop3-mailbox.gob"
+#line 852 "mn-pop3-mailbox.gob"
 	
     MNClientSessionResponse *response = NULL;
 
@@ -1244,35 +1250,35 @@ mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, 
 
     return response;
   }}
-#line 1248 "mn-pop3-mailbox.c"
+#line 1254 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 923 "mn-pop3-mailbox.gob"
+#line 930 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1254 "mn-pop3-mailbox.c"
+#line 1260 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_free_cb"
 {
-#line 927 "mn-pop3-mailbox.gob"
+#line 934 "mn-pop3-mailbox.gob"
 	
     g_free(response->arguments);
     g_free(response);
   }}
-#line 1263 "mn-pop3-mailbox.c"
+#line 1269 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 932 "mn-pop3-mailbox.gob"
+#line 939 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
-#line 1269 "mn-pop3-mailbox.c"
+#line 1275 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate"
-#line 932 "mn-pop3-mailbox.gob"
+#line 939 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1274 "mn-pop3-mailbox.c"
+#line 1280 "mn-pop3-mailbox.c"
 {
-#line 934 "mn-pop3-mailbox.gob"
+#line 941 "mn-pop3-mailbox.gob"
 	
 #if WITH_SASL
     g_slist_free(priv->sasl_remaining_mechanisms);
@@ -1323,20 +1329,20 @@ mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 	  return STATE_USER;
       }
   }}
-#line 1327 "mn-pop3-mailbox.c"
+#line 1333 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 985 "mn-pop3-mailbox.gob"
+#line 992 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop, gboolean tried_pass)
-#line 1333 "mn-pop3-mailbox.c"
+#line 1339 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate_fallback"
-#line 985 "mn-pop3-mailbox.gob"
+#line 992 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1338 "mn-pop3-mailbox.c"
+#line 1344 "mn-pop3-mailbox.c"
 {
-#line 989 "mn-pop3-mailbox.gob"
+#line 996 "mn-pop3-mailbox.gob"
 	
     if (! priv->pi_mailbox->authmech)
       {
@@ -1384,20 +1390,20 @@ mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gb
 	return STATE_QUIT;
       }
   }}
-#line 1388 "mn-pop3-mailbox.c"
+#line 1394 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1037 "mn-pop3-mailbox.gob"
+#line 1044 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
-#line 1394 "mn-pop3-mailbox.c"
+#line 1400 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticated"
-#line 1037 "mn-pop3-mailbox.gob"
+#line 1044 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1399 "mn-pop3-mailbox.c"
+#line 1405 "mn-pop3-mailbox.c"
 {
-#line 1039 "mn-pop3-mailbox.gob"
+#line 1046 "mn-pop3-mailbox.gob"
 	
     priv->authenticated = TRUE;
     if (priv->self->_priv->login_delay)
@@ -1424,22 +1430,22 @@ mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
       ? STATE_CAPA
       : STATE_LIST;
   }}
-#line 1428 "mn-pop3-mailbox.c"
+#line 1434 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1066 "mn-pop3-mailbox.gob"
+#line 1073 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response, gboolean in_retr_top)
-#line 1434 "mn-pop3-mailbox.c"
+#line 1440 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_response"
-#line 1066 "mn-pop3-mailbox.gob"
+#line 1073 "mn-pop3-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1066 "mn-pop3-mailbox.gob"
+#line 1073 "mn-pop3-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 1441 "mn-pop3-mailbox.c"
+#line 1447 "mn-pop3-mailbox.c"
 {
-#line 1070 "mn-pop3-mailbox.gob"
+#line 1077 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -1457,24 +1463,24 @@ mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSes
 	break;
       }
   }}
-#line 1461 "mn-pop3-mailbox.c"
+#line 1467 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1088 "mn-pop3-mailbox.gob"
+#line 1095 "mn-pop3-mailbox.gob"
 char * 
-mn_pop3_mailbox_build_name (const char * username, const char * hostname)
-#line 1467 "mn-pop3-mailbox.c"
+mn_pop3_mailbox_build_name (const char * username, const char * server)
+#line 1473 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::build_name"
-#line 1088 "mn-pop3-mailbox.gob"
-	g_return_val_if_fail (hostname != NULL, (char * )0);
-#line 1472 "mn-pop3-mailbox.c"
+#line 1095 "mn-pop3-mailbox.gob"
+	g_return_val_if_fail (server != NULL, (char * )0);
+#line 1478 "mn-pop3-mailbox.c"
 {
-#line 1090 "mn-pop3-mailbox.gob"
+#line 1097 "mn-pop3-mailbox.gob"
 	
     return username
-      ? g_strdup_printf("%s@%s", username, hostname)
-      : g_strdup(hostname);
+      ? g_strdup_printf("%s@%s", username, server)
+      : g_strdup(server);
   }}
-#line 1480 "mn-pop3-mailbox.c"
+#line 1486 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pop3-mailbox.gob b/src/mn-pop3-mailbox.gob
@@ -9,6 +9,7 @@
  *	- RFC 2595
  *	- RFC 2384
  *
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -21,9 +22,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -681,14 +682,20 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
 
       case RESPONSE_LIST_END:
-	priv->messages = g_slist_prepend(priv->messages,
-					 mn_message_new_from_buffer(priv->mailbox,
-								    priv->current_message->str,
-								    priv->current_message->len,
-								    0,
-								    TRUE));
-	priv->current_message_number = priv->current_message_number->next;
-	return STATE_RETR_TOP;
+	{
+	  MNMessage *message;
+
+	  message = mn_message_new_from_buffer(priv->mailbox,
+					       priv->current_message->str,
+					       priv->current_message->len,
+					       0,
+					       TRUE);
+	  if (message)
+	    priv->messages = g_slist_prepend(priv->messages, message);
+
+	  priv->current_message_number = priv->current_message_number->next;
+	  return STATE_RETR_TOP;
+	}
 
       case RESPONSE_ERR:
 	priv->messages = g_slist_prepend(priv->messages,
@@ -736,7 +743,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
     authenticated_check (MNAuthenticatedMailbox *mailbox)
   {
     Self *self = SELF(mailbox);
-    MNClientSessionState states[] = {
+    static const MNClientSessionState states[] = {
       { STATE_GREETING,		NULL,			self_handle_greeting_cb },
       { STATE_CAPA,		self_enter_capa_cb,	self_handle_capa_cb },
 #if WITH_SSL
@@ -754,7 +761,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 
       MN_CLIENT_SESSION_STATES_END
     };
-    MNClientSessionCallbacks callbacks = {
+    static const MNClientSessionCallbacks callbacks = {
       mn_pi_mailbox_notice_cb,
       mn_pi_mailbox_warning_cb,
       self_response_new_cb,
@@ -1086,10 +1093,10 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
   }
 
   public char *
-    build_name (const char *username, const char *hostname (check null))
+    build_name (const char *username, const char *server (check null))
   {
     return username
-      ? g_strdup_printf("%s@%s", username, hostname)
-      : g_strdup(hostname);
+      ? g_strdup_printf("%s@%s", username, server)
+      : g_strdup(server);
   }
 }
diff --git a/src/mn-pop3-mailbox.h b/src/mn-pop3-mailbox.h
@@ -59,7 +59,7 @@ struct _MNPOP3MailboxClass {
  */
 GType	mn_pop3_mailbox_get_type	(void);
 char * 	mn_pop3_mailbox_build_name	(const char * username,
-					const char * hostname);
+					const char * server);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-popup-private.h b/src/mn-popup-private.h
@@ -0,0 +1,22 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_POPUP_PRIVATE_H__
+#define __MN_POPUP_PRIVATE_H__
+
+#include "mn-popup.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct _MNPopupPrivate {
+#line 36 "mn-popup.gob"
+	MNMessage * message;
+#line 16 "mn-popup-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-popup.c b/src/mn-popup.c
@@ -0,0 +1,554 @@
+/* Generated by GOB (v2.0.14)   (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 14
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-popup.h"
+
+#include "mn-popup-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 27 "mn-popup.gob"
+
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-conf.h"
+#include "mn-shell.h"
+
+#line 33 "mn-popup.c"
+/* self casting macros */
+#define SELF(x) MN_POPUP(x)
+#define SELF_CONST(x) MN_POPUP_CONST(x)
+#define IS_SELF(x) MN_IS_POPUP(x)
+#define TYPE_SELF MN_TYPE_POPUP
+#define SELF_CLASS(x) MN_POPUP_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_POPUP_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNPopup Self;
+typedef MNPopupClass 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_popup_init (MNPopup * o) G_GNUC_UNUSED;
+static void mn_popup_class_init (MNPopupClass * c) G_GNUC_UNUSED;
+static GObject * ___1_mn_popup_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void mn_popup_open_cb (NotifyNotification * notification, char * id, gpointer user_data) G_GNUC_UNUSED;
+static void mn_popup_mark_as_read_cb (NotifyNotification * notification, char * id, gpointer user_data) G_GNUC_UNUSED;
+static void mn_popup_mark_as_spam_cb (NotifyNotification * notification, char * id, gpointer user_data) G_GNUC_UNUSED;
+static void mn_popup_closed_h (NotifyNotification * notification, gpointer user_data) G_GNUC_UNUSED;
+static void mn_popup_append_row (GString * body, const char * name, const char * value) G_GNUC_UNUSED;
+static int mn_popup_get_conf_timeout (void) G_GNUC_UNUSED;
+
+enum {
+	PROP_0,
+	PROP_MESSAGE
+};
+
+/* pointer to the class of our parent */
+static NotifyNotificationClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_open_cb mn_popup_open_cb
+#define self_mark_as_read_cb mn_popup_mark_as_read_cb
+#define self_mark_as_spam_cb mn_popup_mark_as_spam_cb
+#define self_closed_h mn_popup_closed_h
+#define self_append_row mn_popup_append_row
+#define self_get_conf_timeout mn_popup_get_conf_timeout
+#define self_show mn_popup_show
+#define self_close mn_popup_close
+#define self_new mn_popup_new
+GType
+mn_popup_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNPopupClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_popup_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNPopup),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_popup_init,
+			NULL
+		};
+
+		type = g_type_register_static (NOTIFY_TYPE_NOTIFICATION, "MNPopup", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNPopup *)g_object_new(mn_popup_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNPopup * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNPopup *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNPopup *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNPopup *)g_object_new_valist (mn_popup_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Popup::dispose"
+	MNPopup *self G_GNUC_UNUSED = MN_POPUP (obj_self);
+	if (G_OBJECT_CLASS (parent_class)->dispose) \
+		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
+#line 36 "mn-popup.gob"
+	if(self->_priv->message) { g_object_unref ((gpointer) self->_priv->message); self->_priv->message = NULL; }
+#line 130 "mn-popup.c"
+}
+#undef __GOB_FUNCTION__
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Popup::finalize"
+	MNPopup *self G_GNUC_UNUSED = MN_POPUP (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
+	if(G_OBJECT_CLASS(parent_class)->finalize) \
+		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_popup_init (MNPopup * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Popup::init"
+	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_POPUP,MNPopupPrivate);
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_popup_class_init (MNPopupClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Popup::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+	g_type_class_add_private(c,sizeof(MNPopupPrivate));
+
+	parent_class = g_type_class_ref (NOTIFY_TYPE_NOTIFICATION);
+
+#line 41 "mn-popup.gob"
+	g_object_class->constructor = ___1_mn_popup_constructor;
+#line 165 "mn-popup.c"
+	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
+		("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:Popup::set_property"
+{
+	MNPopup *self G_GNUC_UNUSED;
+
+	self = MN_POPUP (object);
+
+	switch (property_id) {
+	case PROP_MESSAGE:
+		{
+#line 37 "mn-popup.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 202 "mn-popup.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:Popup::get_property"
+{
+	MNPopup *self G_GNUC_UNUSED;
+
+	self = MN_POPUP (object);
+
+	switch (property_id) {
+	case PROP_MESSAGE:
+		{
+#line 37 "mn-popup.gob"
+g_value_set_object (VAL, (gpointer)self->_priv->message);
+#line 233 "mn-popup.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 41 "mn-popup.gob"
+static GObject * 
+___1_mn_popup_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
+#line 253 "mn-popup.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:Popup::constructor"
+{
+#line 43 "mn-popup.gob"
+	
+    GObject *object;
+    Self *self;
+    GString *body;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    self = SELF(object);
+
+    body = g_string_new(NULL);
+    self_append_row(body, _("Mailbox:"), selfp->message->mailbox->runtime_name);
+    if (selfp->message->error)
+      self_append_row(body, _("Unreadable message:"), selfp->message->error);
+    else
+      {
+	self_append_row(body, _("From:"), selfp->message->from);
+	self_append_row(body, _("Subject:"), selfp->message->subject);
+      }
+
+    g_object_set(self,
+		 "body", body->str,
+		 "icon-name", "stock_mail",
+		 NULL);
+
+    if (mn_conf_get_enum_value(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION) == MN_POPUP_POSITION_ATTACHED)
+      g_object_set(self, "attach-widget", mn_shell->icon, NULL);
+
+    g_string_free(body, TRUE);
+
+    /*
+     * Note that notification-daemon currently assigns icons to
+     * actions by prepending "stock_" to the action ID.
+     */
+    if (mn_message_can_open(selfp->message))
+      notify_notification_add_action(NOTIFY_NOTIFICATION(self),
+				     "mail-open",
+				     /* translators: header capitalization */
+				     _("Open"),
+				     self_open_cb,
+				     NULL,
+				     NULL);
+    if (mn_message_can_mark_as_read(selfp->message))
+      notify_notification_add_action(NOTIFY_NOTIFICATION(self),
+				     "mark",
+				     /* translators: header capitalization */
+				     _("Mark as Read"),
+				     self_mark_as_read_cb,
+				     NULL,
+				     NULL);
+    if (mn_message_can_mark_as_spam(selfp->message))
+      notify_notification_add_action(NOTIFY_NOTIFICATION(self),
+				     "spam",
+				     /* translators: header capitalization */
+				     _("Mark as Spam"),
+				     self_mark_as_spam_cb,
+				     NULL,
+				     NULL);
+
+    notify_notification_set_timeout(NOTIFY_NOTIFICATION(self), self_get_conf_timeout());
+
+    g_signal_connect(self, "closed", G_CALLBACK(self_closed_h), NULL);
+
+    return object;
+  }}
+#line 325 "mn-popup.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 107 "mn-popup.gob"
+static void 
+mn_popup_open_cb (NotifyNotification * notification, char * id, gpointer user_data)
+#line 332 "mn-popup.c"
+{
+#define __GOB_FUNCTION__ "MN:Popup::open_cb"
+{
+#line 109 "mn-popup.gob"
+	
+    Self *self = SELF(notification);
+    GError *err = NULL;
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_message_open(selfp->message, &err))
+      {
+	mn_error_dialog(NULL, _("Unable to open message"), "%s", err->message);
+	g_error_free(err);
+      }
+
+    GDK_THREADS_LEAVE();
+  }}
+#line 351 "mn-popup.c"
+#undef __GOB_FUNCTION__
+
+#line 124 "mn-popup.gob"
+static void 
+mn_popup_mark_as_read_cb (NotifyNotification * notification, char * id, gpointer user_data)
+#line 357 "mn-popup.c"
+{
+#define __GOB_FUNCTION__ "MN:Popup::mark_as_read_cb"
+{
+#line 126 "mn-popup.gob"
+	
+    Self *self = SELF(notification);
+    GError *err = NULL;
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_message_mark_as_read(selfp->message, &err))
+      {
+	mn_error_dialog(NULL, _("Unable to mark message as read"), "%s", err->message);
+	g_error_free(err);
+      }
+
+    GDK_THREADS_LEAVE();
+  }}
+#line 376 "mn-popup.c"
+#undef __GOB_FUNCTION__
+
+#line 141 "mn-popup.gob"
+static void 
+mn_popup_mark_as_spam_cb (NotifyNotification * notification, char * id, gpointer user_data)
+#line 382 "mn-popup.c"
+{
+#define __GOB_FUNCTION__ "MN:Popup::mark_as_spam_cb"
+{
+#line 143 "mn-popup.gob"
+	
+    Self *self = SELF(notification);
+    GError *err = NULL;
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_message_mark_as_spam(selfp->message, &err))
+      {
+	mn_error_dialog(NULL, _("Unable to mark message as spam"), "%s", err->message);
+	g_error_free(err);
+      }
+
+    GDK_THREADS_LEAVE();
+  }}
+#line 401 "mn-popup.c"
+#undef __GOB_FUNCTION__
+
+#line 158 "mn-popup.gob"
+static void 
+mn_popup_closed_h (NotifyNotification * notification, gpointer user_data)
+#line 407 "mn-popup.c"
+{
+#define __GOB_FUNCTION__ "MN:Popup::closed_h"
+{
+#line 160 "mn-popup.gob"
+	
+    Self *self = SELF(notification);
+    self->visible = FALSE;
+  }}
+#line 416 "mn-popup.c"
+#undef __GOB_FUNCTION__
+
+#line 165 "mn-popup.gob"
+static void 
+mn_popup_append_row (GString * body, const char * name, const char * value)
+#line 422 "mn-popup.c"
+{
+#define __GOB_FUNCTION__ "MN:Popup::append_row"
+#line 165 "mn-popup.gob"
+	g_return_if_fail (body != NULL);
+#line 165 "mn-popup.gob"
+	g_return_if_fail (name != NULL);
+#line 165 "mn-popup.gob"
+	g_return_if_fail (value != NULL);
+#line 431 "mn-popup.c"
+{
+#line 169 "mn-popup.gob"
+	
+      char *escaped;
+
+      if (*body->str)
+	g_string_append_c(body, '\n');
+
+      g_string_append_printf(body, "<span weight=\"bold\">%s</span>", name);
+
+      escaped = g_markup_escape_text(value, -1);
+      g_string_append_printf(body, " %s", escaped);
+      g_free(escaped);
+    }}
+#line 446 "mn-popup.c"
+#undef __GOB_FUNCTION__
+
+#line 182 "mn-popup.gob"
+static int 
+mn_popup_get_conf_timeout (void)
+#line 452 "mn-popup.c"
+{
+#define __GOB_FUNCTION__ "MN:Popup::get_conf_timeout"
+{
+#line 184 "mn-popup.gob"
+	
+    switch (mn_conf_get_enum_value(MN_TYPE_EXPIRATION_ENABLED, MN_CONF_POPUPS_EXPIRATION_ENABLED))
+      {
+      case MN_EXPIRATION_ENABLED_DEFAULT:
+	return NOTIFY_EXPIRES_DEFAULT;
+
+      case MN_EXPIRATION_ENABLED_FALSE:
+	return NOTIFY_EXPIRES_NEVER;
+
+      case MN_EXPIRATION_ENABLED_TRUE:
+	return mn_conf_get_milliseconds(MN_CONF_POPUPS_EXPIRATION_DELAY_MINUTES,
+					MN_CONF_POPUPS_EXPIRATION_DELAY_SECONDS);
+
+      default:
+	g_assert_not_reached();
+	return 0;
+      }
+  }}
+#line 475 "mn-popup.c"
+#undef __GOB_FUNCTION__
+
+#line 203 "mn-popup.gob"
+void 
+mn_popup_show (MNPopup * self)
+#line 481 "mn-popup.c"
+{
+#define __GOB_FUNCTION__ "MN:Popup::show"
+#line 203 "mn-popup.gob"
+	g_return_if_fail (self != NULL);
+#line 203 "mn-popup.gob"
+	g_return_if_fail (MN_IS_POPUP (self));
+#line 488 "mn-popup.c"
+{
+#line 205 "mn-popup.gob"
+	
+    GError *err = NULL;
+
+    if (! notify_notification_show(NOTIFY_NOTIFICATION(self), &err))
+      {
+	g_warning(_("unable to show popup: %s"), err->message);
+	g_error_free(err);
+      }
+
+    self->visible = TRUE;
+  }}
+#line 502 "mn-popup.c"
+#undef __GOB_FUNCTION__
+
+#line 217 "mn-popup.gob"
+void 
+mn_popup_close (MNPopup * self)
+#line 508 "mn-popup.c"
+{
+#define __GOB_FUNCTION__ "MN:Popup::close"
+#line 217 "mn-popup.gob"
+	g_return_if_fail (self != NULL);
+#line 217 "mn-popup.gob"
+	g_return_if_fail (MN_IS_POPUP (self));
+#line 515 "mn-popup.c"
+{
+#line 219 "mn-popup.gob"
+	
+    GError *err = NULL;
+
+    if (! self->visible)
+      return;
+
+    if (! notify_notification_close(NOTIFY_NOTIFICATION(self), &err))
+      {
+	g_warning(_("unable to close popup: %s"), err->message);
+	g_error_free(err);
+      }
+  }}
+#line 530 "mn-popup.c"
+#undef __GOB_FUNCTION__
+
+#line 232 "mn-popup.gob"
+MNPopup * 
+mn_popup_new (MNMessage * message)
+#line 536 "mn-popup.c"
+{
+#define __GOB_FUNCTION__ "MN:Popup::new"
+#line 232 "mn-popup.gob"
+	g_return_val_if_fail (message != NULL, (MNPopup * )0);
+#line 232 "mn-popup.gob"
+	g_return_val_if_fail (MN_IS_MESSAGE (message), (MNPopup * )0);
+#line 543 "mn-popup.c"
+{
+#line 234 "mn-popup.gob"
+	
+    /* we set the summary here because libnotify requires it */
+
+    /* translators: header capitalization */
+    return GET_NEW_VARG("summary", _("New Message"),
+			MN_POPUP_PROP_MESSAGE(message),
+			NULL);
+  }}
+#line 554 "mn-popup.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-popup.gob b/src/mn-popup.gob
@@ -0,0 +1,242 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+requires 2.0.14
+
+%headertop{
+#include <libnotify/notify.h>
+#include "mn-message.h"
+%}
+
+%{
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-conf.h"
+#include "mn-shell.h"
+%}
+
+class MN:Popup from Notify:Notification
+{
+  private MNMessage *message unrefwith g_object_unref;
+  property OBJECT message (flags = CONSTRUCT_ONLY, link, object_type = MN:Message, type = MNMessage *);
+
+  public gboolean visible;
+
+  override (G:Object) GObject *
+    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  {
+    GObject *object;
+    Self *self;
+    GString *body;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    self = SELF(object);
+
+    body = g_string_new(NULL);
+    self_append_row(body, _("Mailbox:"), selfp->message->mailbox->runtime_name);
+    if (selfp->message->error)
+      self_append_row(body, _("Unreadable message:"), selfp->message->error);
+    else
+      {
+	self_append_row(body, _("From:"), selfp->message->from);
+	self_append_row(body, _("Subject:"), selfp->message->subject);
+      }
+
+    g_object_set(self,
+		 "body", body->str,
+		 "icon-name", "stock_mail",
+		 NULL);
+
+    if (mn_conf_get_enum_value(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION) == MN_POPUP_POSITION_ATTACHED)
+      g_object_set(self, "attach-widget", mn_shell->icon, NULL);
+
+    g_string_free(body, TRUE);
+
+    /*
+     * Note that notification-daemon currently assigns icons to
+     * actions by prepending "stock_" to the action ID.
+     */
+    if (mn_message_can_open(selfp->message))
+      notify_notification_add_action(NOTIFY_NOTIFICATION(self),
+				     "mail-open",
+				     /* translators: header capitalization */
+				     _("Open"),
+				     self_open_cb,
+				     NULL,
+				     NULL);
+    if (mn_message_can_mark_as_read(selfp->message))
+      notify_notification_add_action(NOTIFY_NOTIFICATION(self),
+				     "mark",
+				     /* translators: header capitalization */
+				     _("Mark as Read"),
+				     self_mark_as_read_cb,
+				     NULL,
+				     NULL);
+    if (mn_message_can_mark_as_spam(selfp->message))
+      notify_notification_add_action(NOTIFY_NOTIFICATION(self),
+				     "spam",
+				     /* translators: header capitalization */
+				     _("Mark as Spam"),
+				     self_mark_as_spam_cb,
+				     NULL,
+				     NULL);
+
+    notify_notification_set_timeout(NOTIFY_NOTIFICATION(self), self_get_conf_timeout());
+
+    g_signal_connect(self, "closed", G_CALLBACK(self_closed_h), NULL);
+
+    return object;
+  }
+
+  private void
+    open_cb (NotifyNotification *notification, char *id, gpointer user_data)
+  {
+    Self *self = SELF(notification);
+    GError *err = NULL;
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_message_open(selfp->message, &err))
+      {
+	mn_error_dialog(NULL, _("Unable to open message"), "%s", err->message);
+	g_error_free(err);
+      }
+
+    GDK_THREADS_LEAVE();
+  }
+
+  private void
+    mark_as_read_cb (NotifyNotification *notification, char *id, gpointer user_data)
+  {
+    Self *self = SELF(notification);
+    GError *err = NULL;
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_message_mark_as_read(selfp->message, &err))
+      {
+	mn_error_dialog(NULL, _("Unable to mark message as read"), "%s", err->message);
+	g_error_free(err);
+      }
+
+    GDK_THREADS_LEAVE();
+  }
+
+  private void
+    mark_as_spam_cb (NotifyNotification *notification, char *id, gpointer user_data)
+  {
+    Self *self = SELF(notification);
+    GError *err = NULL;
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_message_mark_as_spam(selfp->message, &err))
+      {
+	mn_error_dialog(NULL, _("Unable to mark message as spam"), "%s", err->message);
+	g_error_free(err);
+      }
+
+    GDK_THREADS_LEAVE();
+  }
+
+  private void
+    closed_h (NotifyNotification *notification, gpointer user_data)
+  {
+    Self *self = SELF(notification);
+    self->visible = FALSE;
+  }
+
+  private void
+    append_row (GString *body (check null),
+		const char *name (check null),
+		const char *value (check null))
+    {
+      char *escaped;
+
+      if (*body->str)
+	g_string_append_c(body, '\n');
+
+      g_string_append_printf(body, "<span weight=\"bold\">%s</span>", name);
+
+      escaped = g_markup_escape_text(value, -1);
+      g_string_append_printf(body, " %s", escaped);
+      g_free(escaped);
+    }
+
+  private int
+    get_conf_timeout (void)
+  {
+    switch (mn_conf_get_enum_value(MN_TYPE_EXPIRATION_ENABLED, MN_CONF_POPUPS_EXPIRATION_ENABLED))
+      {
+      case MN_EXPIRATION_ENABLED_DEFAULT:
+	return NOTIFY_EXPIRES_DEFAULT;
+
+      case MN_EXPIRATION_ENABLED_FALSE:
+	return NOTIFY_EXPIRES_NEVER;
+
+      case MN_EXPIRATION_ENABLED_TRUE:
+	return mn_conf_get_milliseconds(MN_CONF_POPUPS_EXPIRATION_DELAY_MINUTES,
+					MN_CONF_POPUPS_EXPIRATION_DELAY_SECONDS);
+
+      default:
+	g_assert_not_reached();
+	return 0;
+      }
+  }
+
+  public void
+    show (self)
+  {
+    GError *err = NULL;
+
+    if (! notify_notification_show(NOTIFY_NOTIFICATION(self), &err))
+      {
+	g_warning(_("unable to show popup: %s"), err->message);
+	g_error_free(err);
+      }
+
+    self->visible = TRUE;
+  }
+
+  public void
+    close (self)
+  {
+    GError *err = NULL;
+
+    if (! self->visible)
+      return;
+
+    if (! notify_notification_close(NOTIFY_NOTIFICATION(self), &err))
+      {
+	g_warning(_("unable to close popup: %s"), err->message);
+	g_error_free(err);
+      }
+  }
+
+  public MNPopup *
+    new (MN:Message *message (check null type))
+  {
+    /* we set the summary here because libnotify requires it */
+
+    /* translators: header capitalization */
+    return GET_NEW_VARG("summary", _("New Message"),
+			MN_POPUP_PROP_MESSAGE(message),
+			NULL);
+  }
+}
diff --git a/src/mn-corba-object.gob.stamp b/src/mn-popup.gob.stamp
diff --git a/src/mn-popup.h b/src/mn-popup.h
@@ -0,0 +1,80 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <libnotify/notify.h>
+#include "mn-message.h"
+
+#ifndef __MN_POPUP_H__
+#define __MN_POPUP_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_POPUP	(mn_popup_get_type())
+#define MN_POPUP(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_popup_get_type(), MNPopup)
+#define MN_POPUP_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_popup_get_type(), MNPopup const)
+#define MN_POPUP_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_popup_get_type(), MNPopupClass)
+#define MN_IS_POPUP(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_popup_get_type ())
+
+#define MN_POPUP_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_popup_get_type(), MNPopupClass)
+
+/* Private structure type */
+typedef struct _MNPopupPrivate MNPopupPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_POPUP__
+#define __TYPEDEF_MN_POPUP__
+typedef struct _MNPopup MNPopup;
+#endif
+struct _MNPopup {
+	NotifyNotification __parent__;
+	/*< public >*/
+	gboolean visible;
+	/*< private >*/
+	MNPopupPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNPopupClass MNPopupClass;
+struct _MNPopupClass {
+	NotifyNotificationClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_popup_get_type	(void);
+void 	mn_popup_show	(MNPopup * self);
+void 	mn_popup_close	(MNPopup * self);
+MNPopup * 	mn_popup_new	(MNMessage * message);
+
+/*
+ * Argument wrapping macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_POPUP_PROP_MESSAGE(arg)    	"message", __extension__ ({MNMessage * z = (arg); z;})
+#define MN_POPUP_GET_PROP_MESSAGE(arg)	"message", __extension__ ({MNMessage * *z = (arg); z;})
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_POPUP_PROP_MESSAGE(arg)    	"message",(MNMessage * )(arg)
+#define MN_POPUP_GET_PROP_MESSAGE(arg)	"message",(MNMessage * *)(arg)
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-popups-private.h b/src/mn-popups-private.h
@@ -0,0 +1,22 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_POPUPS_PRIVATE_H__
+#define __MN_POPUPS_PRIVATE_H__
+
+#include "mn-popups.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct _MNPopupsPrivate {
+#line 36 "mn-popups.gob"
+	GHashTable * popups;
+#line 16 "mn-popups-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-popups.c b/src/mn-popups.c
@@ -0,0 +1,293 @@
+/* Generated by GOB (v2.0.14)   (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 14
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-popups.h"
+
+#include "mn-popups-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 22 "mn-popups.gob"
+
+#include "config.h"
+#include <libnotify/notify.h>
+#include "mn-message.h"
+#include "mn-shell.h"
+#include "mn-util.h"
+#include "mn-conf.h"
+#include "mn-locked-callback.h"
+#include "mn-popup.h"
+#include "mn-properties-dialog.h"
+
+#line 38 "mn-popups.c"
+/* self casting macros */
+#define SELF(x) MN_POPUPS(x)
+#define SELF_CONST(x) MN_POPUPS_CONST(x)
+#define IS_SELF(x) MN_IS_POPUPS(x)
+#define TYPE_SELF MN_TYPE_POPUPS
+#define SELF_CLASS(x) MN_POPUPS_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_POPUPS_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNPopups Self;
+typedef MNPopupsClass SelfClass;
+
+/* here are local prototypes */
+static void mn_popups_class_init (MNPopupsClass * c) G_GNUC_UNUSED;
+static void mn_popups_init (MNPopups * self) G_GNUC_UNUSED;
+static void mn_popups_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data) G_GNUC_UNUSED;
+static void mn_popups_notify_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
+static gboolean mn_popups_clean_cb (const char * id, MNPopup * popup, gpointer user_data) G_GNUC_UNUSED;
+static void mn_popups_update (MNPopups * self, gboolean reshow_current_popups) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static GObjectClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_messages_changed_h mn_popups_messages_changed_h
+#define self_notify_cb mn_popups_notify_cb
+#define self_clean_cb mn_popups_clean_cb
+#define self_update mn_popups_update
+#define self_new mn_popups_new
+GType
+mn_popups_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNPopupsClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_popups_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNPopups),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_popups_init,
+			NULL
+		};
+
+		type = g_type_register_static (G_TYPE_OBJECT, "MNPopups", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNPopups *)g_object_new(mn_popups_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNPopups * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNPopups *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNPopups *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNPopups *)g_object_new_valist (mn_popups_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Popups::finalize"
+	MNPopups *self G_GNUC_UNUSED = MN_POPUPS (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 36 "mn-popups.gob"
+	if(self->_priv->popups) { g_hash_table_destroy ((gpointer) self->_priv->popups); self->_priv->popups = NULL; }
+#line 122 "mn-popups.c"
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_popups_class_init (MNPopupsClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Popups::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+	g_type_class_add_private(c,sizeof(MNPopupsPrivate));
+
+	parent_class = g_type_class_ref (G_TYPE_OBJECT);
+
+	g_object_class->finalize = ___finalize;
+}
+#undef __GOB_FUNCTION__
+#line 38 "mn-popups.gob"
+static void 
+mn_popups_init (MNPopups * self G_GNUC_UNUSED)
+#line 142 "mn-popups.c"
+{
+#define __GOB_FUNCTION__ "MN:Popups::init"
+	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_POPUPS,MNPopupsPrivate);
+#line 36 "mn-popups.gob"
+	self->_priv->popups = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) mn_g_object_null_unref);
+#line 148 "mn-popups.c"
+ {
+#line 39 "mn-popups.gob"
+
+    if (! notify_is_initted())
+      return;			/* libnotify init failed */
+
+    mn_g_object_gconf_notifications_add_gdk_locked(self,
+						   MN_CONF_POPUPS_NAMESPACE, self_notify_cb, self,
+						   NULL);
+
+    g_signal_connect(mn_shell->mailboxes, "messages-changed", G_CALLBACK(self_messages_changed_h), self);
+  
+#line 161 "mn-popups.c"
+ }
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 50 "mn-popups.gob"
+static void 
+mn_popups_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data)
+#line 171 "mn-popups.c"
+{
+#define __GOB_FUNCTION__ "MN:Popups::messages_changed_h"
+{
+#line 54 "mn-popups.gob"
+	
+    Self *self = user_data;
+
+    self_update(self, FALSE);
+  }}
+#line 181 "mn-popups.c"
+#undef __GOB_FUNCTION__
+
+#line 60 "mn-popups.gob"
+static void 
+mn_popups_notify_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
+#line 187 "mn-popups.c"
+{
+#define __GOB_FUNCTION__ "MN:Popups::notify_cb"
+{
+#line 65 "mn-popups.gob"
+	
+    Self *self = user_data;
+
+    self_update(self, TRUE);
+  }}
+#line 197 "mn-popups.c"
+#undef __GOB_FUNCTION__
+
+#line 71 "mn-popups.gob"
+static gboolean 
+mn_popups_clean_cb (const char * id, MNPopup * popup, gpointer user_data)
+#line 203 "mn-popups.c"
+{
+#define __GOB_FUNCTION__ "MN:Popups::clean_cb"
+{
+#line 75 "mn-popups.gob"
+	
+    GHashTable *messages = user_data;
+
+    if (! g_hash_table_lookup(messages, id))
+      {
+	if (popup != NULL)
+	  mn_popup_close(popup);
+	return TRUE;		/* remove */
+      }
+    else
+      return FALSE;		/* keep */
+  }}
+#line 220 "mn-popups.c"
+#undef __GOB_FUNCTION__
+
+#line 88 "mn-popups.gob"
+static void 
+mn_popups_update (MNPopups * self, gboolean reshow_current_popups)
+#line 226 "mn-popups.c"
+{
+#define __GOB_FUNCTION__ "MN:Popups::update"
+#line 88 "mn-popups.gob"
+	g_return_if_fail (self != NULL);
+#line 88 "mn-popups.gob"
+	g_return_if_fail (MN_IS_POPUPS (self));
+#line 233 "mn-popups.c"
+{
+#line 90 "mn-popups.gob"
+	
+    GHashTable *messages;
+    GSList *l;
+
+    /* remove notifications whose message no longer exists */
+
+    messages = g_hash_table_new(g_str_hash, g_str_equal);
+    MN_LIST_FOREACH(l, mn_shell->mailboxes->messages)
+      {
+	MNMessage *message = l->data;
+	g_hash_table_insert(messages, message->id, message);
+      }
+
+    g_hash_table_foreach_remove(selfp->popups, (GHRFunc) self_clean_cb, messages);
+    g_hash_table_destroy(messages);
+
+    /* send notifications for new messages */
+
+    MN_LIST_FOREACH(l, mn_shell->mailboxes->messages)
+      {
+	MNMessage *message = l->data;
+	MNPopup *popup = NULL;
+	gpointer ptr;
+
+	if (g_hash_table_lookup_extended(selfp->popups, message->id, NULL, &ptr))
+	  {
+	    MNPopup *cur_popup = ptr;
+
+	    if (reshow_current_popups && cur_popup && cur_popup->visible)
+	      mn_popup_close(cur_popup);
+	    else
+	      continue;
+	  }
+
+	if (eel_gconf_get_boolean(MN_CONF_POPUPS_ENABLED))
+	  {
+	    popup = mn_popup_new(message);
+	    mn_popup_show(popup);
+	  }
+
+	g_hash_table_replace(selfp->popups, g_strdup(message->id), popup);
+      }
+  }}
+#line 279 "mn-popups.c"
+#undef __GOB_FUNCTION__
+
+#line 134 "mn-popups.gob"
+MNPopups * 
+mn_popups_new (void)
+#line 285 "mn-popups.c"
+{
+#define __GOB_FUNCTION__ "MN:Popups::new"
+{
+#line 136 "mn-popups.gob"
+	
+    return GET_NEW;
+  }}
+#line 293 "mn-popups.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-popups.gob b/src/mn-popups.gob
@@ -0,0 +1,139 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+requires 2.0.14
+
+%{
+#include "config.h"
+#include <libnotify/notify.h>
+#include "mn-message.h"
+#include "mn-shell.h"
+#include "mn-util.h"
+#include "mn-conf.h"
+#include "mn-locked-callback.h"
+#include "mn-popup.h"
+#include "mn-properties-dialog.h"
+%}
+
+class MN:Popups from G:Object
+{
+  private GHashTable *popups = {g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify) mn_g_object_null_unref)} destroywith g_hash_table_destroy;
+
+  init (self)
+  {
+    if (! notify_is_initted())
+      return;			/* libnotify init failed */
+
+    mn_g_object_gconf_notifications_add_gdk_locked(self,
+						   MN_CONF_POPUPS_NAMESPACE, self_notify_cb, self,
+						   NULL);
+
+    g_signal_connect(mn_shell->mailboxes, "messages-changed", G_CALLBACK(self_messages_changed_h), self);
+  }
+
+  private void
+    messages_changed_h (MNMailboxes *mailboxes,
+			gboolean has_new,
+			gpointer user_data)
+  {
+    Self *self = user_data;
+
+    self_update(self, FALSE);
+  }
+
+  private void
+    notify_cb (GConfClient *client,
+	       unsigned int cnxn_id,
+	       GConfEntry *entry,
+	       gpointer user_data)
+  {
+    Self *self = user_data;
+
+    self_update(self, TRUE);
+  }
+
+  private gboolean
+    clean_cb (const char *id,
+	      MNPopup *popup,
+	      gpointer user_data)
+  {
+    GHashTable *messages = user_data;
+
+    if (! g_hash_table_lookup(messages, id))
+      {
+	if (popup != NULL)
+	  mn_popup_close(popup);
+	return TRUE;		/* remove */
+      }
+    else
+      return FALSE;		/* keep */
+  }
+
+  private void
+    update (self, gboolean reshow_current_popups)
+  {
+    GHashTable *messages;
+    GSList *l;
+
+    /* remove notifications whose message no longer exists */
+
+    messages = g_hash_table_new(g_str_hash, g_str_equal);
+    MN_LIST_FOREACH(l, mn_shell->mailboxes->messages)
+      {
+	MNMessage *message = l->data;
+	g_hash_table_insert(messages, message->id, message);
+      }
+
+    g_hash_table_foreach_remove(selfp->popups, (GHRFunc) self_clean_cb, messages);
+    g_hash_table_destroy(messages);
+
+    /* send notifications for new messages */
+
+    MN_LIST_FOREACH(l, mn_shell->mailboxes->messages)
+      {
+	MNMessage *message = l->data;
+	MNPopup *popup = NULL;
+	gpointer ptr;
+
+	if (g_hash_table_lookup_extended(selfp->popups, message->id, NULL, &ptr))
+	  {
+	    MNPopup *cur_popup = ptr;
+
+	    if (reshow_current_popups && cur_popup && cur_popup->visible)
+	      mn_popup_close(cur_popup);
+	    else
+	      continue;
+	  }
+
+	if (eel_gconf_get_boolean(MN_CONF_POPUPS_ENABLED))
+	  {
+	    popup = mn_popup_new(message);
+	    mn_popup_show(popup);
+	  }
+
+	g_hash_table_replace(selfp->popups, g_strdup(message->id), popup);
+      }
+  }
+
+  public MNPopups *
+    new (void)
+  {
+    return GET_NEW;
+  }
+}
diff --git a/src/mn-corba-object.gob.stamp b/src/mn-popups.gob.stamp
diff --git a/src/mn-popups.h b/src/mn-popups.h
@@ -0,0 +1,59 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+#ifndef __MN_POPUPS_H__
+#define __MN_POPUPS_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_POPUPS	(mn_popups_get_type())
+#define MN_POPUPS(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_popups_get_type(), MNPopups)
+#define MN_POPUPS_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_popups_get_type(), MNPopups const)
+#define MN_POPUPS_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_popups_get_type(), MNPopupsClass)
+#define MN_IS_POPUPS(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_popups_get_type ())
+
+#define MN_POPUPS_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_popups_get_type(), MNPopupsClass)
+
+/* Private structure type */
+typedef struct _MNPopupsPrivate MNPopupsPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_POPUPS__
+#define __TYPEDEF_MN_POPUPS__
+typedef struct _MNPopups MNPopups;
+#endif
+struct _MNPopups {
+	GObject __parent__;
+	/*< private >*/
+	MNPopupsPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNPopupsClass MNPopupsClass;
+struct _MNPopupsClass {
+	GObjectClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_popups_get_type	(void);
+MNPopups * 	mn_popups_new	(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-properties-dialog-private.h b/src/mn-properties-dialog-private.h
@@ -9,113 +9,87 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 26 "mn-properties-dialog.gob"
+
+#include "mn-mailbox.h"
+
+#line 18 "mn-properties-dialog-private.h"
 struct _MNPropertiesDialogPrivate {
-#line 47 "mn-properties-dialog.gob"
+#line 44 "mn-properties-dialog.gob"
 	GtkWidget * notebook;
-#line 50 "mn-properties-dialog.gob"
+#line 47 "mn-properties-dialog.gob"
 	GtkWidget * display_seen_mail_check;
-#line 51 "mn-properties-dialog.gob"
+#line 48 "mn-properties-dialog.gob"
 	GtkWidget * scrolled;
-#line 52 "mn-properties-dialog.gob"
+#line 49 "mn-properties-dialog.gob"
 	GtkWidget * list;
-#line 53 "mn-properties-dialog.gob"
+#line 50 "mn-properties-dialog.gob"
 	GtkWidget * selected_label;
-#line 54 "mn-properties-dialog.gob"
+#line 51 "mn-properties-dialog.gob"
+	GtkWidget * add;
+#line 52 "mn-properties-dialog.gob"
 	GtkWidget * remove;
-#line 55 "mn-properties-dialog.gob"
+#line 53 "mn-properties-dialog.gob"
 	GtkWidget * properties;
-#line 56 "mn-properties-dialog.gob"
+#line 54 "mn-properties-dialog.gob"
 	GtkWidget * command_new_mail_check;
-#line 57 "mn-properties-dialog.gob"
+#line 55 "mn-properties-dialog.gob"
 	GtkWidget * command_new_mail_entry;
-#line 58 "mn-properties-dialog.gob"
+#line 56 "mn-properties-dialog.gob"
 	GtkWidget * command_mail_read_check;
-#line 59 "mn-properties-dialog.gob"
+#line 57 "mn-properties-dialog.gob"
 	GtkWidget * command_mail_read_entry;
-#line 62 "mn-properties-dialog.gob"
+#line 60 "mn-properties-dialog.gob"
 	GtkWidget * icon_blink_check;
-#line 63 "mn-properties-dialog.gob"
+#line 61 "mn-properties-dialog.gob"
 	GtkWidget * icon_always_display_check;
-#line 64 "mn-properties-dialog.gob"
+#line 62 "mn-properties-dialog.gob"
 	GtkWidget * icon_tooltip_mail_summary_standard_radio;
-#line 65 "mn-properties-dialog.gob"
+#line 63 "mn-properties-dialog.gob"
 	GtkWidget * icon_tooltip_mail_summary_compact_radio;
-#line 66 "mn-properties-dialog.gob"
+#line 64 "mn-properties-dialog.gob"
 	GtkWidget * icon_tooltip_mail_summary_none_radio;
-#line 67 "mn-properties-dialog.gob"
+#line 65 "mn-properties-dialog.gob"
 	GtkWidget * icon_action_properties_dialog_radio;
-#line 68 "mn-properties-dialog.gob"
+#line 66 "mn-properties-dialog.gob"
 	GtkWidget * icon_action_mail_reader_radio;
-#line 69 "mn-properties-dialog.gob"
+#line 67 "mn-properties-dialog.gob"
+	GtkWidget * icon_action_open_latest_message_radio;
+#line 68 "mn-properties-dialog.gob"
 	GtkWidget * icon_action_update_radio;
+#line 71 "mn-properties-dialog.gob"
+	GtkWidget * popups_enable_check;
 #line 72 "mn-properties-dialog.gob"
-	GtkWidget * summary_enable_check;
+	GtkWidget * popups_position_section_label;
 #line 73 "mn-properties-dialog.gob"
-	GtkWidget * summary_autoclose_check;
+	GtkWidget * popups_position_attached_radio;
 #line 74 "mn-properties-dialog.gob"
-	GtkWidget * summary_minutes_spin;
+	GtkWidget * popups_position_free_radio;
 #line 75 "mn-properties-dialog.gob"
-	GtkWidget * summary_minutes_label;
+	GtkWidget * popups_expiration_section_label;
 #line 76 "mn-properties-dialog.gob"
-	GtkWidget * summary_seconds_spin;
+	GtkWidget * popups_expiration_default_radio;
 #line 77 "mn-properties-dialog.gob"
-	GtkWidget * summary_seconds_label;
+	GtkWidget * popups_expiration_never_radio;
 #line 78 "mn-properties-dialog.gob"
-	GtkWidget * summary_only_recent_check;
+	GtkWidget * popups_expiration_after_radio;
 #line 79 "mn-properties-dialog.gob"
-	GtkWidget * summary_position_section_label;
+	GtkWidget * popups_expiration_minutes_spin;
 #line 80 "mn-properties-dialog.gob"
-	GtkWidget * summary_position_label;
+	GtkWidget * popups_expiration_minutes_label;
 #line 81 "mn-properties-dialog.gob"
-	GtkWidget * summary_position_combo;
+	GtkWidget * popups_expiration_seconds_spin;
 #line 82 "mn-properties-dialog.gob"
-	GtkWidget * summary_horizontal_offset_label;
-#line 83 "mn-properties-dialog.gob"
-	GtkWidget * summary_horizontal_offset_spin;
+	GtkWidget * popups_expiration_seconds_label;
 #line 84 "mn-properties-dialog.gob"
-	GtkWidget * summary_horizontal_pixels_label;
-#line 85 "mn-properties-dialog.gob"
-	GtkWidget * summary_vertical_offset_label;
-#line 86 "mn-properties-dialog.gob"
-	GtkWidget * summary_vertical_offset_spin;
-#line 87 "mn-properties-dialog.gob"
-	GtkWidget * summary_vertical_pixels_label;
-#line 88 "mn-properties-dialog.gob"
-	GtkWidget * summary_layout_section_label;
-#line 89 "mn-properties-dialog.gob"
-	GtkWidget * summary_layout_standard_radio;
-#line 90 "mn-properties-dialog.gob"
-	GtkWidget * summary_layout_compact_radio;
-#line 91 "mn-properties-dialog.gob"
-	GtkWidget * summary_fonts_section_label;
-#line 92 "mn-properties-dialog.gob"
-	GtkWidget * summary_fonts_from_theme_radio;
-#line 93 "mn-properties-dialog.gob"
-	GtkWidget * summary_custom_fonts_radio;
-#line 94 "mn-properties-dialog.gob"
-	GtkWidget * summary_title_font_alignment;
-#line 95 "mn-properties-dialog.gob"
-	GtkWidget * summary_title_font_label;
-#line 96 "mn-properties-dialog.gob"
-	GtkWidget * summary_title_font_button;
-#line 97 "mn-properties-dialog.gob"
-	GtkWidget * summary_contents_font_alignment;
-#line 98 "mn-properties-dialog.gob"
-	GtkWidget * summary_contents_font_label;
-#line 99 "mn-properties-dialog.gob"
-	GtkWidget * summary_contents_font_button;
-#line 100 "mn-properties-dialog.gob"
-	GtkWidget * summary_test_button;
-#line 102 "mn-properties-dialog.gob"
-	GtkWidget * test_popup;
-#line 112 "mn-properties-dialog-private.h"
+	MNMailbox * test_mailbox;
+#line 88 "mn-properties-dialog-private.h"
 };
 void 	mn_properties_dialog_toggled_h	(MNPropertiesDialog * self, GtkToggleButton * button);
 void 	mn_properties_dialog_add_clicked_h	(MNPropertiesDialog * self, GtkButton * button);
 void 	mn_properties_dialog_remove_clicked_h	(MNPropertiesDialog * self, GtkButton * button);
 void 	mn_properties_dialog_properties_clicked_h	(MNPropertiesDialog * self, GtkButton * button);
-void 	mn_properties_dialog_summary_enable_toggled_h	(MNPropertiesDialog * self, GtkToggleButton * button);
-void 	mn_properties_dialog_summary_test_button_clicked_h	(MNPropertiesDialog * self, GtkButton * button);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-properties-dialog.c b/src/mn-properties-dialog.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-properties-dialog.gob"
+#line 30 "mn-properties-dialog.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -32,17 +32,9 @@
 #include "mn-util.h"
 #include "mn-mailbox-view.h"
 #include "mn-shell.h"
-#include "mn-mail-summary-popup.h"
-#include "mn-message.h"
+#include "mn-test-mailbox.h"
 
-enum
-{
-  POSITION_COLUMN_NICK,
-  POSITION_COLUMN_LABEL,
-  POSITION_N_COLUMNS
-};
-
-#line 46 "mn-properties-dialog.c"
+#line 38 "mn-properties-dialog.c"
 /* self casting macros */
 #define SELF(x) MN_PROPERTIES_DIALOG(x)
 #define SELF_CONST(x) MN_PROPERTIES_DIALOG_CONST(x)
@@ -59,8 +51,9 @@ typedef MNPropertiesDialogClass SelfClass;
 /* here are local prototypes */
 static void mn_properties_dialog_class_init (MNPropertiesDialogClass * c) G_GNUC_UNUSED;
 static void mn_properties_dialog_init (MNPropertiesDialog * self) G_GNUC_UNUSED;
+static void mn_properties_dialog_test_messages_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button) G_GNUC_UNUSED;
+static void mn_properties_dialog_remove_test_mailbox (MNPropertiesDialog * self) G_GNUC_UNUSED;
 static void mn_properties_dialog_response_h (MNPropertiesDialog * self, int response, gpointer user_data) G_GNUC_UNUSED;
-static void mn_properties_dialog_add_position (GtkListStore * store, MNPosition position, const char * label) G_GNUC_UNUSED;
 static void mn_properties_dialog_update_selected_label (MNPropertiesDialog * self) G_GNUC_UNUSED;
 static void mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self) G_GNUC_UNUSED;
 
@@ -68,17 +61,15 @@ static void mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self) 
 static MNDialogClass *parent_class = NULL;
 
 /* Short form macros */
+#define self_test_messages_toggled_h mn_properties_dialog_test_messages_toggled_h
+#define self_remove_test_mailbox mn_properties_dialog_remove_test_mailbox
 #define self_response_h mn_properties_dialog_response_h
-#define self_add_position mn_properties_dialog_add_position
 #define self_update_selected_label mn_properties_dialog_update_selected_label
 #define self_update_sensitivity mn_properties_dialog_update_sensitivity
-#define self_test_popup_displayed mn_properties_dialog_test_popup_displayed
 #define self_toggled_h mn_properties_dialog_toggled_h
 #define self_add_clicked_h mn_properties_dialog_add_clicked_h
 #define self_remove_clicked_h mn_properties_dialog_remove_clicked_h
 #define self_properties_clicked_h mn_properties_dialog_properties_clicked_h
-#define self_summary_enable_toggled_h mn_properties_dialog_summary_enable_toggled_h
-#define self_summary_test_button_clicked_h mn_properties_dialog_summary_test_button_clicked_h
 GType
 mn_properties_dialog_get_type (void)
 {
@@ -130,21 +121,15 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#define test_popup (self->_priv->test_popup)
-#define VAR test_popup
-	{
-#line 104 "mn-properties-dialog.gob"
-	
-      if (VAR)
+#define test_mailbox (self->_priv->test_mailbox)
+#define VAR test_mailbox
 	{
-	  g_object_weak_unref(G_OBJECT(VAR), (GWeakNotify) self_update_sensitivity, self);
-	  gtk_widget_destroy(VAR);
-	}
-    }
-#line 145 "mn-properties-dialog.c"
-	memset(&test_popup, 0, sizeof(test_popup));
+#line 84 "mn-properties-dialog.gob"
+	 self_remove_test_mailbox(self); }
+#line 130 "mn-properties-dialog.c"
+	memset(&test_mailbox, 0, sizeof(test_mailbox));
 #undef VAR
-#undef test_popup
+#undef test_mailbox
 }
 #undef __GOB_FUNCTION__
 
@@ -161,20 +146,19 @@ mn_properties_dialog_class_init (MNPropertiesDialogClass * c G_GNUC_UNUSED)
 	g_object_class->finalize = ___finalize;
 }
 #undef __GOB_FUNCTION__
-#line 112 "mn-properties-dialog.gob"
+#line 86 "mn-properties-dialog.gob"
 static void 
 mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
-#line 168 "mn-properties-dialog.c"
+#line 153 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_PROPERTIES_DIALOG,MNPropertiesDialogPrivate);
  {
-#line 113 "mn-properties-dialog.gob"
+#line 87 "mn-properties-dialog.gob"
 
     GtkSizeGroup *size_group;
     GtkTreeSelection *selection;
-    GtkListStore *position_store;
-    GtkCellRenderer *renderer;
+    GtkWidget *test_messages_check;
 
     mn_container_create_interface(GTK_CONTAINER(self),
 				  UIDIR G_DIR_SEPARATOR_S "properties-dialog.glade",
@@ -184,6 +168,7 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 				  "display_seen_mail_check", &selfp->display_seen_mail_check,
 				  "scrolled", &selfp->scrolled,
 				  "selected_label", &selfp->selected_label,
+				  "add", &selfp->add,
 				  "remove", &selfp->remove,
 				  "properties", &selfp->properties,
 				  "command_new_mail_check", &selfp->command_new_mail_check,
@@ -197,44 +182,34 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 				  "icon_tooltip_mail_summary_none_radio", &selfp->icon_tooltip_mail_summary_none_radio,
 				  "icon_action_properties_dialog_radio", &selfp->icon_action_properties_dialog_radio,
 				  "icon_action_mail_reader_radio", &selfp->icon_action_mail_reader_radio,
+				  "icon_action_open_latest_message_radio", &selfp->icon_action_open_latest_message_radio,
 				  "icon_action_update_radio", &selfp->icon_action_update_radio,
-				  "summary_enable_check", &selfp->summary_enable_check,
-				  "summary_autoclose_check", &selfp->summary_autoclose_check,
-				  "summary_minutes_spin", &selfp->summary_minutes_spin,
-				  "summary_minutes_label", &selfp->summary_minutes_label,
-				  "summary_seconds_spin", &selfp->summary_seconds_spin,
-				  "summary_seconds_label", &selfp->summary_seconds_label,
-				  "summary_only_recent_check", &selfp->summary_only_recent_check,
-				  "summary_position_section_label", &selfp->summary_position_section_label,
-				  "summary_position_label", &selfp->summary_position_label,
-				  "summary_position_combo", &selfp->summary_position_combo,
-				  "summary_horizontal_offset_label", &selfp->summary_horizontal_offset_label,
-				  "summary_horizontal_offset_spin", &selfp->summary_horizontal_offset_spin,
-				  "summary_horizontal_pixels_label", &selfp->summary_horizontal_pixels_label,
-				  "summary_vertical_offset_label", &selfp->summary_vertical_offset_label,
-				  "summary_vertical_offset_spin", &selfp->summary_vertical_offset_spin,
-				  "summary_vertical_pixels_label", &selfp->summary_vertical_pixels_label,
-				  "summary_layout_section_label", &selfp->summary_layout_section_label,
-				  "summary_layout_standard_radio", &selfp->summary_layout_standard_radio,
-				  "summary_layout_compact_radio", &selfp->summary_layout_compact_radio,
-				  "summary_fonts_section_label", &selfp->summary_fonts_section_label,
-				  "summary_fonts_from_theme_radio", &selfp->summary_fonts_from_theme_radio,
-				  "summary_custom_fonts_radio", &selfp->summary_custom_fonts_radio,
-				  "summary_title_font_alignment", &selfp->summary_title_font_alignment,
-				  "summary_title_font_label", &selfp->summary_title_font_label,
-				  "summary_title_font_button", &selfp->summary_title_font_button,
-				  "summary_contents_font_alignment", &selfp->summary_contents_font_alignment,
-				  "summary_contents_font_label", &selfp->summary_contents_font_label,
-				  "summary_contents_font_button", &selfp->summary_contents_font_button,
-				  "summary_test_button", &selfp->summary_test_button,
+				  "popups_enable_check", &selfp->popups_enable_check,
+				  "popups_position_section_label", &selfp->popups_position_section_label,
+				  "popups_position_attached_radio", &selfp->popups_position_attached_radio,
+				  "popups_position_free_radio", &selfp->popups_position_free_radio,
+				  "popups_expiration_section_label", &selfp->popups_expiration_section_label,
+				  "popups_expiration_default_radio", &selfp->popups_expiration_default_radio,
+				  "popups_expiration_never_radio", &selfp->popups_expiration_never_radio,
+				  "popups_expiration_after_radio", &selfp->popups_expiration_after_radio,
+				  "popups_expiration_minutes_spin", &selfp->popups_expiration_minutes_spin,
+				  "popups_expiration_minutes_label", &selfp->popups_expiration_minutes_label,
+				  "popups_expiration_seconds_spin", &selfp->popups_expiration_seconds_spin,
+				  "popups_expiration_seconds_label", &selfp->popups_expiration_seconds_label,
 				  NULL);
 
     /* translators: header capitalization */
     gtk_window_set_title(GTK_WINDOW(self), _("Mail Notification Properties"));
-    gtk_dialog_add_buttons(GTK_DIALOG(self),
-			   GTK_STOCK_HELP, GTK_RESPONSE_HELP,
-			   GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
-			   NULL);
+
+    gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
+
+    /* translators: "test" is an adjective, not a verb */
+    test_messages_check = gtk_check_button_new_with_mnemonic(_("_Test messages"));
+    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(self)->action_area), test_messages_check, FALSE, FALSE, 0);
+    gtk_widget_show(test_messages_check);
+    g_signal_connect_swapped(test_messages_check, "toggled", G_CALLBACK(self_test_messages_toggled_h), self);
+
+    gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
 
     selfp->list = mn_mailbox_view_new();
     gtk_container_add(GTK_CONTAINER(selfp->scrolled), selfp->list);
@@ -253,31 +228,6 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
     gtk_size_group_add_widget(size_group, selfp->command_mail_read_check);
     g_object_unref(size_group);
 
-    size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-    gtk_size_group_add_widget(size_group, selfp->summary_autoclose_check);
-    gtk_size_group_add_widget(size_group, selfp->summary_position_label);
-    gtk_size_group_add_widget(size_group, selfp->summary_horizontal_offset_label);
-    gtk_size_group_add_widget(size_group, selfp->summary_vertical_offset_label);
-    gtk_size_group_add_widget(size_group, selfp->summary_title_font_alignment);
-    gtk_size_group_add_widget(size_group, selfp->summary_contents_font_alignment);
-    g_object_unref(size_group);
-
-    position_store = gtk_list_store_new(POSITION_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
-
-    self_add_position(position_store, MN_POSITION_TOP_LEFT, _("top left"));
-    self_add_position(position_store, MN_POSITION_TOP_RIGHT, _("top right"));
-    self_add_position(position_store, MN_POSITION_BOTTOM_LEFT, _("bottom left"));
-    self_add_position(position_store, MN_POSITION_BOTTOM_RIGHT, _("bottom right"));
-
-    renderer = gtk_cell_renderer_text_new();
-    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->summary_position_combo), renderer, TRUE);
-    gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->summary_position_combo), renderer,
-				   "text", POSITION_COLUMN_LABEL,
-				   NULL);
-
-    gtk_combo_box_set_model(GTK_COMBO_BOX(selfp->summary_position_combo), GTK_TREE_MODEL(position_store));
-    g_object_unref(position_store);
-
     mn_conf_link(self, MN_CONF_PROPERTIES_DIALOG,
 		 selfp->display_seen_mail_check, MN_CONF_DISPLAY_SEEN_MAIL, "active",
 		 selfp->command_new_mail_check, MN_CONF_COMMANDS_NEW_MAIL_ENABLED, "active",
@@ -286,15 +236,9 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 		 selfp->command_mail_read_entry, MN_CONF_COMMANDS_MAIL_READ_COMMAND, "text",
 		 selfp->icon_blink_check, MN_CONF_BLINK_ON_ERRORS, "active",
 		 selfp->icon_always_display_check, MN_CONF_ALWAYS_DISPLAY_ICON, "active",
-		 selfp->summary_enable_check, MN_CONF_MAIL_SUMMARY_POPUP_ENABLE, "active",
-		 selfp->summary_autoclose_check, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE, "active",
-		 selfp->summary_minutes_spin, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES,
-		 selfp->summary_seconds_spin, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS,
-		 selfp->summary_only_recent_check, MN_CONF_MAIL_SUMMARY_POPUP_ONLY_RECENT, "active",
-		 selfp->summary_horizontal_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET,
-		 selfp->summary_vertical_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET,
-		 selfp->summary_title_font_button, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT, "font-name",
-		 selfp->summary_contents_font_button, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT, "font-name",
+		 selfp->popups_enable_check, MN_CONF_POPUPS_ENABLED, "active",
+		 selfp->popups_expiration_minutes_spin, MN_CONF_POPUPS_EXPIRATION_DELAY_MINUTES,
+		 selfp->popups_expiration_seconds_spin, MN_CONF_POPUPS_EXPIRATION_DELAY_SECONDS,
 		 NULL);
     mn_conf_link_radio_group_to_enum(MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY,
 				     MN_CONF_TOOLTIP_MAIL_SUMMARY,
@@ -306,57 +250,118 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 				     MN_CONF_CLICK_ACTION,
 				     selfp->icon_action_properties_dialog_radio, MN_ACTION_DISPLAY_PROPERTIES_DIALOG,
 				     selfp->icon_action_mail_reader_radio, MN_ACTION_LAUNCH_MAIL_READER,
+				     selfp->icon_action_open_latest_message_radio, MN_ACTION_OPEN_LATEST_MESSAGE,
 				     selfp->icon_action_update_radio, MN_ACTION_UPDATE_MAIL_STATUS,
 				     NULL);
-    mn_conf_link_radio_group_to_enum(MN_TYPE_MAIL_SUMMARY_POPUP_LAYOUT,
-				     MN_CONF_MAIL_SUMMARY_POPUP_LAYOUT,
-				     selfp->summary_layout_standard_radio, MN_MAIL_SUMMARY_POPUP_LAYOUT_STANDARD,
-				     selfp->summary_layout_compact_radio, MN_MAIL_SUMMARY_POPUP_LAYOUT_COMPACT,
+    mn_conf_link_radio_group_to_enum(MN_TYPE_POPUP_POSITION,
+				     MN_CONF_POPUPS_POSITION,
+				     selfp->popups_position_attached_radio, MN_POPUP_POSITION_ATTACHED,
+				     selfp->popups_position_free_radio, MN_POPUP_POSITION_FREE,
 				     NULL);
-    mn_conf_link_radio_group_to_enum(MN_TYPE_ASPECT_SOURCE,
-				     MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE,
-				     selfp->summary_fonts_from_theme_radio, MN_ASPECT_SOURCE_THEME,
-				     selfp->summary_custom_fonts_radio, MN_ASPECT_SOURCE_CUSTOM,
+    mn_conf_link_radio_group_to_enum(MN_TYPE_EXPIRATION_ENABLED,
+				     MN_CONF_POPUPS_EXPIRATION_ENABLED,
+				     selfp->popups_expiration_default_radio, MN_EXPIRATION_ENABLED_DEFAULT,
+				     selfp->popups_expiration_never_radio, MN_EXPIRATION_ENABLED_FALSE,
+				     selfp->popups_expiration_after_radio, MN_EXPIRATION_ENABLED_TRUE,
 				     NULL);
-    mn_conf_link_combo_box_to_string(GTK_COMBO_BOX(selfp->summary_position_combo),
-				     POSITION_COLUMN_NICK,
-				     MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
 
     self_update_selected_label(self);
     self_update_sensitivity(self);
 
+    /*
+     * HIG chapter 3:
+     * "When opening a dialog, provide initial keyboard focus to the
+     * component that you expect users to operate first. This focus is
+     * especially important for users who must use a keyboard to
+     * navigate your application."
+     */
+    gtk_widget_grab_focus(selfp->add);
+
     g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL);
   
-#line 331 "mn-properties-dialog.c"
+#line 283 "mn-properties-dialog.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 271 "mn-properties-dialog.gob"
+#line 212 "mn-properties-dialog.gob"
+static void 
+mn_properties_dialog_test_messages_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button)
+#line 293 "mn-properties-dialog.c"
+{
+#define __GOB_FUNCTION__ "MN:Properties:Dialog::test_messages_toggled_h"
+#line 212 "mn-properties-dialog.gob"
+	g_return_if_fail (self != NULL);
+#line 212 "mn-properties-dialog.gob"
+	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
+#line 300 "mn-properties-dialog.c"
+{
+#line 214 "mn-properties-dialog.gob"
+	
+    if (gtk_toggle_button_get_active(button))
+      {
+	if (! selfp->test_mailbox)
+	  {
+	    selfp->test_mailbox = mn_test_mailbox_new();
+	    mn_mailbox_seal(selfp->test_mailbox);
+	    mn_mailboxes_add(mn_shell->mailboxes, selfp->test_mailbox);
+	  }
+      }
+    else
+      self_remove_test_mailbox(self);
+  }}
+#line 316 "mn-properties-dialog.c"
+#undef __GOB_FUNCTION__
+
+#line 228 "mn-properties-dialog.gob"
+static void 
+mn_properties_dialog_remove_test_mailbox (MNPropertiesDialog * self)
+#line 322 "mn-properties-dialog.c"
+{
+#define __GOB_FUNCTION__ "MN:Properties:Dialog::remove_test_mailbox"
+#line 228 "mn-properties-dialog.gob"
+	g_return_if_fail (self != NULL);
+#line 228 "mn-properties-dialog.gob"
+	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
+#line 329 "mn-properties-dialog.c"
+{
+#line 230 "mn-properties-dialog.gob"
+	
+    if (selfp->test_mailbox)
+      {
+	mn_mailboxes_remove(mn_shell->mailboxes, selfp->test_mailbox);
+	g_object_unref(selfp->test_mailbox);
+	selfp->test_mailbox = NULL;
+      }
+  }}
+#line 340 "mn-properties-dialog.c"
+#undef __GOB_FUNCTION__
+
+#line 239 "mn-properties-dialog.gob"
 static void 
 mn_properties_dialog_response_h (MNPropertiesDialog * self, int response, gpointer user_data)
-#line 341 "mn-properties-dialog.c"
+#line 346 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::response_h"
-#line 271 "mn-properties-dialog.gob"
+#line 239 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 271 "mn-properties-dialog.gob"
+#line 239 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 348 "mn-properties-dialog.c"
+#line 353 "mn-properties-dialog.c"
 {
-#line 273 "mn-properties-dialog.gob"
+#line 241 "mn-properties-dialog.gob"
 	
     switch (response)
       {
       case GTK_RESPONSE_HELP:
 	{
 	  int current_page;
-	  const char *sections[] = {
+	  static const char *sections[] = {
 	    "properties-general",
 	    "properties-status-icon",
-	    "properties-mail-summary-popup"
+	    "properties-message-popups"
 	  };
 
 	  current_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(selfp->notebook));
@@ -371,59 +376,22 @@ mn_properties_dialog_response_h (MNPropertiesDialog * self, int response, gpoint
 	break;
       }
   }}
-#line 375 "mn-properties-dialog.c"
+#line 380 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 298 "mn-properties-dialog.gob"
-static void 
-mn_properties_dialog_add_position (GtkListStore * store, MNPosition position, const char * label)
-#line 381 "mn-properties-dialog.c"
-{
-#define __GOB_FUNCTION__ "MN:Properties:Dialog::add_position"
-#line 298 "mn-properties-dialog.gob"
-	g_return_if_fail (store != NULL);
-#line 298 "mn-properties-dialog.gob"
-	g_return_if_fail (GTK_IS_LIST_STORE (store));
-#line 298 "mn-properties-dialog.gob"
-	g_return_if_fail (label != NULL);
-#line 390 "mn-properties-dialog.c"
-{
-#line 302 "mn-properties-dialog.gob"
-	
-    GEnumClass *enum_class;
-    GEnumValue *enum_value;
-    GtkTreeIter iter;
-
-    enum_class = g_type_class_ref(MN_TYPE_POSITION);
-    g_assert(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);
-  }}
-#line 412 "mn-properties-dialog.c"
-#undef __GOB_FUNCTION__
-
-#line 322 "mn-properties-dialog.gob"
+#line 266 "mn-properties-dialog.gob"
 static void 
 mn_properties_dialog_update_selected_label (MNPropertiesDialog * self)
-#line 418 "mn-properties-dialog.c"
+#line 386 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::update_selected_label"
-#line 322 "mn-properties-dialog.gob"
+#line 266 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 322 "mn-properties-dialog.gob"
+#line 266 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 425 "mn-properties-dialog.c"
+#line 393 "mn-properties-dialog.c"
 {
-#line 324 "mn-properties-dialog.gob"
+#line 268 "mn-properties-dialog.gob"
 	
     GtkTreeSelection *selection;
     int n_rows;
@@ -444,30 +412,29 @@ mn_properties_dialog_update_selected_label (MNPropertiesDialog * self)
 	g_free(str);
       }
   }}
-#line 448 "mn-properties-dialog.c"
+#line 416 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 345 "mn-properties-dialog.gob"
+#line 289 "mn-properties-dialog.gob"
 static void 
 mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self)
-#line 454 "mn-properties-dialog.c"
+#line 422 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::update_sensitivity"
-#line 345 "mn-properties-dialog.gob"
+#line 289 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 345 "mn-properties-dialog.gob"
+#line 289 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 461 "mn-properties-dialog.c"
+#line 429 "mn-properties-dialog.c"
 {
-#line 347 "mn-properties-dialog.gob"
+#line 291 "mn-properties-dialog.gob"
 	
     gboolean command_new_mail_enabled;
     gboolean command_mail_read_enabled;
     GtkTreeSelection *selection;
     gboolean has_selection;
-    gboolean summary_enabled;
-    gboolean summary_autoclose_enabled;
-    gboolean summary_custom_fonts_enabled;
+    gboolean popups_enabled;
+    gboolean popups_expiration_after_enabled;
 
     command_new_mail_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->command_new_mail_check));
     command_mail_read_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->command_mail_read_check));
@@ -481,208 +448,96 @@ mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self)
     gtk_widget_set_sensitive(selfp->remove, has_selection);
     gtk_widget_set_sensitive(selfp->properties, has_selection);
 
-    summary_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->summary_enable_check));
-    summary_autoclose_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->summary_autoclose_check));
-    summary_custom_fonts_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->summary_custom_fonts_radio));
-
-    gtk_widget_set_sensitive(selfp->summary_autoclose_check, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_minutes_spin, summary_enabled && summary_autoclose_enabled);
-    gtk_widget_set_sensitive(selfp->summary_minutes_label, summary_enabled && summary_autoclose_enabled);
-    gtk_widget_set_sensitive(selfp->summary_seconds_spin, summary_enabled && summary_autoclose_enabled);
-    gtk_widget_set_sensitive(selfp->summary_seconds_label, summary_enabled && summary_autoclose_enabled);
-    gtk_widget_set_sensitive(selfp->summary_only_recent_check, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_position_section_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_position_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_position_combo, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_horizontal_offset_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_horizontal_offset_spin, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_horizontal_pixels_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_vertical_offset_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_vertical_offset_spin, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_vertical_pixels_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_layout_section_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_layout_standard_radio, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_layout_compact_radio, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_fonts_section_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_fonts_from_theme_radio, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_custom_fonts_radio, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_title_font_label, summary_enabled && summary_custom_fonts_enabled);
-    gtk_widget_set_sensitive(selfp->summary_title_font_button, summary_enabled && summary_custom_fonts_enabled);
-    gtk_widget_set_sensitive(selfp->summary_contents_font_label, summary_enabled && summary_custom_fonts_enabled);
-    gtk_widget_set_sensitive(selfp->summary_contents_font_button, summary_enabled && summary_custom_fonts_enabled);
-    gtk_widget_set_sensitive(selfp->summary_test_button, summary_enabled && ! selfp->test_popup);
-  }}
-#line 516 "mn-properties-dialog.c"
-#undef __GOB_FUNCTION__
-
-#line 400 "mn-properties-dialog.gob"
-gboolean 
-mn_properties_dialog_test_popup_displayed (MNPropertiesDialog * self)
-#line 522 "mn-properties-dialog.c"
-{
-#define __GOB_FUNCTION__ "MN:Properties:Dialog::test_popup_displayed"
-#line 400 "mn-properties-dialog.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 400 "mn-properties-dialog.gob"
-	g_return_val_if_fail (MN_IS_PROPERTIES_DIALOG (self), (gboolean )0);
-#line 529 "mn-properties-dialog.c"
-{
-#line 402 "mn-properties-dialog.gob"
-	
-    return selfp->test_popup != NULL;
+    popups_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->popups_enable_check));
+    popups_expiration_after_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->popups_expiration_after_radio));
+
+    gtk_widget_set_sensitive(selfp->popups_position_section_label, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_position_attached_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_position_free_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_section_label, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_default_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_never_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_after_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_minutes_spin, popups_enabled && popups_expiration_after_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_minutes_label, popups_enabled && popups_expiration_after_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_seconds_spin, popups_enabled && popups_expiration_after_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_seconds_label, popups_enabled && popups_expiration_after_enabled);
   }}
-#line 535 "mn-properties-dialog.c"
+#line 467 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 408 "mn-properties-dialog.gob"
+#line 329 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button)
-#line 541 "mn-properties-dialog.c"
+#line 473 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::toggled_h"
-#line 408 "mn-properties-dialog.gob"
+#line 329 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 408 "mn-properties-dialog.gob"
+#line 329 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 548 "mn-properties-dialog.c"
+#line 480 "mn-properties-dialog.c"
 {
-#line 410 "mn-properties-dialog.gob"
+#line 331 "mn-properties-dialog.gob"
 	
     self_update_sensitivity(self);
   }}
-#line 554 "mn-properties-dialog.c"
+#line 486 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 414 "mn-properties-dialog.gob"
+#line 335 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_add_clicked_h (MNPropertiesDialog * self, GtkButton * button)
-#line 560 "mn-properties-dialog.c"
+#line 492 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::add_clicked_h"
-#line 414 "mn-properties-dialog.gob"
+#line 335 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 414 "mn-properties-dialog.gob"
+#line 335 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 567 "mn-properties-dialog.c"
+#line 499 "mn-properties-dialog.c"
 {
-#line 416 "mn-properties-dialog.gob"
+#line 337 "mn-properties-dialog.gob"
 	
     mn_mailbox_view_activate_add(MN_MAILBOX_VIEW(selfp->list));
   }}
-#line 573 "mn-properties-dialog.c"
+#line 505 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 420 "mn-properties-dialog.gob"
+#line 341 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_remove_clicked_h (MNPropertiesDialog * self, GtkButton * button)
-#line 579 "mn-properties-dialog.c"
+#line 511 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::remove_clicked_h"
-#line 420 "mn-properties-dialog.gob"
+#line 341 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 420 "mn-properties-dialog.gob"
+#line 341 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 586 "mn-properties-dialog.c"
+#line 518 "mn-properties-dialog.c"
 {
-#line 422 "mn-properties-dialog.gob"
+#line 343 "mn-properties-dialog.gob"
 	
     mn_mailbox_view_activate_remove(MN_MAILBOX_VIEW(selfp->list));
   }}
-#line 592 "mn-properties-dialog.c"
+#line 524 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 426 "mn-properties-dialog.gob"
+#line 347 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_properties_clicked_h (MNPropertiesDialog * self, GtkButton * button)
-#line 598 "mn-properties-dialog.c"
+#line 530 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::properties_clicked_h"
-#line 426 "mn-properties-dialog.gob"
+#line 347 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 426 "mn-properties-dialog.gob"
+#line 347 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 605 "mn-properties-dialog.c"
+#line 537 "mn-properties-dialog.c"
 {
-#line 428 "mn-properties-dialog.gob"
+#line 349 "mn-properties-dialog.gob"
 	
     mn_mailbox_view_activate_properties(MN_MAILBOX_VIEW(selfp->list));
   }}
-#line 611 "mn-properties-dialog.c"
-#undef __GOB_FUNCTION__
-
-#line 432 "mn-properties-dialog.gob"
-void 
-mn_properties_dialog_summary_enable_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button)
-#line 617 "mn-properties-dialog.c"
-{
-#define __GOB_FUNCTION__ "MN:Properties:Dialog::summary_enable_toggled_h"
-#line 432 "mn-properties-dialog.gob"
-	g_return_if_fail (self != NULL);
-#line 432 "mn-properties-dialog.gob"
-	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 624 "mn-properties-dialog.c"
-{
-#line 434 "mn-properties-dialog.gob"
-	
-    self_update_sensitivity(self);
-
-    if (selfp->test_popup && ! gtk_toggle_button_get_active(button))
-      gtk_widget_destroy(selfp->test_popup);
-  }}
-#line 633 "mn-properties-dialog.c"
-#undef __GOB_FUNCTION__
-
-#line 441 "mn-properties-dialog.gob"
-void 
-mn_properties_dialog_summary_test_button_clicked_h (MNPropertiesDialog * self, GtkButton * button)
-#line 639 "mn-properties-dialog.c"
-{
-#define __GOB_FUNCTION__ "MN:Properties:Dialog::summary_test_button_clicked_h"
-#line 441 "mn-properties-dialog.gob"
-	g_return_if_fail (self != NULL);
-#line 441 "mn-properties-dialog.gob"
-	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 646 "mn-properties-dialog.c"
-{
-#line 443 "mn-properties-dialog.gob"
-	
-    GSList *messages = NULL;
-    time_t now;
-    int i;
-
-    now = mn_time();
-    selfp->test_popup = mn_mail_summary_popup_new();
-
-    for (i = 1; i < 4; i++)
-      {
-	MNMessage *message;
-	char *subject;
-
-	subject = g_strdup_printf(_("Test message #%i"), i);
-	message = mn_message_new(NULL,
-				 NULL,
-				 now,
-				 NULL,
-				 /* translators: header capitalization */
-				 _("Mail Notification Properties Dialog"),
-				 subject,
-				 MN_MESSAGE_NEW);
-	g_free(subject);
-
-	messages = g_slist_append(messages, message);
-      }
-
-    mn_mail_summary_popup_set_messages(MN_MAIL_SUMMARY_POPUP(selfp->test_popup), messages);
-    mn_g_object_slist_free(messages);
-
-    eel_add_weak_pointer(&selfp->test_popup);
-    g_object_weak_ref(G_OBJECT(selfp->test_popup), (GWeakNotify) self_update_sensitivity, self);
-
-    /* close the real mail summary popup if any */
-    mn_shell_close_mail_summary_popup(mn_shell);
-
-    self_update_sensitivity(self);
-    gtk_widget_show(selfp->test_popup);
-  }}
-#line 688 "mn-properties-dialog.c"
+#line 543 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-properties-dialog.gob b/src/mn-properties-dialog.gob
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -22,6 +23,10 @@ requires 2.0.14
 #include "mn-dialog.h"
 %}
 
+%privateheader{
+#include "mn-mailbox.h"
+%}
+
 %{
 #include "config.h"
 #include <glib/gi18n.h>
@@ -31,15 +36,7 @@ requires 2.0.14
 #include "mn-util.h"
 #include "mn-mailbox-view.h"
 #include "mn-shell.h"
-#include "mn-mail-summary-popup.h"
-#include "mn-message.h"
-
-enum
-{
-  POSITION_COLUMN_NICK,
-  POSITION_COLUMN_LABEL,
-  POSITION_N_COLUMNS
-};
+#include "mn-test-mailbox.h"
 %}
 
 class MN:Properties:Dialog from MN:Dialog
@@ -51,6 +48,7 @@ class MN:Properties:Dialog from MN:Dialog
   private GtkWidget *scrolled;
   private GtkWidget *list;
   private GtkWidget *selected_label;
+  private GtkWidget *add;
   private GtkWidget *remove;
   private GtkWidget *properties;
   private GtkWidget *command_new_mail_check;
@@ -66,55 +64,30 @@ class MN:Properties:Dialog from MN:Dialog
   private GtkWidget *icon_tooltip_mail_summary_none_radio;
   private GtkWidget *icon_action_properties_dialog_radio;
   private GtkWidget *icon_action_mail_reader_radio;
+  private GtkWidget *icon_action_open_latest_message_radio;
   private GtkWidget *icon_action_update_radio;
 
-  /* mail summary popup tab */
-  private GtkWidget *summary_enable_check;
-  private GtkWidget *summary_autoclose_check;
-  private GtkWidget *summary_minutes_spin;
-  private GtkWidget *summary_minutes_label;
-  private GtkWidget *summary_seconds_spin;
-  private GtkWidget *summary_seconds_label;
-  private GtkWidget *summary_only_recent_check;
-  private GtkWidget *summary_position_section_label;
-  private GtkWidget *summary_position_label;
-  private GtkWidget *summary_position_combo;
-  private GtkWidget *summary_horizontal_offset_label;
-  private GtkWidget *summary_horizontal_offset_spin;
-  private GtkWidget *summary_horizontal_pixels_label;
-  private GtkWidget *summary_vertical_offset_label;
-  private GtkWidget *summary_vertical_offset_spin;
-  private GtkWidget *summary_vertical_pixels_label;
-  private GtkWidget *summary_layout_section_label;
-  private GtkWidget *summary_layout_standard_radio;
-  private GtkWidget *summary_layout_compact_radio;
-  private GtkWidget *summary_fonts_section_label;
-  private GtkWidget *summary_fonts_from_theme_radio;
-  private GtkWidget *summary_custom_fonts_radio;
-  private GtkWidget *summary_title_font_alignment;
-  private GtkWidget *summary_title_font_label;
-  private GtkWidget *summary_title_font_button;
-  private GtkWidget *summary_contents_font_alignment;
-  private GtkWidget *summary_contents_font_label;
-  private GtkWidget *summary_contents_font_button;
-  private GtkWidget *summary_test_button;
-
-  private GtkWidget *test_popup
-    destroy
-    {
-      if (VAR)
-	{
-	  g_object_weak_unref(G_OBJECT(VAR), (GWeakNotify) self_update_sensitivity, self);
-	  gtk_widget_destroy(VAR);
-	}
-    };
+  /* message popups tab */
+  private GtkWidget *popups_enable_check;
+  private GtkWidget *popups_position_section_label;
+  private GtkWidget *popups_position_attached_radio;
+  private GtkWidget *popups_position_free_radio;
+  private GtkWidget *popups_expiration_section_label;
+  private GtkWidget *popups_expiration_default_radio;
+  private GtkWidget *popups_expiration_never_radio;
+  private GtkWidget *popups_expiration_after_radio;
+  private GtkWidget *popups_expiration_minutes_spin;
+  private GtkWidget *popups_expiration_minutes_label;
+  private GtkWidget *popups_expiration_seconds_spin;
+  private GtkWidget *popups_expiration_seconds_label;
+
+  private MNMailbox *test_mailbox destroy { self_remove_test_mailbox(self); };
 
   init (self)
   {
     GtkSizeGroup *size_group;
     GtkTreeSelection *selection;
-    GtkListStore *position_store;
-    GtkCellRenderer *renderer;
+    GtkWidget *test_messages_check;
 
     mn_container_create_interface(GTK_CONTAINER(self),
 				  UIDIR G_DIR_SEPARATOR_S "properties-dialog.glade",
@@ -124,6 +97,7 @@ class MN:Properties:Dialog from MN:Dialog
 				  "display_seen_mail_check", &selfp->display_seen_mail_check,
 				  "scrolled", &selfp->scrolled,
 				  "selected_label", &selfp->selected_label,
+				  "add", &selfp->add,
 				  "remove", &selfp->remove,
 				  "properties", &selfp->properties,
 				  "command_new_mail_check", &selfp->command_new_mail_check,
@@ -137,44 +111,34 @@ class MN:Properties:Dialog from MN:Dialog
 				  "icon_tooltip_mail_summary_none_radio", &selfp->icon_tooltip_mail_summary_none_radio,
 				  "icon_action_properties_dialog_radio", &selfp->icon_action_properties_dialog_radio,
 				  "icon_action_mail_reader_radio", &selfp->icon_action_mail_reader_radio,
+				  "icon_action_open_latest_message_radio", &selfp->icon_action_open_latest_message_radio,
 				  "icon_action_update_radio", &selfp->icon_action_update_radio,
-				  "summary_enable_check", &selfp->summary_enable_check,
-				  "summary_autoclose_check", &selfp->summary_autoclose_check,
-				  "summary_minutes_spin", &selfp->summary_minutes_spin,
-				  "summary_minutes_label", &selfp->summary_minutes_label,
-				  "summary_seconds_spin", &selfp->summary_seconds_spin,
-				  "summary_seconds_label", &selfp->summary_seconds_label,
-				  "summary_only_recent_check", &selfp->summary_only_recent_check,
-				  "summary_position_section_label", &selfp->summary_position_section_label,
-				  "summary_position_label", &selfp->summary_position_label,
-				  "summary_position_combo", &selfp->summary_position_combo,
-				  "summary_horizontal_offset_label", &selfp->summary_horizontal_offset_label,
-				  "summary_horizontal_offset_spin", &selfp->summary_horizontal_offset_spin,
-				  "summary_horizontal_pixels_label", &selfp->summary_horizontal_pixels_label,
-				  "summary_vertical_offset_label", &selfp->summary_vertical_offset_label,
-				  "summary_vertical_offset_spin", &selfp->summary_vertical_offset_spin,
-				  "summary_vertical_pixels_label", &selfp->summary_vertical_pixels_label,
-				  "summary_layout_section_label", &selfp->summary_layout_section_label,
-				  "summary_layout_standard_radio", &selfp->summary_layout_standard_radio,
-				  "summary_layout_compact_radio", &selfp->summary_layout_compact_radio,
-				  "summary_fonts_section_label", &selfp->summary_fonts_section_label,
-				  "summary_fonts_from_theme_radio", &selfp->summary_fonts_from_theme_radio,
-				  "summary_custom_fonts_radio", &selfp->summary_custom_fonts_radio,
-				  "summary_title_font_alignment", &selfp->summary_title_font_alignment,
-				  "summary_title_font_label", &selfp->summary_title_font_label,
-				  "summary_title_font_button", &selfp->summary_title_font_button,
-				  "summary_contents_font_alignment", &selfp->summary_contents_font_alignment,
-				  "summary_contents_font_label", &selfp->summary_contents_font_label,
-				  "summary_contents_font_button", &selfp->summary_contents_font_button,
-				  "summary_test_button", &selfp->summary_test_button,
+				  "popups_enable_check", &selfp->popups_enable_check,
+				  "popups_position_section_label", &selfp->popups_position_section_label,
+				  "popups_position_attached_radio", &selfp->popups_position_attached_radio,
+				  "popups_position_free_radio", &selfp->popups_position_free_radio,
+				  "popups_expiration_section_label", &selfp->popups_expiration_section_label,
+				  "popups_expiration_default_radio", &selfp->popups_expiration_default_radio,
+				  "popups_expiration_never_radio", &selfp->popups_expiration_never_radio,
+				  "popups_expiration_after_radio", &selfp->popups_expiration_after_radio,
+				  "popups_expiration_minutes_spin", &selfp->popups_expiration_minutes_spin,
+				  "popups_expiration_minutes_label", &selfp->popups_expiration_minutes_label,
+				  "popups_expiration_seconds_spin", &selfp->popups_expiration_seconds_spin,
+				  "popups_expiration_seconds_label", &selfp->popups_expiration_seconds_label,
 				  NULL);
 
     /* translators: header capitalization */
     gtk_window_set_title(GTK_WINDOW(self), _("Mail Notification Properties"));
-    gtk_dialog_add_buttons(GTK_DIALOG(self),
-			   GTK_STOCK_HELP, GTK_RESPONSE_HELP,
-			   GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE,
-			   NULL);
+
+    gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
+
+    /* translators: "test" is an adjective, not a verb */
+    test_messages_check = gtk_check_button_new_with_mnemonic(_("_Test messages"));
+    gtk_box_pack_start(GTK_BOX(GTK_DIALOG(self)->action_area), test_messages_check, FALSE, FALSE, 0);
+    gtk_widget_show(test_messages_check);
+    g_signal_connect_swapped(test_messages_check, "toggled", G_CALLBACK(self_test_messages_toggled_h), self);
+
+    gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
 
     selfp->list = mn_mailbox_view_new();
     gtk_container_add(GTK_CONTAINER(selfp->scrolled), selfp->list);
@@ -193,31 +157,6 @@ class MN:Properties:Dialog from MN:Dialog
     gtk_size_group_add_widget(size_group, selfp->command_mail_read_check);
     g_object_unref(size_group);
 
-    size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-    gtk_size_group_add_widget(size_group, selfp->summary_autoclose_check);
-    gtk_size_group_add_widget(size_group, selfp->summary_position_label);
-    gtk_size_group_add_widget(size_group, selfp->summary_horizontal_offset_label);
-    gtk_size_group_add_widget(size_group, selfp->summary_vertical_offset_label);
-    gtk_size_group_add_widget(size_group, selfp->summary_title_font_alignment);
-    gtk_size_group_add_widget(size_group, selfp->summary_contents_font_alignment);
-    g_object_unref(size_group);
-
-    position_store = gtk_list_store_new(POSITION_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
-
-    self_add_position(position_store, MN_POSITION_TOP_LEFT, _("top left"));
-    self_add_position(position_store, MN_POSITION_TOP_RIGHT, _("top right"));
-    self_add_position(position_store, MN_POSITION_BOTTOM_LEFT, _("bottom left"));
-    self_add_position(position_store, MN_POSITION_BOTTOM_RIGHT, _("bottom right"));
-
-    renderer = gtk_cell_renderer_text_new();
-    gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(selfp->summary_position_combo), renderer, TRUE);
-    gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(selfp->summary_position_combo), renderer,
-				   "text", POSITION_COLUMN_LABEL,
-				   NULL);
-
-    gtk_combo_box_set_model(GTK_COMBO_BOX(selfp->summary_position_combo), GTK_TREE_MODEL(position_store));
-    g_object_unref(position_store);
-
     mn_conf_link(self, MN_CONF_PROPERTIES_DIALOG,
 		 selfp->display_seen_mail_check, MN_CONF_DISPLAY_SEEN_MAIL, "active",
 		 selfp->command_new_mail_check, MN_CONF_COMMANDS_NEW_MAIL_ENABLED, "active",
@@ -226,15 +165,9 @@ class MN:Properties:Dialog from MN:Dialog
 		 selfp->command_mail_read_entry, MN_CONF_COMMANDS_MAIL_READ_COMMAND, "text",
 		 selfp->icon_blink_check, MN_CONF_BLINK_ON_ERRORS, "active",
 		 selfp->icon_always_display_check, MN_CONF_ALWAYS_DISPLAY_ICON, "active",
-		 selfp->summary_enable_check, MN_CONF_MAIL_SUMMARY_POPUP_ENABLE, "active",
-		 selfp->summary_autoclose_check, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE, "active",
-		 selfp->summary_minutes_spin, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES,
-		 selfp->summary_seconds_spin, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS,
-		 selfp->summary_only_recent_check, MN_CONF_MAIL_SUMMARY_POPUP_ONLY_RECENT, "active",
-		 selfp->summary_horizontal_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET,
-		 selfp->summary_vertical_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET,
-		 selfp->summary_title_font_button, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT, "font-name",
-		 selfp->summary_contents_font_button, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT, "font-name",
+		 selfp->popups_enable_check, MN_CONF_POPUPS_ENABLED, "active",
+		 selfp->popups_expiration_minutes_spin, MN_CONF_POPUPS_EXPIRATION_DELAY_MINUTES,
+		 selfp->popups_expiration_seconds_spin, MN_CONF_POPUPS_EXPIRATION_DELAY_SECONDS,
 		 NULL);
     mn_conf_link_radio_group_to_enum(MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY,
 				     MN_CONF_TOOLTIP_MAIL_SUMMARY,
@@ -246,29 +179,64 @@ class MN:Properties:Dialog from MN:Dialog
 				     MN_CONF_CLICK_ACTION,
 				     selfp->icon_action_properties_dialog_radio, MN_ACTION_DISPLAY_PROPERTIES_DIALOG,
 				     selfp->icon_action_mail_reader_radio, MN_ACTION_LAUNCH_MAIL_READER,
+				     selfp->icon_action_open_latest_message_radio, MN_ACTION_OPEN_LATEST_MESSAGE,
 				     selfp->icon_action_update_radio, MN_ACTION_UPDATE_MAIL_STATUS,
 				     NULL);
-    mn_conf_link_radio_group_to_enum(MN_TYPE_MAIL_SUMMARY_POPUP_LAYOUT,
-				     MN_CONF_MAIL_SUMMARY_POPUP_LAYOUT,
-				     selfp->summary_layout_standard_radio, MN_MAIL_SUMMARY_POPUP_LAYOUT_STANDARD,
-				     selfp->summary_layout_compact_radio, MN_MAIL_SUMMARY_POPUP_LAYOUT_COMPACT,
+    mn_conf_link_radio_group_to_enum(MN_TYPE_POPUP_POSITION,
+				     MN_CONF_POPUPS_POSITION,
+				     selfp->popups_position_attached_radio, MN_POPUP_POSITION_ATTACHED,
+				     selfp->popups_position_free_radio, MN_POPUP_POSITION_FREE,
 				     NULL);
-    mn_conf_link_radio_group_to_enum(MN_TYPE_ASPECT_SOURCE,
-				     MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE,
-				     selfp->summary_fonts_from_theme_radio, MN_ASPECT_SOURCE_THEME,
-				     selfp->summary_custom_fonts_radio, MN_ASPECT_SOURCE_CUSTOM,
+    mn_conf_link_radio_group_to_enum(MN_TYPE_EXPIRATION_ENABLED,
+				     MN_CONF_POPUPS_EXPIRATION_ENABLED,
+				     selfp->popups_expiration_default_radio, MN_EXPIRATION_ENABLED_DEFAULT,
+				     selfp->popups_expiration_never_radio, MN_EXPIRATION_ENABLED_FALSE,
+				     selfp->popups_expiration_after_radio, MN_EXPIRATION_ENABLED_TRUE,
 				     NULL);
-    mn_conf_link_combo_box_to_string(GTK_COMBO_BOX(selfp->summary_position_combo),
-				     POSITION_COLUMN_NICK,
-				     MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
 
     self_update_selected_label(self);
     self_update_sensitivity(self);
 
+    /*
+     * HIG chapter 3:
+     * "When opening a dialog, provide initial keyboard focus to the
+     * component that you expect users to operate first. This focus is
+     * especially important for users who must use a keyboard to
+     * navigate your application."
+     */
+    gtk_widget_grab_focus(selfp->add);
+
     g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL);
   }
 
   private void
+    test_messages_toggled_h (self, GtkToggleButton *button)
+  {
+    if (gtk_toggle_button_get_active(button))
+      {
+	if (! selfp->test_mailbox)
+	  {
+	    selfp->test_mailbox = mn_test_mailbox_new();
+	    mn_mailbox_seal(selfp->test_mailbox);
+	    mn_mailboxes_add(mn_shell->mailboxes, selfp->test_mailbox);
+	  }
+      }
+    else
+      self_remove_test_mailbox(self);
+  }
+
+  private void
+    remove_test_mailbox (self)
+  {
+    if (selfp->test_mailbox)
+      {
+	mn_mailboxes_remove(mn_shell->mailboxes, selfp->test_mailbox);
+	g_object_unref(selfp->test_mailbox);
+	selfp->test_mailbox = NULL;
+      }
+  }
+
+  private void
     response_h (self, int response, gpointer user_data)
   {
     switch (response)
@@ -276,10 +244,10 @@ class MN:Properties:Dialog from MN:Dialog
       case GTK_RESPONSE_HELP:
 	{
 	  int current_page;
-	  const char *sections[] = {
+	  static const char *sections[] = {
 	    "properties-general",
 	    "properties-status-icon",
-	    "properties-mail-summary-popup"
+	    "properties-message-popups"
 	  };
 
 	  current_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(selfp->notebook));
@@ -296,30 +264,6 @@ class MN:Properties:Dialog from MN:Dialog
   }
 
   private void
-    add_position (Gtk:List:Store *store (check null type),
-		  MNPosition position,
-		  const char *label (check null))
-  {
-    GEnumClass *enum_class;
-    GEnumValue *enum_value;
-    GtkTreeIter iter;
-
-    enum_class = g_type_class_ref(MN_TYPE_POSITION);
-    g_assert(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);
-  }
-
-  private void
     update_selected_label (self)
   {
     GtkTreeSelection *selection;
@@ -349,9 +293,8 @@ class MN:Properties:Dialog from MN:Dialog
     gboolean command_mail_read_enabled;
     GtkTreeSelection *selection;
     gboolean has_selection;
-    gboolean summary_enabled;
-    gboolean summary_autoclose_enabled;
-    gboolean summary_custom_fonts_enabled;
+    gboolean popups_enabled;
+    gboolean popups_expiration_after_enabled;
 
     command_new_mail_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->command_new_mail_check));
     command_mail_read_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->command_mail_read_check));
@@ -365,42 +308,20 @@ class MN:Properties:Dialog from MN:Dialog
     gtk_widget_set_sensitive(selfp->remove, has_selection);
     gtk_widget_set_sensitive(selfp->properties, has_selection);
 
-    summary_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->summary_enable_check));
-    summary_autoclose_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->summary_autoclose_check));
-    summary_custom_fonts_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->summary_custom_fonts_radio));
-
-    gtk_widget_set_sensitive(selfp->summary_autoclose_check, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_minutes_spin, summary_enabled && summary_autoclose_enabled);
-    gtk_widget_set_sensitive(selfp->summary_minutes_label, summary_enabled && summary_autoclose_enabled);
-    gtk_widget_set_sensitive(selfp->summary_seconds_spin, summary_enabled && summary_autoclose_enabled);
-    gtk_widget_set_sensitive(selfp->summary_seconds_label, summary_enabled && summary_autoclose_enabled);
-    gtk_widget_set_sensitive(selfp->summary_only_recent_check, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_position_section_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_position_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_position_combo, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_horizontal_offset_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_horizontal_offset_spin, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_horizontal_pixels_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_vertical_offset_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_vertical_offset_spin, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_vertical_pixels_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_layout_section_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_layout_standard_radio, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_layout_compact_radio, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_fonts_section_label, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_fonts_from_theme_radio, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_custom_fonts_radio, summary_enabled);
-    gtk_widget_set_sensitive(selfp->summary_title_font_label, summary_enabled && summary_custom_fonts_enabled);
-    gtk_widget_set_sensitive(selfp->summary_title_font_button, summary_enabled && summary_custom_fonts_enabled);
-    gtk_widget_set_sensitive(selfp->summary_contents_font_label, summary_enabled && summary_custom_fonts_enabled);
-    gtk_widget_set_sensitive(selfp->summary_contents_font_button, summary_enabled && summary_custom_fonts_enabled);
-    gtk_widget_set_sensitive(selfp->summary_test_button, summary_enabled && ! selfp->test_popup);
-  }
-
-  public gboolean
-    test_popup_displayed (self)
-  {
-    return selfp->test_popup != NULL;
+    popups_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->popups_enable_check));
+    popups_expiration_after_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->popups_expiration_after_radio));
+
+    gtk_widget_set_sensitive(selfp->popups_position_section_label, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_position_attached_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_position_free_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_section_label, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_default_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_never_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_after_radio, popups_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_minutes_spin, popups_enabled && popups_expiration_after_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_minutes_label, popups_enabled && popups_expiration_after_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_seconds_spin, popups_enabled && popups_expiration_after_enabled);
+    gtk_widget_set_sensitive(selfp->popups_expiration_seconds_label, popups_enabled && popups_expiration_after_enabled);
   }
 
   /* libglade callbacks */
@@ -428,55 +349,4 @@ class MN:Properties:Dialog from MN:Dialog
   {
     mn_mailbox_view_activate_properties(MN_MAILBOX_VIEW(selfp->list));
   }
-
-  protected void
-    summary_enable_toggled_h (self, GtkToggleButton *button)
-  {
-    self_update_sensitivity(self);
-
-    if (selfp->test_popup && ! gtk_toggle_button_get_active(button))
-      gtk_widget_destroy(selfp->test_popup);
-  }
-
-  protected void
-    summary_test_button_clicked_h (self, GtkButton *button)
-  {
-    GSList *messages = NULL;
-    time_t now;
-    int i;
-
-    now = mn_time();
-    selfp->test_popup = mn_mail_summary_popup_new();
-
-    for (i = 1; i < 4; i++)
-      {
-	MNMessage *message;
-	char *subject;
-
-	subject = g_strdup_printf(_("Test message #%i"), i);
-	message = mn_message_new(NULL,
-				 NULL,
-				 now,
-				 NULL,
-				 /* translators: header capitalization */
-				 _("Mail Notification Properties Dialog"),
-				 subject,
-				 MN_MESSAGE_NEW);
-	g_free(subject);
-
-	messages = g_slist_append(messages, message);
-      }
-
-    mn_mail_summary_popup_set_messages(MN_MAIL_SUMMARY_POPUP(selfp->test_popup), messages);
-    mn_g_object_slist_free(messages);
-
-    eel_add_weak_pointer(&selfp->test_popup);
-    g_object_weak_ref(G_OBJECT(selfp->test_popup), (GWeakNotify) self_update_sensitivity, self);
-
-    /* close the real mail summary popup if any */
-    mn_shell_close_mail_summary_popup(mn_shell);
-
-    self_update_sensitivity(self);
-    gtk_widget_show(selfp->test_popup);
-  }
 }
diff --git a/src/mn-properties-dialog.h b/src/mn-properties-dialog.h
@@ -54,7 +54,6 @@ struct _MNPropertiesDialogClass {
  * Public methods
  */
 GType	mn_properties_dialog_get_type	(void);
-gboolean 	mn_properties_dialog_test_popup_displayed	(MNPropertiesDialog * self);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-reentrant-mailbox-private.h b/src/mn-reentrant-mailbox-private.h
@@ -10,19 +10,19 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 25 "mn-reentrant-mailbox.gob"
+#line 26 "mn-reentrant-mailbox.gob"
 
 #include "mn-locked-callback.h"
 
 #line 18 "mn-reentrant-mailbox-private.h"
 struct _MNReentrantMailboxPrivate {
-#line 44 "mn-reentrant-mailbox.gob"
+#line 45 "mn-reentrant-mailbox.gob"
 	GMutex * mutex;
-#line 46 "mn-reentrant-mailbox.gob"
+#line 47 "mn-reentrant-mailbox.gob"
 	MNLockedGSource * queue_check_source;
-#line 48 "mn-reentrant-mailbox.gob"
-	unsigned long check_id;
 #line 49 "mn-reentrant-mailbox.gob"
+	unsigned long check_id;
+#line 50 "mn-reentrant-mailbox.gob"
 	unsigned long check_unique_id;
 #line 28 "mn-reentrant-mailbox-private.h"
 };
diff --git a/src/mn-reentrant-mailbox.c b/src/mn-reentrant-mailbox.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-reentrant-mailbox.gob"
+#line 30 "mn-reentrant-mailbox.gob"
 
 #include "config.h"
 #include <gtk/gtk.h>
@@ -120,10 +120,10 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::finalize"
 	MNReentrantMailbox *self G_GNUC_UNUSED = MN_REENTRANT_MAILBOX (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 63 "mn-reentrant-mailbox.gob"
+#line 64 "mn-reentrant-mailbox.gob"
 	___2_mn_reentrant_mailbox_finalize(obj_self);
 #line 126 "mn-reentrant-mailbox.c"
-#line 44 "mn-reentrant-mailbox.gob"
+#line 45 "mn-reentrant-mailbox.gob"
 	if(self->_priv->mutex) { g_mutex_free ((gpointer) self->_priv->mutex); self->_priv->mutex = NULL; }
 #line 129 "mn-reentrant-mailbox.c"
 }
@@ -134,7 +134,7 @@ mn_reentrant_mailbox_init (MNReentrantMailbox * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::init"
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_REENTRANT_MAILBOX,MNReentrantMailboxPrivate);
-#line 44 "mn-reentrant-mailbox.gob"
+#line 45 "mn-reentrant-mailbox.gob"
 	o->_priv->mutex = g_mutex_new();
 #line 140 "mn-reentrant-mailbox.c"
 }
@@ -150,11 +150,11 @@ mn_reentrant_mailbox_class_init (MNReentrantMailboxClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 51 "mn-reentrant-mailbox.gob"
+#line 52 "mn-reentrant-mailbox.gob"
 	mn_mailbox_class->removed = ___1_mn_reentrant_mailbox_removed;
-#line 63 "mn-reentrant-mailbox.gob"
+#line 64 "mn-reentrant-mailbox.gob"
 	g_object_class->finalize = ___finalize;
-#line 103 "mn-reentrant-mailbox.gob"
+#line 104 "mn-reentrant-mailbox.gob"
 	mn_mailbox_class->check = ___5_mn_reentrant_mailbox_check;
 #line 160 "mn-reentrant-mailbox.c"
 	c->reentrant_check = NULL;
@@ -163,7 +163,7 @@ mn_reentrant_mailbox_class_init (MNReentrantMailboxClass * c G_GNUC_UNUSED)
 
 
 
-#line 51 "mn-reentrant-mailbox.gob"
+#line 52 "mn-reentrant-mailbox.gob"
 static void 
 ___1_mn_reentrant_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 170 "mn-reentrant-mailbox.c"
@@ -173,7 +173,7 @@ ___1_mn_reentrant_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::removed"
 {
-#line 53 "mn-reentrant-mailbox.gob"
+#line 54 "mn-reentrant-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -187,7 +187,7 @@ ___1_mn_reentrant_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 63 "mn-reentrant-mailbox.gob"
+#line 64 "mn-reentrant-mailbox.gob"
 static void 
 ___2_mn_reentrant_mailbox_finalize (GObject * object G_GNUC_UNUSED)
 #line 194 "mn-reentrant-mailbox.c"
@@ -197,7 +197,7 @@ ___2_mn_reentrant_mailbox_finalize (GObject * object G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::finalize"
 {
-#line 65 "mn-reentrant-mailbox.gob"
+#line 66 "mn-reentrant-mailbox.gob"
 	
     Self *self = SELF(object);
 
@@ -210,19 +210,19 @@ ___2_mn_reentrant_mailbox_finalize (GObject * object G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 83 "mn-reentrant-mailbox.gob"
+#line 84 "mn-reentrant-mailbox.gob"
 void 
 mn_reentrant_mailbox_queue_check (MNReentrantMailbox * self)
 #line 217 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::queue_check"
-#line 83 "mn-reentrant-mailbox.gob"
+#line 84 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 83 "mn-reentrant-mailbox.gob"
+#line 84 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self));
 #line 224 "mn-reentrant-mailbox.c"
 {
-#line 85 "mn-reentrant-mailbox.gob"
+#line 86 "mn-reentrant-mailbox.gob"
 	
     if (selfp->queue_check_source)
       mn_locked_g_source_remove(selfp->queue_check_source);
@@ -232,14 +232,14 @@ mn_reentrant_mailbox_queue_check (MNReentrantMailbox * self)
 #line 233 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 92 "mn-reentrant-mailbox.gob"
+#line 93 "mn-reentrant-mailbox.gob"
 static gboolean 
 mn_reentrant_mailbox_queue_check_cb (gpointer data)
 #line 239 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::queue_check_cb"
 {
-#line 94 "mn-reentrant-mailbox.gob"
+#line 95 "mn-reentrant-mailbox.gob"
 	
     Self *self = data;
 
@@ -251,7 +251,7 @@ mn_reentrant_mailbox_queue_check_cb (gpointer data)
 #line 252 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 103 "mn-reentrant-mailbox.gob"
+#line 104 "mn-reentrant-mailbox.gob"
 static void 
 ___5_mn_reentrant_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 258 "mn-reentrant-mailbox.c"
@@ -261,7 +261,7 @@ ___5_mn_reentrant_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check"
 {
-#line 105 "mn-reentrant-mailbox.gob"
+#line 106 "mn-reentrant-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     CheckInfo *info;
@@ -287,14 +287,14 @@ ___5_mn_reentrant_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 127 "mn-reentrant-mailbox.gob"
+#line 128 "mn-reentrant-mailbox.gob"
 static void 
 mn_reentrant_mailbox_check_thread_cb (CheckInfo * info)
 #line 294 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check_thread_cb"
 {
-#line 129 "mn-reentrant-mailbox.gob"
+#line 130 "mn-reentrant-mailbox.gob"
 	
     Self *self = info->self;
 
@@ -317,15 +317,15 @@ mn_reentrant_mailbox_check_thread_cb (CheckInfo * info)
 #line 318 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 149 "mn-reentrant-mailbox.gob"
+#line 150 "mn-reentrant-mailbox.gob"
 static void 
 mn_reentrant_mailbox_reentrant_check (MNReentrantMailbox * self, unsigned long check_id)
 #line 324 "mn-reentrant-mailbox.c"
 {
 	MNReentrantMailboxClass *klass;
-#line 149 "mn-reentrant-mailbox.gob"
+#line 150 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 149 "mn-reentrant-mailbox.gob"
+#line 150 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self));
 #line 331 "mn-reentrant-mailbox.c"
 	klass = MN_REENTRANT_MAILBOX_GET_CLASS(self);
@@ -334,19 +334,19 @@ mn_reentrant_mailbox_reentrant_check (MNReentrantMailbox * self, unsigned long c
 		(*klass->reentrant_check)(self,check_id);
 }
 
-#line 152 "mn-reentrant-mailbox.gob"
+#line 153 "mn-reentrant-mailbox.gob"
 gboolean 
 mn_reentrant_mailbox_check_aborted (MNReentrantMailbox * self, unsigned long check_id)
 #line 341 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check_aborted"
-#line 152 "mn-reentrant-mailbox.gob"
+#line 153 "mn-reentrant-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 152 "mn-reentrant-mailbox.gob"
+#line 153 "mn-reentrant-mailbox.gob"
 	g_return_val_if_fail (MN_IS_REENTRANT_MAILBOX (self), (gboolean )0);
 #line 348 "mn-reentrant-mailbox.c"
 {
-#line 154 "mn-reentrant-mailbox.gob"
+#line 155 "mn-reentrant-mailbox.gob"
 	
     gboolean aborted;
 
@@ -359,57 +359,57 @@ mn_reentrant_mailbox_check_aborted (MNReentrantMailbox * self, unsigned long che
 #line 360 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 164 "mn-reentrant-mailbox.gob"
+#line 165 "mn-reentrant-mailbox.gob"
 gboolean 
 mn_reentrant_mailbox_check_aborted_unlocked (MNReentrantMailbox * self, unsigned long check_id)
 #line 366 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check_aborted_unlocked"
-#line 164 "mn-reentrant-mailbox.gob"
+#line 165 "mn-reentrant-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 164 "mn-reentrant-mailbox.gob"
+#line 165 "mn-reentrant-mailbox.gob"
 	g_return_val_if_fail (MN_IS_REENTRANT_MAILBOX (self), (gboolean )0);
 #line 373 "mn-reentrant-mailbox.c"
 {
-#line 166 "mn-reentrant-mailbox.gob"
+#line 167 "mn-reentrant-mailbox.gob"
 	
     return selfp->check_id != check_id;
   }}
 #line 379 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 170 "mn-reentrant-mailbox.gob"
+#line 171 "mn-reentrant-mailbox.gob"
 void 
 mn_reentrant_mailbox_lock (MNReentrantMailbox * self)
 #line 385 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::lock"
-#line 170 "mn-reentrant-mailbox.gob"
+#line 171 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 170 "mn-reentrant-mailbox.gob"
+#line 171 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self));
 #line 392 "mn-reentrant-mailbox.c"
 {
-#line 172 "mn-reentrant-mailbox.gob"
+#line 173 "mn-reentrant-mailbox.gob"
 	
     g_mutex_lock(selfp->mutex);
   }}
 #line 398 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 176 "mn-reentrant-mailbox.gob"
+#line 177 "mn-reentrant-mailbox.gob"
 void 
 mn_reentrant_mailbox_unlock (MNReentrantMailbox * self)
 #line 404 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::unlock"
-#line 176 "mn-reentrant-mailbox.gob"
+#line 177 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 176 "mn-reentrant-mailbox.gob"
+#line 177 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self));
 #line 411 "mn-reentrant-mailbox.c"
 {
-#line 178 "mn-reentrant-mailbox.gob"
+#line 179 "mn-reentrant-mailbox.gob"
 	
     g_mutex_unlock(selfp->mutex);
   }}
diff --git a/src/mn-reentrant-mailbox.gob b/src/mn-reentrant-mailbox.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
diff --git a/src/mn-sasl.c b/src/mn-sasl.c
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
diff --git a/src/mn-sasl.h b/src/mn-sasl.h
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_SASL_H
diff --git a/src/mn-shell-private.h b/src/mn-shell-private.h
@@ -9,30 +9,16 @@
 extern "C" {
 #endif /* __cplusplus */
 
-
-#line 27 "mn-shell.gob"
-
-#include "mn-mail-icon.h"
-
-#line 18 "mn-shell-private.h"
 struct _MNShellPrivate {
-#line 59 "mn-shell.gob"
-	MNMailIcon * icon;
-#line 60 "mn-shell.gob"
-	gboolean has_new;
 #line 62 "mn-shell.gob"
-	GtkWidget * properties_dialog;
+	gboolean has_new;
 #line 64 "mn-shell.gob"
+	GtkWidget * properties_dialog;
+#line 65 "mn-shell.gob"
 	GSList * mailbox_properties_dialogs;
 #line 66 "mn-shell.gob"
-	GtkWidget * popup;
-#line 67 "mn-shell.gob"
-	GSList * popup_messages;
-#line 68 "mn-shell.gob"
-	GHashTable * popup_previous_messages;
-#line 70 "mn-shell.gob"
 	GtkWidget * about_dialog;
-#line 36 "mn-shell-private.h"
+#line 22 "mn-shell-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-shell.c b/src/mn-shell.c
@@ -22,25 +22,26 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 31 "mn-shell.gob"
+#line 30 "mn-shell.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
 #include <eel/eel.h>
+#include <libxml/tree.h>
 #include "mn-properties-dialog.h"
 #include "mn-util.h"
 #include "mn-conf.h"
 #include "mn-mailboxes.h"
 #include "mn-about-dialog.h"
-#include "mn-mail-summary-popup.h"
 #include "mn-standard-message-view.h"
 #include "mn-compact-message-view.h"
 #include "mn-message.h"
 #include "mn-stock.h"
+#include "mn-locked-callback.h"
 
 MNShell *mn_shell = NULL;
 
-#line 44 "mn-shell.c"
+#line 45 "mn-shell.c"
 static const GEnumValue _mn_shell_tooltip_mail_summary_values[] = {
 	{ MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD, (char *)"MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD", (char *)"standard" },
 	{ MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT, (char *)"MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT", (char *)"compact" },
@@ -81,9 +82,9 @@ static void mn_shell_notify_blink_on_errors_cb (GConfClient * client, unsigned i
 static void mn_shell_notify_always_display_icon_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_notify_mail_reader_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_notify_tooltip_mail_summary_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
-static void mn_shell_notify_mail_summary_popup_enable_cb (GConfClient * client, unsigned int 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_mail_reader_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
+static void mn_shell_icon_activate_open_latest_message_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;
@@ -96,9 +97,7 @@ static void mn_shell_update_tooltip (MNShell * self) G_GNUC_UNUSED;
 static int mn_shell_new_mailboxes_compare_cb (MNMailbox * a, MNMailbox * b) G_GNUC_UNUSED;
 static GtkWidget * mn_shell_tooltip_section_new (GtkVBox ** vbox, const char * title) G_GNUC_UNUSED;
 static void mn_shell_tooltip_text_section_new (GtkVBox ** vbox, const char * title, const char * text) G_GNUC_UNUSED;
-static void mn_shell_update_popup (MNShell * self, gboolean has_new) G_GNUC_UNUSED;
-static gboolean mn_shell_clean_popup_previous_messages_cb (const char * id, MNMessage * message, gpointer user_data) G_GNUC_UNUSED;
-static void mn_shell_popup_weak_notify_cb (MNShell * self, GObject * former_object) G_GNUC_UNUSED;
+static void mn_shell_open_latest_message (MNShell * self) G_GNUC_UNUSED;
 static void mn_shell_display_window (MNShell * self, GType type, GtkWidget ** ptr) G_GNUC_UNUSED;
 static void mn_shell_mailbox_properties_dialog_weak_notify_cb (gpointer data, GObject * former_object) G_GNUC_UNUSED;
 
@@ -113,9 +112,9 @@ static GObjectClass *parent_class = NULL;
 #define self_notify_always_display_icon_cb mn_shell_notify_always_display_icon_cb
 #define self_notify_mail_reader_cb mn_shell_notify_mail_reader_cb
 #define self_notify_tooltip_mail_summary_cb mn_shell_notify_tooltip_mail_summary_cb
-#define self_notify_mail_summary_popup_enable_cb mn_shell_notify_mail_summary_popup_enable_cb
 #define self_icon_activate_h mn_shell_icon_activate_h
 #define self_icon_activate_mail_reader_h mn_shell_icon_activate_mail_reader_h
+#define self_icon_activate_open_latest_message_h mn_shell_icon_activate_open_latest_message_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
@@ -128,17 +127,15 @@ static GObjectClass *parent_class = NULL;
 #define self_new_mailboxes_compare_cb mn_shell_new_mailboxes_compare_cb
 #define self_tooltip_section_new mn_shell_tooltip_section_new
 #define self_tooltip_text_section_new mn_shell_tooltip_text_section_new
-#define self_update_popup mn_shell_update_popup
-#define self_clean_popup_previous_messages_cb mn_shell_clean_popup_previous_messages_cb
-#define self_popup_weak_notify_cb mn_shell_popup_weak_notify_cb
+#define self_open_latest_message mn_shell_open_latest_message
 #define self_new mn_shell_new
 #define self_display_properties_dialog mn_shell_display_properties_dialog
 #define self_display_about_dialog mn_shell_display_about_dialog
 #define self_display_window mn_shell_display_window
-#define self_close_mail_summary_popup mn_shell_close_mail_summary_popup
 #define self_add_mailbox_properties_dialog mn_shell_add_mailbox_properties_dialog
 #define self_mailbox_properties_dialog_weak_notify_cb mn_shell_mailbox_properties_dialog_weak_notify_cb
 #define self_get_mailbox_properties_dialog mn_shell_get_mailbox_properties_dialog
+#define self_get_summary mn_shell_get_summary
 GType
 mn_shell_get_type (void)
 {
@@ -191,7 +188,7 @@ ___dispose (GObject *obj_self)
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
 #line 58 "mn-shell.gob"
 	if(self->mailboxes) { g_object_unref ((gpointer) self->mailboxes); self->mailboxes = NULL; }
-#line 195 "mn-shell.c"
+#line 192 "mn-shell.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -202,15 +199,9 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Shell::finalize"
 	MNShell *self G_GNUC_UNUSED = MN_SHELL (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 100 "mn-shell.gob"
+#line 97 "mn-shell.gob"
 	___2_mn_shell_finalize(obj_self);
-#line 208 "mn-shell.c"
-#line 67 "mn-shell.gob"
-	if(self->_priv->popup_messages) { mn_g_object_slist_free ((gpointer) self->_priv->popup_messages); self->_priv->popup_messages = NULL; }
-#line 211 "mn-shell.c"
-#line 68 "mn-shell.gob"
-	if(self->_priv->popup_previous_messages) { g_hash_table_destroy ((gpointer) self->_priv->popup_previous_messages); self->_priv->popup_previous_messages = NULL; }
-#line 214 "mn-shell.c"
+#line 205 "mn-shell.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -224,27 +215,24 @@ mn_shell_class_init (MNShellClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 100 "mn-shell.gob"
+#line 97 "mn-shell.gob"
 	g_object_class->finalize = ___finalize;
-#line 230 "mn-shell.c"
+#line 221 "mn-shell.c"
 	g_object_class->dispose = ___dispose;
 }
 #undef __GOB_FUNCTION__
-#line 72 "mn-shell.gob"
+#line 68 "mn-shell.gob"
 static void 
 mn_shell_init (MNShell * self G_GNUC_UNUSED)
-#line 237 "mn-shell.c"
+#line 228 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_SHELL,MNShellPrivate);
 #line 58 "mn-shell.gob"
 	self->mailboxes = mn_mailboxes_new();
-#line 243 "mn-shell.c"
-#line 68 "mn-shell.gob"
-	self->_priv->popup_previous_messages = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_object_unref);
-#line 246 "mn-shell.c"
+#line 234 "mn-shell.c"
  {
-#line 73 "mn-shell.gob"
+#line 69 "mn-shell.gob"
 
     g_assert(mn_shell == NULL);
 
@@ -258,7 +246,6 @@ mn_shell_init (MNShell * self G_GNUC_UNUSED)
 						   MN_CONF_ALWAYS_DISPLAY_ICON, self_notify_always_display_icon_cb, self,
 						   MN_CONF_GNOME_MAIL_READER_NAMESPACE, self_notify_mail_reader_cb, self,
 						   MN_CONF_TOOLTIP_MAIL_SUMMARY, self_notify_tooltip_mail_summary_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_ENABLE, self_notify_mail_summary_popup_enable_cb, self,
 						   NULL);
 
     g_object_connect(self->mailboxes,
@@ -270,67 +257,70 @@ mn_shell_init (MNShell * self G_GNUC_UNUSED)
 		     "swapped-signal::error-changed", self_update_tooltip, self,
 		     "swapped-signal::error-changed", self_update_icon, self,
 		     NULL);
+
+    self->popups = mn_popups_new();
   
-#line 275 "mn-shell.c"
+#line 264 "mn-shell.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 100 "mn-shell.gob"
+#line 97 "mn-shell.gob"
 static void 
 ___2_mn_shell_finalize (GObject * object G_GNUC_UNUSED)
-#line 285 "mn-shell.c"
+#line 274 "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 102 "mn-shell.gob"
+#line 99 "mn-shell.gob"
 	
     gtk_main_quit();
     PARENT_HANDLER(object);
   }}
-#line 297 "mn-shell.c"
+#line 286 "mn-shell.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 107 "mn-shell.gob"
+#line 104 "mn-shell.gob"
 static void 
 mn_shell_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data)
-#line 304 "mn-shell.c"
+#line 293 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::messages_changed_h"
 {
-#line 111 "mn-shell.gob"
+#line 108 "mn-shell.gob"
 	
     Self *self = user_data;
 
+    if (mn_conf_has_command(MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE))
+      mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_CHANGED_COMMAND);
+
     if (has_new)
       {
 	if (mn_conf_has_command(MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE))
-	  mn_conf_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND, FALSE);
+	  mn_conf_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
       }
 
-    if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
-      self_update_popup(self, has_new);
-
+    self_update_sensitivity(self);
     self_update_tooltip(self);
     self_update_icon(self);
   }}
-#line 324 "mn-shell.c"
+#line 314 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 127 "mn-shell.gob"
+#line 125 "mn-shell.gob"
 static void 
 mn_shell_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
-#line 330 "mn-shell.c"
+#line 320 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::mailbox_removed_h"
 {
-#line 131 "mn-shell.gob"
+#line 129 "mn-shell.gob"
 	
     Self *self = user_data;
     MNMailboxPropertiesDialog *dialog;
@@ -340,28 +330,29 @@ mn_shell_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpoint
     if (dialog)
       gtk_widget_destroy(GTK_WIDGET(dialog));
   }}
-#line 344 "mn-shell.c"
+#line 334 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 141 "mn-shell.gob"
+#line 139 "mn-shell.gob"
 static void 
 mn_shell_init_icon (MNShell * self)
-#line 350 "mn-shell.c"
+#line 340 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::init_icon"
-#line 141 "mn-shell.gob"
+#line 139 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 141 "mn-shell.gob"
+#line 139 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 357 "mn-shell.c"
+#line 347 "mn-shell.c"
 {
-#line 143 "mn-shell.gob"
+#line 141 "mn-shell.gob"
 	
-    selfp->icon = MN_MAIL_ICON(mn_mail_icon_new());
+    self->icon = MN_MAIL_ICON(mn_mail_icon_new());
 
-    g_object_connect(selfp->icon,
+    g_object_connect(self->icon,
 		     "signal::activate", self_icon_activate_h, self,
 		     "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self,
+		     "signal::activate-open-latest-message", self_icon_activate_open_latest_message_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,
@@ -374,98 +365,81 @@ mn_shell_init_icon (MNShell * self)
     self_update_tooltip(self);
     self_update_icon(self);
   }}
-#line 378 "mn-shell.c"
+#line 369 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 162 "mn-shell.gob"
+#line 161 "mn-shell.gob"
 static void 
 mn_shell_notify_blink_on_errors_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 384 "mn-shell.c"
+#line 375 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::notify_blink_on_errors_cb"
 {
-#line 167 "mn-shell.gob"
+#line 166 "mn-shell.gob"
 	
     Self *self = user_data;
 
     self_update_icon(self);
   }}
-#line 394 "mn-shell.c"
+#line 385 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 173 "mn-shell.gob"
+#line 172 "mn-shell.gob"
 static void 
 mn_shell_notify_always_display_icon_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 400 "mn-shell.c"
+#line 391 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::notify_always_display_icon_cb"
 {
-#line 178 "mn-shell.gob"
+#line 177 "mn-shell.gob"
 	
     Self *self = user_data;
 
     self_update_icon(self);
   }}
-#line 410 "mn-shell.c"
+#line 401 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 184 "mn-shell.gob"
+#line 183 "mn-shell.gob"
 static void 
 mn_shell_notify_mail_reader_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 416 "mn-shell.c"
+#line 407 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::notify_mail_reader_cb"
 {
-#line 189 "mn-shell.gob"
+#line 188 "mn-shell.gob"
 	
     Self *self = user_data;
 
     self_update_sensitivity(self);
   }}
-#line 426 "mn-shell.c"
+#line 417 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 195 "mn-shell.gob"
+#line 194 "mn-shell.gob"
 static void 
 mn_shell_notify_tooltip_mail_summary_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 432 "mn-shell.c"
+#line 423 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::notify_tooltip_mail_summary_cb"
 {
-#line 200 "mn-shell.gob"
+#line 199 "mn-shell.gob"
 	
     Self *self = user_data;
 
     self_update_tooltip(self);
   }}
-#line 442 "mn-shell.c"
+#line 433 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 206 "mn-shell.gob"
-static void 
-mn_shell_notify_mail_summary_popup_enable_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 448 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::notify_mail_summary_popup_enable_cb"
-{
-#line 211 "mn-shell.gob"
-	
-    Self *self = user_data;
-
-    if (selfp->popup && ! eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
-      gtk_widget_destroy(selfp->popup);
-  }}
-#line 459 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 218 "mn-shell.gob"
+#line 205 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data)
-#line 465 "mn-shell.c"
+#line 439 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_h"
 {
-#line 220 "mn-shell.gob"
+#line 207 "mn-shell.gob"
 	
     MNShell *self = user_data;
     MNAction action;
@@ -480,7 +454,29 @@ mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data)
 
       case MN_ACTION_LAUNCH_MAIL_READER:
 	if (mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE))
-	  mn_conf_execute_command(MN_CONF_GNOME_MAIL_READER_COMMAND, TRUE);
+	  mn_conf_execute_mail_reader();
+	else
+	  mn_error_dialog_with_markup(NULL,
+				      _("No mail reader is configured"),
+				      _("You can configure a mail reader by choosing <b>System → Preferences → Preferred Applications</b>."));
+	break;
+
+      case MN_ACTION_OPEN_LATEST_MESSAGE:
+	if (self->mailboxes->messages)
+	  {
+	    MNMessage *message = self->mailboxes->messages->data;
+	    if (mn_message_can_open(message))
+	      self_open_latest_message(self);
+	    else
+	      mn_error_dialog(NULL,
+			      _("Unable to open the latest message"),
+			      _("Messages of mailbox \"%s\" cannot be opened."),
+			      message->mailbox->runtime_name);
+	  }
+	else
+	  mn_error_dialog(NULL,
+			  _("Unable to open the latest message"),
+			  _("You have no new mail."));
 	break;
 
       case MN_ACTION_UPDATE_MAIL_STATUS:
@@ -491,147 +487,163 @@ mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data)
 	g_assert_not_reached();
       }
   }}
-#line 495 "mn-shell.c"
+#line 491 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 246 "mn-shell.gob"
+#line 255 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_mail_reader_h (MNMailIcon * icon, gpointer user_data)
-#line 501 "mn-shell.c"
+#line 497 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_mail_reader_h"
 {
-#line 248 "mn-shell.gob"
+#line 257 "mn-shell.gob"
+	
+    mn_conf_execute_mail_reader();
+  }}
+#line 505 "mn-shell.c"
+#undef __GOB_FUNCTION__
+
+#line 261 "mn-shell.gob"
+static void 
+mn_shell_icon_activate_open_latest_message_h (MNMailIcon * icon, gpointer user_data)
+#line 511 "mn-shell.c"
+{
+#define __GOB_FUNCTION__ "MN:Shell::icon_activate_open_latest_message_h"
+{
+#line 263 "mn-shell.gob"
 	
-    mn_conf_execute_command(MN_CONF_GNOME_MAIL_READER_COMMAND, TRUE);
+    Self *self = user_data;
+    self_open_latest_message(self);
   }}
-#line 509 "mn-shell.c"
+#line 520 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 252 "mn-shell.gob"
+#line 268 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_update_h (MNMailIcon * icon, gpointer user_data)
-#line 515 "mn-shell.c"
+#line 526 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_update_h"
 {
-#line 254 "mn-shell.gob"
+#line 270 "mn-shell.gob"
 	
     Self *self = user_data;
     mn_mailboxes_check(self->mailboxes);
   }}
-#line 524 "mn-shell.c"
+#line 535 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 259 "mn-shell.gob"
+#line 275 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_properties_h (MNMailIcon * icon, gpointer user_data)
-#line 530 "mn-shell.c"
+#line 541 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_properties_h"
 {
-#line 261 "mn-shell.gob"
+#line 277 "mn-shell.gob"
 	
     Self *self = user_data;
     self_display_properties_dialog(self);
   }}
-#line 539 "mn-shell.c"
+#line 550 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 266 "mn-shell.gob"
+#line 282 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_help_h (MNMailIcon * icon, gpointer user_data)
-#line 545 "mn-shell.c"
+#line 556 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_help_h"
 {
-#line 268 "mn-shell.gob"
+#line 284 "mn-shell.gob"
 	
     mn_display_help(NULL, NULL);
   }}
-#line 553 "mn-shell.c"
+#line 564 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 272 "mn-shell.gob"
+#line 288 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data)
-#line 559 "mn-shell.c"
+#line 570 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_about_h"
 {
-#line 274 "mn-shell.gob"
+#line 290 "mn-shell.gob"
 	
     Self *self = user_data;
     self_display_about_dialog(self);
   }}
-#line 568 "mn-shell.c"
+#line 579 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 279 "mn-shell.gob"
+#line 295 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_remove_h (MNMailIcon * icon, gpointer user_data)
-#line 574 "mn-shell.c"
+#line 585 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_remove_h"
 {
-#line 281 "mn-shell.gob"
+#line 297 "mn-shell.gob"
 	
     Self *self = user_data;
     g_object_unref(self);
   }}
-#line 583 "mn-shell.c"
+#line 594 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 286 "mn-shell.gob"
+#line 302 "mn-shell.gob"
 static void 
 mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data)
-#line 589 "mn-shell.c"
+#line 600 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_destroy_h"
 {
-#line 288 "mn-shell.gob"
+#line 304 "mn-shell.gob"
 	
     Self *self = user_data;
 
     /* The Notification Area applet has been terminated. Recreate the icon. */
     self_init_icon(self);
   }}
-#line 600 "mn-shell.c"
+#line 611 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 295 "mn-shell.gob"
+#line 311 "mn-shell.gob"
 static void 
 mn_shell_update_sensitivity (MNShell * self)
-#line 606 "mn-shell.c"
+#line 617 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_sensitivity"
-#line 295 "mn-shell.gob"
+#line 311 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 295 "mn-shell.gob"
+#line 311 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 613 "mn-shell.c"
+#line 624 "mn-shell.c"
 {
-#line 297 "mn-shell.gob"
+#line 313 "mn-shell.gob"
 	
-    gtk_widget_set_sensitive(selfp->icon->mail_reader_item, mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE));
-    gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_poll(self->mailboxes));
+    gtk_widget_set_sensitive(self->icon->mail_reader_item, mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE));
+    gtk_widget_set_sensitive(self->icon->open_latest_message_item, self->mailboxes->messages && mn_message_can_open(self->mailboxes->messages->data));
+    gtk_widget_set_sensitive(self->icon->update_item, mn_mailboxes_get_poll(self->mailboxes));
   }}
-#line 620 "mn-shell.c"
+#line 632 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 302 "mn-shell.gob"
+#line 319 "mn-shell.gob"
 static void 
 mn_shell_update_icon (MNShell * self)
-#line 626 "mn-shell.c"
+#line 638 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_icon"
-#line 302 "mn-shell.gob"
+#line 319 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 302 "mn-shell.gob"
+#line 319 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 633 "mn-shell.c"
+#line 645 "mn-shell.c"
 {
-#line 304 "mn-shell.gob"
+#line 321 "mn-shell.gob"
 	
     GList *l;
     gboolean has_new = FALSE;
@@ -649,7 +661,7 @@ mn_shell_update_icon (MNShell * self)
       }
 
     if (selfp->has_new && ! has_new && mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READ_NAMESPACE))
-      mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND, FALSE);
+      mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND);
     selfp->has_new = has_new;
 
     if (blink && ! eel_gconf_get_boolean(MN_CONF_BLINK_ON_ERRORS))
@@ -657,32 +669,32 @@ mn_shell_update_icon (MNShell * self)
 
     if (has_new || blink || always)
       {
-	mn_blinking_image_set_from_stock(MN_BLINKING_IMAGE(selfp->icon->image),
+	mn_blinking_image_set_from_stock(MN_BLINKING_IMAGE(self->icon->image),
 					 has_new ? MN_STOCK_MAIL : MN_STOCK_NO_MAIL,
 					 GTK_ICON_SIZE_LARGE_TOOLBAR);
-	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(selfp->icon->image),
+	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(self->icon->image),
 				       blink);
-	gtk_widget_show(GTK_WIDGET(selfp->icon));
+	gtk_widget_show(GTK_WIDGET(self->icon));
       }
     else
-      gtk_widget_hide(GTK_WIDGET(selfp->icon));
+      gtk_widget_hide(GTK_WIDGET(self->icon));
   }}
-#line 671 "mn-shell.c"
+#line 683 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 340 "mn-shell.gob"
+#line 357 "mn-shell.gob"
 static void 
 mn_shell_update_tooltip (MNShell * self)
-#line 677 "mn-shell.c"
+#line 689 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_tooltip"
-#line 340 "mn-shell.gob"
+#line 357 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 340 "mn-shell.gob"
+#line 357 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 684 "mn-shell.c"
+#line 696 "mn-shell.c"
 {
-#line 342 "mn-shell.gob"
+#line 359 "mn-shell.gob"
 	
     GtkVBox *vbox = NULL;
 
@@ -783,22 +795,22 @@ mn_shell_update_tooltip (MNShell * self)
     if (vbox)
       {
 	gtk_widget_show_all(GTK_WIDGET(vbox));
-	mn_mail_icon_set_tip_widget(selfp->icon, GTK_WIDGET(vbox));
+	mn_mail_icon_set_tip_widget(self->icon, GTK_WIDGET(vbox));
       }
     else
-      mn_mail_icon_set_tip(selfp->icon, _("You have no new mail."));
+      mn_mail_icon_set_tip(self->icon, _("You have no new mail."));
   }}
-#line 792 "mn-shell.c"
+#line 804 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 448 "mn-shell.gob"
+#line 465 "mn-shell.gob"
 static int 
 mn_shell_new_mailboxes_compare_cb (MNMailbox * a, MNMailbox * b)
-#line 798 "mn-shell.c"
+#line 810 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::new_mailboxes_compare_cb"
 {
-#line 450 "mn-shell.gob"
+#line 467 "mn-shell.gob"
 	
     int cmp;
 
@@ -815,69 +827,56 @@ mn_shell_new_mailboxes_compare_cb (MNMailbox * a, MNMailbox * b)
 
     return cmp;
   }}
-#line 819 "mn-shell.c"
+#line 831 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 467 "mn-shell.gob"
+#line 484 "mn-shell.gob"
 static GtkWidget * 
 mn_shell_tooltip_section_new (GtkVBox ** vbox, const char * title)
-#line 825 "mn-shell.c"
+#line 837 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::tooltip_section_new"
-#line 467 "mn-shell.gob"
+#line 484 "mn-shell.gob"
 	g_return_val_if_fail (vbox != NULL, (GtkWidget * )0);
-#line 467 "mn-shell.gob"
+#line 484 "mn-shell.gob"
 	g_return_val_if_fail (title != NULL, (GtkWidget * )0);
-#line 832 "mn-shell.c"
+#line 844 "mn-shell.c"
 {
-#line 470 "mn-shell.gob"
+#line 487 "mn-shell.gob"
 	
-    GtkWidget *child_vbox;
-    char *markup;
-    GtkWidget *alignment;
+    GtkWidget *section;
     GtkWidget *label;
+    GtkWidget *alignment;
 
     if (! *vbox)
       *vbox = GTK_VBOX(gtk_vbox_new(FALSE, 18));
 
-    child_vbox = gtk_vbox_new(FALSE, 6);
-
-    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", title);
-    label = gtk_label_new(markup);
-    g_free(markup);
+    section = mn_hig_section_new(title, &label, &alignment);
 
     gtk_widget_set_name(label, "mn-tooltip-section-title");
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-
-    gtk_box_pack_start(GTK_BOX(child_vbox), label, FALSE, FALSE, 0);
 
-    alignment = gtk_alignment_new(0.5, 0.5, 1.0, 1.0);
-    gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 12, 0);
-
-    gtk_box_pack_start(GTK_BOX(child_vbox), alignment, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(*vbox), child_vbox, TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(*vbox), section, TRUE, TRUE, 0);
 
     return alignment;
   }}
-#line 864 "mn-shell.c"
+#line 863 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 500 "mn-shell.gob"
+#line 504 "mn-shell.gob"
 static void 
 mn_shell_tooltip_text_section_new (GtkVBox ** vbox, const char * title, const char * text)
-#line 870 "mn-shell.c"
+#line 869 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::tooltip_text_section_new"
-#line 500 "mn-shell.gob"
+#line 504 "mn-shell.gob"
 	g_return_if_fail (vbox != NULL);
-#line 500 "mn-shell.gob"
+#line 504 "mn-shell.gob"
 	g_return_if_fail (title != NULL);
-#line 500 "mn-shell.gob"
+#line 504 "mn-shell.gob"
 	g_return_if_fail (text != NULL);
-#line 879 "mn-shell.c"
+#line 878 "mn-shell.c"
 {
-#line 504 "mn-shell.gob"
+#line 508 "mn-shell.gob"
 	
     GtkWidget *alignment;
     GtkWidget *label;
@@ -890,204 +889,109 @@ mn_shell_tooltip_text_section_new (GtkVBox ** vbox, const char * title, const ch
 
     gtk_container_add(GTK_CONTAINER(alignment), label);
   }}
-#line 894 "mn-shell.c"
+#line 893 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 517 "mn-shell.gob"
+#line 521 "mn-shell.gob"
 static void 
-mn_shell_update_popup (MNShell * self, gboolean has_new)
-#line 900 "mn-shell.c"
+mn_shell_open_latest_message (MNShell * self)
+#line 899 "mn-shell.c"
 {
-#define __GOB_FUNCTION__ "MN:Shell::update_popup"
-#line 517 "mn-shell.gob"
+#define __GOB_FUNCTION__ "MN:Shell::open_latest_message"
+#line 521 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 517 "mn-shell.gob"
+#line 521 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 907 "mn-shell.c"
+#line 906 "mn-shell.c"
 {
-#line 519 "mn-shell.gob"
+#line 523 "mn-shell.gob"
 	
-    if ((! selfp->properties_dialog || ! mn_properties_dialog_test_popup_displayed(MN_PROPERTIES_DIALOG(selfp->properties_dialog)))
-	&& (selfp->popup || has_new))
-      {
-	GSList *l;
-	GHashTable *messages;
-
-	mn_g_object_slist_free(selfp->popup_messages);
-	selfp->popup_messages = mn_g_object_slist_copy(self->mailboxes->messages);
-
-	/* 1. clean popup_previous_messages */
-
-	messages = g_hash_table_new(g_str_hash, g_str_equal);
-	MN_LIST_FOREACH(l, selfp->popup_messages)
-	  {
-	    MNMessage *message = l->data;
-	    g_hash_table_replace(messages, message->id, message);
-	  }
-
-	g_hash_table_foreach_remove(selfp->popup_previous_messages, (GHRFunc) self_clean_popup_previous_messages_cb, messages);
-	g_hash_table_destroy(messages);
+    MNMessage *message;
+    GError *err = NULL;
 
-	/* 2. hide messages which are listed in popup_previous_messages */
+    g_return_if_fail(self->mailboxes->messages != NULL);
 
-	if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ONLY_RECENT))
-	  for (l = selfp->popup_messages; l != NULL;)
-	    {
-	      MNMessage *message = l->data;
-	      GSList *next = l->next;
+    message = self->mailboxes->messages->data;
+    g_return_if_fail(mn_message_can_open(message));
 
-	      if (g_hash_table_lookup(selfp->popup_previous_messages, message->id))
-		selfp->popup_messages = mn_g_object_slist_delete_link(selfp->popup_messages, l);
-
-	      l = next;
-	    }
-
-	/* 3. display the resulting list in the popup */
-
-	if (selfp->popup_messages)
-	  {
-	    if (! selfp->popup)
-	      {
-		selfp->popup = mn_mail_summary_popup_new();
-
-		eel_add_weak_pointer(&selfp->popup);
-		g_object_weak_ref(G_OBJECT(selfp->popup), (GWeakNotify) self_popup_weak_notify_cb, self);
-	      }
-
-	    mn_mail_summary_popup_set_messages(MN_MAIL_SUMMARY_POPUP(selfp->popup), selfp->popup_messages);
-	    gtk_widget_show(selfp->popup);
-
-	    /* we only reset the timeout if there is new mail */
-
-	    if (has_new)
-	      mn_mail_summary_popup_reset_timeout(MN_MAIL_SUMMARY_POPUP(selfp->popup));
-
-	    return;		/* something has been shown */
-	  }
-      }
-
-    /* nothing has been shown, destroy the popup if it exists */
-    if (selfp->popup)
-      gtk_widget_destroy(selfp->popup);
-  }}
-#line 974 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 584 "mn-shell.gob"
-static gboolean 
-mn_shell_clean_popup_previous_messages_cb (const char * id, MNMessage * message, gpointer user_data)
-#line 980 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::clean_popup_previous_messages_cb"
-{
-#line 588 "mn-shell.gob"
-	
-    GHashTable *messages = user_data;
-    return g_hash_table_lookup(messages, id) == NULL;
-  }}
-#line 989 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 593 "mn-shell.gob"
-static void 
-mn_shell_popup_weak_notify_cb (MNShell * self, GObject * former_object)
-#line 995 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::popup_weak_notify_cb"
-#line 593 "mn-shell.gob"
-	g_return_if_fail (self != NULL);
-#line 593 "mn-shell.gob"
-	g_return_if_fail (MN_IS_SHELL (self));
-#line 1002 "mn-shell.c"
-{
-#line 595 "mn-shell.gob"
-	
-    GSList *l;
-
-    MN_LIST_FOREACH(l, selfp->popup_messages)
+    if (! mn_message_open(message, &err))
       {
-	MNMessage *message = l->data;
-	g_hash_table_replace(selfp->popup_previous_messages, message->id, message);
+	mn_error_dialog(NULL, _("Unable to open the latest message"), "%s", err->message);
+	g_error_free(err);
       }
-
-    /*
-     * We do not use mn_g_object_slist_clear() because we have passed
-     * the messages ownership to the hash table.
-     */
-    mn_g_slist_clear(&selfp->popup_messages);
   }}
-#line 1020 "mn-shell.c"
+#line 924 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 611 "mn-shell.gob"
+#line 539 "mn-shell.gob"
 MNShell * 
 mn_shell_new (void)
-#line 1026 "mn-shell.c"
+#line 930 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::new"
 {
-#line 613 "mn-shell.gob"
+#line 541 "mn-shell.gob"
 	
     return GET_NEW;
   }}
-#line 1034 "mn-shell.c"
+#line 938 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 617 "mn-shell.gob"
+#line 545 "mn-shell.gob"
 void 
 mn_shell_display_properties_dialog (MNShell * self)
-#line 1040 "mn-shell.c"
+#line 944 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::display_properties_dialog"
-#line 617 "mn-shell.gob"
+#line 545 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 617 "mn-shell.gob"
+#line 545 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1047 "mn-shell.c"
+#line 951 "mn-shell.c"
 {
-#line 619 "mn-shell.gob"
+#line 547 "mn-shell.gob"
 	
     self_display_window(self, MN_TYPE_PROPERTIES_DIALOG, &selfp->properties_dialog);
   }}
-#line 1053 "mn-shell.c"
+#line 957 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 623 "mn-shell.gob"
+#line 551 "mn-shell.gob"
 void 
 mn_shell_display_about_dialog (MNShell * self)
-#line 1059 "mn-shell.c"
+#line 963 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::display_about_dialog"
-#line 623 "mn-shell.gob"
+#line 551 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 623 "mn-shell.gob"
+#line 551 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1066 "mn-shell.c"
+#line 970 "mn-shell.c"
 {
-#line 625 "mn-shell.gob"
+#line 553 "mn-shell.gob"
 	
     self_display_window(self, MN_TYPE_ABOUT_DIALOG, &selfp->about_dialog);
   }}
-#line 1072 "mn-shell.c"
+#line 976 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 629 "mn-shell.gob"
+#line 557 "mn-shell.gob"
 static void 
 mn_shell_display_window (MNShell * self, GType type, GtkWidget ** ptr)
-#line 1078 "mn-shell.c"
+#line 982 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::display_window"
-#line 629 "mn-shell.gob"
+#line 557 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 629 "mn-shell.gob"
+#line 557 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 629 "mn-shell.gob"
+#line 557 "mn-shell.gob"
 	g_return_if_fail (type != 0);
-#line 629 "mn-shell.gob"
+#line 557 "mn-shell.gob"
 	g_return_if_fail (ptr != NULL);
-#line 1089 "mn-shell.c"
+#line 993 "mn-shell.c"
 {
-#line 633 "mn-shell.gob"
+#line 561 "mn-shell.gob"
 	
     if (*ptr)
       {
@@ -1100,86 +1004,66 @@ mn_shell_display_window (MNShell * self, GType type, GtkWidget ** ptr)
 
     gtk_widget_show(*ptr);
   }}
-#line 1104 "mn-shell.c"
+#line 1008 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 646 "mn-shell.gob"
-void 
-mn_shell_close_mail_summary_popup (MNShell * self)
-#line 1110 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::close_mail_summary_popup"
-#line 646 "mn-shell.gob"
-	g_return_if_fail (self != NULL);
-#line 646 "mn-shell.gob"
-	g_return_if_fail (MN_IS_SHELL (self));
-#line 1117 "mn-shell.c"
-{
-#line 648 "mn-shell.gob"
-	
-    if (selfp->popup)
-      gtk_widget_destroy(selfp->popup);
-  }}
-#line 1124 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 653 "mn-shell.gob"
+#line 574 "mn-shell.gob"
 void 
 mn_shell_add_mailbox_properties_dialog (MNShell * self, MNMailboxPropertiesDialog * dialog)
-#line 1130 "mn-shell.c"
+#line 1014 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::add_mailbox_properties_dialog"
-#line 653 "mn-shell.gob"
+#line 574 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 653 "mn-shell.gob"
+#line 574 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 653 "mn-shell.gob"
+#line 574 "mn-shell.gob"
 	g_return_if_fail (dialog != NULL);
-#line 653 "mn-shell.gob"
+#line 574 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (dialog));
-#line 1141 "mn-shell.c"
+#line 1025 "mn-shell.c"
 {
-#line 655 "mn-shell.gob"
+#line 576 "mn-shell.gob"
 	
     selfp->mailbox_properties_dialogs = g_slist_append(selfp->mailbox_properties_dialogs, dialog);
     g_object_weak_ref(G_OBJECT(dialog), self_mailbox_properties_dialog_weak_notify_cb, self);
   }}
-#line 1148 "mn-shell.c"
+#line 1032 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 660 "mn-shell.gob"
+#line 581 "mn-shell.gob"
 static void 
 mn_shell_mailbox_properties_dialog_weak_notify_cb (gpointer data, GObject * former_object)
-#line 1154 "mn-shell.c"
+#line 1038 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::mailbox_properties_dialog_weak_notify_cb"
 {
-#line 663 "mn-shell.gob"
+#line 584 "mn-shell.gob"
 	
     Self *self = data;
 
     selfp->mailbox_properties_dialogs = g_slist_remove(selfp->mailbox_properties_dialogs, former_object);
   }}
-#line 1164 "mn-shell.c"
+#line 1048 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 669 "mn-shell.gob"
+#line 590 "mn-shell.gob"
 MNMailboxPropertiesDialog * 
 mn_shell_get_mailbox_properties_dialog (MNShell * self, MNMailbox * mailbox)
-#line 1170 "mn-shell.c"
+#line 1054 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::get_mailbox_properties_dialog"
-#line 669 "mn-shell.gob"
+#line 590 "mn-shell.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxPropertiesDialog * )0);
-#line 669 "mn-shell.gob"
+#line 590 "mn-shell.gob"
 	g_return_val_if_fail (MN_IS_SHELL (self), (MNMailboxPropertiesDialog * )0);
-#line 669 "mn-shell.gob"
+#line 590 "mn-shell.gob"
 	g_return_val_if_fail (mailbox != NULL, (MNMailboxPropertiesDialog * )0);
-#line 669 "mn-shell.gob"
+#line 590 "mn-shell.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (MNMailboxPropertiesDialog * )0);
-#line 1181 "mn-shell.c"
+#line 1065 "mn-shell.c"
 {
-#line 671 "mn-shell.gob"
+#line 592 "mn-shell.gob"
 	
     GSList *l;
 
@@ -1199,53 +1083,99 @@ mn_shell_get_mailbox_properties_dialog (MNShell * self, MNMailbox * mailbox)
 
     return NULL;
   }}
-#line 1203 "mn-shell.c"
+#line 1087 "mn-shell.c"
+#undef __GOB_FUNCTION__
+
+#line 612 "mn-shell.gob"
+char * 
+mn_shell_get_summary (MNShell * self)
+#line 1093 "mn-shell.c"
+{
+#define __GOB_FUNCTION__ "MN:Shell::get_summary"
+#line 612 "mn-shell.gob"
+	g_return_val_if_fail (self != NULL, (char * )0);
+#line 612 "mn-shell.gob"
+	g_return_val_if_fail (MN_IS_SHELL (self), (char * )0);
+#line 1100 "mn-shell.c"
+{
+#line 614 "mn-shell.gob"
+	
+    int indent;
+    xmlDoc *doc;
+    xmlNode *root;
+    GSList *l;
+    xmlChar *summary;
+
+    indent = xmlIndentTreeOutput;
+    xmlIndentTreeOutput = 1;
+
+    doc = xmlNewDoc("1.0");
+    root = xmlNewNode(NULL, "messages");
+    xmlDocSetRootElement(doc, root);
+
+    MN_LIST_FOREACH(l, self->mailboxes->messages)
+      {
+	MNMessage *message = l->data;
+	xmlNode *node;
+
+	node = mn_message_xml_node_new(message);
+	xmlAddChild(root, node); /* owns node */
+      }
+
+    xmlDocDumpFormatMemory(doc, &summary, NULL, 1);
+
+    xmlFreeDoc(doc);
+    xmlIndentTreeOutput = indent;
+
+    return summary;
+  }}
+#line 1133 "mn-shell.c"
 #undef __GOB_FUNCTION__
-static const GEnumValue _mn_position_values[] = {
-	{ MN_POSITION_TOP_LEFT, (char *)"MN_POSITION_TOP_LEFT", (char *)"top-left" },
-	{ MN_POSITION_TOP_RIGHT, (char *)"MN_POSITION_TOP_RIGHT", (char *)"top-right" },
-	{ MN_POSITION_BOTTOM_LEFT, (char *)"MN_POSITION_BOTTOM_LEFT", (char *)"bottom-left" },
-	{ MN_POSITION_BOTTOM_RIGHT, (char *)"MN_POSITION_BOTTOM_RIGHT", (char *)"bottom-right" },
+static const GEnumValue _mn_action_values[] = {
+	{ MN_ACTION_DISPLAY_PROPERTIES_DIALOG, (char *)"MN_ACTION_DISPLAY_PROPERTIES_DIALOG", (char *)"display-properties-dialog" },
+	{ MN_ACTION_LAUNCH_MAIL_READER, (char *)"MN_ACTION_LAUNCH_MAIL_READER", (char *)"launch-mail-reader" },
+	{ MN_ACTION_OPEN_LATEST_MESSAGE, (char *)"MN_ACTION_OPEN_LATEST_MESSAGE", (char *)"open-latest-message" },
+	{ MN_ACTION_UPDATE_MAIL_STATUS, (char *)"MN_ACTION_UPDATE_MAIL_STATUS", (char *)"update-mail-status" },
 	{ 0, NULL, NULL }
 };
 
 GType
-mn_position_get_type (void)
+mn_action_get_type (void)
 {
 	static GType type = 0;
 	if ___GOB_UNLIKELY(type == 0)
-		type = g_enum_register_static ("MNPosition", _mn_position_values);
+		type = g_enum_register_static ("MNAction", _mn_action_values);
 	return type;
 }
 
-static const GEnumValue _mn_action_values[] = {
-	{ MN_ACTION_DISPLAY_PROPERTIES_DIALOG, (char *)"MN_ACTION_DISPLAY_PROPERTIES_DIALOG", (char *)"display-properties-dialog" },
-	{ MN_ACTION_LAUNCH_MAIL_READER, (char *)"MN_ACTION_LAUNCH_MAIL_READER", (char *)"launch-mail-reader" },
-	{ MN_ACTION_UPDATE_MAIL_STATUS, (char *)"MN_ACTION_UPDATE_MAIL_STATUS", (char *)"update-mail-status" },
+static const GEnumValue _mn_expiration_enabled_values[] = {
+	{ MN_EXPIRATION_ENABLED_DEFAULT, (char *)"MN_EXPIRATION_ENABLED_DEFAULT", (char *)"default" },
+	{ MN_EXPIRATION_ENABLED_FALSE, (char *)"MN_EXPIRATION_ENABLED_FALSE", (char *)"false" },
+	{ MN_EXPIRATION_ENABLED_TRUE, (char *)"MN_EXPIRATION_ENABLED_TRUE", (char *)"true" },
 	{ 0, NULL, NULL }
 };
 
 GType
-mn_action_get_type (void)
+mn_expiration_enabled_get_type (void)
 {
 	static GType type = 0;
 	if ___GOB_UNLIKELY(type == 0)
-		type = g_enum_register_static ("MNAction", _mn_action_values);
+		type = g_enum_register_static ("MNExpirationEnabled", _mn_expiration_enabled_values);
 	return type;
 }
 
-static const GEnumValue _mn_aspect_source_values[] = {
-	{ MN_ASPECT_SOURCE_THEME, (char *)"MN_ASPECT_SOURCE_THEME", (char *)"theme" },
-	{ MN_ASPECT_SOURCE_CUSTOM, (char *)"MN_ASPECT_SOURCE_CUSTOM", (char *)"custom" },
+static const GEnumValue _mn_popup_position_values[] = {
+	{ MN_POPUP_POSITION_ATTACHED, (char *)"MN_POPUP_POSITION_ATTACHED", (char *)"attached" },
+	{ MN_POPUP_POSITION_FREE, (char *)"MN_POPUP_POSITION_FREE", (char *)"free" },
 	{ 0, NULL, NULL }
 };
 
 GType
-mn_aspect_source_get_type (void)
+mn_popup_position_get_type (void)
 {
 	static GType type = 0;
 	if ___GOB_UNLIKELY(type == 0)
-		type = g_enum_register_static ("MNAspectSource", _mn_aspect_source_values);
+		type = g_enum_register_static ("MNPopupPosition", _mn_popup_position_values);
 	return type;
 }
 
diff --git a/src/mn-shell.gob b/src/mn-shell.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -22,26 +23,25 @@ requires 2.0.14
 #include <gtk/gtk.h>
 #include "mn-mailboxes.h"
 #include "mn-mailbox-properties-dialog.h"
-%}
-
-%privateheader{
 #include "mn-mail-icon.h"
+#include "mn-popups.h"
 %}
 
 %{
 #include "config.h"
 #include <glib/gi18n.h>
 #include <eel/eel.h>
+#include <libxml/tree.h>
 #include "mn-properties-dialog.h"
 #include "mn-util.h"
 #include "mn-conf.h"
 #include "mn-mailboxes.h"
 #include "mn-about-dialog.h"
-#include "mn-mail-summary-popup.h"
 #include "mn-standard-message-view.h"
 #include "mn-compact-message-view.h"
 #include "mn-message.h"
 #include "mn-stock.h"
+#include "mn-locked-callback.h"
 
 MNShell *mn_shell = NULL;
 %}
@@ -56,17 +56,13 @@ enum MN_SHELL_TOOLTIP_MAIL_SUMMARY
 class MN:Shell from G:Object
 {
   public MNMailboxes *mailboxes = {mn_mailboxes_new()} unrefwith g_object_unref;
-  private MNMailIcon *icon;
+  public MNMailIcon *icon;
+  public MNPopups *popups;
+
   private gboolean has_new;
 
   private GtkWidget *properties_dialog;
-
   private GSList *mailbox_properties_dialogs;
-
-  private GtkWidget *popup;
-  private GSList *popup_messages destroywith mn_g_object_slist_free;
-  private GHashTable *popup_previous_messages = {g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_object_unref)} destroywith g_hash_table_destroy;
-
   private GtkWidget *about_dialog;
 
   init (self)
@@ -83,7 +79,6 @@ class MN:Shell from G:Object
 						   MN_CONF_ALWAYS_DISPLAY_ICON, self_notify_always_display_icon_cb, self,
 						   MN_CONF_GNOME_MAIL_READER_NAMESPACE, self_notify_mail_reader_cb, self,
 						   MN_CONF_TOOLTIP_MAIL_SUMMARY, self_notify_tooltip_mail_summary_cb, self,
-						   MN_CONF_MAIL_SUMMARY_POPUP_ENABLE, self_notify_mail_summary_popup_enable_cb, self,
 						   NULL);
 
     g_object_connect(self->mailboxes,
@@ -95,6 +90,8 @@ class MN:Shell from G:Object
 		     "swapped-signal::error-changed", self_update_tooltip, self,
 		     "swapped-signal::error-changed", self_update_icon, self,
 		     NULL);
+
+    self->popups = mn_popups_new();
   }
 
   override (G:Object) void
@@ -111,15 +108,16 @@ class MN:Shell from G:Object
   {
     Self *self = user_data;
 
+    if (mn_conf_has_command(MN_CONF_COMMANDS_MAIL_CHANGED_NAMESPACE))
+      mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_CHANGED_COMMAND);
+
     if (has_new)
       {
 	if (mn_conf_has_command(MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE))
-	  mn_conf_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND, FALSE);
+	  mn_conf_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
       }
 
-    if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
-      self_update_popup(self, has_new);
-
+    self_update_sensitivity(self);
     self_update_tooltip(self);
     self_update_icon(self);
   }
@@ -141,11 +139,12 @@ class MN:Shell from G:Object
   private void
     init_icon (self)
   {
-    selfp->icon = MN_MAIL_ICON(mn_mail_icon_new());
+    self->icon = MN_MAIL_ICON(mn_mail_icon_new());
 
-    g_object_connect(selfp->icon,
+    g_object_connect(self->icon,
 		     "signal::activate", self_icon_activate_h, self,
 		     "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self,
+		     "signal::activate-open-latest-message", self_icon_activate_open_latest_message_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,
@@ -204,18 +203,6 @@ class MN:Shell from G:Object
   }
 
   private void
-    notify_mail_summary_popup_enable_cb (GConfClient *client,
-					 unsigned int cnxn_id,
-					 GConfEntry *entry,
-					 gpointer user_data)
-  {
-    Self *self = user_data;
-
-    if (selfp->popup && ! eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
-      gtk_widget_destroy(selfp->popup);
-  }
-
-  private void
     icon_activate_h (MNMailIcon *icon, gpointer user_data)
   {
     MNShell *self = user_data;
@@ -231,7 +218,29 @@ class MN:Shell from G:Object
 
       case MN_ACTION_LAUNCH_MAIL_READER:
 	if (mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE))
-	  mn_conf_execute_command(MN_CONF_GNOME_MAIL_READER_COMMAND, TRUE);
+	  mn_conf_execute_mail_reader();
+	else
+	  mn_error_dialog_with_markup(NULL,
+				      _("No mail reader is configured"),
+				      _("You can configure a mail reader by choosing <b>System → Preferences → Preferred Applications</b>."));
+	break;
+
+      case MN_ACTION_OPEN_LATEST_MESSAGE:
+	if (self->mailboxes->messages)
+	  {
+	    MNMessage *message = self->mailboxes->messages->data;
+	    if (mn_message_can_open(message))
+	      self_open_latest_message(self);
+	    else
+	      mn_error_dialog(NULL,
+			      _("Unable to open the latest message"),
+			      _("Messages of mailbox \"%s\" cannot be opened."),
+			      message->mailbox->runtime_name);
+	  }
+	else
+	  mn_error_dialog(NULL,
+			  _("Unable to open the latest message"),
+			  _("You have no new mail."));
 	break;
 
       case MN_ACTION_UPDATE_MAIL_STATUS:
@@ -246,7 +255,14 @@ class MN:Shell from G:Object
   private void
     icon_activate_mail_reader_h (MNMailIcon *icon, gpointer user_data)
   {
-    mn_conf_execute_command(MN_CONF_GNOME_MAIL_READER_COMMAND, TRUE);
+    mn_conf_execute_mail_reader();
+  }
+
+  private void
+    icon_activate_open_latest_message_h (MNMailIcon *icon, gpointer user_data)
+  {
+    Self *self = user_data;
+    self_open_latest_message(self);
   }
 
   private void
@@ -295,8 +311,9 @@ class MN:Shell from G:Object
   private void
     update_sensitivity (self)
   {
-    gtk_widget_set_sensitive(selfp->icon->mail_reader_item, mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE));
-    gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_poll(self->mailboxes));
+    gtk_widget_set_sensitive(self->icon->mail_reader_item, mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE));
+    gtk_widget_set_sensitive(self->icon->open_latest_message_item, self->mailboxes->messages && mn_message_can_open(self->mailboxes->messages->data));
+    gtk_widget_set_sensitive(self->icon->update_item, mn_mailboxes_get_poll(self->mailboxes));
   }
 
   private void
@@ -318,7 +335,7 @@ class MN:Shell from G:Object
       }
 
     if (selfp->has_new && ! has_new && mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READ_NAMESPACE))
-      mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND, FALSE);
+      mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND);
     selfp->has_new = has_new;
 
     if (blink && ! eel_gconf_get_boolean(MN_CONF_BLINK_ON_ERRORS))
@@ -326,15 +343,15 @@ class MN:Shell from G:Object
 
     if (has_new || blink || always)
       {
-	mn_blinking_image_set_from_stock(MN_BLINKING_IMAGE(selfp->icon->image),
+	mn_blinking_image_set_from_stock(MN_BLINKING_IMAGE(self->icon->image),
 					 has_new ? MN_STOCK_MAIL : MN_STOCK_NO_MAIL,
 					 GTK_ICON_SIZE_LARGE_TOOLBAR);
-	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(selfp->icon->image),
+	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(self->icon->image),
 				       blink);
-	gtk_widget_show(GTK_WIDGET(selfp->icon));
+	gtk_widget_show(GTK_WIDGET(self->icon));
       }
     else
-      gtk_widget_hide(GTK_WIDGET(selfp->icon));
+      gtk_widget_hide(GTK_WIDGET(self->icon));
   }
 
   private void
@@ -439,10 +456,10 @@ class MN:Shell from G:Object
     if (vbox)
       {
 	gtk_widget_show_all(GTK_WIDGET(vbox));
-	mn_mail_icon_set_tip_widget(selfp->icon, GTK_WIDGET(vbox));
+	mn_mail_icon_set_tip_widget(self->icon, GTK_WIDGET(vbox));
       }
     else
-      mn_mail_icon_set_tip(selfp->icon, _("You have no new mail."));
+      mn_mail_icon_set_tip(self->icon, _("You have no new mail."));
   }
 
   private int
@@ -468,37 +485,24 @@ class MN:Shell from G:Object
     tooltip_section_new (GtkVBox **vbox (check null),
 			 const char *title (check null))
   {
-    GtkWidget *child_vbox;
-    char *markup;
-    GtkWidget *alignment;
+    GtkWidget *section;
     GtkWidget *label;
+    GtkWidget *alignment;
 
     if (! *vbox)
       *vbox = GTK_VBOX(gtk_vbox_new(FALSE, 18));
 
-    child_vbox = gtk_vbox_new(FALSE, 6);
-
-    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", title);
-    label = gtk_label_new(markup);
-    g_free(markup);
+    section = mn_hig_section_new(title, &label, &alignment);
 
     gtk_widget_set_name(label, "mn-tooltip-section-title");
-    gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    gtk_label_set_use_markup(GTK_LABEL(label), TRUE);
-
-    gtk_box_pack_start(GTK_BOX(child_vbox), label, FALSE, FALSE, 0);
-
-    alignment = gtk_alignment_new(0.5, 0.5, 1.0, 1.0);
-    gtk_alignment_set_padding(GTK_ALIGNMENT(alignment), 0, 0, 12, 0);
 
-    gtk_box_pack_start(GTK_BOX(child_vbox), alignment, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(*vbox), child_vbox, TRUE, TRUE, 0);
+    gtk_box_pack_start(GTK_BOX(*vbox), section, TRUE, TRUE, 0);
 
     return alignment;
   }
 
   private void
-    tooltip_text_section_new (Gtk:VBox **vbox (check null),
+    tooltip_text_section_new (GtkVBox **vbox (check null),
 			      const char *title (check null),
 			      const char *text (check null))
   {
@@ -515,97 +519,21 @@ class MN:Shell from G:Object
   }
 
   private void
-    update_popup (self, gboolean has_new)
+    open_latest_message (self)
   {
-    if ((! selfp->properties_dialog || ! mn_properties_dialog_test_popup_displayed(MN_PROPERTIES_DIALOG(selfp->properties_dialog)))
-	&& (selfp->popup || has_new))
-      {
-	GSList *l;
-	GHashTable *messages;
+    MNMessage *message;
+    GError *err = NULL;
 
-	mn_g_object_slist_free(selfp->popup_messages);
-	selfp->popup_messages = mn_g_object_slist_copy(self->mailboxes->messages);
+    g_return_if_fail(self->mailboxes->messages != NULL);
 
-	/* 1. clean popup_previous_messages */
+    message = self->mailboxes->messages->data;
+    g_return_if_fail(mn_message_can_open(message));
 
-	messages = g_hash_table_new(g_str_hash, g_str_equal);
-	MN_LIST_FOREACH(l, selfp->popup_messages)
-	  {
-	    MNMessage *message = l->data;
-	    g_hash_table_replace(messages, message->id, message);
-	  }
-
-	g_hash_table_foreach_remove(selfp->popup_previous_messages, (GHRFunc) self_clean_popup_previous_messages_cb, messages);
-	g_hash_table_destroy(messages);
-
-	/* 2. hide messages which are listed in popup_previous_messages */
-
-	if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ONLY_RECENT))
-	  for (l = selfp->popup_messages; l != NULL;)
-	    {
-	      MNMessage *message = l->data;
-	      GSList *next = l->next;
-
-	      if (g_hash_table_lookup(selfp->popup_previous_messages, message->id))
-		selfp->popup_messages = mn_g_object_slist_delete_link(selfp->popup_messages, l);
-
-	      l = next;
-	    }
-
-	/* 3. display the resulting list in the popup */
-
-	if (selfp->popup_messages)
-	  {
-	    if (! selfp->popup)
-	      {
-		selfp->popup = mn_mail_summary_popup_new();
-
-		eel_add_weak_pointer(&selfp->popup);
-		g_object_weak_ref(G_OBJECT(selfp->popup), (GWeakNotify) self_popup_weak_notify_cb, self);
-	      }
-
-	    mn_mail_summary_popup_set_messages(MN_MAIL_SUMMARY_POPUP(selfp->popup), selfp->popup_messages);
-	    gtk_widget_show(selfp->popup);
-
-	    /* we only reset the timeout if there is new mail */
-
-	    if (has_new)
-	      mn_mail_summary_popup_reset_timeout(MN_MAIL_SUMMARY_POPUP(selfp->popup));
-
-	    return;		/* something has been shown */
-	  }
-      }
-
-    /* nothing has been shown, destroy the popup if it exists */
-    if (selfp->popup)
-      gtk_widget_destroy(selfp->popup);
-  }
-
-  private gboolean
-    clean_popup_previous_messages_cb (const char *id,
-				      MNMessage *message,
-				      gpointer user_data)
-  {
-    GHashTable *messages = user_data;
-    return g_hash_table_lookup(messages, id) == NULL;
-  }
-
-  private void
-    popup_weak_notify_cb (self, GObject *former_object)
-  {
-    GSList *l;
-
-    MN_LIST_FOREACH(l, selfp->popup_messages)
+    if (! mn_message_open(message, &err))
       {
-	MNMessage *message = l->data;
-	g_hash_table_replace(selfp->popup_previous_messages, message->id, message);
+	mn_error_dialog(NULL, _("Unable to open the latest message"), "%s", err->message);
+	g_error_free(err);
       }
-
-    /*
-     * We do not use mn_g_object_slist_clear() because we have passed
-     * the messages ownership to the hash table.
-     */
-    mn_g_slist_clear(&selfp->popup_messages);
   }
 
   public MNShell *
@@ -644,13 +572,6 @@ class MN:Shell from G:Object
   }
 
   public void
-    close_mail_summary_popup (self)
-  {
-    if (selfp->popup)
-      gtk_widget_destroy(selfp->popup);
-  }
-
-  public void
     add_mailbox_properties_dialog (self, MN:Mailbox:Properties:Dialog *dialog (check null type))
   {
     selfp->mailbox_properties_dialogs = g_slist_append(selfp->mailbox_properties_dialogs, dialog);
@@ -687,6 +608,39 @@ class MN:Shell from G:Object
 
     return NULL;
   }
+
+  public char *
+    get_summary (self)
+  {
+    int indent;
+    xmlDoc *doc;
+    xmlNode *root;
+    GSList *l;
+    xmlChar *summary;
+
+    indent = xmlIndentTreeOutput;
+    xmlIndentTreeOutput = 1;
+
+    doc = xmlNewDoc("1.0");
+    root = xmlNewNode(NULL, "messages");
+    xmlDocSetRootElement(doc, root);
+
+    MN_LIST_FOREACH(l, self->mailboxes->messages)
+      {
+	MNMessage *message = l->data;
+	xmlNode *node;
+
+	node = mn_message_xml_node_new(message);
+	xmlAddChild(root, node); /* owns node */
+      }
+
+    xmlDocDumpFormatMemory(doc, &summary, NULL, 1);
+
+    xmlFreeDoc(doc);
+    xmlIndentTreeOutput = indent;
+
+    return summary;
+  }
 }
 
 %h{
@@ -698,23 +652,23 @@ extern MNShell *mn_shell;
  * allow a class-less input file.
  */
 
-enum MN_POSITION
-{
-  TOP_LEFT,
-  TOP_RIGHT,
-  BOTTOM_LEFT,
-  BOTTOM_RIGHT
-} MN:Position;
-
 enum MN_ACTION
 {
   DISPLAY_PROPERTIES_DIALOG,
   LAUNCH_MAIL_READER,
+  OPEN_LATEST_MESSAGE,
   UPDATE_MAIL_STATUS
 } MN:Action;
 
-enum MN_ASPECT_SOURCE
+enum MN_EXPIRATION_ENABLED
+{
+  DEFAULT,
+  FALSE,
+  TRUE
+} MN:Expiration:Enabled;
+
+enum MN_POPUP_POSITION
 {
-  THEME,
-  CUSTOM
-} MN:Aspect:Source;
+  ATTACHED,
+  FREE
+} MN:Popup:Position;
diff --git a/src/mn-shell.h b/src/mn-shell.h
@@ -7,6 +7,8 @@
 #include <gtk/gtk.h>
 #include "mn-mailboxes.h"
 #include "mn-mailbox-properties-dialog.h"
+#include "mn-mail-icon.h"
+#include "mn-popups.h"
 
 #ifndef __MN_SHELL_H__
 #define __MN_SHELL_H__
@@ -50,6 +52,8 @@ struct _MNShell {
 	GObject __parent__;
 	/*< public >*/
 	MNMailboxes * mailboxes;
+	MNMailIcon * icon;
+	MNPopups * popups;
 	/*< private >*/
 	MNShellPrivate *_priv;
 };
@@ -70,29 +74,20 @@ GType	mn_shell_get_type	(void);
 MNShell * 	mn_shell_new	(void);
 void 	mn_shell_display_properties_dialog	(MNShell * self);
 void 	mn_shell_display_about_dialog	(MNShell * self);
-void 	mn_shell_close_mail_summary_popup	(MNShell * self);
 void 	mn_shell_add_mailbox_properties_dialog	(MNShell * self,
 					MNMailboxPropertiesDialog * dialog);
 MNMailboxPropertiesDialog * 	mn_shell_get_mailbox_properties_dialog	(MNShell * self,
 					MNMailbox * mailbox);
+char * 	mn_shell_get_summary	(MNShell * self);
 
 
 extern MNShell *mn_shell;
 
 
 typedef enum {
-	MN_POSITION_TOP_LEFT,
-	MN_POSITION_TOP_RIGHT,
-	MN_POSITION_BOTTOM_LEFT,
-	MN_POSITION_BOTTOM_RIGHT
-} MNPosition;
-#define MN_TYPE_POSITION mn_position_get_type()
-GType mn_position_get_type (void);
-
-
-typedef enum {
 	MN_ACTION_DISPLAY_PROPERTIES_DIALOG,
 	MN_ACTION_LAUNCH_MAIL_READER,
+	MN_ACTION_OPEN_LATEST_MESSAGE,
 	MN_ACTION_UPDATE_MAIL_STATUS
 } MNAction;
 #define MN_TYPE_ACTION mn_action_get_type()
@@ -100,11 +95,20 @@ GType mn_action_get_type (void);
 
 
 typedef enum {
-	MN_ASPECT_SOURCE_THEME,
-	MN_ASPECT_SOURCE_CUSTOM
-} MNAspectSource;
-#define MN_TYPE_ASPECT_SOURCE mn_aspect_source_get_type()
-GType mn_aspect_source_get_type (void);
+	MN_EXPIRATION_ENABLED_DEFAULT,
+	MN_EXPIRATION_ENABLED_FALSE,
+	MN_EXPIRATION_ENABLED_TRUE
+} MNExpirationEnabled;
+#define MN_TYPE_EXPIRATION_ENABLED mn_expiration_enabled_get_type()
+GType mn_expiration_enabled_get_type (void);
+
+
+typedef enum {
+	MN_POPUP_POSITION_ATTACHED,
+	MN_POPUP_POSITION_FREE
+} MNPopupPosition;
+#define MN_TYPE_POPUP_POSITION mn_popup_position_get_type()
+GType mn_popup_position_get_type (void);
 
 
 #ifdef __cplusplus
diff --git a/src/mn-ssl.c b/src/mn-ssl.c
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
diff --git a/src/mn-ssl.h b/src/mn-ssl.h
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_SSL_H
diff --git a/src/mn-standard-message-view.c b/src/mn-standard-message-view.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-standard-message-view.gob"
+#line 26 "mn-standard-message-view.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -117,7 +117,7 @@ mn_standard_message_view_class_init (MNStandardMessageViewClass * c G_GNUC_UNUSE
 
 	parent_class = g_type_class_ref (MN_TYPE_MESSAGE_VIEW);
 
-#line 36 "mn-standard-message-view.gob"
+#line 37 "mn-standard-message-view.gob"
 	mn_message_view_class->update = ___1_mn_standard_message_view_update;
 #line 123 "mn-standard-message-view.c"
 }
@@ -125,7 +125,7 @@ mn_standard_message_view_class_init (MNStandardMessageViewClass * c G_GNUC_UNUSE
 
 
 
-#line 36 "mn-standard-message-view.gob"
+#line 37 "mn-standard-message-view.gob"
 static void 
 ___1_mn_standard_message_view_update (MNMessageView * view G_GNUC_UNUSED, GSList * messages)
 #line 132 "mn-standard-message-view.c"
@@ -135,7 +135,7 @@ ___1_mn_standard_message_view_update (MNMessageView * view G_GNUC_UNUSED, GSList
 {
 #define __GOB_FUNCTION__ "MN:Standard:Message:View::update"
 {
-#line 38 "mn-standard-message-view.gob"
+#line 39 "mn-standard-message-view.gob"
 	
     Self *self = SELF(view);
     time_t now;
@@ -160,25 +160,25 @@ ___1_mn_standard_message_view_update (MNMessageView * view G_GNUC_UNUSED, GSList
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 59 "mn-standard-message-view.gob"
+#line 60 "mn-standard-message-view.gob"
 static void 
 mn_standard_message_view_append_message (MNStandardMessageView * self, time_t now, MNMessage * message)
 #line 167 "mn-standard-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Standard:Message:View::append_message"
-#line 59 "mn-standard-message-view.gob"
+#line 60 "mn-standard-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 59 "mn-standard-message-view.gob"
+#line 60 "mn-standard-message-view.gob"
 	g_return_if_fail (MN_IS_STANDARD_MESSAGE_VIEW (self));
-#line 59 "mn-standard-message-view.gob"
+#line 60 "mn-standard-message-view.gob"
 	g_return_if_fail (message != NULL);
-#line 59 "mn-standard-message-view.gob"
+#line 60 "mn-standard-message-view.gob"
 	g_return_if_fail (MN_IS_MESSAGE (message));
 #line 178 "mn-standard-message-view.c"
 {
-#line 61 "mn-standard-message-view.gob"
+#line 62 "mn-standard-message-view.gob"
 	
-    self_append_row(self, _("Mailbox:"), message->mailbox_name);
+    self_append_row(self, _("Mailbox:"), message->mailbox->runtime_name);
     if (message->error)
       self_append_row(self, _("Unreadable message:"), message->error);
     else
@@ -197,23 +197,23 @@ mn_standard_message_view_append_message (MNStandardMessageView * self, time_t no
 #line 198 "mn-standard-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 79 "mn-standard-message-view.gob"
+#line 80 "mn-standard-message-view.gob"
 static void 
 mn_standard_message_view_append_row (MNStandardMessageView * self, const char * name, const char * value)
 #line 204 "mn-standard-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Standard:Message:View::append_row"
-#line 79 "mn-standard-message-view.gob"
+#line 80 "mn-standard-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 79 "mn-standard-message-view.gob"
+#line 80 "mn-standard-message-view.gob"
 	g_return_if_fail (MN_IS_STANDARD_MESSAGE_VIEW (self));
-#line 79 "mn-standard-message-view.gob"
+#line 80 "mn-standard-message-view.gob"
 	g_return_if_fail (name != NULL);
-#line 79 "mn-standard-message-view.gob"
+#line 80 "mn-standard-message-view.gob"
 	g_return_if_fail (value != NULL);
 #line 215 "mn-standard-message-view.c"
 {
-#line 83 "mn-standard-message-view.gob"
+#line 84 "mn-standard-message-view.gob"
 	
     self_append_header(self, name);
     mn_text_table_append_text_cell(MN_TEXT_TABLE(self), value);
@@ -222,21 +222,21 @@ mn_standard_message_view_append_row (MNStandardMessageView * self, const char * 
 #line 223 "mn-standard-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 89 "mn-standard-message-view.gob"
+#line 90 "mn-standard-message-view.gob"
 static void 
 mn_standard_message_view_append_header (MNStandardMessageView * self, const char * name)
 #line 229 "mn-standard-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Standard:Message:View::append_header"
-#line 89 "mn-standard-message-view.gob"
+#line 90 "mn-standard-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 89 "mn-standard-message-view.gob"
+#line 90 "mn-standard-message-view.gob"
 	g_return_if_fail (MN_IS_STANDARD_MESSAGE_VIEW (self));
-#line 89 "mn-standard-message-view.gob"
+#line 90 "mn-standard-message-view.gob"
 	g_return_if_fail (name != NULL);
 #line 238 "mn-standard-message-view.c"
 {
-#line 91 "mn-standard-message-view.gob"
+#line 92 "mn-standard-message-view.gob"
 	
     char *markup;
 
@@ -247,14 +247,14 @@ mn_standard_message_view_append_header (MNStandardMessageView * self, const char
 #line 248 "mn-standard-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 99 "mn-standard-message-view.gob"
+#line 100 "mn-standard-message-view.gob"
 GtkWidget * 
 mn_standard_message_view_new (void)
 #line 254 "mn-standard-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Standard:Message:View::new"
 {
-#line 101 "mn-standard-message-view.gob"
+#line 102 "mn-standard-message-view.gob"
 	
     return GTK_WIDGET(GET_NEW);
   }}
diff --git a/src/mn-standard-message-view.gob b/src/mn-standard-message-view.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -59,7 +60,7 @@ class MN:Standard:Message:View from MN:Message:View
   private void
     append_message (self, time_t now, MN:Message *message (check null type))
   {
-    self_append_row(self, _("Mailbox:"), message->mailbox_name);
+    self_append_row(self, _("Mailbox:"), message->mailbox->runtime_name);
     if (message->error)
       self_append_row(self, _("Unreadable message:"), message->error);
     else
diff --git a/src/mn-stock.c b/src/mn-stock.c
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
@@ -37,7 +38,7 @@ static const GtkStockItem items[] = {
 void
 mn_stock_init (void)
 {
-  const struct
+  static const struct
   {
     const char	*stock_id;
     const char	*filename;
@@ -54,15 +55,15 @@ mn_stock_init (void)
 #if WITH_GMAIL
     { MN_STOCK_GMAIL,			UIDIR G_DIR_SEPARATOR_S "gmail.png" },
 #endif
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
-    { MN_STOCK_SYSTEM_MAILBOX,		NULL, "gnome-system" },
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+    { MN_STOCK_SYSTEM_MAILBOX,		NULL, "system" },
 #endif
 #if WITH_EVOLUTION
     { MN_STOCK_EVOLUTION_MAILBOX,	NULL, "evolution" },
 #endif
     { MN_STOCK_SELECT_ALL,		NULL, "stock_select-all" },
-    { MN_STOCK_MAIL_SUMMARY,		GNOMEPIXMAPSDIR G_DIR_SEPARATOR_S "mail-notification.png" },
     { MN_STOCK_MAIL_READER,		NULL, "stock_mail-handling" },
+    { MN_STOCK_OPEN_MESSAGE,		NULL, "stock_mail-open" },
     { MN_STOCK_CONNECT,			NULL, NULL, GTK_STOCK_CONNECT }
   };
   GtkIconFactory *factory;
diff --git a/src/mn-stock.h b/src/mn-stock.h
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_STOCK_H
@@ -31,15 +32,15 @@
 #if WITH_GMAIL
 #define MN_STOCK_GMAIL			"mn-gmail"
 #endif
-#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+#if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #define MN_STOCK_SYSTEM_MAILBOX		"mn-system-mailbox"
 #endif
 #if WITH_EVOLUTION
 #define MN_STOCK_EVOLUTION_MAILBOX	"mn-evolution-mailbox"
 #endif
 #define MN_STOCK_SELECT_ALL		"mn-select-all"
-#define MN_STOCK_MAIL_SUMMARY		"mn-mail-summary"
 #define MN_STOCK_MAIL_READER		"mn-mail-reader"
+#define MN_STOCK_OPEN_MESSAGE		"mn-open-message"
 #define MN_STOCK_CONNECT		"mn-connect"
 
 void mn_stock_init (void);
diff --git a/src/mn-sylpheed-mailbox-backend-private.h b/src/mn-sylpheed-mailbox-backend-private.h
@@ -10,15 +10,15 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 25 "mn-sylpheed-mailbox-backend.gob"
+#line 26 "mn-sylpheed-mailbox-backend.gob"
 
 #include "mn-locked-callback.h"
 
 #line 18 "mn-sylpheed-mailbox-backend-private.h"
 struct _MNSylpheedMailboxBackendPrivate {
-#line 70 "mn-sylpheed-mailbox-backend.gob"
+#line 72 "mn-sylpheed-mailbox-backend.gob"
 	MNLockedGSource * monitor_timeout_source;
-#line 71 "mn-sylpheed-mailbox-backend.gob"
+#line 73 "mn-sylpheed-mailbox-backend.gob"
 	gboolean can_lock_mark_file;
 #line 24 "mn-sylpheed-mailbox-backend-private.h"
 };
diff --git a/src/mn-sylpheed-mailbox-backend.c b/src/mn-sylpheed-mailbox-backend.c
@@ -20,11 +20,12 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-sylpheed-mailbox-backend.gob"
+#line 30 "mn-sylpheed-mailbox-backend.gob"
 
 #include "config.h"
 #include <stdlib.h>
 #include <string.h>
+#include <sys/stat.h>
 #include <fcntl.h>
 #include <errno.h>
 #include <glib/gi18n.h>
@@ -50,16 +51,16 @@ typedef struct
   guint32	flags;
 } MarkEntry;
 
-typedef enum
+typedef struct
 {
-  MN_SYLPHEED_MESSAGE_EXISTS		= 1 << 0,
-  MN_SYLPHEED_MESSAGE_NEW		= 1 << 1,
-  MN_SYLPHEED_MESSAGE_UNREAD		= 1 << 2
-} MNSylpheedMessageFlags;
+  char		*data;
+  gsize		data_size;
+  GHashTable	*table;
+} Marks;
 
 static GStaticMutex timeouts_mutex = G_STATIC_MUTEX_INIT;
 
-#line 63 "mn-sylpheed-mailbox-backend.c"
+#line 64 "mn-sylpheed-mailbox-backend.c"
 /* self casting macros */
 #define SELF(x) MN_SYLPHEED_MAILBOX_BACKEND(x)
 #define SELF_CONST(x) MN_SYLPHEED_MAILBOX_BACKEND_CONST(x)
@@ -80,12 +81,15 @@ static GObject * ___2_mn_sylpheed_mailbox_backend_constructor (GType type, unsig
 static void ___3_mn_sylpheed_mailbox_backend_finalize (GObject * object) G_GNUC_UNUSED;
 static void ___4_mn_sylpheed_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend, const char * info_uri, GnomeVFSMonitorEventType event_type) G_GNUC_UNUSED;
 static gboolean mn_sylpheed_mailbox_backend_monitor_timeout_cb (gpointer data) G_GNUC_UNUSED;
-static gboolean ___6_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailbox * mailbox) G_GNUC_UNUSED;
+static gboolean ___6_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox) G_GNUC_UNUSED;
 static void ___7_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend, unsigned long check_id) G_GNUC_UNUSED;
 static gboolean mn_sylpheed_mailbox_backend_read_local_mark_file (const char * filename, gsize * size, char ** contents, GError ** err) G_GNUC_UNUSED;
 static gboolean mn_sylpheed_mailbox_backend_read_remote_mark_file (GnomeVFSURI * uri, gsize * size, char ** contents, GError ** err) G_GNUC_UNUSED;
-static gboolean mn_sylpheed_mailbox_backend_read_mark_file (MNSylpheedMailboxBackend * self, gsize * size, char ** contents, GError ** err) G_GNUC_UNUSED;
-static GHashTable * mn_sylpheed_mailbox_backend_get_message_flags (MNSylpheedMailboxBackend * self, GError ** err) G_GNUC_UNUSED;
+static gboolean mn_sylpheed_mailbox_backend_read_mark_file (GnomeVFSURI * mailbox_uri, gsize * size, char ** contents, GError ** err) G_GNUC_UNUSED;
+static Marks * mn_sylpheed_mailbox_backend_marks_new (GnomeVFSURI * mailbox_uri, GError ** err) G_GNUC_UNUSED;
+static gboolean mn_sylpheed_mailbox_backend_marks_write (GnomeVFSURI * mailbox_uri, Marks * marks, GError ** err) G_GNUC_UNUSED;
+static void mn_sylpheed_mailbox_backend_marks_free (Marks * marks) G_GNUC_UNUSED;
+static gboolean ___e_mn_sylpheed_mailbox_backend_mark_as_read (MNVFSMailboxBackend * dummy, MNVFSMessage * message, GError ** err) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static MNVFSMailboxBackendClass *parent_class = NULL;
@@ -95,7 +99,9 @@ static MNVFSMailboxBackendClass *parent_class = NULL;
 #define self_read_local_mark_file mn_sylpheed_mailbox_backend_read_local_mark_file
 #define self_read_remote_mark_file mn_sylpheed_mailbox_backend_read_remote_mark_file
 #define self_read_mark_file mn_sylpheed_mailbox_backend_read_mark_file
-#define self_get_message_flags mn_sylpheed_mailbox_backend_get_message_flags
+#define self_marks_new mn_sylpheed_mailbox_backend_marks_new
+#define self_marks_write mn_sylpheed_mailbox_backend_marks_write
+#define self_marks_free mn_sylpheed_mailbox_backend_marks_free
 GType
 mn_sylpheed_mailbox_backend_get_type (void)
 {
@@ -145,9 +151,9 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::finalize"
 	MNSylpheedMailboxBackend *self G_GNUC_UNUSED = MN_SYLPHEED_MAILBOX_BACKEND (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 95 "mn-sylpheed-mailbox-backend.gob"
+#line 97 "mn-sylpheed-mailbox-backend.gob"
 	___3_mn_sylpheed_mailbox_backend_finalize(obj_self);
-#line 151 "mn-sylpheed-mailbox-backend.c"
+#line 157 "mn-sylpheed-mailbox-backend.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -158,10 +164,10 @@ mn_sylpheed_mailbox_backend_init (MNSylpheedMailboxBackend * o G_GNUC_UNUSED)
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_SYLPHEED_MAILBOX_BACKEND,MNSylpheedMailboxBackendPrivate);
 }
 #undef __GOB_FUNCTION__
-#line 73 "mn-sylpheed-mailbox-backend.gob"
+#line 75 "mn-sylpheed-mailbox-backend.gob"
 static void 
 mn_sylpheed_mailbox_backend_class_init (MNSylpheedMailboxBackendClass * class G_GNUC_UNUSED)
-#line 165 "mn-sylpheed-mailbox-backend.c"
+#line 171 "mn-sylpheed-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -171,33 +177,35 @@ mn_sylpheed_mailbox_backend_class_init (MNSylpheedMailboxBackendClass * class G_
 
 	parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND);
 
-#line 78 "mn-sylpheed-mailbox-backend.gob"
+#line 80 "mn-sylpheed-mailbox-backend.gob"
 	g_object_class->constructor = ___2_mn_sylpheed_mailbox_backend_constructor;
-#line 95 "mn-sylpheed-mailbox-backend.gob"
+#line 97 "mn-sylpheed-mailbox-backend.gob"
 	g_object_class->finalize = ___finalize;
-#line 110 "mn-sylpheed-mailbox-backend.gob"
+#line 112 "mn-sylpheed-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->monitor_cb = ___4_mn_sylpheed_mailbox_backend_monitor_cb;
-#line 173 "mn-sylpheed-mailbox-backend.gob"
+#line 175 "mn-sylpheed-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->is = ___6_mn_sylpheed_mailbox_backend_is;
-#line 186 "mn-sylpheed-mailbox-backend.gob"
+#line 190 "mn-sylpheed-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->check = ___7_mn_sylpheed_mailbox_backend_check;
-#line 185 "mn-sylpheed-mailbox-backend.c"
+#line 478 "mn-sylpheed-mailbox-backend.gob"
+	mn_vfs_mailbox_backend_class->mark_as_read = ___e_mn_sylpheed_mailbox_backend_mark_as_read;
+#line 193 "mn-sylpheed-mailbox-backend.c"
  {
-#line 74 "mn-sylpheed-mailbox-backend.gob"
+#line 76 "mn-sylpheed-mailbox-backend.gob"
 
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Sylpheed";
   
-#line 191 "mn-sylpheed-mailbox-backend.c"
+#line 199 "mn-sylpheed-mailbox-backend.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 78 "mn-sylpheed-mailbox-backend.gob"
+#line 80 "mn-sylpheed-mailbox-backend.gob"
 static GObject * 
 ___2_mn_sylpheed_mailbox_backend_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 201 "mn-sylpheed-mailbox-backend.c"
+#line 209 "mn-sylpheed-mailbox-backend.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): \
@@ -205,7 +213,7 @@ ___2_mn_sylpheed_mailbox_backend_constructor (GType type G_GNUC_UNUSED, unsigned
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::constructor"
 {
-#line 80 "mn-sylpheed-mailbox-backend.gob"
+#line 82 "mn-sylpheed-mailbox-backend.gob"
 	
     GObject *object;
     Self *self;
@@ -220,21 +228,21 @@ ___2_mn_sylpheed_mailbox_backend_constructor (GType type G_GNUC_UNUSED, unsigned
 
     return object;
   }}
-#line 224 "mn-sylpheed-mailbox-backend.c"
+#line 232 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 95 "mn-sylpheed-mailbox-backend.gob"
+#line 97 "mn-sylpheed-mailbox-backend.gob"
 static void 
 ___3_mn_sylpheed_mailbox_backend_finalize (GObject * object G_GNUC_UNUSED)
-#line 231 "mn-sylpheed-mailbox-backend.c"
+#line 239 "mn-sylpheed-mailbox-backend.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::finalize"
 {
-#line 97 "mn-sylpheed-mailbox-backend.gob"
+#line 99 "mn-sylpheed-mailbox-backend.gob"
 	
     Self *self = SELF(object);
 
@@ -247,21 +255,21 @@ ___3_mn_sylpheed_mailbox_backend_finalize (GObject * object G_GNUC_UNUSED)
 
     PARENT_HANDLER(object);
   }}
-#line 251 "mn-sylpheed-mailbox-backend.c"
+#line 259 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 110 "mn-sylpheed-mailbox-backend.gob"
+#line 112 "mn-sylpheed-mailbox-backend.gob"
 static void 
 ___4_mn_sylpheed_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUSED, const char * info_uri, GnomeVFSMonitorEventType event_type)
-#line 258 "mn-sylpheed-mailbox-backend.c"
+#line 266 "mn-sylpheed-mailbox-backend.c"
 #define PARENT_HANDLER(___backend,___info_uri,___event_type) \
 	{ if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb) \
 		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->monitor_cb)(___backend,___info_uri,___event_type); }
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::monitor_cb"
 {
-#line 114 "mn-sylpheed-mailbox-backend.gob"
+#line 116 "mn-sylpheed-mailbox-backend.gob"
 	
     if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED
 	|| event_type == GNOME_VFS_MONITOR_EVENT_DELETED
@@ -309,18 +317,18 @@ ___4_mn_sylpheed_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNU
 	  }
       }
   }}
-#line 313 "mn-sylpheed-mailbox-backend.c"
+#line 321 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 162 "mn-sylpheed-mailbox-backend.gob"
+#line 164 "mn-sylpheed-mailbox-backend.gob"
 static gboolean 
 mn_sylpheed_mailbox_backend_monitor_timeout_cb (gpointer data)
-#line 320 "mn-sylpheed-mailbox-backend.c"
+#line 328 "mn-sylpheed-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::monitor_timeout_cb"
 {
-#line 164 "mn-sylpheed-mailbox-backend.gob"
+#line 166 "mn-sylpheed-mailbox-backend.gob"
 	
     Self *self = data;
 
@@ -329,21 +337,21 @@ mn_sylpheed_mailbox_backend_monitor_timeout_cb (gpointer data)
     selfp->monitor_timeout_source = NULL;
     return FALSE;		/* remove source */
   }}
-#line 333 "mn-sylpheed-mailbox-backend.c"
+#line 341 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 173 "mn-sylpheed-mailbox-backend.gob"
+#line 175 "mn-sylpheed-mailbox-backend.gob"
 static gboolean 
-___6_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailbox * mailbox)
-#line 339 "mn-sylpheed-mailbox-backend.c"
-#define PARENT_HANDLER(___dummy,___mailbox) \
+___6_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox)
+#line 347 "mn-sylpheed-mailbox-backend.c"
+#define PARENT_HANDLER(___dummy,___class,___mailbox) \
 	((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \
-		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___mailbox): \
+		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___class,___mailbox): \
 		((gboolean )0))
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::is"
 {
-#line 175 "mn-sylpheed-mailbox-backend.gob"
+#line 179 "mn-sylpheed-mailbox-backend.gob"
 	
     gboolean is = FALSE;
     GnomeVFSURI *markfile_uri;
@@ -354,34 +362,34 @@ ___6_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, 
 
     return is;
   }}
-#line 358 "mn-sylpheed-mailbox-backend.c"
+#line 366 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 186 "mn-sylpheed-mailbox-backend.gob"
+#line 190 "mn-sylpheed-mailbox-backend.gob"
 static void 
 ___7_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, unsigned long check_id)
-#line 365 "mn-sylpheed-mailbox-backend.c"
+#line 373 "mn-sylpheed-mailbox-backend.c"
 #define PARENT_HANDLER(___backend,___check_id) \
 	{ if(MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check) \
 		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->check)(___backend,___check_id); }
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::check"
 {
-#line 188 "mn-sylpheed-mailbox-backend.gob"
+#line 192 "mn-sylpheed-mailbox-backend.gob"
 	
     GError *err = NULL;
     GnomeVFSResult result;
     GnomeVFSResult close_result;
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
-    GHashTable *message_flags;
+    Marks *marks;
     GSList *messages = NULL;
 
     mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_DIRECTORY);
 
-    message_flags = self_get_message_flags(SELF(backend), &err);
-    if (! message_flags)
+    marks = self_marks_new(backend->mailbox->vfs_uri, &err);
+    if (! marks)
       {
 	GDK_THREADS_ENTER();
 
@@ -417,20 +425,16 @@ ___7_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNU
       if (mn_str_isnumeric(file_info->name))
 	{
 	  int num = atoi(file_info->name);
-	  MNSylpheedMessageFlags msflags = GPOINTER_TO_INT(g_hash_table_lookup(message_flags, GINT_TO_POINTER(num)));
+	  MarkEntry *entry = g_hash_table_lookup(marks->table, GINT_TO_POINTER(num));
 
-	  if ((msflags & MN_SYLPHEED_MESSAGE_EXISTS) == 0
-	      || (msflags & MN_SYLPHEED_MESSAGE_NEW) != 0
-	      || (msflags & MN_SYLPHEED_MESSAGE_UNREAD) != 0)
+	  if (! entry || (entry->flags & (SYLPHEED_MSG_NEW | SYLPHEED_MSG_UNREAD)) != 0)
 	    {
 	      MNMessageFlags flags = 0;
-	      GnomeVFSURI *message_uri;
 
 	      if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
 		break;
 
-	      if ((msflags & MN_SYLPHEED_MESSAGE_EXISTS) == 0
-		  || (msflags & MN_SYLPHEED_MESSAGE_NEW) != 0)
+	      if (! entry || (entry->flags & SYLPHEED_MSG_NEW) != 0)
 		flags |= MN_MESSAGE_NEW;
 
 	      /*
@@ -438,10 +442,11 @@ ___7_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNU
 	       * own way (mark file) of differencing seen/unseen
 	       * messages.
 	       */
-
-	      message_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, file_info->name);
-	      messages = g_slist_prepend(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, flags, FALSE));
-	      gnome_vfs_uri_unref(message_uri);
+	      messages = g_slist_prepend(messages, mn_vfs_message_new(backend,
+								      backend->mailbox->vfs_uri,
+								      file_info->name,
+								      flags,
+								      FALSE));
 	    }
 	}
     gnome_vfs_file_info_unref(file_info);
@@ -469,27 +474,27 @@ ___7_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNU
     GDK_THREADS_LEAVE();
 
   end:
-    g_hash_table_destroy(message_flags);
+    self_marks_free(marks);
   }}
-#line 475 "mn-sylpheed-mailbox-backend.c"
+#line 480 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 291 "mn-sylpheed-mailbox-backend.gob"
+#line 292 "mn-sylpheed-mailbox-backend.gob"
 static gboolean 
 mn_sylpheed_mailbox_backend_read_local_mark_file (const char * filename, gsize * size, char ** contents, GError ** err)
-#line 482 "mn-sylpheed-mailbox-backend.c"
+#line 487 "mn-sylpheed-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::read_local_mark_file"
-#line 291 "mn-sylpheed-mailbox-backend.gob"
+#line 292 "mn-sylpheed-mailbox-backend.gob"
 	g_return_val_if_fail (filename != NULL, (gboolean )0);
-#line 291 "mn-sylpheed-mailbox-backend.gob"
+#line 292 "mn-sylpheed-mailbox-backend.gob"
 	g_return_val_if_fail (size != NULL, (gboolean )0);
-#line 291 "mn-sylpheed-mailbox-backend.gob"
+#line 292 "mn-sylpheed-mailbox-backend.gob"
 	g_return_val_if_fail (contents != NULL, (gboolean )0);
-#line 491 "mn-sylpheed-mailbox-backend.c"
+#line 496 "mn-sylpheed-mailbox-backend.c"
 {
-#line 296 "mn-sylpheed-mailbox-backend.gob"
+#line 297 "mn-sylpheed-mailbox-backend.gob"
 	
     int fd;
     struct flock lock;
@@ -537,24 +542,24 @@ mn_sylpheed_mailbox_backend_read_local_mark_file (const char * filename, gsize *
 
     return status;
   }}
-#line 541 "mn-sylpheed-mailbox-backend.c"
+#line 546 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 344 "mn-sylpheed-mailbox-backend.gob"
+#line 345 "mn-sylpheed-mailbox-backend.gob"
 static gboolean 
 mn_sylpheed_mailbox_backend_read_remote_mark_file (GnomeVFSURI * uri, gsize * size, char ** contents, GError ** err)
-#line 547 "mn-sylpheed-mailbox-backend.c"
+#line 552 "mn-sylpheed-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::read_remote_mark_file"
-#line 344 "mn-sylpheed-mailbox-backend.gob"
+#line 345 "mn-sylpheed-mailbox-backend.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 344 "mn-sylpheed-mailbox-backend.gob"
+#line 345 "mn-sylpheed-mailbox-backend.gob"
 	g_return_val_if_fail (size != NULL, (gboolean )0);
-#line 344 "mn-sylpheed-mailbox-backend.gob"
+#line 345 "mn-sylpheed-mailbox-backend.gob"
 	g_return_val_if_fail (contents != NULL, (gboolean )0);
-#line 556 "mn-sylpheed-mailbox-backend.c"
+#line 561 "mn-sylpheed-mailbox-backend.c"
 {
-#line 349 "mn-sylpheed-mailbox-backend.gob"
+#line 350 "mn-sylpheed-mailbox-backend.gob"
 	
     GnomeVFSResult result;
     int _size;
@@ -571,32 +576,30 @@ mn_sylpheed_mailbox_backend_read_remote_mark_file (GnomeVFSURI * uri, gsize * si
 	return FALSE;
       }
   }}
-#line 575 "mn-sylpheed-mailbox-backend.c"
+#line 580 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 366 "mn-sylpheed-mailbox-backend.gob"
+#line 367 "mn-sylpheed-mailbox-backend.gob"
 static gboolean 
-mn_sylpheed_mailbox_backend_read_mark_file (MNSylpheedMailboxBackend * self, gsize * size, char ** contents, GError ** err)
-#line 581 "mn-sylpheed-mailbox-backend.c"
+mn_sylpheed_mailbox_backend_read_mark_file (GnomeVFSURI * mailbox_uri, gsize * size, char ** contents, GError ** err)
+#line 586 "mn-sylpheed-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::read_mark_file"
-#line 366 "mn-sylpheed-mailbox-backend.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 366 "mn-sylpheed-mailbox-backend.gob"
-	g_return_val_if_fail (MN_IS_SYLPHEED_MAILBOX_BACKEND (self), (gboolean )0);
-#line 366 "mn-sylpheed-mailbox-backend.gob"
+#line 367 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (mailbox_uri != NULL, (gboolean )0);
+#line 367 "mn-sylpheed-mailbox-backend.gob"
 	g_return_val_if_fail (size != NULL, (gboolean )0);
-#line 366 "mn-sylpheed-mailbox-backend.gob"
+#line 367 "mn-sylpheed-mailbox-backend.gob"
 	g_return_val_if_fail (contents != NULL, (gboolean )0);
-#line 592 "mn-sylpheed-mailbox-backend.c"
+#line 595 "mn-sylpheed-mailbox-backend.c"
 {
-#line 371 "mn-sylpheed-mailbox-backend.gob"
+#line 372 "mn-sylpheed-mailbox-backend.gob"
 	
     GnomeVFSURI *markfile_uri;
     char *filename;
     gboolean status;
 
-    markfile_uri = gnome_vfs_uri_append_file_name(MN_VFS_MAILBOX_BACKEND(self)->mailbox->vfs_uri, SYLPHEED_MARK_FILE);
+    markfile_uri = gnome_vfs_uri_append_file_name(mailbox_uri, SYLPHEED_MARK_FILE);
 
     filename = mn_vfs_get_local_path(markfile_uri);
     if (filename)
@@ -611,28 +614,26 @@ mn_sylpheed_mailbox_backend_read_mark_file (MNSylpheedMailboxBackend * self, gsi
 
     return status;
   }}
-#line 615 "mn-sylpheed-mailbox-backend.c"
+#line 618 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 392 "mn-sylpheed-mailbox-backend.gob"
-static GHashTable * 
-mn_sylpheed_mailbox_backend_get_message_flags (MNSylpheedMailboxBackend * self, GError ** err)
-#line 621 "mn-sylpheed-mailbox-backend.c"
+#line 393 "mn-sylpheed-mailbox-backend.gob"
+static Marks * 
+mn_sylpheed_mailbox_backend_marks_new (GnomeVFSURI * mailbox_uri, GError ** err)
+#line 624 "mn-sylpheed-mailbox-backend.c"
 {
-#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::get_message_flags"
-#line 392 "mn-sylpheed-mailbox-backend.gob"
-	g_return_val_if_fail (self != NULL, (GHashTable * )0);
-#line 392 "mn-sylpheed-mailbox-backend.gob"
-	g_return_val_if_fail (MN_IS_SYLPHEED_MAILBOX_BACKEND (self), (GHashTable * )0);
-#line 628 "mn-sylpheed-mailbox-backend.c"
+#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::marks_new"
+#line 393 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (mailbox_uri != NULL, (Marks * )0);
+#line 629 "mn-sylpheed-mailbox-backend.c"
 {
-#line 394 "mn-sylpheed-mailbox-backend.gob"
+#line 395 "mn-sylpheed-mailbox-backend.gob"
 	
-    GHashTable *message_flags = NULL;
+    Marks *marks = NULL;
     gsize bytes_left;
     char *buf;
 
-    if (self_read_mark_file(self, &bytes_left, &buf, err))
+    if (self_read_mark_file(mailbox_uri, &bytes_left, &buf, err))
       {
 	if (bytes_left >= sizeof(int))
 	  {
@@ -642,29 +643,27 @@ mn_sylpheed_mailbox_backend_get_message_flags (MNSylpheedMailboxBackend * self, 
 	      {
 		MarkEntry *entry;
 
+		marks = g_new0(Marks, 1);
+		marks->data = buf;
+		marks->data_size = bytes_left;
+		marks->table = g_hash_table_new(g_direct_hash, g_direct_equal);
+
 		entry = (MarkEntry *) (buf + sizeof(int));
 		bytes_left -= sizeof(int);
 
-		message_flags = g_hash_table_new(g_direct_hash, g_direct_equal);
+		buf = NULL;	/* now owned by marks */
 
 		while (bytes_left > 0)
 		  {
-		    MNSylpheedMessageFlags flags = MN_SYLPHEED_MESSAGE_EXISTS;
-
 		    if (bytes_left < sizeof(MarkEntry))
 		      {
 			g_set_error(err, 0, 0, _("unexpected end of file"));
-			g_hash_table_destroy(message_flags);
-			message_flags = NULL;
+			self_marks_free(marks);
+			marks = NULL;
 			break;
 		      }
 
-		    if ((entry->flags & SYLPHEED_MSG_NEW) != 0)
-		      flags |= MN_SYLPHEED_MESSAGE_NEW;
-		    if ((entry->flags & SYLPHEED_MSG_UNREAD) != 0)
-		      flags |= MN_SYLPHEED_MESSAGE_UNREAD;
-
-		    g_hash_table_insert(message_flags, GINT_TO_POINTER(entry->num), GINT_TO_POINTER(flags));
+		    g_hash_table_insert(marks->table, GINT_TO_POINTER(entry->num), entry);
 
 		    entry++;
 		    bytes_left -= sizeof(MarkEntry);
@@ -679,7 +678,113 @@ mn_sylpheed_mailbox_backend_get_message_flags (MNSylpheedMailboxBackend * self, 
 	g_free(buf);
       }
 
-    return message_flags;
+    return marks;
+  }}
+#line 684 "mn-sylpheed-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+
+#line 448 "mn-sylpheed-mailbox-backend.gob"
+static gboolean 
+mn_sylpheed_mailbox_backend_marks_write (GnomeVFSURI * mailbox_uri, Marks * marks, GError ** err)
+#line 690 "mn-sylpheed-mailbox-backend.c"
+{
+#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::marks_write"
+#line 448 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (mailbox_uri != NULL, (gboolean )0);
+#line 448 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (marks != NULL, (gboolean )0);
+#line 697 "mn-sylpheed-mailbox-backend.c"
+{
+#line 452 "mn-sylpheed-mailbox-backend.gob"
+	
+    GnomeVFSURI *markfile_uri;
+    gboolean status;
+
+    /*
+     * We do not lock the mark file, since the user is normally unable
+     * to at the same time click on the "Mark as Read" button and use
+     * Sylpheed.
+     */
+
+    markfile_uri = gnome_vfs_uri_append_file_name(mailbox_uri, SYLPHEED_MARK_FILE);
+    /* Sylpheed uses S_IRUSR | S_IWUSR for data files */
+    status = mn_vfs_write_entire_file_uri_safe(markfile_uri, marks->data_size, marks->data, S_IRUSR | S_IWUSR, err);
+    gnome_vfs_uri_unref(markfile_uri);
+
+    return status;
   }}
-#line 685 "mn-sylpheed-mailbox-backend.c"
+#line 717 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
+
+#line 470 "mn-sylpheed-mailbox-backend.gob"
+static void 
+mn_sylpheed_mailbox_backend_marks_free (Marks * marks)
+#line 723 "mn-sylpheed-mailbox-backend.c"
+{
+#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::marks_free"
+#line 470 "mn-sylpheed-mailbox-backend.gob"
+	g_return_if_fail (marks != NULL);
+#line 728 "mn-sylpheed-mailbox-backend.c"
+{
+#line 472 "mn-sylpheed-mailbox-backend.gob"
+	
+    g_free(marks->data);
+    g_hash_table_destroy(marks->table);
+    g_free(marks);
+  }}
+#line 736 "mn-sylpheed-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+
+#line 478 "mn-sylpheed-mailbox-backend.gob"
+static gboolean 
+___e_mn_sylpheed_mailbox_backend_mark_as_read (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMessage * message, GError ** err)
+#line 742 "mn-sylpheed-mailbox-backend.c"
+#define PARENT_HANDLER(___dummy,___message,___err) \
+	((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->mark_as_read)? \
+		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->mark_as_read)(___dummy,___message,___err): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::mark_as_read"
+{
+#line 482 "mn-sylpheed-mailbox-backend.gob"
+	
+    char *filename;
+    int num;
+    GError *tmp_err = NULL;
+    Marks *marks;
+    MarkEntry *entry;
+    gboolean status;
+
+    filename = gnome_vfs_uri_extract_short_name(message->vfs_uri);
+    g_assert(mn_str_isnumeric(filename));
+    num = atoi(filename);
+    g_free(filename);
+
+    marks = self_marks_new(MN_VFS_MAILBOX(MN_MESSAGE(message)->mailbox)->vfs_uri, &tmp_err);
+    if (! marks)
+      {
+	g_set_error(err, 0, 0, _("Unable to read %s: %s."), SYLPHEED_MARK_FILE, tmp_err->message);
+	g_error_free(tmp_err);
+	return FALSE;
+      }
+
+    entry = g_hash_table_lookup(marks->table, GINT_TO_POINTER(num));
+    if (entry)
+      entry->flags &= ~(SYLPHEED_MSG_NEW | SYLPHEED_MSG_UNREAD);
+    else
+      {
+	marks->data_size += sizeof(MarkEntry);
+	marks->data = g_realloc(marks->data, marks->data_size);
+	entry = (MarkEntry *) (marks->data + marks->data_size - sizeof(MarkEntry));
+	entry->num = num;
+	entry->flags = 0;
+      }
+
+    status = self_marks_write(MN_VFS_MAILBOX(MN_MESSAGE(message)->mailbox)->vfs_uri, marks, err);
+    self_marks_free(marks);
+
+    return status;
+  }}
+#line 789 "mn-sylpheed-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
diff --git a/src/mn-sylpheed-mailbox-backend.gob b/src/mn-sylpheed-mailbox-backend.gob
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -30,6 +31,7 @@ requires 2.0.14
 #include "config.h"
 #include <stdlib.h>
 #include <string.h>
+#include <sys/stat.h>
 #include <fcntl.h>
 #include <errno.h>
 #include <glib/gi18n.h>
@@ -55,12 +57,12 @@ typedef struct
   guint32	flags;
 } MarkEntry;
 
-typedef enum
+typedef struct
 {
-  MN_SYLPHEED_MESSAGE_EXISTS		= 1 << 0,
-  MN_SYLPHEED_MESSAGE_NEW		= 1 << 1,
-  MN_SYLPHEED_MESSAGE_UNREAD		= 1 << 2
-} MNSylpheedMessageFlags;
+  char		*data;
+  gsize		data_size;
+  GHashTable	*table;
+} Marks;
 
 static GStaticMutex timeouts_mutex = G_STATIC_MUTEX_INIT;
 %}
@@ -171,7 +173,9 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
   }
 
   override (MN:VFS:Mailbox:Backend) gboolean
-    is (MNVFSMailboxBackend *dummy, MNVFSMailbox *mailbox)
+    is (MNVFSMailboxBackend *dummy,
+	MNVFSMailboxBackendClass *class,
+	MNVFSMailbox *mailbox)
   {
     gboolean is = FALSE;
     GnomeVFSURI *markfile_uri;
@@ -191,13 +195,13 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
     GnomeVFSResult close_result;
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
-    GHashTable *message_flags;
+    Marks *marks;
     GSList *messages = NULL;
 
     mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_DIRECTORY);
 
-    message_flags = self_get_message_flags(SELF(backend), &err);
-    if (! message_flags)
+    marks = self_marks_new(backend->mailbox->vfs_uri, &err);
+    if (! marks)
       {
 	GDK_THREADS_ENTER();
 
@@ -233,20 +237,16 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
       if (mn_str_isnumeric(file_info->name))
 	{
 	  int num = atoi(file_info->name);
-	  MNSylpheedMessageFlags msflags = GPOINTER_TO_INT(g_hash_table_lookup(message_flags, GINT_TO_POINTER(num)));
+	  MarkEntry *entry = g_hash_table_lookup(marks->table, GINT_TO_POINTER(num));
 
-	  if ((msflags & MN_SYLPHEED_MESSAGE_EXISTS) == 0
-	      || (msflags & MN_SYLPHEED_MESSAGE_NEW) != 0
-	      || (msflags & MN_SYLPHEED_MESSAGE_UNREAD) != 0)
+	  if (! entry || (entry->flags & (SYLPHEED_MSG_NEW | SYLPHEED_MSG_UNREAD)) != 0)
 	    {
 	      MNMessageFlags flags = 0;
-	      GnomeVFSURI *message_uri;
 
 	      if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
 		break;
 
-	      if ((msflags & MN_SYLPHEED_MESSAGE_EXISTS) == 0
-		  || (msflags & MN_SYLPHEED_MESSAGE_NEW) != 0)
+	      if (! entry || (entry->flags & SYLPHEED_MSG_NEW) != 0)
 		flags |= MN_MESSAGE_NEW;
 
 	      /*
@@ -254,10 +254,11 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	       * own way (mark file) of differencing seen/unseen
 	       * messages.
 	       */
-
-	      message_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, file_info->name);
-	      messages = g_slist_prepend(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, flags, FALSE));
-	      gnome_vfs_uri_unref(message_uri);
+	      messages = g_slist_prepend(messages, mn_vfs_message_new(backend,
+								      backend->mailbox->vfs_uri,
+								      file_info->name,
+								      flags,
+								      FALSE));
 	    }
 	}
     gnome_vfs_file_info_unref(file_info);
@@ -285,7 +286,7 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
     GDK_THREADS_LEAVE();
 
   end:
-    g_hash_table_destroy(message_flags);
+    self_marks_free(marks);
   }
 
   private gboolean
@@ -364,7 +365,7 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
   }
 
   private gboolean
-    read_mark_file (self,
+    read_mark_file (GnomeVFSURI *mailbox_uri (check null),
 		    gsize *size (check null),
 		    char **contents (check null),
 		    GError **err)
@@ -373,7 +374,7 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
     char *filename;
     gboolean status;
 
-    markfile_uri = gnome_vfs_uri_append_file_name(MN_VFS_MAILBOX_BACKEND(self)->mailbox->vfs_uri, SYLPHEED_MARK_FILE);
+    markfile_uri = gnome_vfs_uri_append_file_name(mailbox_uri, SYLPHEED_MARK_FILE);
 
     filename = mn_vfs_get_local_path(markfile_uri);
     if (filename)
@@ -389,14 +390,14 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
     return status;
   }
 
-  private GHashTable *
-    get_message_flags (self, GError **err)
+  private Marks *
+    marks_new (GnomeVFSURI *mailbox_uri (check null), GError **err)
   {
-    GHashTable *message_flags = NULL;
+    Marks *marks = NULL;
     gsize bytes_left;
     char *buf;
 
-    if (self_read_mark_file(self, &bytes_left, &buf, err))
+    if (self_read_mark_file(mailbox_uri, &bytes_left, &buf, err))
       {
 	if (bytes_left >= sizeof(int))
 	  {
@@ -406,29 +407,27 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	      {
 		MarkEntry *entry;
 
+		marks = g_new0(Marks, 1);
+		marks->data = buf;
+		marks->data_size = bytes_left;
+		marks->table = g_hash_table_new(g_direct_hash, g_direct_equal);
+
 		entry = (MarkEntry *) (buf + sizeof(int));
 		bytes_left -= sizeof(int);
 
-		message_flags = g_hash_table_new(g_direct_hash, g_direct_equal);
+		buf = NULL;	/* now owned by marks */
 
 		while (bytes_left > 0)
 		  {
-		    MNSylpheedMessageFlags flags = MN_SYLPHEED_MESSAGE_EXISTS;
-
 		    if (bytes_left < sizeof(MarkEntry))
 		      {
 			g_set_error(err, 0, 0, _("unexpected end of file"));
-			g_hash_table_destroy(message_flags);
-			message_flags = NULL;
+			self_marks_free(marks);
+			marks = NULL;
 			break;
 		      }
 
-		    if ((entry->flags & SYLPHEED_MSG_NEW) != 0)
-		      flags |= MN_SYLPHEED_MESSAGE_NEW;
-		    if ((entry->flags & SYLPHEED_MSG_UNREAD) != 0)
-		      flags |= MN_SYLPHEED_MESSAGE_UNREAD;
-
-		    g_hash_table_insert(message_flags, GINT_TO_POINTER(entry->num), GINT_TO_POINTER(flags));
+		    g_hash_table_insert(marks->table, GINT_TO_POINTER(entry->num), entry);
 
 		    entry++;
 		    bytes_left -= sizeof(MarkEntry);
@@ -443,6 +442,79 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	g_free(buf);
       }
 
-    return message_flags;
+    return marks;
+  }
+
+  private gboolean
+    marks_write (GnomeVFSURI *mailbox_uri (check null),
+		 Marks *marks (check null),
+		 GError **err)
+  {
+    GnomeVFSURI *markfile_uri;
+    gboolean status;
+
+    /*
+     * We do not lock the mark file, since the user is normally unable
+     * to at the same time click on the "Mark as Read" button and use
+     * Sylpheed.
+     */
+
+    markfile_uri = gnome_vfs_uri_append_file_name(mailbox_uri, SYLPHEED_MARK_FILE);
+    /* Sylpheed uses S_IRUSR | S_IWUSR for data files */
+    status = mn_vfs_write_entire_file_uri_safe(markfile_uri, marks->data_size, marks->data, S_IRUSR | S_IWUSR, err);
+    gnome_vfs_uri_unref(markfile_uri);
+
+    return status;
+  }
+
+  private void
+    marks_free (Marks *marks (check null))
+  {
+    g_free(marks->data);
+    g_hash_table_destroy(marks->table);
+    g_free(marks);
+  }
+
+  override (MN:VFS:Mailbox:Backend) gboolean
+    mark_as_read (MNVFSMailboxBackend *dummy,
+		  MNVFSMessage *message,
+		  GError **err)
+  {
+    char *filename;
+    int num;
+    GError *tmp_err = NULL;
+    Marks *marks;
+    MarkEntry *entry;
+    gboolean status;
+
+    filename = gnome_vfs_uri_extract_short_name(message->vfs_uri);
+    g_assert(mn_str_isnumeric(filename));
+    num = atoi(filename);
+    g_free(filename);
+
+    marks = self_marks_new(MN_VFS_MAILBOX(MN_MESSAGE(message)->mailbox)->vfs_uri, &tmp_err);
+    if (! marks)
+      {
+	g_set_error(err, 0, 0, _("Unable to read %s: %s."), SYLPHEED_MARK_FILE, tmp_err->message);
+	g_error_free(tmp_err);
+	return FALSE;
+      }
+
+    entry = g_hash_table_lookup(marks->table, GINT_TO_POINTER(num));
+    if (entry)
+      entry->flags &= ~(SYLPHEED_MSG_NEW | SYLPHEED_MSG_UNREAD);
+    else
+      {
+	marks->data_size += sizeof(MarkEntry);
+	marks->data = g_realloc(marks->data, marks->data_size);
+	entry = (MarkEntry *) (marks->data + marks->data_size - sizeof(MarkEntry));
+	entry->num = num;
+	entry->flags = 0;
+      }
+
+    status = self_marks_write(MN_VFS_MAILBOX(MN_MESSAGE(message)->mailbox)->vfs_uri, marks, err);
+    self_marks_free(marks);
+
+    return status;
   }
 }
diff --git a/src/mn-system-vfs-mailbox-properties.c b/src/mn-system-vfs-mailbox-properties.c
@@ -22,12 +22,12 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-system-vfs-mailbox-properties.gob"
+#line 26 "mn-system-vfs-mailbox-properties.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
-#include "mn-mailbox-properties.h"
+#include "mn-mailbox-properties-private.h"
 #include "mn-system-vfs-mailbox.h"
 #include "mn-stock.h"
 
@@ -101,7 +101,7 @@ GET_NEW_VARG (const char *first, ...)
 	return ret;
 }
 
-#line 42 "mn-system-vfs-mailbox-properties.gob"
+#line 43 "mn-system-vfs-mailbox-properties.gob"
 static void 
 mn_system_vfs_mailbox_properties_class_init (MNSystemVFSMailboxPropertiesClass * class G_GNUC_UNUSED)
 #line 108 "mn-system-vfs-mailbox-properties.c"
@@ -121,7 +121,7 @@ mn_system_vfs_mailbox_properties_class_init (MNSystemVFSMailboxPropertiesClass *
 		"default_name");
     }
  {
-#line 43 "mn-system-vfs-mailbox-properties.gob"
+#line 44 "mn-system-vfs-mailbox-properties.gob"
 
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
 
@@ -133,18 +133,23 @@ mn_system_vfs_mailbox_properties_class_init (MNSystemVFSMailboxPropertiesClass *
  }
 }
 #undef __GOB_FUNCTION__
-#line 51 "mn-system-vfs-mailbox-properties.gob"
+#line 52 "mn-system-vfs-mailbox-properties.gob"
 static void 
 mn_system_vfs_mailbox_properties_init (MNSystemVFSMailboxProperties * self G_GNUC_UNUSED)
 #line 140 "mn-system-vfs-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox:Properties::init"
  {
-#line 52 "mn-system-vfs-mailbox-properties.gob"
+#line 53 "mn-system-vfs-mailbox-properties.gob"
 
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
+    GtkWidget *location_vbox;
     GtkWidget *label;
     const char *system_uri;
 
+    /* translators: header capitalization */
+    location_vbox = mn_mailbox_properties_add_general_section(properties, _("Location"));
+
     label = gtk_label_new(NULL);
 
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
@@ -169,9 +174,9 @@ mn_system_vfs_mailbox_properties_init (MNSystemVFSMailboxProperties * self G_GNU
       gtk_label_set_text(GTK_LABEL(label), _("The location of your system mailbox could not be detected. Check the MAIL environment variable."));
 
     gtk_widget_show(label);
-    gtk_box_pack_start(GTK_BOX(self), label, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(location_vbox), label, FALSE, FALSE, 0);
   
-#line 175 "mn-system-vfs-mailbox-properties.c"
+#line 180 "mn-system-vfs-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -190,16 +195,16 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 37 "mn-system-vfs-mailbox-properties.gob"
+#line 38 "mn-system-vfs-mailbox-properties.gob"
  g_value_set_boolean(VAL, mn_system_vfs_mailbox_get_uri() != NULL); 
-#line 196 "mn-system-vfs-mailbox-properties.c"
+#line 201 "mn-system-vfs-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_NAME:
 		{
-#line 40 "mn-system-vfs-mailbox-properties.gob"
+#line 41 "mn-system-vfs-mailbox-properties.gob"
  g_value_set_string(VAL, _("System mailbox")); 
-#line 203 "mn-system-vfs-mailbox-properties.c"
+#line 208 "mn-system-vfs-mailbox-properties.c"
 		}
 		break;
 	default:
diff --git a/src/mn-system-vfs-mailbox-properties.gob b/src/mn-system-vfs-mailbox-properties.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -26,7 +27,7 @@ requires 2.0.14
 #include "config.h"
 #include <glib/gi18n.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
-#include "mn-mailbox-properties.h"
+#include "mn-mailbox-properties-private.h"
 #include "mn-system-vfs-mailbox.h"
 #include "mn-stock.h"
 %}
@@ -50,9 +51,14 @@ class MN:System:VFS:Mailbox:Properties from MN:Mailbox:Properties
 
   init (self)
   {
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
+    GtkWidget *location_vbox;
     GtkWidget *label;
     const char *system_uri;
 
+    /* translators: header capitalization */
+    location_vbox = mn_mailbox_properties_add_general_section(properties, _("Location"));
+
     label = gtk_label_new(NULL);
 
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
@@ -77,6 +83,6 @@ class MN:System:VFS:Mailbox:Properties from MN:Mailbox:Properties
       gtk_label_set_text(GTK_LABEL(label), _("The location of your system mailbox could not be detected. Check the MAIL environment variable."));
 
     gtk_widget_show(label);
-    gtk_box_pack_start(GTK_BOX(self), label, FALSE, FALSE, 0);
+    gtk_box_pack_start(GTK_BOX(location_vbox), label, FALSE, FALSE, 0);
   }
 }
diff --git a/src/mn-system-vfs-mailbox.c b/src/mn-system-vfs-mailbox.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-system-vfs-mailbox.gob"
+#line 26 "mn-system-vfs-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -103,7 +103,7 @@ mn_system_vfs_mailbox_init (MNSystemVFSMailbox * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::init"
 }
 #undef __GOB_FUNCTION__
-#line 34 "mn-system-vfs-mailbox.gob"
+#line 35 "mn-system-vfs-mailbox.gob"
 static void 
 mn_system_vfs_mailbox_class_init (MNSystemVFSMailboxClass * class G_GNUC_UNUSED)
 #line 110 "mn-system-vfs-mailbox.c"
@@ -113,15 +113,15 @@ mn_system_vfs_mailbox_class_init (MNSystemVFSMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX);
 
-#line 40 "mn-system-vfs-mailbox.gob"
+#line 41 "mn-system-vfs-mailbox.gob"
 	mn_mailbox_class->seal = ___2_mn_system_vfs_mailbox_seal;
-#line 50 "mn-system-vfs-mailbox.gob"
+#line 51 "mn-system-vfs-mailbox.gob"
 	mn_mailbox_class->parse_uri = ___3_mn_system_vfs_mailbox_parse_uri;
-#line 63 "mn-system-vfs-mailbox.gob"
+#line 64 "mn-system-vfs-mailbox.gob"
 	mn_mailbox_class->check = ___4_mn_system_vfs_mailbox_check;
 #line 123 "mn-system-vfs-mailbox.c"
  {
-#line 35 "mn-system-vfs-mailbox.gob"
+#line 36 "mn-system-vfs-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "system-vfs";
     MN_VFS_MAILBOX_CLASS(class)->stock_id = MN_STOCK_SYSTEM_MAILBOX;
@@ -133,7 +133,7 @@ mn_system_vfs_mailbox_class_init (MNSystemVFSMailboxClass * class G_GNUC_UNUSED)
 
 
 
-#line 40 "mn-system-vfs-mailbox.gob"
+#line 41 "mn-system-vfs-mailbox.gob"
 static void 
 ___2_mn_system_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 140 "mn-system-vfs-mailbox.c"
@@ -143,7 +143,7 @@ ___2_mn_system_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::seal"
 {
-#line 42 "mn-system-vfs-mailbox.gob"
+#line 43 "mn-system-vfs-mailbox.gob"
 	
     MN_VFS_MAILBOX(mailbox)->uri = g_strdup(self_get_uri());
 
@@ -155,7 +155,7 @@ ___2_mn_system_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 50 "mn-system-vfs-mailbox.gob"
+#line 51 "mn-system-vfs-mailbox.gob"
 static MNMailbox * 
 ___3_mn_system_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri)
 #line 162 "mn-system-vfs-mailbox.c"
@@ -166,7 +166,7 @@ ___3_mn_system_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const cha
 {
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::parse_uri"
 {
-#line 52 "mn-system-vfs-mailbox.gob"
+#line 53 "mn-system-vfs-mailbox.gob"
 	
     const char *system_uri;
     MNMailbox *mailbox = NULL;
@@ -181,7 +181,7 @@ ___3_mn_system_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const cha
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 63 "mn-system-vfs-mailbox.gob"
+#line 64 "mn-system-vfs-mailbox.gob"
 static void 
 ___4_mn_system_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 188 "mn-system-vfs-mailbox.c"
@@ -191,7 +191,7 @@ ___4_mn_system_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::check"
 {
-#line 65 "mn-system-vfs-mailbox.gob"
+#line 66 "mn-system-vfs-mailbox.gob"
 	
     if (MN_VFS_MAILBOX(mailbox)->uri)
       {
@@ -207,14 +207,14 @@ ___4_mn_system_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 77 "mn-system-vfs-mailbox.gob"
+#line 78 "mn-system-vfs-mailbox.gob"
 const char * 
 mn_system_vfs_mailbox_get_uri (void)
 #line 214 "mn-system-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::get_uri"
 {
-#line 79 "mn-system-vfs-mailbox.gob"
+#line 80 "mn-system-vfs-mailbox.gob"
 	
     static char *global_uri = NULL;
     G_LOCK_DEFINE_STATIC(global_uri);
@@ -231,7 +231,7 @@ mn_system_vfs_mailbox_get_uri (void)
 	if (! global_uri)	/* no MAIL or invalid contents */
 	  {
 	    const char *username = g_get_user_name();
-	    const char *spool_paths[] = { "/var/spool/mail", "/var/mail" };
+	    static const char *spool_paths[] = { "/var/spool/mail", "/var/mail" };
 	    int i;
 
 	    for (i = 0; i < G_N_ELEMENTS(spool_paths); i++)
diff --git a/src/mn-system-vfs-mailbox.gob b/src/mn-system-vfs-mailbox.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -92,7 +93,7 @@ class MN:System:VFS:Mailbox from MN:VFS:Mailbox
 	if (! global_uri)	/* no MAIL or invalid contents */
 	  {
 	    const char *username = g_get_user_name();
-	    const char *spool_paths[] = { "/var/spool/mail", "/var/mail" };
+	    static const char *spool_paths[] = { "/var/spool/mail", "/var/mail" };
 	    int i;
 
 	    for (i = 0; i < G_N_ELEMENTS(spool_paths); i++)
diff --git a/src/mn-test-mailbox-private.h b/src/mn-test-mailbox-private.h
@@ -0,0 +1,17 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_TEST_MAILBOX_PRIVATE_H__
+#define __MN_TEST_MAILBOX_PRIVATE_H__
+
+#include "mn-test-mailbox.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-test-mailbox.c b/src/mn-test-mailbox.c
@@ -0,0 +1,191 @@
+/* Generated by GOB (v2.0.14)   (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 14
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-test-mailbox.h"
+
+#include "mn-test-mailbox-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-test-mailbox.gob"
+
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-message.h"
+#include "mn-util.h"
+
+#line 33 "mn-test-mailbox.c"
+/* self casting macros */
+#define SELF(x) MN_TEST_MAILBOX(x)
+#define SELF_CONST(x) MN_TEST_MAILBOX_CONST(x)
+#define IS_SELF(x) MN_IS_TEST_MAILBOX(x)
+#define TYPE_SELF MN_TYPE_TEST_MAILBOX
+#define SELF_CLASS(x) MN_TEST_MAILBOX_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_TEST_MAILBOX_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNTestMailbox Self;
+typedef MNTestMailboxClass SelfClass;
+
+/* here are local prototypes */
+static void mn_test_mailbox_class_init (MNTestMailboxClass * c) G_GNUC_UNUSED;
+static void mn_test_mailbox_init (MNTestMailbox * self) G_GNUC_UNUSED;
+static void ___2_mn_test_mailbox_check (MNMailbox * mailbox) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static MNMailboxClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_new mn_test_mailbox_new
+GType
+mn_test_mailbox_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNTestMailboxClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_test_mailbox_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNTestMailbox),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_test_mailbox_init,
+			NULL
+		};
+
+		type = g_type_register_static (MN_TYPE_MAILBOX, "MNTestMailbox", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNTestMailbox *)g_object_new(mn_test_mailbox_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNTestMailbox * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNTestMailbox *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNTestMailbox *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNTestMailbox *)g_object_new_valist (mn_test_mailbox_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+static void 
+mn_test_mailbox_class_init (MNTestMailboxClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Test:Mailbox::class_init"
+	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)c;
+
+	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
+
+#line 43 "mn-test-mailbox.gob"
+	mn_mailbox_class->check = ___2_mn_test_mailbox_check;
+#line 109 "mn-test-mailbox.c"
+}
+#undef __GOB_FUNCTION__
+#line 35 "mn-test-mailbox.gob"
+static void 
+mn_test_mailbox_init (MNTestMailbox * self G_GNUC_UNUSED)
+#line 115 "mn-test-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Test:Mailbox::init"
+ {
+#line 36 "mn-test-mailbox.gob"
+
+    MNMailbox *mailbox = MN_MAILBOX(self);
+
+    mn_mailbox_set_poll(mailbox, FALSE);
+    mailbox->runtime_name = g_strdup(_("Test mailbox"));
+  
+#line 126 "mn-test-mailbox.c"
+ }
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 43 "mn-test-mailbox.gob"
+static void 
+___2_mn_test_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 136 "mn-test-mailbox.c"
+#define PARENT_HANDLER(___mailbox) \
+	{ if(MN_MAILBOX_CLASS(parent_class)->check) \
+		(* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); }
+{
+#define __GOB_FUNCTION__ "MN:Test:Mailbox::check"
+{
+#line 45 "mn-test-mailbox.gob"
+	
+    GSList *messages = NULL;
+    time_t now;
+    int i;
+
+    PARENT_HANDLER(mailbox);
+
+    now = mn_time();
+
+    for (i = 1; i < 4; i++)
+      {
+	MNMessage *message;
+	char *subject;
+
+	subject = g_strdup_printf(_("Test message #%i"), i);
+	message = mn_message_new(mailbox,
+				 NULL,
+				 now,
+				 NULL,
+				 /* translators: header capitalization */
+				 _("Mail Notification Properties Dialog"),
+				 subject,
+				 NULL,
+				 MN_MESSAGE_NEW);
+	g_free(subject);
+
+	messages = g_slist_append(messages, message);
+      }
+
+    mn_mailbox_set_messages(mailbox, messages);
+    mn_g_object_slist_free(messages);
+  }}
+#line 176 "mn-test-mailbox.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 78 "mn-test-mailbox.gob"
+MNMailbox * 
+mn_test_mailbox_new (void)
+#line 183 "mn-test-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Test:Mailbox::new"
+{
+#line 80 "mn-test-mailbox.gob"
+	
+    return MN_MAILBOX(GET_NEW);
+  }}
+#line 191 "mn-test-mailbox.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-test-mailbox.gob b/src/mn-test-mailbox.gob
@@ -0,0 +1,83 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+requires 2.0.14
+
+%headertop{
+#include "mn-mailbox.h"
+%}
+
+%{
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-message.h"
+#include "mn-util.h"
+%}
+
+class MN:Test:Mailbox from MN:Mailbox
+{
+  init (self)
+  {
+    MNMailbox *mailbox = MN_MAILBOX(self);
+
+    mn_mailbox_set_poll(mailbox, FALSE);
+    mailbox->runtime_name = g_strdup(_("Test mailbox"));
+  }
+
+  override (MN:Mailbox) void
+    check (MNMailbox *mailbox)
+  {
+    GSList *messages = NULL;
+    time_t now;
+    int i;
+
+    PARENT_HANDLER(mailbox);
+
+    now = mn_time();
+
+    for (i = 1; i < 4; i++)
+      {
+	MNMessage *message;
+	char *subject;
+
+	subject = g_strdup_printf(_("Test message #%i"), i);
+	message = mn_message_new(mailbox,
+				 NULL,
+				 now,
+				 NULL,
+				 /* translators: header capitalization */
+				 _("Mail Notification Properties Dialog"),
+				 subject,
+				 NULL,
+				 MN_MESSAGE_NEW);
+	g_free(subject);
+
+	messages = g_slist_append(messages, message);
+      }
+
+    mn_mailbox_set_messages(mailbox, messages);
+    mn_g_object_slist_free(messages);
+  }
+
+  public MNMailbox *
+    new (void)
+  {
+    return MN_MAILBOX(GET_NEW);
+  }
+}
diff --git a/src/mn-corba-object.gob.stamp b/src/mn-test-mailbox.gob.stamp
diff --git a/src/mn-test-mailbox.h b/src/mn-test-mailbox.h
@@ -0,0 +1,58 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include "mn-mailbox.h"
+
+#ifndef __MN_TEST_MAILBOX_H__
+#define __MN_TEST_MAILBOX_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_TEST_MAILBOX	(mn_test_mailbox_get_type())
+#define MN_TEST_MAILBOX(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_test_mailbox_get_type(), MNTestMailbox)
+#define MN_TEST_MAILBOX_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_test_mailbox_get_type(), MNTestMailbox const)
+#define MN_TEST_MAILBOX_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_test_mailbox_get_type(), MNTestMailboxClass)
+#define MN_IS_TEST_MAILBOX(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_test_mailbox_get_type ())
+
+#define MN_TEST_MAILBOX_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_test_mailbox_get_type(), MNTestMailboxClass)
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_TEST_MAILBOX__
+#define __TYPEDEF_MN_TEST_MAILBOX__
+typedef struct _MNTestMailbox MNTestMailbox;
+#endif
+struct _MNTestMailbox {
+	MNMailbox __parent__;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNTestMailboxClass MNTestMailboxClass;
+struct _MNTestMailboxClass {
+	MNMailboxClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_test_mailbox_get_type	(void);
+MNMailbox * 	mn_test_mailbox_new	(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-text-table-private.h b/src/mn-text-table-private.h
@@ -10,7 +10,7 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 29 "mn-text-table.gob"
+#line 30 "mn-text-table.gob"
 
 typedef struct
 {
@@ -20,17 +20,17 @@ typedef struct
 
 #line 22 "mn-text-table-private.h"
 struct _MNTextTablePrivate {
-#line 78 "mn-text-table.gob"
+#line 79 "mn-text-table.gob"
 	GQueue * rows;
-#line 81 "mn-text-table.gob"
+#line 82 "mn-text-table.gob"
 	GArray * column_sizes;
-#line 84 "mn-text-table.gob"
+#line 85 "mn-text-table.gob"
 	Row * row;
-#line 86 "mn-text-table.gob"
-	gboolean dirty;
 #line 87 "mn-text-table.gob"
-	int width;
+	gboolean dirty;
 #line 88 "mn-text-table.gob"
+	int width;
+#line 89 "mn-text-table.gob"
 	int height;
 #line 36 "mn-text-table-private.h"
 };
diff --git a/src/mn-text-table.c b/src/mn-text-table.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 37 "mn-text-table.gob"
+#line 38 "mn-text-table.gob"
 
 #include "mn-util.h"
 
@@ -140,7 +140,7 @@ ___finalize(GObject *obj_self)
 #define rows (self->_priv->rows)
 #define VAR rows
 	{
-#line 79 "mn-text-table.gob"
+#line 80 "mn-text-table.gob"
 	 mn_g_queue_free_deep_custom(VAR, (GFunc) self_row_free, NULL); }
 #line 146 "mn-text-table.c"
 	memset(&rows, 0, sizeof(rows));
@@ -149,7 +149,7 @@ ___finalize(GObject *obj_self)
 #define column_sizes (self->_priv->column_sizes)
 #define VAR column_sizes
 	{
-#line 82 "mn-text-table.gob"
+#line 83 "mn-text-table.gob"
 	 g_array_free(VAR, TRUE); }
 #line 155 "mn-text-table.c"
 	memset(&column_sizes, 0, sizeof(column_sizes));
@@ -169,34 +169,34 @@ mn_text_table_class_init (MNTextTableClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (GTK_TYPE_DRAWING_AREA);
 
-#line 116 "mn-text-table.gob"
+#line 117 "mn-text-table.gob"
 	gtk_widget_class->expose_event = ___4_mn_text_table_expose_event;
-#line 127 "mn-text-table.gob"
+#line 128 "mn-text-table.gob"
 	gtk_widget_class->size_request = ___5_mn_text_table_size_request;
-#line 270 "mn-text-table.gob"
+#line 271 "mn-text-table.gob"
 	c->clear = ___real_mn_text_table_clear;
 #line 179 "mn-text-table.c"
 	g_object_class->finalize = ___finalize;
 }
 #undef __GOB_FUNCTION__
-#line 90 "mn-text-table.gob"
+#line 91 "mn-text-table.gob"
 static void 
 mn_text_table_init (MNTextTable * self G_GNUC_UNUSED)
 #line 186 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_TEXT_TABLE,MNTextTablePrivate);
-#line 78 "mn-text-table.gob"
+#line 79 "mn-text-table.gob"
 	self->_priv->rows = g_queue_new();
 #line 192 "mn-text-table.c"
-#line 81 "mn-text-table.gob"
+#line 82 "mn-text-table.gob"
 	self->_priv->column_sizes = g_array_new(FALSE, TRUE, sizeof(int));
 #line 195 "mn-text-table.c"
-#line 82 "mn-text-table.gob"
+#line 83 "mn-text-table.gob"
 	self->_priv->dirty = TRUE;
 #line 198 "mn-text-table.c"
  {
-#line 91 "mn-text-table.gob"
+#line 92 "mn-text-table.gob"
 
     /* allow consumers to receive button-press-event */
     gtk_widget_add_events(GTK_WIDGET(self), GDK_BUTTON_PRESS_MASK);
@@ -213,17 +213,17 @@ mn_text_table_init (MNTextTable * self G_GNUC_UNUSED)
 
 
 
-#line 101 "mn-text-table.gob"
+#line 102 "mn-text-table.gob"
 static void 
 mn_text_table_row_free (Row * row)
 #line 220 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::row_free"
-#line 101 "mn-text-table.gob"
+#line 102 "mn-text-table.gob"
 	g_return_if_fail (row != NULL);
 #line 225 "mn-text-table.c"
 {
-#line 103 "mn-text-table.gob"
+#line 104 "mn-text-table.gob"
 	
     mn_g_queue_free_deep_custom(row->cells, (GFunc) self_cell_free, NULL);
     g_free(row);
@@ -231,17 +231,17 @@ mn_text_table_row_free (Row * row)
 #line 232 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 108 "mn-text-table.gob"
+#line 109 "mn-text-table.gob"
 static void 
 mn_text_table_cell_free (MNTextTableCell * cell)
 #line 238 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::cell_free"
-#line 108 "mn-text-table.gob"
+#line 109 "mn-text-table.gob"
 	g_return_if_fail (cell != NULL);
 #line 243 "mn-text-table.c"
 {
-#line 110 "mn-text-table.gob"
+#line 111 "mn-text-table.gob"
 	
     if (cell->layout)
       g_object_unref(cell->layout);
@@ -250,7 +250,7 @@ mn_text_table_cell_free (MNTextTableCell * cell)
 #line 251 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 116 "mn-text-table.gob"
+#line 117 "mn-text-table.gob"
 static gboolean 
 ___4_mn_text_table_expose_event (GtkWidget * widget G_GNUC_UNUSED, GdkEventExpose * event)
 #line 257 "mn-text-table.c"
@@ -261,7 +261,7 @@ ___4_mn_text_table_expose_event (GtkWidget * widget G_GNUC_UNUSED, GdkEventExpos
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::expose_event"
 {
-#line 118 "mn-text-table.gob"
+#line 119 "mn-text-table.gob"
 	
     Self *self = SELF(widget);
 
@@ -274,7 +274,7 @@ ___4_mn_text_table_expose_event (GtkWidget * widget G_GNUC_UNUSED, GdkEventExpos
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 127 "mn-text-table.gob"
+#line 128 "mn-text-table.gob"
 static void 
 ___5_mn_text_table_size_request (GtkWidget * widget G_GNUC_UNUSED, GtkRequisition * requisition)
 #line 281 "mn-text-table.c"
@@ -284,7 +284,7 @@ ___5_mn_text_table_size_request (GtkWidget * widget G_GNUC_UNUSED, GtkRequisitio
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::size_request"
 {
-#line 129 "mn-text-table.gob"
+#line 130 "mn-text-table.gob"
 	
     Self *self = SELF(widget);
 
@@ -297,19 +297,19 @@ ___5_mn_text_table_size_request (GtkWidget * widget G_GNUC_UNUSED, GtkRequisitio
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 138 "mn-text-table.gob"
+#line 139 "mn-text-table.gob"
 static void 
 mn_text_table_set_dirty (MNTextTable * self)
 #line 304 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::set_dirty"
-#line 138 "mn-text-table.gob"
+#line 139 "mn-text-table.gob"
 	g_return_if_fail (self != NULL);
-#line 138 "mn-text-table.gob"
+#line 139 "mn-text-table.gob"
 	g_return_if_fail (MN_IS_TEXT_TABLE (self));
 #line 311 "mn-text-table.c"
 {
-#line 140 "mn-text-table.gob"
+#line 141 "mn-text-table.gob"
 	
     if (! selfp->dirty)
       {
@@ -320,19 +320,19 @@ mn_text_table_set_dirty (MNTextTable * self)
 #line 321 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 148 "mn-text-table.gob"
+#line 149 "mn-text-table.gob"
 static void 
 mn_text_table_context_changed (MNTextTable * self)
 #line 327 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::context_changed"
-#line 148 "mn-text-table.gob"
+#line 149 "mn-text-table.gob"
 	g_return_if_fail (self != NULL);
-#line 148 "mn-text-table.gob"
+#line 149 "mn-text-table.gob"
 	g_return_if_fail (MN_IS_TEXT_TABLE (self));
 #line 334 "mn-text-table.c"
 {
-#line 150 "mn-text-table.gob"
+#line 151 "mn-text-table.gob"
 	
     GList *la;
 
@@ -358,19 +358,19 @@ mn_text_table_context_changed (MNTextTable * self)
 #line 359 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 173 "mn-text-table.gob"
+#line 174 "mn-text-table.gob"
 static void 
 mn_text_table_relayout (MNTextTable * self)
 #line 365 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::relayout"
-#line 173 "mn-text-table.gob"
+#line 174 "mn-text-table.gob"
 	g_return_if_fail (self != NULL);
-#line 173 "mn-text-table.gob"
+#line 174 "mn-text-table.gob"
 	g_return_if_fail (MN_IS_TEXT_TABLE (self));
 #line 372 "mn-text-table.c"
 {
-#line 175 "mn-text-table.gob"
+#line 176 "mn-text-table.gob"
 	
     int i;
     GList *la;
@@ -432,19 +432,19 @@ mn_text_table_relayout (MNTextTable * self)
 #line 433 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 234 "mn-text-table.gob"
+#line 235 "mn-text-table.gob"
 static void 
 mn_text_table_redraw (MNTextTable * self)
 #line 439 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::redraw"
-#line 234 "mn-text-table.gob"
+#line 235 "mn-text-table.gob"
 	g_return_if_fail (self != NULL);
-#line 234 "mn-text-table.gob"
+#line 235 "mn-text-table.gob"
 	g_return_if_fail (MN_IS_TEXT_TABLE (self));
 #line 446 "mn-text-table.c"
 {
-#line 236 "mn-text-table.gob"
+#line 237 "mn-text-table.gob"
 	
     GtkWidget *widget = GTK_WIDGET(self);
     GList *la;
@@ -481,15 +481,15 @@ mn_text_table_redraw (MNTextTable * self)
 #line 482 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 270 "mn-text-table.gob"
+#line 271 "mn-text-table.gob"
 void 
 mn_text_table_clear (MNTextTable * self)
 #line 488 "mn-text-table.c"
 {
 	MNTextTableClass *klass;
-#line 270 "mn-text-table.gob"
+#line 271 "mn-text-table.gob"
 	g_return_if_fail (self != NULL);
-#line 270 "mn-text-table.gob"
+#line 271 "mn-text-table.gob"
 	g_return_if_fail (MN_IS_TEXT_TABLE (self));
 #line 495 "mn-text-table.c"
 	klass = MN_TEXT_TABLE_GET_CLASS(self);
@@ -497,14 +497,14 @@ mn_text_table_clear (MNTextTable * self)
 	if(klass->clear)
 		(*klass->clear)(self);
 }
-#line 270 "mn-text-table.gob"
+#line 271 "mn-text-table.gob"
 static void 
 ___real_mn_text_table_clear (MNTextTable * self G_GNUC_UNUSED)
 #line 504 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::clear"
 {
-#line 272 "mn-text-table.gob"
+#line 273 "mn-text-table.gob"
 	
     Row *row;
 
@@ -520,40 +520,40 @@ ___real_mn_text_table_clear (MNTextTable * self G_GNUC_UNUSED)
 #line 521 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 285 "mn-text-table.gob"
+#line 286 "mn-text-table.gob"
 MNTextTableCell * 
 mn_text_table_append_text_cell (MNTextTable * self, const char * text)
 #line 527 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::append_text_cell"
-#line 285 "mn-text-table.gob"
+#line 286 "mn-text-table.gob"
 	g_return_val_if_fail (self != NULL, (MNTextTableCell * )0);
-#line 285 "mn-text-table.gob"
+#line 286 "mn-text-table.gob"
 	g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0);
 #line 534 "mn-text-table.c"
 {
-#line 287 "mn-text-table.gob"
+#line 288 "mn-text-table.gob"
 	
     return self_append_text_cell_from_layout(self, gtk_widget_create_pango_layout(GTK_WIDGET(self), text));
   }}
 #line 540 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 291 "mn-text-table.gob"
+#line 292 "mn-text-table.gob"
 MNTextTableCell * 
 mn_text_table_append_text_cell_from_markup (MNTextTable * self, const char * markup)
 #line 546 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::append_text_cell_from_markup"
-#line 291 "mn-text-table.gob"
+#line 292 "mn-text-table.gob"
 	g_return_val_if_fail (self != NULL, (MNTextTableCell * )0);
-#line 291 "mn-text-table.gob"
+#line 292 "mn-text-table.gob"
 	g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0);
-#line 291 "mn-text-table.gob"
+#line 292 "mn-text-table.gob"
 	g_return_val_if_fail (markup != NULL, (MNTextTableCell * )0);
 #line 555 "mn-text-table.c"
 {
-#line 293 "mn-text-table.gob"
+#line 294 "mn-text-table.gob"
 	
     PangoLayout *layout;
 
@@ -565,21 +565,21 @@ mn_text_table_append_text_cell_from_markup (MNTextTable * self, const char * mar
 #line 566 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 302 "mn-text-table.gob"
+#line 303 "mn-text-table.gob"
 MNTextTableCell * 
 mn_text_table_append_text_cell_from_layout (MNTextTable * self, PangoLayout * layout)
 #line 572 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::append_text_cell_from_layout"
-#line 302 "mn-text-table.gob"
+#line 303 "mn-text-table.gob"
 	g_return_val_if_fail (self != NULL, (MNTextTableCell * )0);
-#line 302 "mn-text-table.gob"
+#line 303 "mn-text-table.gob"
 	g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0);
-#line 302 "mn-text-table.gob"
+#line 303 "mn-text-table.gob"
 	g_return_val_if_fail (layout != NULL, (MNTextTableCell * )0);
 #line 581 "mn-text-table.c"
 {
-#line 304 "mn-text-table.gob"
+#line 305 "mn-text-table.gob"
 	
     MNTextTableCell *cell;
 
@@ -594,19 +594,19 @@ mn_text_table_append_text_cell_from_layout (MNTextTable * self, PangoLayout * la
 #line 595 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 316 "mn-text-table.gob"
+#line 317 "mn-text-table.gob"
 MNTextTableCell * 
 mn_text_table_append_blank_cell (MNTextTable * self, int width, int height)
 #line 601 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::append_blank_cell"
-#line 316 "mn-text-table.gob"
+#line 317 "mn-text-table.gob"
 	g_return_val_if_fail (self != NULL, (MNTextTableCell * )0);
-#line 316 "mn-text-table.gob"
+#line 317 "mn-text-table.gob"
 	g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0);
 #line 608 "mn-text-table.c"
 {
-#line 318 "mn-text-table.gob"
+#line 319 "mn-text-table.gob"
 	
     MNTextTableCell *cell;
 
@@ -623,19 +623,19 @@ mn_text_table_append_blank_cell (MNTextTable * self, int width, int height)
 #line 624 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 332 "mn-text-table.gob"
+#line 333 "mn-text-table.gob"
 static void 
 mn_text_table_append_cell_real (MNTextTable * self, MNTextTableCell * cell)
 #line 630 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::append_cell_real"
-#line 332 "mn-text-table.gob"
+#line 333 "mn-text-table.gob"
 	g_return_if_fail (self != NULL);
-#line 332 "mn-text-table.gob"
+#line 333 "mn-text-table.gob"
 	g_return_if_fail (MN_IS_TEXT_TABLE (self));
 #line 637 "mn-text-table.c"
 {
-#line 334 "mn-text-table.gob"
+#line 335 "mn-text-table.gob"
 	
     if (! selfp->row)
       {
@@ -652,23 +652,23 @@ mn_text_table_append_cell_real (MNTextTable * self, MNTextTableCell * cell)
 #line 653 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 348 "mn-text-table.gob"
+#line 349 "mn-text-table.gob"
 void 
 mn_text_table_cell_set_text (MNTextTable * self, MNTextTableCell * cell, const char * text)
 #line 659 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::cell_set_text"
-#line 348 "mn-text-table.gob"
+#line 349 "mn-text-table.gob"
 	g_return_if_fail (self != NULL);
-#line 348 "mn-text-table.gob"
+#line 349 "mn-text-table.gob"
 	g_return_if_fail (MN_IS_TEXT_TABLE (self));
-#line 348 "mn-text-table.gob"
+#line 349 "mn-text-table.gob"
 	g_return_if_fail (cell != NULL);
-#line 348 "mn-text-table.gob"
+#line 349 "mn-text-table.gob"
 	g_return_if_fail (text != NULL);
 #line 670 "mn-text-table.c"
 {
-#line 352 "mn-text-table.gob"
+#line 353 "mn-text-table.gob"
 	
     const char *current_text;
 
@@ -685,19 +685,19 @@ mn_text_table_cell_set_text (MNTextTable * self, MNTextTableCell * cell, const c
 #line 686 "mn-text-table.c"
 #undef __GOB_FUNCTION__
 
-#line 366 "mn-text-table.gob"
+#line 367 "mn-text-table.gob"
 void 
 mn_text_table_line_break (MNTextTable * self)
 #line 692 "mn-text-table.c"
 {
 #define __GOB_FUNCTION__ "MN:Text:Table::line_break"
-#line 366 "mn-text-table.gob"
+#line 367 "mn-text-table.gob"
 	g_return_if_fail (self != NULL);
-#line 366 "mn-text-table.gob"
+#line 367 "mn-text-table.gob"
 	g_return_if_fail (MN_IS_TEXT_TABLE (self));
 #line 699 "mn-text-table.c"
 {
-#line 368 "mn-text-table.gob"
+#line 369 "mn-text-table.gob"
 	
     selfp->row = NULL;
   }}
diff --git a/src/mn-text-table.gob b/src/mn-text-table.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
diff --git a/src/mn-tooltips-private.h b/src/mn-tooltips-private.h
@@ -10,7 +10,7 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 29 "mn-tooltips.gob"
+#line 32 "mn-tooltips.gob"
 
 #include "mn-locked-callback.h"
 
@@ -23,19 +23,19 @@ typedef struct
 
 #line 25 "mn-tooltips-private.h"
 struct _MNTooltipsPrivate {
-#line 76 "mn-tooltips.gob"
+#line 79 "mn-tooltips.gob"
 	GtkWidget * window;
-#line 77 "mn-tooltips.gob"
+#line 80 "mn-tooltips.gob"
 	TooltipsData * active_data;
-#line 78 "mn-tooltips.gob"
+#line 81 "mn-tooltips.gob"
 	GSList * data_list;
-#line 80 "mn-tooltips.gob"
+#line 83 "mn-tooltips.gob"
 	gboolean use_sticky_delay;
-#line 81 "mn-tooltips.gob"
+#line 84 "mn-tooltips.gob"
 	GTimeVal last_popdown;
-#line 82 "mn-tooltips.gob"
+#line 85 "mn-tooltips.gob"
 	MNLockedGSource * timeout_source;
-#line 84 "mn-tooltips.gob"
+#line 87 "mn-tooltips.gob"
 	int border_width;
 #line 41 "mn-tooltips-private.h"
 };
diff --git a/src/mn-tooltips.c b/src/mn-tooltips.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 40 "mn-tooltips.gob"
+#line 43 "mn-tooltips.gob"
 
 #include <eel/eel.h>
 #include "mn-util.h"
@@ -176,7 +176,7 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Tooltips::finalize"
 	MNTooltips *self G_GNUC_UNUSED = MN_TOOLTIPS (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 86 "mn-tooltips.gob"
+#line 89 "mn-tooltips.gob"
 	___1_mn_tooltips_finalize(obj_self);
 #line 182 "mn-tooltips.c"
 }
@@ -187,7 +187,7 @@ mn_tooltips_init (MNTooltips * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::init"
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_TOOLTIPS,MNTooltipsPrivate);
-#line 40 "mn-tooltips.gob"
+#line 43 "mn-tooltips.gob"
 	o->_priv->border_width = 4;
 #line 193 "mn-tooltips.c"
 }
@@ -202,7 +202,7 @@ mn_tooltips_class_init (MNTooltipsClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 86 "mn-tooltips.gob"
+#line 89 "mn-tooltips.gob"
 	g_object_class->finalize = ___finalize;
 #line 208 "mn-tooltips.c"
 }
@@ -210,7 +210,7 @@ mn_tooltips_class_init (MNTooltipsClass * c G_GNUC_UNUSED)
 
 
 
-#line 86 "mn-tooltips.gob"
+#line 89 "mn-tooltips.gob"
 static void 
 ___1_mn_tooltips_finalize (GObject * object G_GNUC_UNUSED)
 #line 217 "mn-tooltips.c"
@@ -220,7 +220,7 @@ ___1_mn_tooltips_finalize (GObject * object G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::finalize"
 {
-#line 88 "mn-tooltips.gob"
+#line 91 "mn-tooltips.gob"
 	
     Self *self = SELF(object);
     GSList *l;
@@ -242,14 +242,14 @@ ___1_mn_tooltips_finalize (GObject * object G_GNUC_UNUSED)
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 106 "mn-tooltips.gob"
+#line 109 "mn-tooltips.gob"
 static void 
 mn_tooltips_destroy_data (TooltipsData * data)
 #line 249 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::destroy_data"
 {
-#line 108 "mn-tooltips.gob"
+#line 111 "mn-tooltips.gob"
 	
     g_object_disconnect(data->widget,
 			"any-signal", self_event_after_h, data,
@@ -265,14 +265,14 @@ mn_tooltips_destroy_data (TooltipsData * data)
 #line 266 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 121 "mn-tooltips.gob"
+#line 124 "mn-tooltips.gob"
 static void 
 mn_tooltips_display_closed_h (GdkDisplay * display, gboolean is_error, gpointer user_data)
 #line 272 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::display_closed_h"
 {
-#line 125 "mn-tooltips.gob"
+#line 128 "mn-tooltips.gob"
 	
     Self *self = SELF(user_data);
     self_unset_window(self);
@@ -280,19 +280,19 @@ mn_tooltips_display_closed_h (GdkDisplay * display, gboolean is_error, gpointer 
 #line 281 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 130 "mn-tooltips.gob"
+#line 133 "mn-tooltips.gob"
 static void 
 mn_tooltips_disconnect_display_closed (MNTooltips * self)
 #line 287 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::disconnect_display_closed"
-#line 130 "mn-tooltips.gob"
+#line 133 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 130 "mn-tooltips.gob"
+#line 133 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
 #line 294 "mn-tooltips.c"
 {
-#line 132 "mn-tooltips.gob"
+#line 135 "mn-tooltips.gob"
 	
     g_signal_handlers_disconnect_by_func(gtk_widget_get_display(selfp->window),
 					 self_display_closed_h,
@@ -301,19 +301,19 @@ mn_tooltips_disconnect_display_closed (MNTooltips * self)
 #line 302 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 138 "mn-tooltips.gob"
+#line 141 "mn-tooltips.gob"
 static void 
 mn_tooltips_unset_window (MNTooltips * self)
 #line 308 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::unset_window"
-#line 138 "mn-tooltips.gob"
+#line 141 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 138 "mn-tooltips.gob"
+#line 141 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
 #line 315 "mn-tooltips.c"
 {
-#line 140 "mn-tooltips.gob"
+#line 143 "mn-tooltips.gob"
 	
     if (selfp->window)
       {
@@ -324,19 +324,19 @@ mn_tooltips_unset_window (MNTooltips * self)
 #line 325 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 148 "mn-tooltips.gob"
+#line 151 "mn-tooltips.gob"
 static void 
 mn_tooltips_update_screen (MNTooltips * self, gboolean new_window)
 #line 331 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::update_screen"
-#line 148 "mn-tooltips.gob"
+#line 151 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 148 "mn-tooltips.gob"
+#line 151 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
 #line 338 "mn-tooltips.c"
 {
-#line 150 "mn-tooltips.gob"
+#line 153 "mn-tooltips.gob"
 	
     gboolean screen_changed = FALSE;
 
@@ -364,19 +364,19 @@ mn_tooltips_update_screen (MNTooltips * self, gboolean new_window)
 #line 365 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 175 "mn-tooltips.gob"
+#line 178 "mn-tooltips.gob"
 static void 
 mn_tooltips_force_window (MNTooltips * self)
 #line 371 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::force_window"
-#line 175 "mn-tooltips.gob"
+#line 178 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 175 "mn-tooltips.gob"
+#line 178 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
 #line 378 "mn-tooltips.c"
 {
-#line 177 "mn-tooltips.gob"
+#line 180 "mn-tooltips.gob"
 	
     if (! selfp->window)
       {
@@ -398,42 +398,42 @@ mn_tooltips_force_window (MNTooltips * self)
 #line 399 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 196 "mn-tooltips.gob"
+#line 199 "mn-tooltips.gob"
 static TooltipsData * 
 mn_tooltips_get_data (GtkWidget * widget)
 #line 405 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::get_data"
-#line 196 "mn-tooltips.gob"
+#line 199 "mn-tooltips.gob"
 	g_return_val_if_fail (widget != NULL, (TooltipsData * )0);
-#line 196 "mn-tooltips.gob"
+#line 199 "mn-tooltips.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (TooltipsData * )0);
 #line 412 "mn-tooltips.c"
 {
-#line 198 "mn-tooltips.gob"
+#line 201 "mn-tooltips.gob"
 	
     return g_object_get_data(G_OBJECT(widget), TOOLTIPS_DATA);
   }}
 #line 418 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 202 "mn-tooltips.gob"
+#line 205 "mn-tooltips.gob"
 static void 
 mn_tooltips_set_tip_widget_real (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget, int border_width)
 #line 424 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::set_tip_widget_real"
-#line 202 "mn-tooltips.gob"
+#line 205 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 202 "mn-tooltips.gob"
+#line 205 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 202 "mn-tooltips.gob"
+#line 205 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 202 "mn-tooltips.gob"
+#line 205 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 435 "mn-tooltips.c"
 {
-#line 207 "mn-tooltips.gob"
+#line 210 "mn-tooltips.gob"
 	
     TooltipsData *data;
 
@@ -494,23 +494,23 @@ mn_tooltips_set_tip_widget_real (MNTooltips * self, GtkWidget * widget, GtkWidge
 #line 495 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 265 "mn-tooltips.gob"
+#line 268 "mn-tooltips.gob"
 void 
 mn_tooltips_set_tip (MNTooltips * self, GtkWidget * widget, const char * tip_text)
 #line 501 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::set_tip"
-#line 265 "mn-tooltips.gob"
+#line 268 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 265 "mn-tooltips.gob"
+#line 268 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 265 "mn-tooltips.gob"
+#line 268 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 265 "mn-tooltips.gob"
+#line 268 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 512 "mn-tooltips.c"
 {
-#line 269 "mn-tooltips.gob"
+#line 272 "mn-tooltips.gob"
 	
     GtkWidget *label = NULL;
 
@@ -527,42 +527,42 @@ mn_tooltips_set_tip (MNTooltips * self, GtkWidget * widget, const char * tip_tex
 #line 528 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 283 "mn-tooltips.gob"
+#line 286 "mn-tooltips.gob"
 void 
 mn_tooltips_set_tip_widget (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget)
 #line 534 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::set_tip_widget"
-#line 283 "mn-tooltips.gob"
+#line 286 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 283 "mn-tooltips.gob"
+#line 286 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 283 "mn-tooltips.gob"
+#line 286 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 283 "mn-tooltips.gob"
+#line 286 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 545 "mn-tooltips.c"
 {
-#line 287 "mn-tooltips.gob"
+#line 290 "mn-tooltips.gob"
 	
     self_set_tip_widget_real(self, widget, tip_widget, 12);
   }}
 #line 551 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 291 "mn-tooltips.gob"
+#line 294 "mn-tooltips.gob"
 static gboolean 
 mn_tooltips_paint_window (MNTooltips * self)
 #line 557 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::paint_window"
-#line 291 "mn-tooltips.gob"
+#line 294 "mn-tooltips.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 291 "mn-tooltips.gob"
+#line 294 "mn-tooltips.gob"
 	g_return_val_if_fail (MN_IS_TOOLTIPS (self), (gboolean )0);
 #line 564 "mn-tooltips.c"
 {
-#line 293 "mn-tooltips.gob"
+#line 296 "mn-tooltips.gob"
 	
     GtkRequisition req;
 
@@ -584,19 +584,19 @@ mn_tooltips_paint_window (MNTooltips * self)
 #line 585 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 312 "mn-tooltips.gob"
+#line 315 "mn-tooltips.gob"
 static void 
 mn_tooltips_draw_tips (MNTooltips * self)
 #line 591 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::draw_tips"
-#line 312 "mn-tooltips.gob"
+#line 315 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 312 "mn-tooltips.gob"
+#line 315 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
 #line 598 "mn-tooltips.c"
 {
-#line 314 "mn-tooltips.gob"
+#line 317 "mn-tooltips.gob"
 	
     GtkRequisition requisition;
     GtkWidget *widget;
@@ -694,14 +694,14 @@ mn_tooltips_draw_tips (MNTooltips * self)
 #line 695 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 409 "mn-tooltips.gob"
+#line 412 "mn-tooltips.gob"
 static gboolean 
 mn_tooltips_timeout_cb (gpointer data)
 #line 701 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::timeout_cb"
 {
-#line 411 "mn-tooltips.gob"
+#line 414 "mn-tooltips.gob"
 	
     Self *self = SELF(data);
 
@@ -714,19 +714,19 @@ mn_tooltips_timeout_cb (gpointer data)
 #line 715 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 421 "mn-tooltips.gob"
+#line 424 "mn-tooltips.gob"
 static void 
 mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget)
 #line 721 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::set_active_widget"
-#line 421 "mn-tooltips.gob"
+#line 424 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 421 "mn-tooltips.gob"
+#line 424 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
 #line 728 "mn-tooltips.c"
 {
-#line 423 "mn-tooltips.gob"
+#line 426 "mn-tooltips.gob"
 	
     if (selfp->window)
       {
@@ -760,19 +760,19 @@ mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget)
 #line 761 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 454 "mn-tooltips.gob"
+#line 457 "mn-tooltips.gob"
 static void 
 mn_tooltips_show_tip (GtkWidget * widget)
 #line 767 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::show_tip"
-#line 454 "mn-tooltips.gob"
+#line 457 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 454 "mn-tooltips.gob"
+#line 457 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 774 "mn-tooltips.c"
 {
-#line 456 "mn-tooltips.gob"
+#line 459 "mn-tooltips.gob"
 	
     TooltipsData *data;
 
@@ -789,19 +789,19 @@ mn_tooltips_show_tip (GtkWidget * widget)
 #line 790 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 470 "mn-tooltips.gob"
+#line 473 "mn-tooltips.gob"
 static void 
 mn_tooltips_hide_tip (GtkWidget * widget)
 #line 796 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::hide_tip"
-#line 470 "mn-tooltips.gob"
+#line 473 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 470 "mn-tooltips.gob"
+#line 473 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 803 "mn-tooltips.c"
 {
-#line 472 "mn-tooltips.gob"
+#line 475 "mn-tooltips.gob"
 	
     TooltipsData *data;
 
@@ -815,19 +815,19 @@ mn_tooltips_hide_tip (GtkWidget * widget)
 #line 816 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 483 "mn-tooltips.gob"
+#line 486 "mn-tooltips.gob"
 static gboolean 
 mn_tooltips_recently_shown (MNTooltips * self)
 #line 822 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::recently_shown"
-#line 483 "mn-tooltips.gob"
+#line 486 "mn-tooltips.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 483 "mn-tooltips.gob"
+#line 486 "mn-tooltips.gob"
 	g_return_val_if_fail (MN_IS_TOOLTIPS (self), (gboolean )0);
 #line 829 "mn-tooltips.c"
 {
-#line 485 "mn-tooltips.gob"
+#line 488 "mn-tooltips.gob"
 	
     GTimeVal now;
     glong msec;
@@ -840,19 +840,19 @@ mn_tooltips_recently_shown (MNTooltips * self)
 #line 841 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 495 "mn-tooltips.gob"
+#line 498 "mn-tooltips.gob"
 static gboolean 
 mn_tooltips_get_keyboard_mode (GtkWidget * widget)
 #line 847 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::get_keyboard_mode"
-#line 495 "mn-tooltips.gob"
+#line 498 "mn-tooltips.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 495 "mn-tooltips.gob"
+#line 498 "mn-tooltips.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
 #line 854 "mn-tooltips.c"
 {
-#line 497 "mn-tooltips.gob"
+#line 500 "mn-tooltips.gob"
 	
     GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
 
@@ -864,19 +864,19 @@ mn_tooltips_get_keyboard_mode (GtkWidget * widget)
 #line 865 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 506 "mn-tooltips.gob"
+#line 509 "mn-tooltips.gob"
 static void 
 mn_tooltips_start_keyboard_mode (GtkWidget * widget)
 #line 871 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::start_keyboard_mode"
-#line 506 "mn-tooltips.gob"
+#line 509 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 506 "mn-tooltips.gob"
+#line 509 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 878 "mn-tooltips.c"
 {
-#line 508 "mn-tooltips.gob"
+#line 511 "mn-tooltips.gob"
 	
     GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
 
@@ -893,19 +893,19 @@ mn_tooltips_start_keyboard_mode (GtkWidget * widget)
 #line 894 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 522 "mn-tooltips.gob"
+#line 525 "mn-tooltips.gob"
 static void 
 mn_tooltips_stop_keyboard_mode (GtkWidget * widget)
 #line 900 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::stop_keyboard_mode"
-#line 522 "mn-tooltips.gob"
+#line 525 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 522 "mn-tooltips.gob"
+#line 525 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 907 "mn-tooltips.c"
 {
-#line 524 "mn-tooltips.gob"
+#line 527 "mn-tooltips.gob"
 	
     GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
 
@@ -922,19 +922,19 @@ mn_tooltips_stop_keyboard_mode (GtkWidget * widget)
 #line 923 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 538 "mn-tooltips.gob"
+#line 541 "mn-tooltips.gob"
 static void 
 mn_tooltips_start_delay (MNTooltips * self, GtkWidget * widget)
 #line 929 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::start_delay"
-#line 538 "mn-tooltips.gob"
+#line 541 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 538 "mn-tooltips.gob"
+#line 541 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
 #line 936 "mn-tooltips.c"
 {
-#line 540 "mn-tooltips.gob"
+#line 543 "mn-tooltips.gob"
 	
     TooltipsData *old_data;
 
@@ -950,14 +950,14 @@ mn_tooltips_start_delay (MNTooltips * self, GtkWidget * widget)
 #line 951 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 553 "mn-tooltips.gob"
+#line 556 "mn-tooltips.gob"
 static void 
 mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_data)
 #line 957 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::event_after_h"
 {
-#line 555 "mn-tooltips.gob"
+#line 558 "mn-tooltips.gob"
 	
     Self *self;
     TooltipsData *old_data;
@@ -1043,19 +1043,19 @@ mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_d
 #line 1044 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 638 "mn-tooltips.gob"
+#line 641 "mn-tooltips.gob"
 static void 
 mn_tooltips_widget_unmap (GtkWidget * widget, gpointer user_data)
 #line 1050 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::widget_unmap"
-#line 638 "mn-tooltips.gob"
+#line 641 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 638 "mn-tooltips.gob"
+#line 641 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 1057 "mn-tooltips.c"
 {
-#line 640 "mn-tooltips.gob"
+#line 643 "mn-tooltips.gob"
 	
     TooltipsData *data = user_data;
     Self *self = data->self;
@@ -1067,19 +1067,19 @@ mn_tooltips_widget_unmap (GtkWidget * widget, gpointer user_data)
 #line 1068 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 649 "mn-tooltips.gob"
+#line 652 "mn-tooltips.gob"
 static void 
 mn_tooltips_widget_remove (GtkWidget * widget, gpointer user_data)
 #line 1074 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::widget_remove"
-#line 649 "mn-tooltips.gob"
+#line 652 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 649 "mn-tooltips.gob"
+#line 652 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 1081 "mn-tooltips.c"
 {
-#line 651 "mn-tooltips.gob"
+#line 654 "mn-tooltips.gob"
 	
     TooltipsData *data = user_data;
     Self *self = data->self;
@@ -1091,19 +1091,19 @@ mn_tooltips_widget_remove (GtkWidget * widget, gpointer user_data)
 #line 1092 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 660 "mn-tooltips.gob"
+#line 663 "mn-tooltips.gob"
 void 
 mn_tooltips_toggle_keyboard_mode (GtkWidget * widget)
 #line 1098 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::toggle_keyboard_mode"
-#line 660 "mn-tooltips.gob"
+#line 663 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 660 "mn-tooltips.gob"
+#line 663 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
 #line 1105 "mn-tooltips.c"
 {
-#line 662 "mn-tooltips.gob"
+#line 665 "mn-tooltips.gob"
 	
     if (self_get_keyboard_mode(widget))
       self_stop_keyboard_mode(widget);
@@ -1113,14 +1113,14 @@ mn_tooltips_toggle_keyboard_mode (GtkWidget * widget)
 #line 1114 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 669 "mn-tooltips.gob"
+#line 672 "mn-tooltips.gob"
 MNTooltips * 
 mn_tooltips_new (void)
 #line 1120 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::new"
 {
-#line 671 "mn-tooltips.gob"
+#line 674 "mn-tooltips.gob"
 	
     return GET_NEW;
   }}
diff --git a/src/mn-tooltips.gob b/src/mn-tooltips.gob
@@ -1,9 +1,12 @@
 /* 
  * MNTooltips - a tooltips implementation allowing to use an arbitrary
- * widget as tooltip (heavily based on GtkTooltips)
+ * widget as tooltip
  *
+ * Heavily based on GtkTooltips,
  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -15,9 +18,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
diff --git a/src/mn-util.c b/src/mn-util.c
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
@@ -55,6 +56,7 @@ typedef struct
 {
   GMainLoop	*loop;
   int		response;
+  gboolean	destroyed;
 } RunNonmodalInfo;
 
 /*** functions ***************************************************************/
@@ -99,13 +101,16 @@ 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,
+				  MNDialogFlags flags,
 				  const char *primary,
-				  const char *secondary);
+				  const char *format,
+				  va_list args);
 
 static void mn_g_object_connect_weak_notify_cb (gpointer data,
 						GObject *former_object);
 
+static void mn_dialog_run_nonmodal_destroy_h (GtkObject *object,
+					      gpointer user_data);
 static void mn_dialog_run_nonmodal_unmap_h (GtkWidget *widget,
 					    gpointer user_data);
 static void mn_dialog_run_nonmodal_response_h (GtkDialog *dialog,
@@ -116,6 +121,8 @@ static gboolean mn_dialog_run_nonmodal_delete_event_h (GtkWidget *widget,
 						       gpointer user_data);
 static void mn_dialog_run_nonmodal_shutdown_loop (RunNonmodalInfo *info);
 
+static void mn_handle_execute_result (int status, const char *command);
+
 /*** implementation **********************************************************/
 
 void
@@ -250,22 +257,6 @@ mn_g_object_slist_clear (GSList **list)
   *list = NULL;
 }
 
-/**
- * mn_g_object_slist_delete_link:
- * @list: a #GSList of #GObject instances
- * @link_: an element in the #GSList
- *
- * Equivalent of g_slist_delete_link() for a list of GObject
- * instances.
- *
- * Return value: new head of @list.
- **/
-GSList *
-mn_g_object_slist_delete_link (GSList *list, GSList *link_)
-{
-  return mn_g_slist_delete_link_deep_custom(list, link_, (GFunc) g_object_unref, NULL);
-}
-
 void
 mn_g_queue_free_deep_custom (GQueue *queue,
 			     GFunc element_free_func,
@@ -298,16 +289,26 @@ mn_str_isnumeric (const char *str)
 
   g_return_val_if_fail(str != NULL, FALSE);
 
-  if (! *str)
-    return FALSE;
-
   for (i = 0; str[i]; i++)
     if (! g_ascii_isdigit(str[i]))
       return FALSE;
 
-  return TRUE;
+  return i > 0;
 }
 
+gboolean
+mn_str_ishex (const char *str)
+{
+  int i;
+
+  g_return_val_if_fail(str != NULL, FALSE);
+
+  for (i = 0; str[i]; i++)
+    if (! g_ascii_isxdigit(str[i]))
+      return FALSE;
+
+  return i > 0;
+}
 
 /**
  * mn_strstr_span:
@@ -539,7 +540,7 @@ mn_file_chooser_dialog_response_h (GtkDialog *dialog,
 void
 mn_setup_dnd (GtkWidget *widget)
 {
-  const GtkTargetEntry targets[] = {
+  static const GtkTargetEntry targets[] = {
     { "text/uri-list",	0, TARGET_URI_LIST },
     { "text/x-moz-url",	0, TARGET_MOZ_URL }
   };
@@ -728,6 +729,18 @@ mn_display_help (GtkWindow *parent, const char *link_id)
 }
 
 void
+mn_open_link (GtkWindow *parent, const char *url)
+{
+  GError *err = NULL;
+
+  if (! gnome_url_show(url, &err))
+    {
+      mn_error_dialog(parent, _("Unable to open link"), "%s", err->message);
+      g_error_free(err);
+    }
+}
+
+void
 mn_thread_create (GThreadFunc func, gpointer data)
 {
   GError *err = NULL;
@@ -807,22 +820,26 @@ mn_menu_item_new (const char *stock_id, const char *mnemonic)
 
 static void
 mn_error_dialog_real (GtkWindow *parent,
-		      gboolean blocking,
+		      MNDialogFlags flags,
 		      const char *primary,
-		      const char *secondary)
+		      const char *format,
+		      va_list args)
 {
+  char *secondary;
   GtkWidget *dialog;
 
   g_return_if_fail(primary != NULL);
-  g_return_if_fail(secondary != NULL);
+  g_return_if_fail(format != NULL);
 
-  dialog = mn_alert_dialog_new(parent, GTK_MESSAGE_ERROR, primary, secondary);
+  secondary = g_strdup_vprintf(format, args);
+  dialog = mn_alert_dialog_new(parent, GTK_MESSAGE_ERROR, flags, primary, secondary);
+  g_free(secondary);
 
   gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
 
   gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
 
-  if (blocking)
+  if ((flags & MN_DIALOG_BLOCKING) != 0)
     {
       gtk_dialog_run(GTK_DIALOG(dialog));
       gtk_widget_destroy(dialog);
@@ -844,17 +861,30 @@ mn_error_dialog (GtkWindow *parent,
 		 ...)
 {
   va_list args;
-  char *secondary;
 
   g_return_if_fail(primary != NULL);
   g_return_if_fail(format != NULL);
 
   va_start(args, format);
-  secondary = g_strdup_vprintf(format, args);
+  mn_error_dialog_real(parent, 0, primary, format, args);
   va_end(args);
+}
 
-  mn_error_dialog_real(parent, FALSE, primary, secondary);
-  g_free(secondary);
+/* only the secondary text can have markup */
+void
+mn_error_dialog_with_markup (GtkWindow *parent,
+			     const char *primary,
+			     const char *format,
+			     ...)
+{
+  va_list args;
+
+  g_return_if_fail(primary != NULL);
+  g_return_if_fail(format != NULL);
+
+  va_start(args, format);
+  mn_error_dialog_real(parent, MN_DIALOG_MARKUP, primary, format, args);
+  va_end(args);
 }
 
 void
@@ -908,23 +938,20 @@ void
 mn_fatal_error_dialog (GtkWindow *parent, const char *format, ...)
 {
   va_list args;
-  char *secondary;
 
   g_assert(format != NULL);
 
   va_start(args, format);
-  secondary = g_strdup_vprintf(format, args);
+  mn_error_dialog_real(parent, MN_DIALOG_BLOCKING, _("A fatal error has occurred in Mail Notification"), format, args);
   va_end(args);
 
-  mn_error_dialog_real(parent, TRUE, _("A fatal error has occurred in Mail Notification"), secondary);
-  g_free(secondary);
-
   exit(1);
 }
 
 GtkWidget *
 mn_alert_dialog_new (GtkWindow *parent,
 		     GtkMessageType type,
+		     MNDialogFlags flags,
 		     const char *primary,
 		     const char *secondary)
 {
@@ -940,7 +967,11 @@ mn_alert_dialog_new (GtkWindow *parent,
 				  "%s",
 				  primary);
 
-  gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", secondary);
+  if ((flags & MN_DIALOG_MARKUP) != 0)
+    gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), "%s", secondary);
+  else
+    gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "%s", secondary);
+
   gtk_window_set_title(GTK_WINDOW(dialog), ""); /* HIG */
 
   return dialog;
@@ -961,6 +992,13 @@ mn_time (void)
   return t;
 }
 
+void
+mn_g_object_null_unref (gpointer object)
+{
+  if (object)
+    g_object_unref(object);
+}
+
 /**
  * mn_g_object_connect:
  * @object: the object to associate the handlers with
@@ -1131,7 +1169,7 @@ mn_utf8_escape (const char *str)
 int
 mn_dialog_run_nonmodal (GtkDialog *dialog)
 {
-  RunNonmodalInfo info = { NULL, GTK_RESPONSE_NONE };
+  RunNonmodalInfo info = { NULL, GTK_RESPONSE_NONE, FALSE };
 
   g_return_val_if_fail(GTK_IS_DIALOG(dialog), -1);
 
@@ -1141,6 +1179,7 @@ mn_dialog_run_nonmodal (GtkDialog *dialog)
     gtk_widget_show(GTK_WIDGET(dialog));
 
   g_object_connect(dialog,
+		   "signal::destroy", mn_dialog_run_nonmodal_destroy_h, &info,
 		   "signal::unmap", mn_dialog_run_nonmodal_unmap_h, &info,
 		   "signal::response", mn_dialog_run_nonmodal_response_h, &info,
 		   "signal::delete-event", mn_dialog_run_nonmodal_delete_event_h, &info,
@@ -1154,11 +1193,13 @@ mn_dialog_run_nonmodal (GtkDialog *dialog)
 
   g_main_loop_unref(info.loop);
 
-  g_object_disconnect(dialog,
-		      "any-signal", mn_dialog_run_nonmodal_unmap_h, &info,
-		      "any-signal", mn_dialog_run_nonmodal_response_h, &info,
-		      "any-signal", mn_dialog_run_nonmodal_delete_event_h, &info,
-		      NULL);
+  if (! info.destroyed)
+    g_object_disconnect(dialog,
+			"any-signal", mn_dialog_run_nonmodal_destroy_h, &info,
+			"any-signal", mn_dialog_run_nonmodal_unmap_h, &info,
+			"any-signal", mn_dialog_run_nonmodal_response_h, &info,
+			"any-signal", mn_dialog_run_nonmodal_delete_event_h, &info,
+			NULL);
 
   g_object_unref(dialog);
 
@@ -1166,6 +1207,19 @@ mn_dialog_run_nonmodal (GtkDialog *dialog)
 }
 
 static void
+mn_dialog_run_nonmodal_destroy_h (GtkObject *object, gpointer user_data)
+{
+  RunNonmodalInfo *info = user_data;
+
+  info->destroyed = TRUE;
+
+  /*
+   * mn_dialog_run_nonmodal_shutdown_loop() will be called by
+   * mn_dialog_run_nonmodal_unmap_h()
+   */
+}
+
+static void
 mn_dialog_run_nonmodal_unmap_h (GtkWidget *widget, gpointer user_data)
 {
   RunNonmodalInfo *info = user_data;
@@ -1308,3 +1362,212 @@ mn_g_static_mutex_unlock (GStaticMutex *mutex)
 {
   g_static_mutex_unlock(mutex);
 }
+
+static void
+mn_handle_execute_result (int status, const char *command)
+{
+  if (status < 0)
+    mn_error_dialog(NULL,
+		    _("A command error has occurred in Mail Notification"),
+		    _("Unable to execute \"%s\": %s."),
+		    command,
+		    g_strerror(errno));
+}
+
+void
+mn_execute_command (const char *command)
+{
+  g_return_if_fail(command != NULL);
+
+  mn_handle_execute_result(gnome_execute_shell(NULL, command), command);
+}
+
+void
+mn_execute_command_in_terminal (const char *command)
+{
+  g_return_if_fail(command != NULL);
+
+  mn_handle_execute_result(gnome_execute_terminal_shell(NULL, command), command);
+}
+
+/**
+ * mn_shell_quote_safe:
+ * @unquoted_string: a literal string
+ *
+ * Like g_shell_quote(), but guarantees that the string will be quoted
+ * using single quotes, therefore making sure that backticks will not
+ * be processed.
+ *
+ * Return value: the quoted string
+ **/
+char *
+mn_shell_quote_safe (const char *unquoted_string)
+{
+  GString *result;
+  int i;
+
+  g_return_val_if_fail(unquoted_string != NULL, NULL);
+
+  result = g_string_new("'");
+
+  for (i = 0; unquoted_string[i]; i++)
+    if (unquoted_string[i] == '\'')
+      g_string_append(result, "'\\''");
+    else
+      g_string_append_c(result, unquoted_string[i]);
+
+  g_string_append_c(result, '\'');
+
+  return g_string_free(result, FALSE);
+}
+
+GtkWidget *
+mn_hig_section_new (const char *title,
+		    GtkWidget **label,
+		    GtkWidget **alignment)
+{
+  GtkWidget *section;
+  char *markup;
+  GtkWidget *_label;
+  GtkWidget *_alignment;
+
+  g_return_val_if_fail(title != NULL, NULL);
+
+  section = gtk_vbox_new(FALSE, 6);
+
+  markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", title);
+  _label = gtk_label_new(markup);
+  g_free(markup);
+
+  gtk_misc_set_alignment(GTK_MISC(_label), 0.0, 0.5);
+  gtk_label_set_use_markup(GTK_LABEL(_label), TRUE);
+
+  gtk_box_pack_start(GTK_BOX(section), _label, FALSE, FALSE, 0);
+
+  _alignment = gtk_alignment_new(0.5, 0.5, 1.0, 1.0);
+  gtk_alignment_set_padding(GTK_ALIGNMENT(_alignment), 0, 0, 12, 0);
+
+  gtk_box_pack_start(GTK_BOX(section), _alignment, TRUE, TRUE, 0);
+
+  gtk_widget_show(_label);
+  gtk_widget_show(_alignment);
+
+  if (label)
+    *label = _label;
+  if (alignment)
+    *alignment = _alignment;
+
+  return section;
+}
+
+GtkWidget *
+mn_hig_section_new_with_box (const char *title,
+			     GtkWidget **label,
+			     GtkWidget **vbox)
+{
+  GtkWidget *section;
+  GtkWidget *alignment;
+  GtkWidget *_vbox;
+
+  g_return_val_if_fail(title != NULL, NULL);
+
+  section = mn_hig_section_new(title, label, &alignment);
+
+  _vbox = gtk_vbox_new(FALSE, 6);
+  gtk_container_add(GTK_CONTAINER(alignment), _vbox);
+  gtk_widget_show(_vbox);
+
+  if (vbox)
+    *vbox = _vbox;
+
+  return section;
+}
+
+char *
+mn_g_value_to_string (const GValue *value)
+{
+  char *str;
+
+  g_return_val_if_fail(G_IS_VALUE(value), NULL);
+
+  if (G_VALUE_HOLDS_BOOLEAN(value))
+    str = g_strdup(g_value_get_boolean(value) ? "true" : "false");
+  else if (G_VALUE_HOLDS_INT(value))
+    str = g_strdup_printf("%i", g_value_get_int(value));
+  else if (G_VALUE_HOLDS_ULONG(value))
+    str = g_strdup_printf("%lu", g_value_get_ulong(value));
+  else if (G_VALUE_HOLDS_STRING(value))
+    str = g_value_dup_string(value);
+  else if (G_VALUE_HOLDS_ENUM(value))
+    {
+      GEnumClass *enum_class;
+      GEnumValue *enum_value;
+
+      enum_class = g_type_class_ref(G_VALUE_TYPE(value));
+      enum_value = g_enum_get_value(enum_class, g_value_get_enum(value));
+      g_assert(enum_value != NULL);
+
+      str = g_strdup(enum_value->value_nick);
+      g_type_class_unref(enum_class);
+    }
+  else
+    g_return_val_if_reached(NULL);
+
+  return str;
+}
+
+gboolean
+mn_g_value_from_string (GValue *value, const char *str)
+{
+  g_return_val_if_fail(G_IS_VALUE(value), FALSE);
+  g_return_val_if_fail(str != NULL, FALSE);
+
+  if (G_VALUE_HOLDS_BOOLEAN(value))
+    {
+      if (! strcmp(str, "false"))
+	g_value_set_boolean(value, FALSE);
+      else if (! strcmp(str, "true"))
+	g_value_set_boolean(value, TRUE);
+      else
+	return FALSE;
+    }
+  else if (G_VALUE_HOLDS_INT(value))
+    {
+      int n;
+      char *endptr;
+
+      n = strtol(str, &endptr, 10);
+      if (*endptr == '\0')	/* successful conversion */
+	g_value_set_int(value, n);
+      else
+	return FALSE;
+    }
+  else if (G_VALUE_HOLDS_STRING(value))
+    g_value_set_string(value, str);
+  else if (G_VALUE_HOLDS_ENUM(value))
+    {
+      GEnumClass *enum_class;
+      GEnumValue *enum_value;
+      gboolean found;
+
+      enum_class = g_type_class_ref(G_VALUE_TYPE(value));
+      enum_value = g_enum_get_value_by_nick(enum_class, str);
+
+      if (enum_value)
+	{
+	  g_value_set_enum(value, enum_value->value);
+	  found = TRUE;
+	}
+      else
+	found = FALSE;
+
+      g_type_class_unref(enum_class);
+
+      if (! found)
+	return FALSE;
+    }
+  else
+    g_return_val_if_reached(FALSE);
+
+  return TRUE;
+}
diff --git a/src/mn-util.h b/src/mn-util.h
@@ -1,4 +1,5 @@
 /* 
+ * Mail Notification
  * Copyright (C) 2003-2006 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_UTIL_H
@@ -57,14 +58,13 @@ GSList		*mn_g_object_slist_ref		(GSList		*list);
 GSList		*mn_g_object_slist_copy		(GSList		*list);
 void		mn_g_object_slist_free		(GSList		*list);
 void		mn_g_object_slist_clear		(GSList		**list);
-GSList		*mn_g_object_slist_delete_link	(GSList		*list,
-						 GSList		*link_);
 
 void		mn_g_queue_free_deep_custom	(GQueue		*queue,
 						 GFunc		element_free_func,
 						 gpointer	user_data);
 
 gboolean	mn_str_isnumeric		(const char	*str);
+gboolean	mn_str_ishex			(const char	*str);
 char		*mn_strstr_span			(const char	*big,
 						 const char	*little);
 
@@ -95,6 +95,9 @@ gboolean	mn_parse_gnome_copied_files	(const char	*gnome_copied_files,
 
 void		mn_display_help			(GtkWindow	*parent,
 						 const char	*link_id);
+void		mn_open_link			(GtkWindow	*parent,
+						 const char	*url);
+
 void		mn_thread_create		(GThreadFunc	func,
 						 gpointer	data);
 
@@ -109,6 +112,10 @@ void		mn_error_dialog			(GtkWindow	*parent,
 						 const char	*primary,
 						 const char	*format,
 						 ...) G_GNUC_PRINTF(3, 4);
+void		mn_error_dialog_with_markup	(GtkWindow	*parent,
+						 const char	*primary,
+						 const char	*format,
+						 ...) G_GNUC_PRINTF(3, 4);
 void		mn_invalid_uri_dialog		(GtkWindow	*parent,
 						 const char	*primary,
 						 const char	*invalid_uri);
@@ -119,13 +126,21 @@ void		mn_fatal_error_dialog		(GtkWindow	*parent,
 						 const char	*format,
 						 ...) G_GNUC_PRINTF(2, 3) G_GNUC_NORETURN;
 
+typedef enum
+{
+  MN_DIALOG_BLOCKING	= 1 << 0,
+  MN_DIALOG_MARKUP	= 1 << 1
+} MNDialogFlags;
+
 GtkWidget	*mn_alert_dialog_new		(GtkWindow	*parent,
 						 GtkMessageType	type,
+						 MNDialogFlags	flags,
 						 const char	*primary,
 						 const char	*secondary);
 
 time_t		mn_time				(void);
 
+void		mn_g_object_null_unref		(gpointer	object);
 gpointer	mn_g_object_connect		(gpointer	object,
 						 gpointer	instance,
 						 const char	*signal_spec,
@@ -154,4 +169,20 @@ void		mn_gdk_threads_leave		(void);
 void		mn_g_static_mutex_lock		(GStaticMutex *mutex);
 void		mn_g_static_mutex_unlock	(GStaticMutex *mutex);
 
+void		mn_execute_command		(const char	*command);
+void		mn_execute_command_in_terminal	(const char	*command);
+
+char		*mn_shell_quote_safe		(const char	*unquoted_string);
+
+GtkWidget	*mn_hig_section_new		(const char	*title,
+						 GtkWidget	**label,
+						 GtkWidget	**alignment);
+GtkWidget	*mn_hig_section_new_with_box	(const char	*title,
+						 GtkWidget	**label,
+						 GtkWidget	**vbox);
+
+char		*mn_g_value_to_string		(const GValue	*value);
+gboolean	mn_g_value_from_string		(GValue		*value,
+						 const char	*str);
+
 #endif /* _MN_UTIL_H */
diff --git a/src/mn-vfs-mailbox-backend.c b/src/mn-vfs-mailbox-backend.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-vfs-mailbox-backend.gob"
+#line 27 "mn-vfs-mailbox-backend.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -71,6 +71,7 @@ static GObjectClass *parent_class = NULL;
 #define self_monitor_cb mn_vfs_mailbox_backend_monitor_cb
 #define self_is mn_vfs_mailbox_backend_is
 #define self_check mn_vfs_mailbox_backend_check
+#define self_mark_as_read mn_vfs_mailbox_backend_mark_as_read
 GType
 mn_vfs_mailbox_backend_get_type (void)
 {
@@ -127,13 +128,14 @@ mn_vfs_mailbox_backend_class_init (MNVFSMailboxBackendClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 48 "mn-vfs-mailbox-backend.gob"
+#line 51 "mn-vfs-mailbox-backend.gob"
 	g_object_class->finalize = ___1_mn_vfs_mailbox_backend_finalize;
-#line 84 "mn-vfs-mailbox-backend.gob"
+#line 87 "mn-vfs-mailbox-backend.gob"
 	c->monitor_cb = ___real_mn_vfs_mailbox_backend_monitor_cb;
-#line 135 "mn-vfs-mailbox-backend.c"
+#line 136 "mn-vfs-mailbox-backend.c"
 	c->is = NULL;
 	c->check = NULL;
+	c->mark_as_read = NULL;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
     {
@@ -165,9 +167,9 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX:
 		{
-#line 46 "mn-vfs-mailbox-backend.gob"
+#line 49 "mn-vfs-mailbox-backend.gob"
 self->mailbox = g_value_get_pointer (VAL);
-#line 171 "mn-vfs-mailbox-backend.c"
+#line 173 "mn-vfs-mailbox-backend.c"
 		}
 		break;
 	default:
@@ -196,9 +198,9 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX:
 		{
-#line 46 "mn-vfs-mailbox-backend.gob"
+#line 49 "mn-vfs-mailbox-backend.gob"
 g_value_set_pointer (VAL, self->mailbox);
-#line 202 "mn-vfs-mailbox-backend.c"
+#line 204 "mn-vfs-mailbox-backend.c"
 		}
 		break;
 	default:
@@ -215,17 +217,17 @@ g_value_set_pointer (VAL, self->mailbox);
 
 
 
-#line 48 "mn-vfs-mailbox-backend.gob"
+#line 51 "mn-vfs-mailbox-backend.gob"
 static void 
 ___1_mn_vfs_mailbox_backend_finalize (GObject * object G_GNUC_UNUSED)
-#line 222 "mn-vfs-mailbox-backend.c"
+#line 224 "mn-vfs-mailbox-backend.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::finalize"
 {
-#line 50 "mn-vfs-mailbox-backend.gob"
+#line 53 "mn-vfs-mailbox-backend.gob"
 	
     Self *self = SELF(object);
 
@@ -238,112 +240,131 @@ ___1_mn_vfs_mailbox_backend_finalize (GObject * object G_GNUC_UNUSED)
 
     PARENT_HANDLER(object);
   }}
-#line 242 "mn-vfs-mailbox-backend.c"
+#line 244 "mn-vfs-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 63 "mn-vfs-mailbox-backend.gob"
+#line 66 "mn-vfs-mailbox-backend.gob"
 void 
 mn_vfs_mailbox_backend_monitor (MNVFSMailboxBackend * self, unsigned long check_id, const char * uri, GnomeVFSMonitorType type)
-#line 249 "mn-vfs-mailbox-backend.c"
+#line 251 "mn-vfs-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::monitor"
-#line 63 "mn-vfs-mailbox-backend.gob"
+#line 66 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (self != NULL);
-#line 63 "mn-vfs-mailbox-backend.gob"
+#line 66 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self));
-#line 63 "mn-vfs-mailbox-backend.gob"
+#line 66 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (uri != NULL);
-#line 258 "mn-vfs-mailbox-backend.c"
+#line 260 "mn-vfs-mailbox-backend.c"
 {
-#line 68 "mn-vfs-mailbox-backend.gob"
+#line 71 "mn-vfs-mailbox-backend.gob"
 	
     mn_reentrant_mailbox_lock(MN_REENTRANT_MAILBOX(self->mailbox));
     mn_vfs_mailbox_monitor(self->mailbox, uri, self, type, self_real_monitor_cb, self);
     mn_reentrant_mailbox_unlock(MN_REENTRANT_MAILBOX(self->mailbox));
   }}
-#line 266 "mn-vfs-mailbox-backend.c"
+#line 268 "mn-vfs-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 74 "mn-vfs-mailbox-backend.gob"
+#line 77 "mn-vfs-mailbox-backend.gob"
 static void 
 mn_vfs_mailbox_backend_real_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data)
-#line 272 "mn-vfs-mailbox-backend.c"
+#line 274 "mn-vfs-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::real_monitor_cb"
 {
-#line 80 "mn-vfs-mailbox-backend.gob"
+#line 83 "mn-vfs-mailbox-backend.gob"
 	
     self_monitor_cb(user_data, info_uri, event_type);
   }}
-#line 280 "mn-vfs-mailbox-backend.c"
+#line 282 "mn-vfs-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 84 "mn-vfs-mailbox-backend.gob"
+#line 87 "mn-vfs-mailbox-backend.gob"
 static void 
 mn_vfs_mailbox_backend_monitor_cb (MNVFSMailboxBackend * self, const char * info_uri, GnomeVFSMonitorEventType event_type)
-#line 286 "mn-vfs-mailbox-backend.c"
+#line 288 "mn-vfs-mailbox-backend.c"
 {
 	MNVFSMailboxBackendClass *klass;
-#line 84 "mn-vfs-mailbox-backend.gob"
+#line 87 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (self != NULL);
-#line 84 "mn-vfs-mailbox-backend.gob"
+#line 87 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self));
-#line 293 "mn-vfs-mailbox-backend.c"
+#line 295 "mn-vfs-mailbox-backend.c"
 	klass = MN_VFS_MAILBOX_BACKEND_GET_CLASS(self);
 
 	if(klass->monitor_cb)
 		(*klass->monitor_cb)(self,info_uri,event_type);
 }
-#line 84 "mn-vfs-mailbox-backend.gob"
+#line 87 "mn-vfs-mailbox-backend.gob"
 static void 
 ___real_mn_vfs_mailbox_backend_monitor_cb (MNVFSMailboxBackend * self G_GNUC_UNUSED, const char * info_uri, GnomeVFSMonitorEventType event_type)
-#line 302 "mn-vfs-mailbox-backend.c"
+#line 304 "mn-vfs-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::monitor_cb"
 {
-#line 88 "mn-vfs-mailbox-backend.gob"
+#line 91 "mn-vfs-mailbox-backend.gob"
 	
     if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED
 	|| event_type == GNOME_VFS_MONITOR_EVENT_DELETED
 	|| event_type == GNOME_VFS_MONITOR_EVENT_CREATED)
       mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self->mailbox));
   }}
-#line 313 "mn-vfs-mailbox-backend.c"
+#line 315 "mn-vfs-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 95 "mn-vfs-mailbox-backend.gob"
+#line 98 "mn-vfs-mailbox-backend.gob"
 gboolean 
-mn_vfs_mailbox_backend_is (MNVFSMailboxBackend * self, MNVFSMailbox * mailbox)
-#line 319 "mn-vfs-mailbox-backend.c"
+mn_vfs_mailbox_backend_is (MNVFSMailboxBackend * self, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox)
+#line 321 "mn-vfs-mailbox-backend.c"
 {
 	MNVFSMailboxBackendClass *klass;
-#line 95 "mn-vfs-mailbox-backend.gob"
+#line 98 "mn-vfs-mailbox-backend.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 95 "mn-vfs-mailbox-backend.gob"
+#line 98 "mn-vfs-mailbox-backend.gob"
 	g_return_val_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self), (gboolean )0);
-#line 326 "mn-vfs-mailbox-backend.c"
+#line 328 "mn-vfs-mailbox-backend.c"
 	klass = MN_VFS_MAILBOX_BACKEND_GET_CLASS(self);
 
 	if(klass->is)
-		return (*klass->is)(self,mailbox);
+		return (*klass->is)(self,class,mailbox);
 	else
 		return (gboolean )(0);
 }
 
-#line 98 "mn-vfs-mailbox-backend.gob"
+#line 101 "mn-vfs-mailbox-backend.gob"
 void 
 mn_vfs_mailbox_backend_check (MNVFSMailboxBackend * self, unsigned long check_id)
-#line 338 "mn-vfs-mailbox-backend.c"
+#line 340 "mn-vfs-mailbox-backend.c"
 {
 	MNVFSMailboxBackendClass *klass;
-#line 98 "mn-vfs-mailbox-backend.gob"
+#line 101 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (self != NULL);
-#line 98 "mn-vfs-mailbox-backend.gob"
+#line 101 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self));
-#line 345 "mn-vfs-mailbox-backend.c"
+#line 347 "mn-vfs-mailbox-backend.c"
 	klass = MN_VFS_MAILBOX_BACKEND_GET_CLASS(self);
 
 	if(klass->check)
 		(*klass->check)(self,check_id);
 }
+
+#line 104 "mn-vfs-mailbox-backend.gob"
+gboolean 
+mn_vfs_mailbox_backend_mark_as_read (MNVFSMailboxBackend * self, MNVFSMessage * message, GError ** err)
+#line 357 "mn-vfs-mailbox-backend.c"
+{
+	MNVFSMailboxBackendClass *klass;
+#line 104 "mn-vfs-mailbox-backend.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 104 "mn-vfs-mailbox-backend.gob"
+	g_return_val_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self), (gboolean )0);
+#line 364 "mn-vfs-mailbox-backend.c"
+	klass = MN_VFS_MAILBOX_BACKEND_GET_CLASS(self);
+
+	if(klass->mark_as_read)
+		return (*klass->mark_as_read)(self,message,err);
+	else
+		return (gboolean )(0);
+}
diff --git a/src/mn-vfs-mailbox-backend.gob b/src/mn-vfs-mailbox-backend.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,15 +12,16 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
 
 %headertop{
 #include "mn-vfs-mailbox.h"
+#include "mn-vfs-message.h"
 %}
 
 %{
@@ -38,9 +40,10 @@ class MN:VFS:Mailbox:Backend from G:Object (abstract)
   classwide const char *format;
 
   /*
-   * In order to not create reference cycles, we do not keep a
-   * reference to the mailbox. As long as we are alive, it will always
-   * be valid, since we are one of its members.
+   * In order to not create reference cycles, we do not hold a
+   * reference to the mailbox. The code is arranged so that a VFS
+   * backend cannot survive its containing mailbox (no reference to
+   * the backend is held outside of the mailbox code).
    */
   protected MNVFSMailbox *mailbox;
   property POINTER mailbox (link, flags = CONSTRUCT_ONLY, type = MNVFSMailbox *);
@@ -93,8 +96,11 @@ class MN:VFS:Mailbox:Backend from G:Object (abstract)
   }
 
   virtual public gboolean
-    is (self, MN:VFS:Mailbox *mailbox);
+    is (self, MNVFSMailboxBackendClass *class, MN:VFS:Mailbox *mailbox);
 
   virtual public void
     check (self, unsigned long check_id);
+
+  virtual public gboolean
+    mark_as_read (self, MN:VFS:Message *message, GError **err);
 }
diff --git a/src/mn-vfs-mailbox-backend.h b/src/mn-vfs-mailbox-backend.h
@@ -5,6 +5,7 @@
 
 
 #include "mn-vfs-mailbox.h"
+#include "mn-vfs-message.h"
 
 #ifndef __MN_VFS_MAILBOX_BACKEND_H__
 #define __MN_VFS_MAILBOX_BACKEND_H__
@@ -45,8 +46,9 @@ typedef struct _MNVFSMailboxBackendClass MNVFSMailboxBackendClass;
 struct _MNVFSMailboxBackendClass {
 	GObjectClass __parent__;
 	void (* monitor_cb) (MNVFSMailboxBackend * self, const char * info_uri, GnomeVFSMonitorEventType event_type);
-	gboolean (* is) (MNVFSMailboxBackend * self, MNVFSMailbox * mailbox);
+	gboolean (* is) (MNVFSMailboxBackend * self, MNVFSMailboxBackendClass * class, MNVFSMailbox * mailbox);
 	void (* check) (MNVFSMailboxBackend * self, unsigned long check_id);
+	gboolean (* mark_as_read) (MNVFSMailboxBackend * self, MNVFSMessage * message, GError ** err);
 	const char * format;
 };
 
@@ -56,9 +58,13 @@ struct _MNVFSMailboxBackendClass {
  */
 GType	mn_vfs_mailbox_backend_get_type	(void);
 gboolean 	mn_vfs_mailbox_backend_is	(MNVFSMailboxBackend * self,
+					MNVFSMailboxBackendClass * class,
 					MNVFSMailbox * mailbox);
 void 	mn_vfs_mailbox_backend_check	(MNVFSMailboxBackend * self,
 					unsigned long check_id);
+gboolean 	mn_vfs_mailbox_backend_mark_as_read	(MNVFSMailboxBackend * self,
+					MNVFSMessage * message,
+					GError ** err);
 
 /*
  * Argument wrapping macros
diff --git a/src/mn-vfs-mailbox-private.h b/src/mn-vfs-mailbox-private.h
@@ -10,18 +10,18 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 31 "mn-vfs-mailbox.gob"
+#line 32 "mn-vfs-mailbox.gob"
 
 #include "mn-locked-callback.h"
 #include "mn-vfs-mailbox-backend.h"
 
 #line 19 "mn-vfs-mailbox-private.h"
 struct _MNVFSMailboxPrivate {
-#line 76 "mn-vfs-mailbox.gob"
+#line 80 "mn-vfs-mailbox.gob"
 	GSList * monitors;
-#line 77 "mn-vfs-mailbox.gob"
+#line 81 "mn-vfs-mailbox.gob"
 	MNVFSMailboxBackend * backend;
-#line 78 "mn-vfs-mailbox.gob"
+#line 82 "mn-vfs-mailbox.gob"
 	MNLockedGSource * update_poll_source;
 #line 27 "mn-vfs-mailbox-private.h"
 };
diff --git a/src/mn-vfs-mailbox.c b/src/mn-vfs-mailbox.c
@@ -22,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 36 "mn-vfs-mailbox.gob"
+#line 37 "mn-vfs-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -31,6 +31,9 @@
 #if WITH_MBOX
 #include "mn-mbox-mailbox-backend.h"
 #endif
+#if WITH_MOZILLA
+#include "mn-mozilla-mailbox-backend.h"
+#endif
 #if WITH_MH
 #include "mn-mh-mailbox-backend.h"
 #endif
@@ -55,7 +58,7 @@ typedef struct
   GnomeVFSMonitorHandle		*handle;
 } Monitor;
 
-#line 59 "mn-vfs-mailbox.c"
+#line 62 "mn-vfs-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_VFS_MAILBOX(x)
 #define SELF_CONST(x) MN_VFS_MAILBOX_CONST(x)
@@ -140,15 +143,15 @@ ___dispose (GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::dispose"
 	MNVFSMailbox *self G_GNUC_UNUSED = MN_VFS_MAILBOX (obj_self);
-#line 134 "mn-vfs-mailbox.gob"
+#line 141 "mn-vfs-mailbox.gob"
 	___4_mn_vfs_mailbox_dispose(obj_self);
-#line 146 "mn-vfs-mailbox.c"
-#line 74 "mn-vfs-mailbox.gob"
-	if(self->vfs_uri) { gnome_vfs_uri_unref ((gpointer) self->vfs_uri); self->vfs_uri = NULL; }
 #line 149 "mn-vfs-mailbox.c"
-#line 77 "mn-vfs-mailbox.gob"
-	if(self->_priv->backend) { g_object_unref ((gpointer) self->_priv->backend); self->_priv->backend = NULL; }
+#line 78 "mn-vfs-mailbox.gob"
+	if(self->vfs_uri) { gnome_vfs_uri_unref ((gpointer) self->vfs_uri); self->vfs_uri = NULL; }
 #line 152 "mn-vfs-mailbox.c"
+#line 81 "mn-vfs-mailbox.gob"
+	if(self->_priv->backend) { g_object_unref ((gpointer) self->_priv->backend); self->_priv->backend = NULL; }
+#line 155 "mn-vfs-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -161,9 +164,9 @@ ___finalize(GObject *obj_self)
 	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 73 "mn-vfs-mailbox.gob"
+#line 77 "mn-vfs-mailbox.gob"
 	if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; }
-#line 167 "mn-vfs-mailbox.c"
+#line 170 "mn-vfs-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -174,10 +177,10 @@ mn_vfs_mailbox_init (MNVFSMailbox * o G_GNUC_UNUSED)
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_VFS_MAILBOX,MNVFSMailboxPrivate);
 }
 #undef __GOB_FUNCTION__
-#line 100 "mn-vfs-mailbox.gob"
+#line 107 "mn-vfs-mailbox.gob"
 static void 
 mn_vfs_mailbox_class_init (MNVFSMailboxClass * class G_GNUC_UNUSED)
-#line 181 "mn-vfs-mailbox.c"
+#line 184 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -188,18 +191,18 @@ mn_vfs_mailbox_class_init (MNVFSMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_REENTRANT_MAILBOX);
 
-#line 110 "mn-vfs-mailbox.gob"
+#line 117 "mn-vfs-mailbox.gob"
 	g_object_class->constructor = ___3_mn_vfs_mailbox_constructor;
-#line 134 "mn-vfs-mailbox.gob"
+#line 141 "mn-vfs-mailbox.gob"
 	g_object_class->dispose = ___dispose;
-#line 149 "mn-vfs-mailbox.gob"
+#line 156 "mn-vfs-mailbox.gob"
 	mn_mailbox_class->seal = ___5_mn_vfs_mailbox_seal;
-#line 315 "mn-vfs-mailbox.gob"
+#line 322 "mn-vfs-mailbox.gob"
 	mn_reentrant_mailbox_class->reentrant_check = ___c_mn_vfs_mailbox_reentrant_check;
-#line 200 "mn-vfs-mailbox.c"
+#line 203 "mn-vfs-mailbox.c"
 	g_object_class->finalize = ___finalize;
  {
-#line 101 "mn-vfs-mailbox.gob"
+#line 108 "mn-vfs-mailbox.gob"
 
     /*
      * Most VFS mailboxes will probably be local files, or remote
@@ -208,26 +211,29 @@ mn_vfs_mailbox_class_init (MNVFSMailboxClass * class G_GNUC_UNUSED)
      */
     MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 1;
   
-#line 212 "mn-vfs-mailbox.c"
+#line 215 "mn-vfs-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
-#line 80 "mn-vfs-mailbox.gob"
+#line 84 "mn-vfs-mailbox.gob"
 void 
 mn_vfs_mailbox_init_types (void)
-#line 221 "mn-vfs-mailbox.c"
+#line 224 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::init_types"
 {
-#line 82 "mn-vfs-mailbox.gob"
+#line 86 "mn-vfs-mailbox.gob"
 	
     int i = 0;
 
 #if WITH_MBOX
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MBOX_MAILBOX_BACKEND;
 #endif
+#if WITH_MOZILLA
+    mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MOZILLA_MAILBOX_BACKEND;
+#endif
 #if WITH_MH
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MH_MAILBOX_BACKEND;
 #endif
@@ -239,14 +245,14 @@ mn_vfs_mailbox_init_types (void)
 #endif
     mn_vfs_mailbox_backend_types[i] = 0;
   }}
-#line 243 "mn-vfs-mailbox.c"
+#line 249 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 
 
-#line 110 "mn-vfs-mailbox.gob"
+#line 117 "mn-vfs-mailbox.gob"
 static GObject * 
 ___3_mn_vfs_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 250 "mn-vfs-mailbox.c"
+#line 256 "mn-vfs-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 +260,7 @@ ___3_mn_vfs_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_constr
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::constructor"
 {
-#line 112 "mn-vfs-mailbox.gob"
+#line 119 "mn-vfs-mailbox.gob"
 	
     GObject *object;
     Self *self;
@@ -276,21 +282,21 @@ ___3_mn_vfs_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_constr
 
     return object;
   }}
-#line 280 "mn-vfs-mailbox.c"
+#line 286 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 134 "mn-vfs-mailbox.gob"
+#line 141 "mn-vfs-mailbox.gob"
 static void 
 ___4_mn_vfs_mailbox_dispose (GObject * object G_GNUC_UNUSED)
-#line 287 "mn-vfs-mailbox.c"
+#line 293 "mn-vfs-mailbox.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->dispose) \
 		(* G_OBJECT_CLASS(parent_class)->dispose)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::dispose"
 {
-#line 136 "mn-vfs-mailbox.gob"
+#line 143 "mn-vfs-mailbox.gob"
 	
     Self *self = SELF(object);
 
@@ -303,21 +309,21 @@ ___4_mn_vfs_mailbox_dispose (GObject * object G_GNUC_UNUSED)
 
     PARENT_HANDLER(object);
   }}
-#line 307 "mn-vfs-mailbox.c"
+#line 313 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 149 "mn-vfs-mailbox.gob"
+#line 156 "mn-vfs-mailbox.gob"
 static void 
 ___5_mn_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 314 "mn-vfs-mailbox.c"
+#line 320 "mn-vfs-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->seal) \
 		(* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::seal"
 {
-#line 151 "mn-vfs-mailbox.gob"
+#line 158 "mn-vfs-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -344,25 +350,25 @@ ___5_mn_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 	  }
       }
   }}
-#line 348 "mn-vfs-mailbox.c"
+#line 354 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 178 "mn-vfs-mailbox.gob"
+#line 185 "mn-vfs-mailbox.gob"
 void 
 mn_vfs_mailbox_monitor (MNVFSMailbox * self, const char * uri, MNVFSMailboxBackend * owner, GnomeVFSMonitorType type, GnomeVFSMonitorCallback callback, gpointer user_data)
-#line 355 "mn-vfs-mailbox.c"
+#line 361 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor"
-#line 178 "mn-vfs-mailbox.gob"
+#line 185 "mn-vfs-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 178 "mn-vfs-mailbox.gob"
+#line 185 "mn-vfs-mailbox.gob"
 	g_return_if_fail (MN_IS_VFS_MAILBOX (self));
-#line 178 "mn-vfs-mailbox.gob"
+#line 185 "mn-vfs-mailbox.gob"
 	g_return_if_fail (uri != NULL);
-#line 364 "mn-vfs-mailbox.c"
+#line 370 "mn-vfs-mailbox.c"
 {
-#line 185 "mn-vfs-mailbox.gob"
+#line 192 "mn-vfs-mailbox.gob"
 	
     Monitor *monitor = NULL;
     GSList *l;
@@ -405,20 +411,20 @@ mn_vfs_mailbox_monitor (MNVFSMailbox * self, const char * uri, MNVFSMailboxBacke
 	  }
       }
   }}
-#line 409 "mn-vfs-mailbox.c"
+#line 415 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 228 "mn-vfs-mailbox.gob"
+#line 235 "mn-vfs-mailbox.gob"
 static void 
 mn_vfs_mailbox_monitor_free (Monitor * monitor)
-#line 415 "mn-vfs-mailbox.c"
+#line 421 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor_free"
-#line 228 "mn-vfs-mailbox.gob"
+#line 235 "mn-vfs-mailbox.gob"
 	g_return_if_fail (monitor != NULL);
-#line 420 "mn-vfs-mailbox.c"
+#line 426 "mn-vfs-mailbox.c"
 {
-#line 230 "mn-vfs-mailbox.gob"
+#line 237 "mn-vfs-mailbox.gob"
 	
     g_free(monitor->uri);
 
@@ -427,17 +433,17 @@ mn_vfs_mailbox_monitor_free (Monitor * monitor)
 
     g_free(monitor);
   }}
-#line 431 "mn-vfs-mailbox.c"
+#line 437 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 239 "mn-vfs-mailbox.gob"
+#line 246 "mn-vfs-mailbox.gob"
 static void 
 mn_vfs_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data)
-#line 437 "mn-vfs-mailbox.c"
+#line 443 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor_cb"
 {
-#line 245 "mn-vfs-mailbox.gob"
+#line 252 "mn-vfs-mailbox.gob"
 	
     if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED
 	|| event_type == GNOME_VFS_MONITOR_EVENT_DELETED
@@ -447,22 +453,22 @@ mn_vfs_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_
 	mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
       }
   }}
-#line 451 "mn-vfs-mailbox.c"
+#line 457 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 255 "mn-vfs-mailbox.gob"
+#line 262 "mn-vfs-mailbox.gob"
 void 
 mn_vfs_mailbox_remove_monitors_by_owner (MNVFSMailbox * self, MNVFSMailboxBackend * owner)
-#line 457 "mn-vfs-mailbox.c"
+#line 463 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::remove_monitors_by_owner"
-#line 255 "mn-vfs-mailbox.gob"
+#line 262 "mn-vfs-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 255 "mn-vfs-mailbox.gob"
+#line 262 "mn-vfs-mailbox.gob"
 	g_return_if_fail (MN_IS_VFS_MAILBOX (self));
-#line 464 "mn-vfs-mailbox.c"
+#line 470 "mn-vfs-mailbox.c"
 {
-#line 257 "mn-vfs-mailbox.gob"
+#line 264 "mn-vfs-mailbox.gob"
 	
     GSList *l;
 
@@ -481,39 +487,39 @@ mn_vfs_mailbox_remove_monitors_by_owner (MNVFSMailbox * self, MNVFSMailboxBacken
 	  }
       }
   }}
-#line 485 "mn-vfs-mailbox.c"
+#line 491 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 276 "mn-vfs-mailbox.gob"
+#line 283 "mn-vfs-mailbox.gob"
 static void 
 mn_vfs_mailbox_queue_update_poll (MNVFSMailbox * self)
-#line 491 "mn-vfs-mailbox.c"
+#line 497 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::queue_update_poll"
-#line 276 "mn-vfs-mailbox.gob"
+#line 283 "mn-vfs-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 276 "mn-vfs-mailbox.gob"
+#line 283 "mn-vfs-mailbox.gob"
 	g_return_if_fail (MN_IS_VFS_MAILBOX (self));
-#line 498 "mn-vfs-mailbox.c"
+#line 504 "mn-vfs-mailbox.c"
 {
-#line 278 "mn-vfs-mailbox.gob"
+#line 285 "mn-vfs-mailbox.gob"
 	
     if (selfp->update_poll_source)
       mn_locked_g_source_remove(selfp->update_poll_source);
 
     selfp->update_poll_source = mn_g_idle_add_gdk_locked(self_update_poll_cb, self);
   }}
-#line 507 "mn-vfs-mailbox.c"
+#line 513 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 285 "mn-vfs-mailbox.gob"
+#line 292 "mn-vfs-mailbox.gob"
 static gboolean 
 mn_vfs_mailbox_update_poll_cb (gpointer data)
-#line 513 "mn-vfs-mailbox.c"
+#line 519 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::update_poll_cb"
 {
-#line 287 "mn-vfs-mailbox.gob"
+#line 294 "mn-vfs-mailbox.gob"
 	
     Self *self = data;
     gboolean polled = FALSE;
@@ -541,23 +547,24 @@ mn_vfs_mailbox_update_poll_cb (gpointer data)
 
     return FALSE;		/* remove source */
   }}
-#line 545 "mn-vfs-mailbox.c"
+#line 551 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 315 "mn-vfs-mailbox.gob"
+#line 322 "mn-vfs-mailbox.gob"
 static void 
 ___c_mn_vfs_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsigned long check_id)
-#line 551 "mn-vfs-mailbox.c"
+#line 557 "mn-vfs-mailbox.c"
 #define PARENT_HANDLER(___mailbox,___check_id) \
 	{ if(MN_REENTRANT_MAILBOX_CLASS(parent_class)->reentrant_check) \
 		(* MN_REENTRANT_MAILBOX_CLASS(parent_class)->reentrant_check)(___mailbox,___check_id); }
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::reentrant_check"
 {
-#line 317 "mn-vfs-mailbox.gob"
+#line 324 "mn-vfs-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     MNVFSMailboxBackend *backend;
+    MNVFSMailboxBackendClass *class;
     GType backend_type = 0;
     gboolean exists;
 
@@ -571,7 +578,8 @@ ___c_mn_vfs_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED,
 
     mn_reentrant_mailbox_unlock(mailbox);
 
-    if (backend && MN_VFS_MAILBOX_BACKEND_GET_CLASS(backend)->is(NULL, self))
+    class = backend ? MN_VFS_MAILBOX_BACKEND_GET_CLASS(backend) : NULL;
+    if (class && class->is(NULL, class, self))
       backend_type = G_OBJECT_TYPE(backend);
     else
       {
@@ -582,12 +590,10 @@ ___c_mn_vfs_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED,
 
 	    for (i = 0; mn_vfs_mailbox_backend_types[i]; i++)
 	      {
-		MNVFSMailboxBackendClass *class;
-
 		class = g_type_class_peek(mn_vfs_mailbox_backend_types[i]);
 		g_assert(class != NULL);
 
-		if (class->is(NULL, self))
+		if (class->is(NULL, class, self))
 		  {
 		    backend_type = mn_vfs_mailbox_backend_types[i];
 		    break;
@@ -672,6 +678,6 @@ ___c_mn_vfs_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED,
 	mn_reentrant_mailbox_unlock(mailbox);
       }
   }}
-#line 676 "mn-vfs-mailbox.c"
+#line 682 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-vfs-mailbox.gob b/src/mn-vfs-mailbox.gob
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2005, 2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 requires 2.0.14
@@ -24,7 +25,7 @@ requires 2.0.14
 %}
 
 %h{
-#define MN_VFS_MAILBOX_MAX_BACKEND_TYPES	4
+#define MN_VFS_MAILBOX_MAX_BACKEND_TYPES	5
 extern GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1];
 %}
 
@@ -41,6 +42,9 @@ extern GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1];
 #if WITH_MBOX
 #include "mn-mbox-mailbox-backend.h"
 #endif
+#if WITH_MOZILLA
+#include "mn-mozilla-mailbox-backend.h"
+#endif
 #if WITH_MH
 #include "mn-mh-mailbox-backend.h"
 #endif
@@ -85,6 +89,9 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox (abstract)
 #if WITH_MBOX
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MBOX_MAILBOX_BACKEND;
 #endif
+#if WITH_MOZILLA
+    mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MOZILLA_MAILBOX_BACKEND;
+#endif
 #if WITH_MH
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MH_MAILBOX_BACKEND;
 #endif
@@ -317,6 +324,7 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox (abstract)
   {
     Self *self = SELF(mailbox);
     MNVFSMailboxBackend *backend;
+    MNVFSMailboxBackendClass *class;
     GType backend_type = 0;
     gboolean exists;
 
@@ -330,7 +338,8 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox (abstract)
 
     mn_reentrant_mailbox_unlock(mailbox);
 
-    if (backend && MN_VFS_MAILBOX_BACKEND_GET_CLASS(backend)->is(NULL, self))
+    class = backend ? MN_VFS_MAILBOX_BACKEND_GET_CLASS(backend) : NULL;
+    if (class && class->is(NULL, class, self))
       backend_type = G_OBJECT_TYPE(backend);
     else
       {
@@ -341,12 +350,10 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox (abstract)
 
 	    for (i = 0; mn_vfs_mailbox_backend_types[i]; i++)
 	      {
-		MNVFSMailboxBackendClass *class;
-
 		class = g_type_class_peek(mn_vfs_mailbox_backend_types[i]);
 		g_assert(class != NULL);
 
-		if (class->is(NULL, self))
+		if (class->is(NULL, class, self))
 		  {
 		    backend_type = mn_vfs_mailbox_backend_types[i];
 		    break;
diff --git a/src/mn-vfs-mailbox.h b/src/mn-vfs-mailbox.h
@@ -16,7 +16,7 @@ extern "C" {
 
 
 
-#define MN_VFS_MAILBOX_MAX_BACKEND_TYPES	4
+#define MN_VFS_MAILBOX_MAX_BACKEND_TYPES	5
 extern GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1];
 
 
diff --git a/src/mn-vfs-message-private.h b/src/mn-vfs-message-private.h
@@ -0,0 +1,17 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_VFS_MESSAGE_PRIVATE_H__
+#define __MN_VFS_MESSAGE_PRIVATE_H__
+
+#include "mn-vfs-message.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-vfs-message.c b/src/mn-vfs-message.c
@@ -0,0 +1,199 @@
+/* Generated by GOB (v2.0.14)   (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 14
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-vfs-message.h"
+
+#include "mn-vfs-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 27 "mn-vfs-message.gob"
+
+#include "config.h"
+#include "mn-vfs-mailbox-backend.h"
+#include "mn-message-mime.h"
+
+#line 32 "mn-vfs-message.c"
+/* self casting macros */
+#define SELF(x) MN_VFS_MESSAGE(x)
+#define SELF_CONST(x) MN_VFS_MESSAGE_CONST(x)
+#define IS_SELF(x) MN_IS_VFS_MESSAGE(x)
+#define TYPE_SELF MN_TYPE_VFS_MESSAGE
+#define SELF_CLASS(x) MN_VFS_MESSAGE_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_VFS_MESSAGE_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNVFSMessage Self;
+typedef MNVFSMessageClass SelfClass;
+
+/* here are local prototypes */
+static void mn_vfs_message_init (MNVFSMessage * o) G_GNUC_UNUSED;
+static void mn_vfs_message_class_init (MNVFSMessageClass * c) G_GNUC_UNUSED;
+static gboolean ___1_mn_vfs_message_mark_as_read_impl (MNMessage * message, GError ** err) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static MNMessageClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_new mn_vfs_message_new
+GType
+mn_vfs_message_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNVFSMessageClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_vfs_message_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNVFSMessage),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_vfs_message_init,
+			NULL
+		};
+
+		type = g_type_register_static (MN_TYPE_MESSAGE, "MNVFSMessage", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNVFSMessage *)g_object_new(mn_vfs_message_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNVFSMessage * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNVFSMessage *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNVFSMessage *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNVFSMessage *)g_object_new_valist (mn_vfs_message_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:VFS:Message::dispose"
+	MNVFSMessage *self G_GNUC_UNUSED = MN_VFS_MESSAGE (obj_self);
+	if (G_OBJECT_CLASS (parent_class)->dispose) \
+		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
+#line 36 "mn-vfs-message.gob"
+	if(self->vfs_uri) { gnome_vfs_uri_unref ((gpointer) self->vfs_uri); self->vfs_uri = NULL; }
+#line 108 "mn-vfs-message.c"
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_vfs_message_init (MNVFSMessage * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:VFS:Message::init"
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_vfs_message_class_init (MNVFSMessageClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:VFS:Message::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+	MNMessageClass *mn_message_class = (MNMessageClass *)c;
+
+	parent_class = g_type_class_ref (MN_TYPE_MESSAGE);
+
+#line 38 "mn-vfs-message.gob"
+	mn_message_class->mark_as_read_impl = ___1_mn_vfs_message_mark_as_read_impl;
+#line 129 "mn-vfs-message.c"
+	g_object_class->dispose = ___dispose;
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 38 "mn-vfs-message.gob"
+static gboolean 
+___1_mn_vfs_message_mark_as_read_impl (MNMessage * message G_GNUC_UNUSED, GError ** err)
+#line 139 "mn-vfs-message.c"
+#define PARENT_HANDLER(___message,___err) \
+	((MN_MESSAGE_CLASS(parent_class)->mark_as_read_impl)? \
+		(* MN_MESSAGE_CLASS(parent_class)->mark_as_read_impl)(___message,___err): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:VFS:Message::mark_as_read_impl"
+{
+#line 40 "mn-vfs-message.gob"
+	
+    Self *self = SELF(message);
+    MNVFSMailboxBackendClass *class;
+
+    g_assert(self->backend_type != 0);
+    g_assert(self->vfs_uri != NULL);
+
+    class = g_type_class_peek(self->backend_type);
+    g_assert(class != NULL);
+    g_assert(class->mark_as_read != NULL);
+
+    return class->mark_as_read(NULL, SELF(message), err);
+  }}
+#line 161 "mn-vfs-message.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 55 "mn-vfs-message.gob"
+MNMessage * 
+mn_vfs_message_new (gpointer backend, GnomeVFSURI * dir_uri, const char * filename, MNMessageFlags flags, gboolean handle_status)
+#line 168 "mn-vfs-message.c"
+{
+#define __GOB_FUNCTION__ "MN:VFS:Message::new"
+#line 55 "mn-vfs-message.gob"
+	g_return_val_if_fail (dir_uri != NULL, (MNMessage * )0);
+#line 55 "mn-vfs-message.gob"
+	g_return_val_if_fail (filename != NULL, (MNMessage * )0);
+#line 175 "mn-vfs-message.c"
+{
+#line 61 "mn-vfs-message.gob"
+	
+    GnomeVFSURI *message_uri;
+    MNMessage *message;
+    MNVFSMessage *vmessage;
+
+    g_return_val_if_fail(MN_IS_VFS_MAILBOX_BACKEND(backend), NULL);
+
+    message_uri = gnome_vfs_uri_append_file_name(dir_uri, filename);
+    message = mn_message_new_from_uri_full(MN_TYPE_VFS_MESSAGE, MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), message_uri, flags, handle_status);
+
+    vmessage = MN_VFS_MESSAGE(message);
+    if (vmessage)
+      {
+	vmessage->backend_type = G_OBJECT_TYPE(backend);
+	vmessage->vfs_uri = gnome_vfs_uri_ref(message_uri);
+      }
+
+    gnome_vfs_uri_unref(message_uri);
+
+    return message;
+  }}
+#line 199 "mn-vfs-message.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-vfs-message.gob b/src/mn-vfs-message.gob
@@ -0,0 +1,82 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+requires 2.0.14
+
+%headertop{
+#include <libgnomevfs/gnome-vfs.h>
+#include "mn-message.h"
+%}
+
+%{
+#include "config.h"
+#include "mn-vfs-mailbox-backend.h"
+#include "mn-message-mime.h"
+%}
+
+class MN:VFS:Message from MN:Message
+{
+  public GType backend_type;
+  public GnomeVFSURI *vfs_uri unrefwith gnome_vfs_uri_unref;
+
+  override (MN:Message) gboolean
+    mark_as_read_impl (MNMessage *message, GError **err)
+  {
+    Self *self = SELF(message);
+    MNVFSMailboxBackendClass *class;
+
+    g_assert(self->backend_type != 0);
+    g_assert(self->vfs_uri != NULL);
+
+    class = g_type_class_peek(self->backend_type);
+    g_assert(class != NULL);
+    g_assert(class->mark_as_read != NULL);
+
+    return class->mark_as_read(NULL, SELF(message), err);
+  }
+
+  /* in case of error a MNMessage is returned, not a MNVFSMessage */
+  public MNMessage *
+    new (gpointer backend, /* cannot include mn-vfs-mailbox-backend.h */
+	 GnomeVFSURI *dir_uri (check null),
+	 const char *filename (check null),
+	 MNMessageFlags flags,
+	 gboolean handle_status)
+  {
+    GnomeVFSURI *message_uri;
+    MNMessage *message;
+    MNVFSMessage *vmessage;
+
+    g_return_val_if_fail(MN_IS_VFS_MAILBOX_BACKEND(backend), NULL);
+
+    message_uri = gnome_vfs_uri_append_file_name(dir_uri, filename);
+    message = mn_message_new_from_uri_full(MN_TYPE_VFS_MESSAGE, MN_MAILBOX(MN_VFS_MAILBOX_BACKEND(backend)->mailbox), message_uri, flags, handle_status);
+
+    vmessage = MN_VFS_MESSAGE(message);
+    if (vmessage)
+      {
+	vmessage->backend_type = G_OBJECT_TYPE(backend);
+	vmessage->vfs_uri = gnome_vfs_uri_ref(message_uri);
+      }
+
+    gnome_vfs_uri_unref(message_uri);
+
+    return message;
+  }
+}
diff --git a/src/mn-corba-object.gob.stamp b/src/mn-vfs-message.gob.stamp
diff --git a/src/mn-vfs-message.h b/src/mn-vfs-message.h
@@ -0,0 +1,66 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <libgnomevfs/gnome-vfs.h>
+#include "mn-message.h"
+
+#ifndef __MN_VFS_MESSAGE_H__
+#define __MN_VFS_MESSAGE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_VFS_MESSAGE	(mn_vfs_message_get_type())
+#define MN_VFS_MESSAGE(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_vfs_message_get_type(), MNVFSMessage)
+#define MN_VFS_MESSAGE_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_vfs_message_get_type(), MNVFSMessage const)
+#define MN_VFS_MESSAGE_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_vfs_message_get_type(), MNVFSMessageClass)
+#define MN_IS_VFS_MESSAGE(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_vfs_message_get_type ())
+
+#define MN_VFS_MESSAGE_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_vfs_message_get_type(), MNVFSMessageClass)
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_VFS_MESSAGE__
+#define __TYPEDEF_MN_VFS_MESSAGE__
+typedef struct _MNVFSMessage MNVFSMessage;
+#endif
+struct _MNVFSMessage {
+	MNMessage __parent__;
+	/*< public >*/
+	GType backend_type;
+	GnomeVFSURI * vfs_uri;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNVFSMessageClass MNVFSMessageClass;
+struct _MNVFSMessageClass {
+	MNMessageClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_vfs_message_get_type	(void);
+MNMessage * 	mn_vfs_message_new	(gpointer backend,
+					GnomeVFSURI * dir_uri,
+					const char * filename,
+					MNMessageFlags flags,
+					gboolean handle_status);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-vfs.c b/src/mn-vfs.c
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,13 +12,14 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "config.h"
 #include <string.h>
+#include <glib/gi18n.h>
 #include "mn-vfs.h"
 
 /*** cpp *********************************************************************/
@@ -174,6 +176,141 @@ mn_vfs_read_entire_file_uri (GnomeVFSURI *uri,
   return result;
 }
 
+GnomeVFSResult
+mn_vfs_write_entire_file_uri (GnomeVFSURI *uri,
+			      gsize file_size,
+			      const char *file_contents,
+			      gboolean exclusive,
+			      unsigned int perms)
+{
+  GnomeVFSHandle *handle;
+  GnomeVFSResult result;
+  GnomeVFSFileSize bytes_written = 0;
+
+  result = gnome_vfs_create_uri(&handle, uri, GNOME_VFS_OPEN_WRITE | GNOME_VFS_OPEN_TRUNCATE, exclusive, perms);
+  if (result != GNOME_VFS_OK)
+    return result;
+
+  while (bytes_written < file_size)
+    {
+      GnomeVFSFileSize this_bytes_written;
+
+      result = gnome_vfs_write(handle, file_contents + bytes_written, file_size - bytes_written, &this_bytes_written);
+      if (result != GNOME_VFS_OK)
+	{
+	  gnome_vfs_close(handle);
+	  return result;
+	}
+
+      bytes_written += this_bytes_written;
+    }
+
+  return gnome_vfs_close(handle);
+}
+
+gboolean
+mn_vfs_write_entire_file_uri_safe (GnomeVFSURI *uri,
+				   gsize file_size,
+				   const char *file_contents,
+				   unsigned int perms,
+				   GError **err)
+{
+  GnomeVFSResult result;
+  char *text_uri;
+  GnomeVFSURI *tmp_uri;
+  char *tmp_text_uri;
+  GnomeVFSURI *old_uri;
+  char *old_text_uri;
+  gboolean status = FALSE;
+  gboolean old_exists;
+
+  g_return_val_if_fail(uri != NULL, FALSE);
+
+  text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_PASSWORD);
+  tmp_uri = mn_vfs_uri_append_file_suffix(uri, ".tmp");
+  tmp_text_uri = gnome_vfs_uri_to_string(tmp_uri, GNOME_VFS_URI_HIDE_PASSWORD);
+  old_uri = mn_vfs_uri_append_file_suffix(uri, ".old");
+  old_text_uri = gnome_vfs_uri_to_string(old_uri, GNOME_VFS_URI_HIDE_PASSWORD);
+
+  if (mn_vfs_test(tmp_uri, G_FILE_TEST_EXISTS))
+    {
+      result = gnome_vfs_unlink_from_uri(tmp_uri);
+      if (result != GNOME_VFS_OK)
+	{
+	  g_set_error(err, 0, 0, _("Unable to remove %s: %s."), tmp_text_uri, gnome_vfs_result_to_string(result));
+	  goto end;
+	}
+    }
+
+  result = mn_vfs_write_entire_file_uri(tmp_uri, file_size, file_contents, TRUE, perms);
+  if (result != GNOME_VFS_OK)
+    {
+      g_set_error(err, 0, 0, _("Unable to write %s: %s."), tmp_text_uri, gnome_vfs_result_to_string(result));
+      goto end;
+    }
+
+  old_exists = mn_vfs_test(uri, G_FILE_TEST_EXISTS);
+  if (old_exists)
+    {
+      result = gnome_vfs_move_uri(uri, old_uri, TRUE);
+      if (result != GNOME_VFS_OK)
+	{
+	  g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), text_uri, old_text_uri, gnome_vfs_result_to_string(result));
+	  goto end;
+	}
+    }
+
+  result = gnome_vfs_move_uri(tmp_uri, uri, TRUE);
+  if (result != GNOME_VFS_OK)
+    {
+      g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), tmp_text_uri, text_uri, gnome_vfs_result_to_string(result));
+      goto end;
+    }
+
+  if (old_exists)
+    {
+      GnomeVFSResult this_result;
+
+      this_result = gnome_vfs_unlink_from_uri(old_uri);
+      if (this_result != GNOME_VFS_OK) /* non fatal */
+	g_warning(_("unable to delete %s: %s"), old_text_uri, gnome_vfs_result_to_string(this_result));
+    }
+
+  status = TRUE;		/* success */
+
+ end:
+  g_free(text_uri);
+  gnome_vfs_uri_unref(tmp_uri);
+  g_free(tmp_text_uri);
+  gnome_vfs_uri_unref(old_uri);
+  g_free(old_text_uri);
+
+  return status;
+}
+
+GnomeVFSURI *
+mn_vfs_uri_append_file_suffix (GnomeVFSURI *uri, const char *suffix)
+{
+  GnomeVFSURI *result;
+
+  g_return_val_if_fail(uri != NULL, NULL);
+  g_return_val_if_fail(suffix != NULL, NULL);
+
+  result = gnome_vfs_uri_dup(uri);
+  if (result->text)
+    {
+      char *new_text;
+
+      new_text = g_strconcat(result->text, suffix, NULL);
+      g_free(result->text);
+      result->text = new_text;
+    }
+  else
+    result->text = g_strdup(suffix);
+
+  return result;
+}
+
 char *
 mn_vfs_get_local_path (GnomeVFSURI *uri)
 {
diff --git a/src/mn-vfs.h b/src/mn-vfs.h
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004-2006 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #ifndef _MN_VFS_H
@@ -35,6 +36,19 @@ gboolean mn_vfs_test (GnomeVFSURI *uri, GFileTest test);
 GnomeVFSResult mn_vfs_read_entire_file_uri (GnomeVFSURI *uri,
 					    int *file_size,
 					    char **file_contents);
+GnomeVFSResult mn_vfs_write_entire_file_uri (GnomeVFSURI *uri,
+					     gsize file_size,
+					     const char *file_contents,
+					     gboolean exclusive,
+					     unsigned int perms);
+gboolean mn_vfs_write_entire_file_uri_safe (GnomeVFSURI *uri,
+					    gsize file_size,
+					    const char *file_contents,
+					    unsigned int perms,
+					    GError **err);
+
+GnomeVFSURI *mn_vfs_uri_append_file_suffix (GnomeVFSURI *uri,
+					    const char *suffix);
 
 char *mn_vfs_get_local_path (GnomeVFSURI *uri);
 
diff --git a/src/mn-xml.c b/src/mn-xml.c
@@ -0,0 +1,117 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "config.h"
+#include <string.h>
+#include <glib/gi18n.h>
+#include "mn-xml.h"
+#include "mn-util.h"
+
+/*** implementation **********************************************************/
+
+void
+mn_xml_import_properties (GObject *object, xmlNode *node)
+{
+  GParamSpec **properties;
+  unsigned int n_properties;
+  int i;
+
+  g_return_if_fail(G_IS_OBJECT(object));
+  g_return_if_fail(node != NULL);
+
+  properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(object), &n_properties);
+  for (i = 0; i < n_properties; i++)
+    if ((properties[i]->flags & MN_XML_PARAM_IMPORT_EXPORT) != 0)
+      {
+	char *content;
+
+	content = xmlGetProp(node, g_param_spec_get_name(properties[i]));
+	if (content)
+	  {
+	    GValue value = { 0, };
+
+	    g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
+
+	    if (mn_g_value_from_string(&value, content))
+	      g_object_set_property(object, g_param_spec_get_name(properties[i]), &value);
+	    else
+	      g_warning(_("property \"%s\": unable to transform string \"%s\" into a value of type \"%s\""),
+			g_param_spec_get_name(properties[i]), content, G_VALUE_TYPE_NAME(&value));
+
+	    g_value_unset(&value);
+	    g_free(content);
+	  }
+      }
+  g_free(properties);
+}
+
+void
+mn_xml_export_properties (GObject *object, xmlNode *node)
+{
+  GParamSpec **properties;
+  unsigned int n_properties;
+  int i;
+
+  g_return_if_fail(G_IS_OBJECT(object));
+  g_return_if_fail(node != NULL);
+
+  properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(object), &n_properties);
+  for (i = 0; i < n_properties; i++)
+    if ((properties[i]->flags & MN_XML_PARAM_IMPORT_EXPORT) != 0)
+      {
+	GValue value = { 0, };
+	gboolean is_default;
+
+	g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
+	g_object_get_property(object, g_param_spec_get_name(properties[i]), &value);
+
+	if ((properties[i]->flags & MN_XML_PARAM_IGNORE_CASE) != 0)
+	  {
+	    GValue default_value = { 0, };
+	    const char *str;
+	    const char *default_str;
+
+	    g_assert(G_IS_PARAM_SPEC_STRING(properties[i]));
+
+	    g_value_init(&default_value, G_TYPE_STRING);
+	    g_param_value_set_default(properties[i], &default_value);
+
+	    str = g_value_get_string(&value);
+	    default_str = g_value_get_string(&default_value);
+
+	    is_default = str && default_str && ! mn_utf8_strcasecmp(str, default_str);
+
+	    g_value_unset(&default_value);
+	  }
+	else
+	  is_default = g_param_value_defaults(properties[i], &value);
+
+	if (! is_default)
+	  {
+	    char *str;
+
+	    str = mn_g_value_to_string(&value);
+	    xmlSetProp(node, g_param_spec_get_name(properties[i]), str);
+	    g_free(str);
+	  }
+
+	g_value_unset(&value);
+      }
+  g_free(properties);
+}
diff --git a/src/mn-xml.h b/src/mn-xml.h
@@ -0,0 +1,40 @@
+/* 
+ * Mail Notification
+ * Copyright (C) 2003-2006 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef _MN_XML_H
+#define _MN_XML_H
+
+#include <glib-object.h>
+#include <libxml/tree.h>
+
+typedef enum
+{
+  /* import/export this property */
+  MN_XML_PARAM_IMPORT_EXPORT	= 1 << (G_PARAM_USER_SHIFT + 0),
+
+  /* ignore the case of a string property when checking if it has the default value */
+  MN_XML_PARAM_IGNORE_CASE	= 1 << (G_PARAM_USER_SHIFT + 1)
+} MNXMLParamFlags;
+
+#define MN_XML_PARAM_USER_SHIFT		(G_PARAM_USER_SHIFT + 2)
+
+void mn_xml_import_properties (GObject *object, xmlNode *node);
+void mn_xml_export_properties (GObject *object, xmlNode *node);
+
+#endif /* _MN_XML_H */
diff --git a/tests/Makefile.in b/tests/Makefile.in
@@ -87,6 +87,7 @@ ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AML = @AML@
@@ -216,15 +217,19 @@ WITH_IMAP_TRUE = @WITH_IMAP_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_FALSE = @WITH_MBOX_OR_MOZILLA_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_TRUE = @WITH_MBOX_OR_MOZILLA_TRUE@
 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_MOZILLA_FALSE = @WITH_MOZILLA_FALSE@
+WITH_MOZILLA_TRUE = @WITH_MOZILLA_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
@@ -265,7 +270,6 @@ build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
 evolution_plugindir = @evolution_plugindir@
-evolution_source_dir = @evolution_source_dir@
 exec_prefix = @exec_prefix@
 gnome_cappletdir = @gnome_cappletdir@
 gnome_prefix = @gnome_prefix@
diff --git a/tests/test-vfs-read-line.c b/tests/test-vfs-read-line.c
@@ -1,5 +1,6 @@
 /* 
- * Copyright (C) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ * Mail Notification
+ * Copyright (C) 2003-2006 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
@@ -11,9 +12,9 @@
  * 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.
+ * 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.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
 #include "mn-vfs.h"
diff --git a/ui/Makefile.am b/ui/Makefile.am
@@ -1,11 +1,9 @@
 uidir = $(pkgdatadir)/ui
 
 dist_ui_DATA = \
-	mail-summary-popup.glade		\
 	mailbox-properties-dialog.glade		\
 	properties-dialog.glade
 
 EXTRA_DIST = \
-	mail-summary-popup.gladep		\
 	mailbox-properties-dialog.gladep	\
 	properties-dialog.gladep
diff --git a/ui/Makefile.in b/ui/Makefile.in
@@ -65,6 +65,7 @@ dist_uiDATA_INSTALL = $(INSTALL_DATA)
 DATA = $(dist_ui_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
+ALL_LINGUAS = @ALL_LINGUAS@
 AMDEP_FALSE = @AMDEP_FALSE@
 AMDEP_TRUE = @AMDEP_TRUE@
 AML = @AML@
@@ -194,15 +195,19 @@ WITH_IMAP_TRUE = @WITH_IMAP_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
-WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_FALSE = @WITH_MBOX_OR_MOZILLA_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_FALSE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@
+WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE = @WITH_MBOX_OR_MOZILLA_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@
+WITH_MBOX_OR_MOZILLA_TRUE = @WITH_MBOX_OR_MOZILLA_TRUE@
 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_MOZILLA_FALSE = @WITH_MOZILLA_FALSE@
+WITH_MOZILLA_TRUE = @WITH_MOZILLA_TRUE@
 WITH_POP3_FALSE = @WITH_POP3_FALSE@
 WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
 WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
@@ -243,7 +248,6 @@ build_os = @build_os@
 build_vendor = @build_vendor@
 datadir = @datadir@
 evolution_plugindir = @evolution_plugindir@
-evolution_source_dir = @evolution_source_dir@
 exec_prefix = @exec_prefix@
 gnome_cappletdir = @gnome_cappletdir@
 gnome_prefix = @gnome_prefix@
@@ -273,12 +277,10 @@ target_os = @target_os@
 target_vendor = @target_vendor@
 uidir = $(pkgdatadir)/ui
 dist_ui_DATA = \
-	mail-summary-popup.glade		\
 	mailbox-properties-dialog.glade		\
 	properties-dialog.glade
 
 EXTRA_DIST = \
-	mail-summary-popup.gladep		\
 	mailbox-properties-dialog.gladep	\
 	properties-dialog.gladep
 
diff --git a/ui/mail-summary-popup.glade b/ui/mail-summary-popup.glade
@@ -1,109 +0,0 @@
-<?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>
-  <property name="focus_on_map">False</property>
-  <property name="urgency_hint">False</property>
-
-  <child>
-    <widget class="GtkEventBox" id="eventbox">
-      <property name="visible">True</property>
-      <property name="visible_window">False</property>
-      <property name="above_child">False</property>
-      <signal name="button_press_event" handler="button_press_event_h" last_modification_time="Sun, 24 Jul 2005 01:50:26 GMT"/>
-
-      <child>
-	<widget class="GtkVBox" id="vbox">
-	  <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="mn-mail-summary-popup-title">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes"></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>
-		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">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>
-	    <placeholder/>
-	  </child>
-	</widget>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-</glade-interface>
diff --git a/ui/mail-summary-popup.gladep b/ui/mail-summary-popup.gladep
@@ -1,14 +0,0 @@
-<?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 Mail 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>
diff --git a/ui/mailbox-properties-dialog.glade b/ui/mailbox-properties-dialog.glade
@@ -1,498 +1,278 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
 <glade-interface>
-<requires lib="gnome"/>
-
-<widget class="GtkDialog" id="dialog">
-  <property name="border_width">5</property>
-  <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">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="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-  <property name="has_separator">False</property>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="dialog-vbox1">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">2</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>
-	</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="GtkVBox" id="vbox">
-	  <property name="border_width">5</property>
-	  <property name="visible">True</property>
-	  <property name="homogeneous">False</property>
-	  <property name="spacing">18</property>
-
-	  <child>
-	    <widget class="GtkVBox" id="vbox3">
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">6</property>
-
-	      <child>
-		<widget class="GtkLabel" id="label2">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes" comments="translators: header capitalization">&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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkAlignment" id="alignment2">
-		  <property name="visible">True</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xscale">1</property>
-		  <property name="yscale">1</property>
-		  <property name="top_padding">0</property>
-		  <property name="bottom_padding">0</property>
-		  <property name="left_padding">12</property>
-		  <property name="right_padding">0</property>
-
-		  <child>
-		    <widget class="GtkVBox" id="vbox4">
-		      <property name="visible">True</property>
-		      <property name="homogeneous">False</property>
-		      <property name="spacing">6</property>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox16">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">12</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="mailbox_type_label">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">_Mailbox type:</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">mailbox_type_combo</property>
-			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			      <property name="width_chars">-1</property>
-			      <property name="single_line_mode">False</property>
-			      <property name="angle">0</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="mailbox_type_combo">
-			      <property name="visible">True</property>
-			      <property name="add_tearoffs">False</property>
-			      <property name="focus_on_click">True</property>
-			      <signal name="changed" handler="type_changed_h" last_modification_time="Sat, 23 Jul 2005 18:47:02 GMT"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">True</property>
-			  <property name="fill">True</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox17">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">12</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="mailbox_name_label">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">Mailbox _name:</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">mailbox_name_entry</property>
-			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			      <property name="width_chars">-1</property>
-			      <property name="single_line_mode">False</property>
-			      <property name="angle">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="hbox18">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">6</property>
-
-			      <child>
-				<widget class="GtkEntry" id="mailbox_name_entry">
-				  <property name="visible">True</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">*</property>
-				  <property name="activates_default">False</property>
-				  <signal name="changed" handler="name_changed_h" last_modification_time="Sat, 23 Jul 2005 18:25:45 GMT"/>
-				  <signal name="activate" handler="entry_activate_h" last_modification_time="Sat, 23 Jul 2005 18:25:59 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="mailbox_name_default_button">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="label" translatable="yes" comments="translators: header capitalization">_Use Default</property>
-				  <property name="use_underline">True</property>
-				  <property name="relief">GTK_RELIEF_NORMAL</property>
-				  <property name="focus_on_click">True</property>
-				  <signal name="clicked" handler="name_default_button_clicked_h" last_modification_time="Sat, 23 Jul 2005 18:26:16 GMT"/>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">True</property>
-			  <property name="fill">True</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkHBox" id="hbox19">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">12</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="delay_label">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">Delay between mail chec_ks:</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">minutes_spin</property>
-			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			      <property name="width_chars">-1</property>
-			      <property name="single_line_mode">False</property>
-			      <property name="angle">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="delay_hbox">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">6</property>
-
-			      <child>
-				<widget class="GtkSpinButton" id="minutes_spin">
-				  <property name="visible">True</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>
-				  <signal name="changed" handler="delay_changed_h" last_modification_time="Thu, 01 Dec 2005 12:39:50 GMT"/>
-				  <signal name="activate" handler="entry_activate_h" last_modification_time="Sun, 04 Dec 2005 10:30:46 GMT"/>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkLabel" id="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>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">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="seconds_spin">
-				  <property name="visible">True</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>
-				  <signal name="changed" handler="delay_changed_h" last_modification_time="Thu, 01 Dec 2005 12:40:03 GMT"/>
-				  <signal name="activate" handler="entry_activate_h" last_modification_time="Sun, 04 Dec 2005 10:30:56 GMT"/>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkLabel" id="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>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">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>
-
-			  <child>
-			    <widget class="GtkButton" id="delay_default_button">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes" comments="translators: header capitalization">Use De_fault</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <signal name="clicked" handler="delay_default_button_clicked_h" last_modification_time="Thu, 01 Dec 2005 12:14:22 GMT"/>
-			    </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>
-		  </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">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkVBox" id="vbox2">
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">6</property>
-
-	      <child>
-		<widget class="GtkLabel" id="type_section_label">
-		  <property name="visible">True</property>
-		  <property name="label" translatable="yes"></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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		  <property name="width_chars">-1</property>
-		  <property name="single_line_mode">False</property>
-		  <property name="angle">0</property>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
-		</packing>
-	      </child>
-
-	      <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">1</property>
-		  <property name="yscale">1</property>
-		  <property name="top_padding">0</property>
-		  <property name="bottom_padding">0</property>
-		  <property name="left_padding">12</property>
-		  <property name="right_padding">0</property>
-
-		  <child>
-		    <widget class="GtkEventBox" id="properties_event_box">
-		      <property name="visible">True</property>
-		      <property name="visible_window">False</property>
-		      <property name="above_child">False</property>
-
-		      <child>
-			<placeholder/>
-		      </child>
-		    </widget>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">True</property>
-	      <property name="fill">True</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
+  <widget class="GtkDialog" id="dialog">
+    <property name="border_width">5</property>
+    <property name="resizable">False</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <widget class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <widget class="GtkVBox" id="general_vbox">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">18</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox2">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label2">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes">&lt;span weight="bold"&gt;General&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox3">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkHBox" id="hbox1">
+                                <property name="visible">True</property>
+                                <property name="spacing">12</property>
+                                <child>
+                                  <widget class="GtkLabel" id="mailbox_type_label">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Mailbox _type:</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="mnemonic_widget">mailbox_type_combo</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkComboBox" id="mailbox_type_combo">
+                                    <property name="visible">True</property>
+                                    <signal name="changed" handler="type_changed_h"/>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox2">
+                                <property name="visible">True</property>
+                                <property name="spacing">12</property>
+                                <child>
+                                  <widget class="GtkLabel" id="mailbox_name_label">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">Mailbox _name:</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="mnemonic_widget">mailbox_name_entry</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox3">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">6</property>
+                                    <child>
+                                      <widget class="GtkEntry" id="mailbox_name_entry">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <signal name="changed" handler="name_changed_h"/>
+                                        <signal name="activate" handler="entry_activate_h"/>
+                                      </widget>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkButton" id="mailbox_name_default_button">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="label" translatable="yes" comments="translators: header capitalization">_Use Default</property>
+                                        <property name="use_underline">True</property>
+                                        <signal name="clicked" handler="name_default_button_clicked_h"/>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox4">
+                                <property name="visible">True</property>
+                                <property name="spacing">12</property>
+                                <child>
+                                  <widget class="GtkLabel" id="delay_label">
+                                    <property name="visible">True</property>
+                                    <property name="xalign">0</property>
+                                    <property name="label" translatable="yes">_Delay between mail checks:</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="mnemonic_widget">minutes_spin</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkHBox" id="delay_hbox">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">6</property>
+                                    <child>
+                                      <widget class="GtkSpinButton" id="minutes_spin">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="adjustment">1 0 1440 1 10 10</property>
+                                        <property name="climb_rate">1</property>
+                                        <property name="numeric">True</property>
+                                        <signal name="changed" handler="delay_changed_h"/>
+                                        <signal name="activate" handler="entry_activate_h"/>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="minutes_label">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">minutes</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkSpinButton" id="seconds_spin">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="adjustment">1 0 59 1 10 10</property>
+                                        <property name="climb_rate">1</property>
+                                        <property name="numeric">True</property>
+                                        <signal name="changed" handler="delay_changed_h"/>
+                                        <signal name="activate" handler="entry_activate_h"/>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="seconds_label">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes">seconds</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkButton" id="delay_default_button">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes" comments="translators: header capitalization">Us_e Default</property>
+                                    <property name="use_underline">True</property>
+                                    <signal name="clicked" handler="delay_default_button_clicked_h"/>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="tab_expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label1">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes">General</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="tab_expand">False</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <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>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
 </glade-interface>
diff --git a/ui/properties-dialog.glade b/ui/properties-dialog.glade
@@ -1,1938 +1,852 @@
-<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
-<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
-
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE glade-interface SYSTEM "glade-2.0.dtd">
+<!--*- mode: xml -*-->
 <glade-interface>
-<requires lib="gnome"/>
-
-<widget class="GtkDialog" id="dialog">
-  <property name="border_width">5</property>
-  <property name="title" translatable="yes" comments="translators: header capitalization">Mail Notification Properties</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">True</property>
-  <property name="destroy_with_parent">False</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="focus_on_map">True</property>
-  <property name="urgency_hint">False</property>
-  <property name="has_separator">False</property>
-
-  <child internal-child="vbox">
-    <widget class="GtkVBox" id="dialog-vbox1">
-      <property name="visible">True</property>
-      <property name="homogeneous">False</property>
-      <property name="spacing">2</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>
-	</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="GtkNotebook" id="notebook">
-	  <property name="border_width">5</property>
-	  <property name="visible">True</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="vbox12">
-	      <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="vbox22">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label36">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <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">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox23">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkCheckButton" id="display_seen_mail_check">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Display seen mail</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </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="vbox20">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label34">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight=&quot;bold&quot;&gt;Mailbox List&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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment5">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox21">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkScrolledWindow" id="scrolled">
-			      <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="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>
-			      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-			      <property name="width_chars">-1</property>
-			      <property name="single_line_mode">False</property>
-			      <property name="angle">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="hbox5">
-			      <property name="visible">True</property>
-			      <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="add_clicked_h" last_modification_time="Sat, 23 Jul 2005 21:09:18 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="remove_clicked_h" last_modification_time="Sat, 23 Jul 2005 21:09:25 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="properties_clicked_h" last_modification_time="Sat, 23 Jul 2005 21:09:58 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">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox24">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label38">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&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>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment2">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox25">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkHBox" id="hbox29">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">12</property>
-
-			      <child>
-				<widget class="GtkCheckButton" id="command_new_mail_check">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="label" translatable="yes">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="toggled_h" last_modification_time="Sat, 23 Jul 2005 21:07:29 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="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">*</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">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkHBox" id="hbox30">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">12</property>
-
-			      <child>
-				<widget class="GtkCheckButton" id="command_mail_read_check">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="label" translatable="yes">When all mail has _been read:</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="toggled_h" last_modification_time="Sat, 23 Jul 2005 21:07:35 GMT"/>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkEntry" id="command_mail_read_entry">
-				  <property name="visible">True</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">*</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">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </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>
-	    <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" comments="translators: header capitalization">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>
-	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-	      <property name="width_chars">-1</property>
-	      <property name="single_line_mode">False</property>
-	      <property name="angle">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkVBox" id="vbox32">
-	      <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="vbox33">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label46">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment11">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox34">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkCheckButton" id="icon_blink_check">
-			      <property name="visible">True</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="GtkCheckButton" id="icon_always_display_check">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Always display</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>
-		      </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="vbox35">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label47">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight=&quot;bold&quot;&gt;Tooltip 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</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment12">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox36">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="icon_tooltip_mail_summary_standard_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes" context="yes">icon tooltip's mail summary layout|_Standard</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="GtkRadioButton" id="icon_tooltip_mail_summary_compact_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes" context="yes">icon tooltip's mail summary layout|Co_mpact</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			      <property name="group">icon_tooltip_mail_summary_standard_radio</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="icon_tooltip_mail_summary_none_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_None</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			      <property name="group">icon_tooltip_mail_summary_standard_radio</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </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="vbox26">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label40">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight=&quot;bold&quot;&gt;Click Action&lt;/span&gt;</property>
-		      <property name="use_underline">False</property>
-		      <property name="use_markup">True</property>
-		      <property name="justify">GTK_JUSTIFY_LEFT</property>
-		      <property name="wrap">False</property>
-		      <property name="selectable">False</property>
-		      <property name="xalign">0</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xpad">0</property>
-		      <property name="ypad">0</property>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment3">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox27">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="icon_action_properties_dialog_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Display this dialog</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="icon_action_mail_reader_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Launch the mail reader</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			      <property name="group">icon_action_properties_dialog_radio</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="icon_action_update_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Update the mail status</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			      <property name="group">icon_action_properties_dialog_radio</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </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>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label45">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes" comments="translators: header capitalization">Status Icon</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>
-	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-	      <property name="width_chars">-1</property>
-	      <property name="single_line_mode">False</property>
-	      <property name="angle">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</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="GtkVBox" id="vbox15">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="label28">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment6">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox16">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkCheckButton" id="summary_enable_check">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</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="summary_enable_toggled_h" last_modification_time="Sun, 24 Jul 2005 23:21:58 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="hbox15">
-			      <property name="visible">True</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="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="toggled_h" last_modification_time="Sat, 23 Jul 2005 21:08:08 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="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>
-				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				      <property name="width_chars">-1</property>
-				      <property name="single_line_mode">False</property>
-				      <property name="angle">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="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>
-				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				      <property name="width_chars">-1</property>
-				      <property name="single_line_mode">False</property>
-				      <property name="angle">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>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkCheckButton" id="summary_only_recent_check">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Hide p_reviously displayed mail</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </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="summary_position_section_label">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&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>
-		      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment7">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox18">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkHBox" id="hbox17">
-			      <property name="visible">True</property>
-			      <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">_Position:</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>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">0</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>
-				  <property name="add_tearoffs">False</property>
-				  <property name="focus_on_click">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>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkHBox" id="hbox18">
-			      <property name="visible">True</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>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">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="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="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>
-				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				      <property name="width_chars">-1</property>
-				      <property name="single_line_mode">False</property>
-				      <property name="angle">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>
-
-			  <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>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">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="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="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>
-				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				      <property name="width_chars">-1</property>
-				      <property name="single_line_mode">False</property>
-				      <property name="angle">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>
-		      </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="vbox30">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="summary_layout_section_label">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight=&quot;bold&quot;&gt;Layout&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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment10">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox31">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="summary_layout_standard_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes" context="yes">popup's mail summary layout|_Standard</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="GtkRadioButton" id="summary_layout_compact_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes" context="yes">popup's mail summary layout|Co_mpact</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			      <property name="group">summary_layout_standard_radio</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </child>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">True</property>
-		      <property name="fill">True</property>
-		    </packing>
-		  </child>
-		</widget>
-		<packing>
-		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
-		</packing>
-	      </child>
-
-	      <child>
-		<widget class="GtkVBox" id="vbox28">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">6</property>
-
-		  <child>
-		    <widget class="GtkLabel" id="summary_fonts_section_label">
-		      <property name="visible">True</property>
-		      <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight=&quot;bold&quot;&gt;Fonts&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="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-		      <property name="width_chars">-1</property>
-		      <property name="single_line_mode">False</property>
-		      <property name="angle">0</property>
-		    </widget>
-		    <packing>
-		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
-		    </packing>
-		  </child>
-
-		  <child>
-		    <widget class="GtkAlignment" id="alignment8">
-		      <property name="visible">True</property>
-		      <property name="xalign">0.5</property>
-		      <property name="yalign">0.5</property>
-		      <property name="xscale">1</property>
-		      <property name="yscale">1</property>
-		      <property name="top_padding">0</property>
-		      <property name="bottom_padding">0</property>
-		      <property name="left_padding">12</property>
-		      <property name="right_padding">0</property>
-
-		      <child>
-			<widget class="GtkVBox" id="vbox29">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">6</property>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="summary_fonts_from_theme_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Use fonts from theme</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="toggled_h" last_modification_time="Sat, 23 Jul 2005 21:08:22 GMT"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="summary_custom_fonts_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Use these _fonts:</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			      <property name="group">summary_fonts_from_theme_radio</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="hbox39">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">12</property>
-
-			      <child>
-				<widget class="GtkAlignment" id="summary_title_font_alignment">
-				  <property name="visible">True</property>
-				  <property name="xalign">0.5</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xscale">1</property>
-				  <property name="yscale">1</property>
-				  <property name="top_padding">0</property>
-				  <property name="bottom_padding">0</property>
-				  <property name="left_padding">30</property>
-				  <property name="right_padding">0</property>
-
-				  <child>
-				    <widget class="GtkLabel" id="summary_title_font_label">
-				      <property name="visible">True</property>
-				      <property name="label" translatable="yes">_Title:</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_title_font_button</property>
-				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				      <property name="width_chars">-1</property>
-				      <property name="single_line_mode">False</property>
-				      <property name="angle">0</property>
-				    </widget>
-				  </child>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkFontButton" id="summary_title_font_button">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="show_style">True</property>
-				  <property name="show_size">True</property>
-				  <property name="use_font">False</property>
-				  <property name="use_size">False</property>
-				  <property name="focus_on_click">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>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkHBox" id="hbox40">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">12</property>
-
-			      <child>
-				<widget class="GtkAlignment" id="summary_contents_font_alignment">
-				  <property name="visible">True</property>
-				  <property name="xalign">0.5</property>
-				  <property name="yalign">0.5</property>
-				  <property name="xscale">1</property>
-				  <property name="yscale">1</property>
-				  <property name="top_padding">0</property>
-				  <property name="bottom_padding">0</property>
-				  <property name="left_padding">30</property>
-				  <property name="right_padding">0</property>
-
-				  <child>
-				    <widget class="GtkLabel" id="summary_contents_font_label">
-				      <property name="visible">True</property>
-				      <property name="label" translatable="yes">Co_ntents:</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_contents_font_button</property>
-				      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				      <property name="width_chars">-1</property>
-				      <property name="single_line_mode">False</property>
-				      <property name="angle">0</property>
-				    </widget>
-				  </child>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
-
-			      <child>
-				<widget class="GtkFontButton" id="summary_contents_font_button">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="show_style">True</property>
-				  <property name="show_size">True</property>
-				  <property name="use_font">False</property>
-				  <property name="use_size">False</property>
-				  <property name="focus_on_click">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>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-			</widget>
-		      </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="GtkHBox" id="hbox41">
-		  <property name="visible">True</property>
-		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
-
-		  <child>
-		    <widget class="GtkButton" id="summary_test_button">
-		      <property name="visible">True</property>
-		      <property name="can_focus">True</property>
-		      <property name="relief">GTK_RELIEF_NORMAL</property>
-		      <property name="focus_on_click">True</property>
-		      <signal name="clicked" handler="summary_test_button_clicked_h" last_modification_time="Wed, 27 Jul 2005 07:48:49 GMT"/>
-
-		      <child>
-			<widget class="GtkAlignment" id="alignment9">
-			  <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="hbox42">
-			      <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="icon_size">4</property>
-				  <property name="icon_name">stock_test-mode</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="label43">
-				  <property name="visible">True</property>
-				  <property name="label" translatable="yes" comments="translators: header capitalization">_Display a Test Popup</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>
-				  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-				  <property name="width_chars">-1</property>
-				  <property name="single_line_mode">False</property>
-				  <property name="angle">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>
-		    <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>
-	    </widget>
-	    <packing>
-	      <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" comments="translators: header capitalization">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>
-	      <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
-	      <property name="width_chars">-1</property>
-	      <property name="single_line_mode">False</property>
-	      <property name="angle">0</property>
-	    </widget>
-	    <packing>
-	      <property name="type">tab</property>
-	    </packing>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">True</property>
-	  <property name="fill">True</property>
-	</packing>
-      </child>
-    </widget>
-  </child>
-</widget>
-
+  <widget class="GtkDialog" id="dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes" comments="translators: header capitalization">Mail Notification Properties</property>
+    <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+    <property name="has_separator">False</property>
+    <child internal-child="vbox">
+      <widget class="GtkVBox" id="dialog-vbox1">
+        <property name="visible">True</property>
+        <property name="spacing">2</property>
+        <child>
+          <widget class="GtkNotebook" id="notebook">
+            <property name="visible">True</property>
+            <property name="can_focus">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <widget class="GtkVBox" id="vbox12">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">18</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox22">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label36">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight="bold"&gt;General&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment1">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox23">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkCheckButton" id="display_seen_mail_check">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes">_Display seen mail</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox20">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label34">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight="bold"&gt;Mailbox List&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment5">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox21">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkScrolledWindow" id="scrolled">
+                                <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>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="selected_label">
+                                <property name="visible">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox5">
+                                <property name="visible">True</property>
+                                <property name="spacing">6</property>
+                                <property name="homogeneous">True</property>
+                                <child>
+                                  <widget class="GtkButton" id="add">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label">gtk-add</property>
+                                    <property name="use_stock">True</property>
+                                    <signal name="clicked" handler="add_clicked_h"/>
+                                  </widget>
+                                </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>
+                                    <signal name="clicked" handler="remove_clicked_h"/>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</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>
+                                    <signal name="clicked" handler="properties_clicked_h"/>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">2</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox24">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label38">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight="bold"&gt;Commands&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment2">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox25">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkHBox" id="hbox29">
+                                <property name="visible">True</property>
+                                <property name="spacing">12</property>
+                                <child>
+                                  <widget class="GtkCheckButton" id="command_new_mail_check">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes">When _new mail arrives:</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="toggled_h"/>
+                                  </widget>
+                                  <packing>
+                                    <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="can_focus">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox30">
+                                <property name="visible">True</property>
+                                <property name="spacing">12</property>
+                                <child>
+                                  <widget class="GtkCheckButton" id="command_mail_read_check">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <property name="label" translatable="yes">When all mail has _been read:</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <signal name="toggled" handler="toggled_h"/>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkEntry" id="command_mail_read_entry">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                  </widget>
+                                  <packing>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="tab_expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label25">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes" comments="translators: header capitalization">General</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="tab_expand">False</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkVBox" id="vbox32">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">18</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox33">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label46">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight="bold"&gt;General&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment11">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox34">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkCheckButton" id="icon_blink_check">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes">_Blink on errors</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkCheckButton" id="icon_always_display_check">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes">_Always display</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox35">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label47">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes" comments="translators: header capitalization">&lt;span weight="bold"&gt;Tooltip Mail Summary&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment12">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox36">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkRadioButton" id="icon_tooltip_mail_summary_standard_radio">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes" context="yes">icon tooltip's mail summary layout|_Standard</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioButton" id="icon_tooltip_mail_summary_compact_radio">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes" context="yes">icon tooltip's mail summary layout|Co_mpact</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">icon_tooltip_mail_summary_standard_radio</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioButton" id="icon_tooltip_mail_summary_none_radio">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes" context="yes">_None</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">icon_tooltip_mail_summary_standard_radio</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox26">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label40">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes" context="yes" comments="translators: header capitalization">&lt;span weight="bold"&gt;Click Action&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment3">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox27">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkRadioButton" id="icon_action_properties_dialog_radio">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes" context="yes">_Display this dialog</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioButton" id="icon_action_mail_reader_radio">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes" context="yes">_Launch the mail reader</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">icon_action_properties_dialog_radio</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioButton" id="icon_action_open_latest_message_radio">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes">_Open the latest message</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">icon_action_properties_dialog_radio</property>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioButton" id="icon_action_update_radio">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes" context="yes">_Update the mail status</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">icon_action_properties_dialog_radio</property>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">3</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">1</property>
+                <property name="tab_expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label45">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes" context="yes" comments="translators: header capitalization">Status Icon</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="position">1</property>
+                <property name="tab_expand">False</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkVBox" id="vbox14">
+                <property name="visible">True</property>
+                <property name="border_width">12</property>
+                <property name="spacing">18</property>
+                <child>
+                  <widget class="GtkVBox" id="vbox15">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="label28">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes" context="yes" comments="translators: header capitalization">&lt;span weight="bold"&gt;General&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment6">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox16">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkCheckButton" id="popups_enable_check">
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="label" translatable="yes" context="yes">_Enable message popups</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="toggled_h"/>
+                              </widget>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox1">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="popups_position_section_label">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes" context="yes" comments="translators: header capitalization">&lt;span weight="bold"&gt;Position&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment4">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox2">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkRadioButton" id="popups_position_attached_radio">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes" context="yes">_Attached to the status icon</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioButton" id="popups_position_free_radio">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes" context="yes">In the p_opup stack</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">popups_position_attached_radio</property>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <widget class="GtkVBox" id="vbox17">
+                    <property name="visible">True</property>
+                    <property name="spacing">6</property>
+                    <child>
+                      <widget class="GtkLabel" id="popups_expiration_section_label">
+                        <property name="visible">True</property>
+                        <property name="xalign">0</property>
+                        <property name="label" translatable="yes" context="yes" comments="translators: header capitalization">&lt;span weight="bold"&gt;Expiration&lt;/span&gt;</property>
+                        <property name="use_markup">True</property>
+                      </widget>
+                      <packing>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkAlignment" id="alignment7">
+                        <property name="visible">True</property>
+                        <property name="left_padding">12</property>
+                        <child>
+                          <widget class="GtkVBox" id="vbox18">
+                            <property name="visible">True</property>
+                            <property name="spacing">6</property>
+                            <child>
+                              <widget class="GtkRadioButton" id="popups_expiration_default_radio">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes" context="yes">_Desktop default</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <signal name="toggled" handler="toggled_h"/>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkRadioButton" id="popups_expiration_never_radio">
+                                <property name="visible">True</property>
+                                <property name="label" translatable="yes" context="yes">_Never</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                                <property name="group">popups_expiration_default_radio</property>
+                                <signal name="toggled" handler="toggled_h"/>
+                              </widget>
+                              <packing>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
+                            <child>
+                              <widget class="GtkHBox" id="hbox1">
+                                <property name="visible">True</property>
+                                <property name="spacing">12</property>
+                                <child>
+                                  <widget class="GtkRadioButton" id="popups_expiration_after_radio">
+                                    <property name="visible">True</property>
+                                    <property name="label" translatable="yes" context="yes">A_fter:</property>
+                                    <property name="use_underline">True</property>
+                                    <property name="draw_indicator">True</property>
+                                    <property name="group">popups_expiration_default_radio</property>
+                                    <signal name="toggled" handler="toggled_h"/>
+                                  </widget>
+                                </child>
+                                <child>
+                                  <widget class="GtkHBox" id="hbox16">
+                                    <property name="visible">True</property>
+                                    <property name="spacing">6</property>
+                                    <child>
+                                      <widget class="GtkSpinButton" id="popups_expiration_minutes_spin">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="adjustment">1 0 1440 1 10 10</property>
+                                        <property name="climb_rate">1</property>
+                                        <property name="numeric">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="popups_expiration_minutes_label">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes" context="yes">minutes</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkSpinButton" id="popups_expiration_seconds_spin">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="adjustment">1 0 59 1 10 10</property>
+                                        <property name="climb_rate">1</property>
+                                        <property name="numeric">True</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">2</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="popups_expiration_seconds_label">
+                                        <property name="visible">True</property>
+                                        <property name="label" translatable="yes" context="yes">seconds</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">3</property>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="pack_type">GTK_PACK_END</property>
+                                    <property name="position">1</property>
+                                  </packing>
+                                </child>
+                              </widget>
+                              <packing>
+                                <property name="position">2</property>
+                              </packing>
+                            </child>
+                          </widget>
+                        </child>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">False</property>
+                    <property name="position">2</property>
+                  </packing>
+                </child>
+              </widget>
+              <packing>
+                <property name="position">2</property>
+                <property name="tab_expand">False</property>
+              </packing>
+            </child>
+            <child>
+              <widget class="GtkLabel" id="label27">
+                <property name="visible">True</property>
+                <property name="label" translatable="yes" context="yes" comments="translators: header capitalization">Message Popups</property>
+              </widget>
+              <packing>
+                <property name="type">tab</property>
+                <property name="position">2</property>
+                <property name="tab_expand">False</property>
+                <property name="tab_fill">False</property>
+              </packing>
+            </child>
+          </widget>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <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>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+          </widget>
+          <packing>
+            <property name="expand">False</property>
+            <property name="pack_type">GTK_PACK_END</property>
+          </packing>
+        </child>
+      </widget>
+    </child>
+  </widget>
 </glade-interface>