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 d4378a19a41d37918a4401daab8ebd14de3abe37
parent 2abad4e8f58083028a0f887a61c62cb94c320084
Author: Jean-Yves Lefort <jylefort@brutele.be>
Date:   Tue, 16 May 2006 10:32:13 +1000

mail-notification-3.0-rc1

* Core changes:
        * An alternate, compact mail summary has been added
        * A "Display seen messages" option has been added
        * The status icon can now be displayed permanently
        * The "Delay between mail checks" option is now
          mailbox-specific
        * The properties dialog has been reorganized
        * The main window has been removed
        * The status icon is now activated with a single click
          (http://bugzilla.gnome.org/show_bug.cgi?id=148829)
        * The GTK+ bugs
          (http://bugzilla.gnome.org/show_bug.cgi?id=321886)
          which caused occasional crashes have been worked
          around
        * If the MAIL environment variable is not defined or
          invalid, the system mailbox is now looked up in
          /var/spool/mail/username and /var/mail/username
          (based on a patch from Benoît Rouits)
        * Since ~/.gnome2/mail-notification/mailboxes.xml may
          contain sensitive information, it is now saved with
          permissions set to 0600 (useful for systems where
          home directories have lax permissions)
        * The "cannot enable immediate notification" error
          dialog has been removed
        * The --list-features command line option has been
          removed (feature information is now displayed in the
          output of the --version option)
        * The message handling performance has been improved
        * If there are no mailboxes on startup, the properties
          dialog is now displayed
        * The "Start Mail Notification on GNOME login" option
          no longer worked with GNOME >= 2.14 and has been
          removed: a .desktop file is now installed in the xdg
          autostart directory instead
        * Since support for non-system sound events has been
          removed from GNOME 2.14, the
          mail-notification.soundlist file is no longer
          installed
        * The mail reader setting has been removed; the mail
          reader configured in GNOME (Desktop -> Preferences
          -> Preferred Applications) will now be used
        * The tooltip width is now limited to the screen width
        * When coupled with a patched GNOME Panel (as shipped
          by FreeBSD and Debian, for instance), the status
          icon now supports panel transparency (patch
          forwarded by Bernat Tallaferro)

* mbox, Maildir, POP3, IMAP, Evolution and Sylpheed changes:
        * Messages are now classified as unseen and seen; seen
          messages can be ignored by unchecking the "Display
          seen mail" option

* mbox changes:
        * Compressed mailboxes (gzip and bzip2) are now
          handled transparently, and support immediate
          notification

* POP3, IMAP and Gmail changes:
        * A regression which allowed mail checks to overlap
          has been fixed

* POP3 and IMAP changes:
        * If the server advertises the STLS/STARTTLS
          capability but replies ERR/BAD when the
          STLS/STARTTLS command is issued, Mail Notification
          now logs out instead of proceeding
        * If multiple mailboxes have the same type, hostname,
          port, connection type and username, Mail
          Notification will now detect that the mailboxes
          share the same account and will only prompt for the
          password once per session (when the password is not
          entered in the properties dialog, that is)

* POP3 changes:
        * Non-UTF-8 server responses are now accepted

* IMAP changes:
        * Non-ASCII server responses are now accepted (these
          responses violate RFC 3501, but we follow the RFC
          793 robustness principle "be liberal in what you
          accept"); fixes connection problems with
          internationalized Exchange servers, which violate
          RFC 3501 by sending non-ASCII characters in their
          greeting message
        * Empty continuation responses are now allowed (fixes
          authentication with some SASL mechanisms)
        * Play nice with uncompliant servers by using
          BODY.PEEK rather than BODY, so that they do not set
          the \Seen flag (patch from Jacob Berkman)
        * The IDLE mode is now cycled every 29 minutes, as
          advised by RFC 2177

* Evolution changes:
        * Support for the Evolution 2.4 and 2.6 branches has
          been added; untested support for the Evolution
          2.7/2.8 branch has been added; the Evolution source
          tree is no longer needed for Evolution >= 2.4

* Sylpheed changes:
        * With the help of a Sylpheed patch, Mail Notification
          can now reliably avoid race conditions which could
          occur when Sylpheed was running (see the
          --enable-sylpheed-locking discussion in the INSTALL
          file)

* Updated translations:
        * French

* New translations:
        * Czech (Pav Lucistnik)
        * Brazilian Portuguese (Claudio André)
        * Dutch (Marcel J. Zwiebel)
        * Japanese (Hiroshi Hasebe)

Diffstat:
MAUTHORS | 7+++++--
MINSTALL | 33+++++++++++++++++++++++----------
MMakefile.am | 11+++++++----
AMakefile.autogen | 16++++++++++++++++
MMakefile.in | 21++++++++++++---------
MNEWS | 116+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
MREADME | 66++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
MTODO | 2++
ATRANSLATING | 114+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Macinclude.m4 | 7+++----
Maclocal.m4 | 1149+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Aaml/Makefile.am | 2++
Aaml/Makefile.aml | 9+++++++++
Aaml/Makefile.in | 426+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aaml/aml.c | 515+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aaml/aml.make | 14++++++++++++++
Mart/Makefile.am | 14+++++---------
Mart/Makefile.in | 22++++++++--------------
Dart/hand-open.png | 0
Dart/main-window.png | 0
Mautogen.sh | 22+---------------------
Mconfig.h.in | 30++++++++++++++++++------------
Mconfigure | 8992++++++++++++++++++++++++++++++++++++-------------------------------------------
Mconfigure.ac | 48++++++++++++++++++++++++++++++++++--------------
Mdata/Makefile.am | 19++++++-------------
Mdata/Makefile.in | 98+++++++++++++++++++++++++++++--------------------------------------------------
Mdata/mail-notification.desktop.in | 2+-
Mdata/mail-notification.schemas.in | 176+++++++++++++++----------------------------------------------------------------
Ddata/mail-notification.soundlist.in | 6------
Mhelp/C/Makefile.in | 10+++++-----
Mhelp/C/mail-notification-C.omf | 4++--
Mhelp/C/mail-notification.xml | 469++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Mhelp/Makefile.in | 10+++++-----
Mintltool-extract.in | 6++++--
Mintltool-merge.in | 6+++---
Mintltool-update.in | 28++++++++++++++--------------
Mltmain.sh | 823+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
Mm4/Makefile.am | 1+
Mm4/Makefile.in | 11++++++-----
Mm4/evolution-plugin.m4 | 60++++++++++++++++++++++++++++++++++++------------------------
Mm4/gnome.m4 | 6+++---
Am4/idl.m4 | 54++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mm4/intltool.m4 | 183+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Mpo/Makefile.in.in | 85+++++++++++++++++++++++++++++++------------------------------------------------
Mpo/POTFILES.in | 12+++---------
Apo/POTFILES.skip | 52++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpo/bg.po | 6+++---
Apo/cs.po | 1923+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpo/de.po | 2+-
Mpo/fr.po | 1630+++++++++++++++++++++++++++++++++++--------------------------------------------
Apo/ja.po | 1868+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Apo/nl.po | 1911+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpo/pl.po | 2+-
Mpo/pt.po | 2+-
Apo/pt_BR.po | 1877+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mpo/ru.po | 2+-
Mpo/sr.po | 2+-
Mpo/sr@Latn.po | 2+-
Msrc/GNOME_MailNotification.idl | 4++--
Msrc/GNOME_MailNotification_Evolution.idl | 3++-
Msrc/Makefile.am | 670++++++++++++++++++++++++++++++++++++-------------------------------------------
Msrc/Makefile.in | 2475+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Asrc/aml.make | 12++++++++++++
Dsrc/egg-editable-toolbar.c | 1463-------------------------------------------------------------------------------
Dsrc/egg-editable-toolbar.h | 90-------------------------------------------------------------------------------
Dsrc/egg-toolbar-editor.c | 690-------------------------------------------------------------------------------
Dsrc/egg-toolbar-editor.h | 67-------------------------------------------------------------------
Dsrc/egg-toolbars-model.c | 828-------------------------------------------------------------------------------
Dsrc/egg-toolbars-model.h | 152-------------------------------------------------------------------------------
Dsrc/eggmarshalers.c | 679-------------------------------------------------------------------------------
Dsrc/eggmarshalers.h | 151------------------------------------------------------------------------------
Dsrc/eggmarshalers.list | 20--------------------
Msrc/eggtrayicon.c | 84++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
Msrc/eggtrayicon.h | 6+++---
Msrc/mn-about-dialog-private.h | 2+-
Msrc/mn-about-dialog.c | 24++++++++++++------------
Msrc/mn-about-dialog.gob | 13+++++++------
Asrc/mn-about-dialog.gob.stamp | 0
Msrc/mn-about-dialog.h | 2+-
Msrc/mn-auth-combo-box-private.h | 2+-
Msrc/mn-auth-combo-box.c | 55+++++++++++++++++++++++++++----------------------------
Msrc/mn-auth-combo-box.gob | 26+++++++++++++-------------
Asrc/mn-auth-combo-box.gob.stamp | 0
Msrc/mn-auth-combo-box.h | 2+-
Msrc/mn-authenticated-mailbox-private.h | 18+++---------------
Msrc/mn-authenticated-mailbox-properties-private.h | 2+-
Msrc/mn-authenticated-mailbox-properties.c | 41++++++++++++++++++++---------------------
Msrc/mn-authenticated-mailbox-properties.gob | 12++++++------
Asrc/mn-authenticated-mailbox-properties.gob.stamp | 0
Msrc/mn-authenticated-mailbox-properties.h | 2+-
Msrc/mn-authenticated-mailbox.c | 309++++++++++++-------------------------------------------------------------------
Msrc/mn-authenticated-mailbox.gob | 167++++---------------------------------------------------------------------------
Asrc/mn-authenticated-mailbox.gob.stamp | 0
Msrc/mn-authenticated-mailbox.h | 8++------
Msrc/mn-autodetect-mailbox-properties-private.h | 2+-
Msrc/mn-autodetect-mailbox-properties.c | 133++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
Msrc/mn-autodetect-mailbox-properties.gob | 67+++++++++++++++++++++++++++++++++++++++++++++----------------------
Asrc/mn-autodetect-mailbox-properties.gob.stamp | 0
Msrc/mn-autodetect-mailbox-properties.h | 4+++-
Msrc/mn-automation-private.h | 2+-
Msrc/mn-automation.c | 75+++++++++++++++++++++++++++++++++++++--------------------------------------
Msrc/mn-automation.gob | 32++++++++++++++++----------------
Asrc/mn-automation.gob.stamp | 0
Msrc/mn-automation.h | 2+-
Msrc/mn-blinking-image-private.h | 22++++++++++++++--------
Msrc/mn-blinking-image.c | 139++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Msrc/mn-blinking-image.gob | 52++++++++++++++++++++++++++++++----------------------
Asrc/mn-blinking-image.gob.stamp | 0
Msrc/mn-blinking-image.h | 6++++--
Msrc/mn-client-session.c | 283++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Msrc/mn-client-session.h | 44+++++++++++++++++++++++++-------------------
Asrc/mn-compact-message-view-private.h | 17+++++++++++++++++
Asrc/mn-compact-message-view.c | 255+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-compact-message-view.gob | 97+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-compact-message-view.gob.stamp | 0
Asrc/mn-compact-message-view.h | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-conf.c | 534+++++++++++++++++++++++++++++++++++--------------------------------------------
Msrc/mn-conf.h | 74+++++++++++++++++++++++++++++++-------------------------------------------
Msrc/mn-corba-object-private.h | 18++++++++++++------
Msrc/mn-corba-object.c | 115++++++++++++++++++++++++++++++++++++++-----------------------------------------
Msrc/mn-corba-object.gob | 32+++++++++++++++++---------------
Asrc/mn-corba-object.gob.stamp | 0
Msrc/mn-corba-object.h | 2+-
Msrc/mn-custom-vfs-mailbox-private.h | 2+-
Msrc/mn-custom-vfs-mailbox.c | 35+++++++++++++++++------------------
Msrc/mn-custom-vfs-mailbox.gob | 8++++----
Asrc/mn-custom-vfs-mailbox.gob.stamp | 0
Msrc/mn-custom-vfs-mailbox.h | 2+-
Msrc/mn-dialog-private.h | 2+-
Msrc/mn-dialog.c | 11+++++------
Msrc/mn-dialog.gob | 6+++---
Asrc/mn-dialog.gob.stamp | 0
Msrc/mn-dialog.h | 2+-
Msrc/mn-evolution-folder-tree-control.c | 7++++++-
Msrc/mn-evolution-glue-private.h | 2+-
Msrc/mn-evolution-glue.c | 55+++++++++++++++++++++++++++++++------------------------
Msrc/mn-evolution-glue.gob | 24++++++++++++++++--------
Asrc/mn-evolution-glue.gob.stamp | 0
Msrc/mn-evolution-glue.h | 2+-
Msrc/mn-evolution-mailbox-private.h | 16++++++++++------
Msrc/mn-evolution-mailbox-properties-private.h | 2+-
Msrc/mn-evolution-mailbox-properties.c | 168+++++++++++++++++++++++++++++++++++++------------------------------------------
Msrc/mn-evolution-mailbox-properties.gob | 35+++++++++++++----------------------
Asrc/mn-evolution-mailbox-properties.gob.stamp | 0
Msrc/mn-evolution-mailbox-properties.h | 2+-
Msrc/mn-evolution-mailbox.c | 275+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/mn-evolution-mailbox.gob | 149+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
Asrc/mn-evolution-mailbox.gob.stamp | 0
Msrc/mn-evolution-mailbox.h | 2+-
Msrc/mn-evolution-plugin.c | 41++++++++++++++++++++++++++++++++++++++---
Msrc/mn-evolution.h | 1+
Msrc/mn-gmail-mailbox-private.h | 4++--
Msrc/mn-gmail-mailbox-properties-private.h | 2+-
Msrc/mn-gmail-mailbox-properties.c | 40++++++++++++++++++++--------------------
Msrc/mn-gmail-mailbox-properties.gob | 19++++++++++---------
Asrc/mn-gmail-mailbox-properties.gob.stamp | 0
Msrc/mn-gmail-mailbox-properties.h | 2+-
Msrc/mn-gmail-mailbox.c | 221+++++++++++++++++++++++++++++++++++--------------------------------------------
Msrc/mn-gmail-mailbox.gob | 76+++++++++++++++++++++++++++++++++++-----------------------------------------
Asrc/mn-gmail-mailbox.gob.stamp | 0
Msrc/mn-gmail-mailbox.h | 3+--
Msrc/mn-gmime-stream-vfs-private.h | 2+-
Msrc/mn-gmime-stream-vfs.c | 71+++++++++++++++++++++++++++++++++++------------------------------------
Msrc/mn-gmime-stream-vfs.gob | 24++++++++++++------------
Asrc/mn-gmime-stream-vfs.gob.stamp | 0
Msrc/mn-gmime-stream-vfs.h | 2+-
Msrc/mn-imap-mailbox-private.h | 10+++++-----
Msrc/mn-imap-mailbox-properties-private.h | 2+-
Msrc/mn-imap-mailbox-properties.c | 66+++++++++++++++++++++++++++++++++---------------------------------
Msrc/mn-imap-mailbox-properties.gob | 37+++++++++++++++++++------------------
Asrc/mn-imap-mailbox-properties.gob.stamp | 0
Msrc/mn-imap-mailbox-properties.h | 2+-
Msrc/mn-imap-mailbox.c | 1424+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/mn-imap-mailbox.gob | 863++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Asrc/mn-imap-mailbox.gob.stamp | 0
Msrc/mn-imap-mailbox.h | 3+--
Asrc/mn-locked-callback.c | 625+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-locked-callback.h | 84+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-mail-icon-private.h | 2+-
Msrc/mn-mail-icon.c | 227+++++++++++++++++++++++++++++++++++--------------------------------------------
Msrc/mn-mail-icon.gob | 46+++++++++++++++++++++++++---------------------
Asrc/mn-mail-icon.gob.stamp | 0
Msrc/mn-mail-icon.h | 11+++--------
Msrc/mn-mail-summary-popup-private.h | 24++++++++++++++----------
Msrc/mn-mail-summary-popup.c | 456+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/mn-mail-summary-popup.gob | 181+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Asrc/mn-mail-summary-popup.gob.stamp | 0
Msrc/mn-mail-summary-popup.h | 10+++++++++-
Msrc/mn-mailbox-private.h | 21++++++++++++++++++---
Msrc/mn-mailbox-properties-dialog-private.h | 50++++++++++++++++++++++++++++++++++++--------------
Msrc/mn-mailbox-properties-dialog.c | 489+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
Msrc/mn-mailbox-properties-dialog.gob | 218++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
Asrc/mn-mailbox-properties-dialog.gob.stamp | 0
Msrc/mn-mailbox-properties-dialog.h | 2+-
Msrc/mn-mailbox-properties-private.h | 5++---
Msrc/mn-mailbox-properties.c | 195++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-mailbox-properties.gob | 48++++++++++++++++++++++++++----------------------
Asrc/mn-mailbox-properties.gob.stamp | 0
Msrc/mn-mailbox-properties.h | 6+++++-
Msrc/mn-mailbox-view-private.h | 20+++++++++++---------
Msrc/mn-mailbox-view.c | 771++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Msrc/mn-mailbox-view.gob | 221+++++++++++++++++++++++++++++++++++++++++++++++++------------------------------
Asrc/mn-mailbox-view.gob.stamp | 0
Msrc/mn-mailbox-view.h | 26+++++++++++++++++---------
Msrc/mn-mailbox.c | 1003+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Msrc/mn-mailbox.gob | 405++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
Asrc/mn-mailbox.gob.stamp | 0
Msrc/mn-mailbox.h | 39+++++++++++++++++++++++++++++++--------
Msrc/mn-mailboxes-private.h | 20++++++++++++--------
Msrc/mn-mailboxes.c | 761+++++++++++++++++++++++++++++++++++++------------------------------------------
Msrc/mn-mailboxes.gob | 311+++++++++++++++++++++++++++++++++++++++----------------------------------------
Asrc/mn-mailboxes.gob.stamp | 0
Msrc/mn-mailboxes.h | 12+++++-------
Msrc/mn-maildir-mailbox-backend-private.h | 2+-
Msrc/mn-maildir-mailbox-backend.c | 219+++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------
Msrc/mn-maildir-mailbox-backend.gob | 134++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Asrc/mn-maildir-mailbox-backend.gob.stamp | 0
Msrc/mn-maildir-mailbox-backend.h | 2+-
Dsrc/mn-main-window-private.h | 56--------------------------------------------------------
Dsrc/mn-main-window.c | 1468-------------------------------------------------------------------------------
Dsrc/mn-main-window.gob | 880-------------------------------------------------------------------------------
Dsrc/mn-main-window.h | 62--------------------------------------------------------------
Msrc/mn-main.c | 256+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Msrc/mn-mbox-mailbox-backend-private.h | 14+++++++++-----
Msrc/mn-mbox-mailbox-backend.c | 282++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
Msrc/mn-mbox-mailbox-backend.gob | 204++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
Asrc/mn-mbox-mailbox-backend.gob.stamp | 0
Msrc/mn-mbox-mailbox-backend.h | 14+-------------
Msrc/mn-md5.c | 2+-
Msrc/mn-message-mime.c | 46++++++++++++++++++++++++++++++++++------------
Msrc/mn-message-mime.h | 16++++++++++++----
Msrc/mn-message-private.h | 2+-
Msrc/mn-message-view-private.h | 25++++++++++---------------
Msrc/mn-message-view.c | 744+++++++++++++++++++++----------------------------------------------------------
Msrc/mn-message-view.gob | 409+++++++++++++++++--------------------------------------------------------------
Asrc/mn-message-view.gob.stamp | 0
Msrc/mn-message-view.h | 19+++++--------------
Msrc/mn-message.c | 283+++++++++++++++++++++++++------------------------------------------------------
Msrc/mn-message.gob | 110++++++++++++++++++-------------------------------------------------------------
Asrc/mn-message.gob.stamp | 0
Msrc/mn-message.h | 24+++++++++++++++++-------
Msrc/mn-mh-mailbox-backend-private.h | 2+-
Msrc/mn-mh-mailbox-backend.c | 51++++++++++++++++++++++++++++-----------------------
Msrc/mn-mh-mailbox-backend.gob | 30++++++++++++++++++------------
Asrc/mn-mh-mailbox-backend.gob.stamp | 0
Msrc/mn-mh-mailbox-backend.h | 2+-
Msrc/mn-pi-mailbox-private.h | 27++++++++++++++++++++++++++-
Msrc/mn-pi-mailbox-properties-private.h | 2+-
Msrc/mn-pi-mailbox-properties.c | 118++++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-pi-mailbox-properties.gob | 55++++++++++++++++++++++++++++---------------------------
Asrc/mn-pi-mailbox-properties.gob.stamp | 0
Msrc/mn-pi-mailbox-properties.h | 2+-
Msrc/mn-pi-mailbox.c | 616++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------
Msrc/mn-pi-mailbox.gob | 308+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------
Asrc/mn-pi-mailbox.gob.stamp | 0
Msrc/mn-pi-mailbox.h | 11++++++++++-
Msrc/mn-pop3-mailbox-private.h | 6+++---
Msrc/mn-pop3-mailbox-properties-private.h | 2+-
Msrc/mn-pop3-mailbox-properties.c | 21++++++++++-----------
Msrc/mn-pop3-mailbox-properties.gob | 10+++++-----
Asrc/mn-pop3-mailbox-properties.gob.stamp | 0
Msrc/mn-pop3-mailbox-properties.h | 2+-
Msrc/mn-pop3-mailbox.c | 760++++++++++++++++++++++++++++++++++---------------------------------------------
Msrc/mn-pop3-mailbox.gob | 409++++++++++++++++++++++++++++++++++---------------------------------------------
Asrc/mn-pop3-mailbox.gob.stamp | 0
Msrc/mn-pop3-mailbox.h | 2+-
Msrc/mn-properties-dialog-private.h | 107++++++++++++++++++++++++++++++++++++++++---------------------------------------
Msrc/mn-properties-dialog.c | 281++++++++++++++++++++++++++++++++++++-------------------------------------------
Msrc/mn-properties-dialog.gob | 163++++++++++++++++++++++++++++++++++++++-----------------------------------------
Asrc/mn-properties-dialog.gob.stamp | 0
Msrc/mn-properties-dialog.h | 2+-
Msrc/mn-reentrant-mailbox-private.h | 20+++++++++++++-------
Msrc/mn-reentrant-mailbox.c | 179+++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-reentrant-mailbox.gob | 43+++++++++++++++++++++++++++----------------
Asrc/mn-reentrant-mailbox.gob.stamp | 0
Msrc/mn-reentrant-mailbox.h | 4++--
Msrc/mn-shell-private.h | 24+++++++++++-------------
Msrc/mn-shell.c | 819+++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-shell.gob | 385++++++++++++++++++++++++++++++++++++++++---------------------------------------
Asrc/mn-shell.gob.stamp | 0
Msrc/mn-shell.h | 33++++++++++++++-------------------
Asrc/mn-standard-message-view-private.h | 17+++++++++++++++++
Asrc/mn-standard-message-view.c | 262+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-standard-message-view.gob | 104+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-standard-message-view.gob.stamp | 0
Asrc/mn-standard-message-view.h | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-stock.c | 27++++++++++++++-------------
Msrc/mn-stock.h | 11+++++------
Msrc/mn-sylpheed-mailbox-backend-private.h | 16++++++++++++----
Msrc/mn-sylpheed-mailbox-backend.c | 438+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
Msrc/mn-sylpheed-mailbox-backend.gob | 270+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------
Asrc/mn-sylpheed-mailbox-backend.gob.stamp | 0
Msrc/mn-sylpheed-mailbox-backend.h | 2+-
Msrc/mn-system-vfs-mailbox-private.h | 2+-
Msrc/mn-system-vfs-mailbox-properties-private.h | 2+-
Msrc/mn-system-vfs-mailbox-properties.c | 28++++++++++++++--------------
Msrc/mn-system-vfs-mailbox-properties.gob | 12+++++++-----
Asrc/mn-system-vfs-mailbox-properties.gob.stamp | 0
Msrc/mn-system-vfs-mailbox-properties.h | 2+-
Msrc/mn-system-vfs-mailbox.c | 56++++++++++++++++++++++++++++++++++++++------------------
Msrc/mn-system-vfs-mailbox.gob | 35++++++++++++++++++++++++++++-------
Asrc/mn-system-vfs-mailbox.gob.stamp | 0
Msrc/mn-system-vfs-mailbox.h | 2+-
Asrc/mn-text-table-private.h | 42++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-text-table.c | 705+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-text-table.gob | 371+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-text-table.gob.stamp | 0
Asrc/mn-text-table.h | 81+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-tooltips-private.h | 24++++++++++++++----------
Msrc/mn-tooltips.c | 483++++++++++++++++++++++++++++++++++++++++++++++---------------------------------
Msrc/mn-tooltips.gob | 139++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
Asrc/mn-tooltips.gob.stamp | 0
Msrc/mn-tooltips.h | 5++++-
Msrc/mn-util.c | 382+++++++++++++++++++++++++++++++++++++++----------------------------------------
Msrc/mn-util.h | 51++++++++++++++++++++++++++++-----------------------
Msrc/mn-vfs-mailbox-backend-private.h | 13++-----------
Msrc/mn-vfs-mailbox-backend.c | 224++++++++++++++++++++-----------------------------------------------------------
Msrc/mn-vfs-mailbox-backend.gob | 97+++++++++++++------------------------------------------------------------------
Asrc/mn-vfs-mailbox-backend.gob.stamp | 0
Msrc/mn-vfs-mailbox-backend.h | 6+-----
Msrc/mn-vfs-mailbox-private.h | 20+++++++++++---------
Msrc/mn-vfs-mailbox.c | 533++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Msrc/mn-vfs-mailbox.gob | 344+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Asrc/mn-vfs-mailbox.gob.stamp | 0
Msrc/mn-vfs-mailbox.h | 3+--
Msrc/mn-vfs.c | 21++++++++++++++++++---
Msrc/mn-vfs.h | 4+++-
Msrc/nautilus-cell-renderer-pixbuf-emblem.c | 40++++++++++++++++++++--------------------
Msrc/nautilus-cell-renderer-pixbuf-emblem.h | 14+++++++-------
Msrc/org-gnome-mail-notification.eplug.in | 6++++++
Asylpheed-locking.diff | 69+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtests/Makefile.in | 10+++++-----
Mtests/test-vfs-read-line.c | 2+-
Mui/Makefile.am | 6+-----
Mui/Makefile.in | 16++++++----------
Dui/edit-toolbars-dialog.glade | 163-------------------------------------------------------------------------------
Dui/edit-toolbars-dialog.gladep | 14--------------
Mui/mail-summary-popup.glade | 19++++---------------
Mui/mailbox-properties-dialog.glade | 168+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Dui/menus.xml | 36------------------------------------
Mui/properties-dialog.glade | 750++++++++++++++++++++++++++++++++++++++++++-------------------------------------
Dui/toolbars.xml | 16----------------
342 files changed, 32800 insertions(+), 26329 deletions(-)
diff --git a/AUTHORS b/AUTHORS
@@ -5,15 +5,20 @@
 Developed by Jean-Yves Lefort <jylefort@brutele.be>.
 
 Translators:
+	* Claudio André <claudio.andre@correios.net.br> (Brazilian
+	  Portuguese)
 	* Hendrik Brandt <eru@gmx.li>,
 	  Jens Seidel <jensseidel@users.sf.net> (German)
+	* Hiroshi Hasebe <hhasebe@DVOI.COM> (Japanese)
 	* Duarte Henriques <duarte_henriques@myrealbox.com>
 	  (Portuguese)
 	* Dan Korostelev <dan@ats.energo.ru> (Russian)
+	* Pav Lucistnik <pav@FreeBSD.org> (Czech)
 	* Filip Miletic <filmil@gmail.com> (Serbian)
 	* Vladimir Petkov <vpetkov@i-space.org> (Bulgarian)
 	* Tomasz Sarota-Raczek <tomasz.sarota.raczek@gmail.com>,
 	  Maurycy Pawłowski-Wieroński <maurycy@abstrakcja.pl> (Polish)
+	* Marcel J. Zwiebel <mj.zwiebel@nonux.nl> (Dutch)
 
 External code sources:
 	* libegg (src/egg*)
@@ -22,5 +27,3 @@ External code sources:
 External art sources (images taken as-is or slightly modified):
 	* Google (gmail.png)
 	* Evolution (mail-notification.png)
-	* GNOME Icon Theme (main-window.png)
-	* libegg (hand-open.png)
diff --git a/INSTALL b/INSTALL
@@ -11,9 +11,9 @@ Index
 
 0. About this document
 
-	$Id: INSTALL,v 1.18 2005/08/03 16:48:43 jylefort Exp $
+	$Id: INSTALL,v 1.19 2006/05/15 04:31:14 jylefort Exp $
 
-	Copyright (C) 2003-2005 Jean-Yves Lefort.
+	Copyright (C) 2003-2006 Jean-Yves Lefort.
 
 	This document is part of Mail Notification.
 	It may be distributed under the same terms as Mail Notification.
@@ -67,13 +67,15 @@ Index
 		  your session must be restarted after installing Mail
 		  Notification.
 
-		* For building Evolution support, you must specify the
-		  path to the Evolution source directory, for
-		  instance:
+		* 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,8 +141,8 @@ Index
 
 		Requirements: Evolution version 2.2 or superior.
 
-		You must specify the path to the Evolution source
-		directory, for instance:
+		With Evolution 2.2.x, you must also specify the path
+		to the Evolution source directory, for instance:
 
 			$ ./configure \
 			    --with-evolution-source-dir=$HOME/evolution-2.2.3
@@ -149,11 +151,12 @@ Index
 
 		Specify the path to the Evolution source directory,
 		which is required for building Evolution mailbox
-		support.
+		support (Evolution 2.2.x only, not necessary with
+		Evolution >= 2.3).
 
 		Requirements: the source directory corresponding to
-		              the version of Evolution installed on
-		              your system.
+			      the version of Evolution 2.2.x installed
+			      on your system.
 		Applies to: Evolution.
 
 	--enable-sylpheed (default: yes)
@@ -161,3 +164,13 @@ Index
 		Enable Sylpheed mailbox support.
 
 		Requirements: GMime version 2.1.0 or superior.
+
+	--enable-sylpheed-locking (default: no)
+
+		Enable .sylpheed_mark locking. This option allows Mail
+		Notification to reliably avoid race conditions which
+		can occur when Sylpheed is running, but it requires a
+		patched version of Sylpheed (the Sylpheed patch,
+		sylpheed-locking.diff, is included in this archive).
+
+		Requirements: Sylpheed patched with sylpheed-locking.diff
diff --git a/Makefile.am b/Makefile.am
@@ -1,14 +1,17 @@
+SUBDIRS = aml art data help m4 po src ui
+
 if WITH_REGRESSION_TESTS
-tests = tests
+SUBDIRS += tests
 endif
 
-SUBDIRS = art data help m4 po src $(tests) ui
-
 EXTRA_DIST = \
+	Makefile.autogen	\
+	TRANSLATING		\
 	autogen.sh		\
 	intltool-extract.in	\
 	intltool-merge.in	\
-	intltool-update.in
+	intltool-update.in	\
+	sylpheed-locking.diff
 
 DISTCLEANFILES = \
 	intltool-extract	\
diff --git a/Makefile.autogen b/Makefile.autogen
@@ -0,0 +1,16 @@
+# -*- mode: makefile -*-
+
+# change this to the path to mkinstalldirs on your system
+# po/Makefile.in.in requires mkinstalldirs, but intltoolize does not provide it
+MKINSTALLDIRS = /usr/local/gnu-autotools/share/automake-1.9/mkinstalldirs
+
+all:
+	cd aml && $(MAKE) -f Makefile.aml
+	aml/aml src/automake.xml > src/Makefile.am
+	libtoolize
+	intltoolize --force
+	ln -sf $(MKINSTALLDIRS) mkinstalldirs
+	aclocal -I m4
+	autoheader
+	autoconf
+	automake --add-missing --force-missing
diff --git a/Makefile.in b/Makefile.in
@@ -36,6 +36,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
+@WITH_REGRESSION_TESTS_TRUE@am__append_1 = tests
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
 	$(top_srcdir)/configure AUTHORS COPYING INSTALL NEWS TODO \
@@ -44,8 +45,8 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
 subdir = .
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
-	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
 	$(top_srcdir)/m4/reentrant-resolver.m4 \
 	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
 	$(top_srcdir)/configure.ac
@@ -66,7 +67,7 @@ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
 	uninstall-recursive
 ETAGS = etags
 CTAGS = ctags
-DIST_SUBDIRS = art data help m4 po src tests ui
+DIST_SUBDIRS = aml art data help m4 po src ui tests
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -87,7 +88,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BONOBO_ACTIVATION_IDL = @BONOBO_ACTIVATION_IDL@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -119,7 +120,6 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GMIME_CFLAGS = @GMIME_CFLAGS@
 GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
@@ -151,6 +151,7 @@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
 INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
 INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
 INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
 INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
 INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
 INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
@@ -161,7 +162,6 @@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
 INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
 INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
-LIBBONOBO_IDL = @LIBBONOBO_IDL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
@@ -256,6 +256,7 @@ 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@
@@ -283,13 +284,15 @@ target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
-@WITH_REGRESSION_TESTS_TRUE@tests = tests
-SUBDIRS = art data help m4 po src $(tests) ui
+SUBDIRS = aml art data help m4 po src ui $(am__append_1)
 EXTRA_DIST = \
+	Makefile.autogen	\
+	TRANSLATING		\
 	autogen.sh		\
 	intltool-extract.in	\
 	intltool-merge.in	\
-	intltool-update.in
+	intltool-update.in	\
+	sylpheed-locking.diff
 
 DISTCLEANFILES = \
 	intltool-extract	\
diff --git a/NEWS b/NEWS
@@ -1,3 +1,119 @@
+3.0 Release Candidate 1			May 16, 2006
+
+	* Core changes:
+		* An alternate, compact mail summary has been added
+		* A "Display seen messages" option has been added
+		* The status icon can now be displayed permanently
+		* The "Delay between mail checks" option is now
+		  mailbox-specific
+		* The properties dialog has been reorganized
+		* The main window has been removed
+		* The status icon is now activated with a single click
+		  (http://bugzilla.gnome.org/show_bug.cgi?id=148829)
+		* The GTK+ bugs
+		  (http://bugzilla.gnome.org/show_bug.cgi?id=321886)
+		  which caused occasional crashes have been worked
+		  around
+		* If the MAIL environment variable is not defined or
+		  invalid, the system mailbox is now looked up in
+		  /var/spool/mail/username and /var/mail/username
+		  (based on a patch from Benoît Rouits)
+		* Since ~/.gnome2/mail-notification/mailboxes.xml may
+		  contain sensitive information, it is now saved with
+		  permissions set to 0600 (useful for systems where
+		  home directories have lax permissions)
+		* The "cannot enable immediate notification" error
+		  dialog has been removed
+		* The --list-features command line option has been
+		  removed (feature information is now displayed in the
+		  output of the --version option)
+		* The message handling performance has been improved
+		* If there are no mailboxes on startup, the properties
+		  dialog is now displayed
+		* The "Start Mail Notification on GNOME login" option
+		  no longer worked with GNOME >= 2.14 and has been
+		  removed: a .desktop file is now installed in the xdg
+		  autostart directory instead
+		* Since support for non-system sound events has been
+		  removed from GNOME 2.14, the
+		  mail-notification.soundlist file is no longer
+		  installed
+		* The mail reader setting has been removed; the mail
+		  reader configured in GNOME (Desktop -> Preferences
+		  -> Preferred Applications) will now be used
+		* The tooltip width is now limited to the screen width
+		* When coupled with a patched GNOME Panel (as shipped
+		  by FreeBSD and Debian, for instance), the status
+		  icon now supports panel transparency (patch
+		  forwarded by Bernat Tallaferro)
+
+	* mbox, Maildir, POP3, IMAP, Evolution and Sylpheed changes:
+		* Messages are now classified as unseen and seen; seen
+		  messages can be ignored by unchecking the "Display
+		  seen mail" option
+
+	* mbox changes:
+		* Compressed mailboxes (gzip and bzip2) are now
+		  handled transparently, and support immediate
+		  notification
+
+	* POP3, IMAP and Gmail changes:
+		* A regression which allowed mail checks to overlap
+		  has been fixed
+
+	* POP3 and IMAP changes:
+		* If the server advertises the STLS/STARTTLS
+		  capability but replies ERR/BAD when the
+		  STLS/STARTTLS command is issued, Mail Notification
+		  now logs out instead of proceeding
+		* If multiple mailboxes have the same type, hostname,
+		  port, connection type and username, Mail
+		  Notification will now detect that the mailboxes
+		  share the same account and will only prompt for the
+		  password once per session (when the password is not
+		  entered in the properties dialog, that is)
+
+	* POP3 changes:
+		* Non-UTF-8 server responses are now accepted
+
+	* IMAP changes:
+		* Non-ASCII server responses are now accepted (these
+		  responses violate RFC 3501, but we follow the RFC
+		  793 robustness principle "be liberal in what you
+		  accept"); fixes connection problems with
+		  internationalized Exchange servers, which violate
+		  RFC 3501 by sending non-ASCII characters in their
+		  greeting message
+		* Empty continuation responses are now allowed (fixes
+		  authentication with some SASL mechanisms)
+		* Play nice with uncompliant servers by using
+		  BODY.PEEK rather than BODY, so that they do not set
+		  the \Seen flag (patch from Jacob Berkman)
+		* The IDLE mode is now cycled every 29 minutes, as
+		  advised by RFC 2177
+
+	* Evolution changes:
+		* Support for the Evolution 2.4 and 2.6 branches has
+		  been added; untested support for the Evolution
+		  2.7/2.8 branch has been added; the Evolution source
+		  tree is no longer needed for Evolution >= 2.4
+
+	* Sylpheed changes:
+		* With the help of a Sylpheed patch, Mail Notification
+		  can now reliably avoid race conditions which could
+		  occur when Sylpheed was running (see the
+		  --enable-sylpheed-locking discussion in the INSTALL
+		  file)
+
+	* Updated translations:
+		* French
+
+	* New translations:
+		* Czech (Pav Lucistnik)
+		* Brazilian Portuguese (Claudio André)
+		* Dutch (Marcel J. Zwiebel)
+		* Japanese (Hiroshi Hasebe)
+
 2.0					August 9, 2005
 
 	* Core changes:
diff --git a/README b/README
@@ -11,9 +11,9 @@ Index
 
 0. About this document
 
-	$Id: README,v 1.28 2005/08/07 13:14:38 jylefort Exp $
+	$Id: README,v 1.32 2006/05/15 04:32:34 jylefort Exp $
 
-	Copyright (C) 2003-2005 Jean-Yves Lefort.
+	Copyright (C) 2003-2006 Jean-Yves Lefort.
 
 	This document is part of Mail Notification.
 	It may be distributed under the same terms as Mail Notification.
@@ -50,17 +50,71 @@ Index
 	  hang.
 
 	  http://bugzilla.gnome.org/show_bug.cgi?id=152023
+	  fixed:
+		- FreeBSD port x11-toolkits/libgnomeui >= 2.10.0_1
+		- libgnomeui CVS >= 20060102
+		- libgnomeui >= 2.13.2
+
 	  http://bugzilla.gnome.org/show_bug.cgi?id=312180
+	  fixed:
+		- FreeBSD port x11-toolkits/libgnomeui >= 2.10.1_1
+		- libgnomeui CVS >= 20060208
 
 	* An infinite loop in GnomeVFS may affect mailboxes which use
 	  HTTP authentication (for instance, Gmail mailboxes).
 
 	  http://bugzilla.gnome.org/show_bug.cgi?id=310596
-	  (fixed on 20050723)
+	  fixed:
+		- GnomeVFS CVS >= 20050724
+		- GnomeVFS >= 2.11.90
+
+	* If GnomeVFS was built with GnuTLS support, a GnomeVFS bug
+	  may cause Mail Notification to crash when accessing a
+	  mailbox over SSL (for instance, a Gmail mailbox) with
+	  GnomeVFS. The crash is accompanied by an error message
+	  similar to the following:
+
+		mail-notification: ath.c:181: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.
+		Xlib: unexpected async reply (sequence 0x2cc0)!
+
+	  http://bugzilla.gnome.org/show_bug.cgi?id=172813
+	  fixed:
+		- GnomeVFS CVS >= 20050411
+		- GnomeVFS >= 2.11.1
+
+	* When Mail Notification is trying to contact Evolution, a
+	  file descriptor leak in bonobo-activation causes the
+	  bonobo-activation-server process to leak one file descriptor
+	  per second.
+
+	  http://bugzilla.gnome.org/show_bug.cgi?id=315650
+	  fixed:
+		- FreeBSD port devel/libbonobo >= 2.10.1_1
+
+	* An infinite loop in GnomeVFS may affect mailboxes which use
+	  the GnomeVFS bzip2 method.
+
+	  http://bugzilla.gnome.org/show_bug.cgi?id=322652
+	  fixed:
+		- FreeBSD port devel/gnomevfs2 >= 2.12.1.1_4
+		- GnomeVFS CVS >= 20051201
+		- GnomeVFS >= 2.13.2
+
+	* A bug in GnomeVFS may prevent successful authentication if
+	  an username or password contains special characters such as
+	  '@'.
+
+	  http://bugzilla.gnome.org/show_bug.cgi?id=89106
+	  fixed:
+		- GnomeVFS CVS >= 20050716
+		- GnomeVFS >= 2.11.90
+
+	* A bug in GnomeVFS may occasionally cause mbox, MH, Maildir
+	  and Sylpheed mailbox changes to stay undetected.
 
-	* An unidentified bug, probably in the Metacity window
-	  manager, may sometimes cause the mail summary popup to be
-	  misplaced.
+	  http://bugzilla.gnome.org/show_bug.cgi?id=341585
+	  fixed:
+		- FreeBSD port devel/gnomevfs2 >= 2.14.1_2
 
 3. Installation instructions
 
diff --git a/TODO b/TODO
@@ -6,3 +6,5 @@
 * Allow to set a different mail reader for each mailbox. Invoking the
   mail reader action would run the mail reader of the most recent
   message's mailbox, or fallback to the global mail reader.
+
+* Limit the tooltip height to the screen height
diff --git a/TRANSLATING b/TRANSLATING
@@ -0,0 +1,114 @@
+===============================================================================
+ Translating Mail Notification
+===============================================================================
+
+Index
+
+	0. About this document
+	1. Correctness
+	2. Starting up
+	3. Comments
+	4. Formatting
+	5. Capitalization
+	6. Context
+	7. Access keys
+	8. Application name
+
+0. About this document
+
+	$Id: TRANSLATING,v 1.3 2006/03/04 05:16:03 jylefort Exp $
+
+	Copyright (C) 2005, 2006 Jean-Yves Lefort.
+
+	This document is part of Mail Notification.
+	It may be distributed under the same terms as Mail Notification.
+
+1. Correctness
+
+	To translate Mail Notification, you should have a good
+	understanding of the English language, and excellent writing
+	skills in the target language. Grammatical, spelling and
+	semantic errors should be avoided as much as possible.
+
+2. Starting up
+
+	To generate a new .po template, type the following commands:
+
+		cd po
+		intltool-update -p
+		msginit -l LL_CC
+
+	LL must be a language code, and CC must be a country code, for
+	instance:
+
+		msginit -l it_IT
+
+	Consult the gettext and intltool documentation for more
+	informations.
+
+3. Comments
+
+	Translator hints are prefixed with "translators:". Other
+	comments must be ignored (the extraction tools blindly copy
+	source code comments which precede translatable messages).
+
+4. Formatting
+
+	Newlines (\n) must be preserved. Formatting elements must be
+	copied literally, but their content must be translated. For
+	instance, the message:
+
+		<span weight="bold">Fonts</span>
+
+	translates to French as:
+
+		<span weight="bold">Polices de caractères</span>
+
+5. Capitalization
+
+	Mail Notification follows the GNOME capitalization guidelines:
+
+		http://developer.gnome.org/projects/gup/hig/2.0/design-text-labels.html#layout-capitalization
+
+	Messages which use header capitalization are marked with the
+	comment "translators: header capitalization". The header
+	capitalization rule of the target language, if any, must be
+	applied to these messages.
+
+6. Context
+
+	Some messages are prefixed with context information (separated
+	from the actual message by the pipe character, "|"), for
+	instance:
+
+		msgid "icon tooltip's mail summary layout|Co_mpact"
+
+	The purpose of the context information is to allow different
+	translations of the same English message. The context must be
+	removed from the translations, as in:
+
+		msgid "icon tooltip's mail summary layout|Co_mpact"
+		msgstr "_Compact"
+
+		msgid "popup's mail summary layout|Co_mpact"
+		msgstr "_Compacte"
+
+7. Access keys
+
+	Characters following an underline are access keys. The user
+	can activate the control labelled by the message by pressing
+	Alt-x, where x is the character following the underline.
+
+	When a message contains an access key, assign an appropriate
+	access key to the translation by consulting the "Choosing
+	Access Keys" section of the GNOME Human Interface Guidelines:
+
+		http://developer.gnome.org/projects/gup/hig/2.0/input-keyboard.html#choosing-access-keys
+
+8. Application name
+
+	The application name ("Mail Notification") should be
+	translated. In English, it is treated as a proper noun and
+	capitalized accordingly. However, appropriate classification
+	(common noun or proper noun) and capitalization may vary from
+	language to language.
diff --git a/acinclude.m4 b/acinclude.m4
@@ -1,4 +1,4 @@
-# Copyright (C) 2003-2005 Jean-Yves Lefort.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
 #
 # This file is part of Mail Notification.
 # It may be distributed under the same terms as Mail Notification.
@@ -35,9 +35,8 @@ MN_FEATURE_DISABLE_REASON_VAR_NAME([$1])="([$2])"])
 dnl MN_FEATURE_DEFINE(FEATURE)
 dnl
 AC_DEFUN([MN_FEATURE_DEFINE],
-[if MN_FEATURE_ENABLED([$1]); then
-	AC_DEFINE(MN_FEATURE_SYMBOL_NAME([$1]), 1, [Define to 1 if $1 is enabled])
-fi
+[if MN_FEATURE_ENABLED([$1]); then _value=1; else _value=0; fi
+AC_DEFINE_UNQUOTED(MN_FEATURE_SYMBOL_NAME([$1]), $_value, [Define to 1 if $1 is enabled, 0 otherwise])
 ])
 
 dnl MN_FEATURES_DEFINE(FEATURES)
diff --git a/aclocal.m4 b/aclocal.m4
@@ -44,12 +44,11 @@ AC_DEFUN([AM_GCONF_SOURCE_2],
 
   AC_ARG_ENABLE(schemas-install,
      [  --disable-schemas-install	Disable the schemas installation],
-     [case "${enableval}" in
-       yes) schemas_install=true ;;
-       no)  schemas_install=false ;;
-       *) AC_MSG_ERROR(bad value ${enableval} for --disable-schemas-install) ;;
-     esac],[schemas_install=true])
-     AM_CONDITIONAL(GCONF_SCHEMAS_INSTALL, test x$schemas_install = xtrue)
+     [case ${enableval} in
+       yes|no) ;;
+       *) AC_MSG_ERROR(bad value ${enableval} for --enable-schemas-install) ;;
+      esac])
+  AM_CONDITIONAL([GCONF_SCHEMAS_INSTALL], [test "$enable_schemas_install" != no])
 ])
 
 # Configure paths for GTK+
@@ -648,124 +647,9 @@ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
 AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
 ])dnl
 
-# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
-# 
-# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-# General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# As a special exception to the GNU General Public License, if you
-# distribute this file as part of a program that contains a
-# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-# PKG_PROG_PKG_CONFIG([MIN-VERSION])
-# ----------------------------------
-AC_DEFUN([PKG_PROG_PKG_CONFIG],
-[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
-m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
-AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=m4_ifval([$1], [$1], [0.9.0])
-	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		AC_MSG_RESULT([yes])
-	else
-		AC_MSG_RESULT([no])
-		PKG_CONFIG=""
-	fi
-		
-fi[]dnl
-])# PKG_PROG_PKG_CONFIG
-
-# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
-# ---------------------------------------------
-m4_define([_PKG_CONFIG],
-[if test "x$ac_cv_env_[]$1[]_set" = "xset"; then
-	pkg_cv_[]$1=$ac_cv_env_[]$1[]_value
-elif test -n "$PKG_CONFIG"; then
-	if AC_RUN_LOG([$PKG_CONFIG --exists "$3" >/dev/null 2>&1]); then
-		pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
-	else
-		pkg_failed=yes
-	fi
-else
-	pkg_failed=untried
-fi[]dnl
-])# _PKG_CONFIG
-
-# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
-# [ACTION-IF-NOT-FOUND])
-#
-#
-# Note that if there is a possibility the first call to
-# PKG_CHECK_MODULES might not happen, you should be sure to include an
-# explicit call to PKG_PROG_PKG_CONFIG in your configure.in
-#
-#
-# --------------------------------------------------------------
-AC_DEFUN([PKG_CHECK_MODULES],
-[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
-AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
-AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
-
-pkg_failed=no
-AC_CACHE_CHECK([for $1][_CFLAGS], [pkg_cv_][$1][_CFLAGS],
-	[_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])])
-AC_CACHE_CHECK([for $1][_LIBS], [pkg_cv_][$1][_LIBS],
-	[_PKG_CONFIG([$1][_LIBS], [libs], [$2])])
-
-if test $pkg_failed = yes; then
-	$1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
-	# Put the nasty error message in config.log where it belongs
-	echo "$$1[]_PKG_ERRORS" 1>&AS_MESSAGE_LOG_FD
-
-	ifelse([$4], , [AC_MSG_ERROR(dnl
-[Package requirements ($2) were not met.
-Consider adjusting the PKG_CONFIG_PATH environment variable if you
-installed software in a non-standard prefix.
-
-Alternatively you may set the $1_CFLAGS and $1_LIBS environment variables
-to avoid the need to call pkg-config.  See the pkg-config man page for
-more details.])],
-		[$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
-is in your PATH or set the PKG_CONFIG environment variable to the full
-path to pkg-config.
-
-Alternatively you may set the $1_CFLAGS and $1_LIBS environment variables
-to avoid the need to call pkg-config.  See the pkg-config man page for
-more details.
-
-To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
-		[$4])
-else
-	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
-	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
-	ifelse([$3], , :, [$3])
-fi[]dnl
-])# PKG_CHECK_MODULES
-
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 
-# serial 47 AC_PROG_LIBTOOL
+# serial 48 AC_PROG_LIBTOOL
 
 
 # AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
@@ -895,7 +779,7 @@ rm="rm -f"
 default_ofile=libtool
 can_build_shared=yes
 
-# All known linkers require a `.a' archive for static linking (except M$VC,
+# All known linkers require a `.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
 ltmain="$ac_aux_dir/ltmain.sh"
@@ -915,6 +799,7 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
 test -z "$AS" && AS=as
 test -z "$CC" && CC=cc
 test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
 test -z "$DLLTOOL" && DLLTOOL=dlltool
 test -z "$LD" && LD=ld
 test -z "$LN_S" && LN_S="ln -s"
@@ -934,10 +819,10 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
     ;;
   *)
-    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
     ;;
   esac
   old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
@@ -985,6 +870,9 @@ AC_DEFUN([_LT_AC_SYS_COMPILER],
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
 
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
 # Allow CC to be a program name with arguments.
 compiler=$CC
 ])# _LT_AC_SYS_COMPILER
@@ -1013,7 +901,7 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 AC_DEFUN([_LT_COMPILER_BOILERPLATE],
 [ac_outfile=conftest.$ac_objext
 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 ])# _LT_COMPILER_BOILERPLATE
@@ -1026,7 +914,7 @@ $rm conftest*
 AC_DEFUN([_LT_LINKER_BOILERPLATE],
 [ac_outfile=conftest.$ac_objext
 printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
 $rm conftest*
 ])# _LT_LINKER_BOILERPLATE
@@ -1111,8 +999,8 @@ if test "X${echo_test_string+set}" != Xset; then
 # find a string as large as possible, as long as the shell can cope with it
   for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
     # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
-       echo_test_string="`eval $cmd`" &&
+    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+       echo_test_string=`eval $cmd` &&
        (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
     then
       break
@@ -1281,7 +1169,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
   # Find out which ABI we are using.
   echo 'int i;' > conftest.$ac_ext
   if AC_TRY_EVAL(ac_compile); then
-    case "`/usr/bin/file conftest.o`" in
+    case `/usr/bin/file conftest.o` in
     *32-bit*)
       case $host in
         x86_64-*linux*)
@@ -1332,6 +1220,22 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if AC_TRY_EVAL(ac_compile); then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)    LD="${LD-ld} -64" ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
 AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
 [*-*-cygwin* | *-*-mingw* | *-*-pw32*)
   AC_CHECK_TOOL(DLLTOOL, dlltool, false)
@@ -1363,7 +1267,7 @@ AC_CACHE_CHECK([$1], [$2],
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    # The option is referenced via a variable to avoid confusing sed.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
@@ -1374,9 +1278,9 @@ AC_CACHE_CHECK([$1], [$2],
    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.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-     $SED '/^$/d' conftest.err >conftest.er2
-     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        $2=yes
      fi
    fi
@@ -1402,13 +1306,13 @@ AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
    LDFLAGS="$LDFLAGS $3"
    printf "$lt_simple_link_test_code" > conftest.$ac_ext
    if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The compiler can only warn and ignore the option if not recognized
+     # The linker can only warn and ignore the option if not recognized
      # So say no if there are warnings
      if test -s conftest.err; then
        # Append any errors to the config.log.
        cat conftest.err 1>&AS_MESSAGE_LOG_FD
-       $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
-       $SED '/^$/d' conftest.err >conftest.er2
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
        if diff conftest.exp conftest.er2 >/dev/null; then
          $2=yes
        fi
@@ -1477,25 +1381,42 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     elif test -x /usr/sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
     else
-      lt_cv_sys_max_cmd_len=65536 # usable default for *BSD
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
     fi
     # And add a safety zone
     lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
     lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
     # nice to cause kernel panics so lets avoid the loop below.
     # First set a reasonable default.
     lt_cv_sys_max_cmd_len=16384
-    # 
+    #
     if test -x /sbin/sysconfig; then
       case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
         *1*) lt_cv_sys_max_cmd_len=-1 ;;
       esac
     fi
     ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ 	]]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
   *)
     # If test is not a shell built-in, we'll probably end up computing a
     # maximum length that is only half of the actual maximum length, but
@@ -1527,7 +1448,7 @@ fi
 
 
 # _LT_AC_CHECK_DLFCN
-# --------------------
+# ------------------
 AC_DEFUN([_LT_AC_CHECK_DLFCN],
 [AC_CHECK_HEADERS(dlfcn.h)dnl
 ])# _LT_AC_CHECK_DLFCN
@@ -1535,7 +1456,7 @@ AC_DEFUN([_LT_AC_CHECK_DLFCN],
 
 # _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
 #                           ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
-# ------------------------------------------------------------------
+# ---------------------------------------------------------------------
 AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
 [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
 if test "$cross_compiling" = yes; then :
@@ -1601,17 +1522,19 @@ int main ()
       else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
       /* dlclose (self); */
     }
+  else
+    puts (dlerror ());
 
     exit (status);
 }]
 EOF
   if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) 2>/dev/null
+    (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null
     lt_status=$?
     case x$lt_status in
       x$lt_dlno_uscore) $1 ;;
       x$lt_dlneed_uscore) $2 ;;
-      x$lt_unknown|x*) $3 ;;
+      x$lt_dlunknown|x*) $3 ;;
     esac
   else :
     # compilation failed
@@ -1623,7 +1546,7 @@ rm -fr conftest*
 
 
 # AC_LIBTOOL_DLOPEN_SELF
-# -------------------
+# ----------------------
 AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
 [AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl
 if test "x$enable_dlopen" != xyes; then
@@ -1694,7 +1617,7 @@ else
     test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
     save_LDFLAGS="$LDFLAGS"
-    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
     save_LIBS="$LIBS"
     LIBS="$lt_cv_dlopen_libs $LIBS"
@@ -1707,7 +1630,7 @@ else
     ])
 
     if test "x$lt_cv_dlopen_self" = xyes; then
-      LDFLAGS="$LDFLAGS $link_static_flag"
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
       AC_CACHE_CHECK([whether a statically linked program can dlopen itself],
     	  lt_cv_dlopen_self_static, [dnl
 	  _LT_AC_TRY_DLOPEN_SELF(
@@ -1755,7 +1678,7 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
    # Note that $ac_compile itself does not contain backslashes and begins
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
@@ -1767,13 +1690,13 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
    then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-     $SED '/^$/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
      fi
    fi
-   chmod u+w .
+   chmod u+w . 2>&AS_MESSAGE_LOG_FD
    $rm conftest*
    # SGI C++ compiler will create directory out/ii_files/ for
    # template instantiation
@@ -2033,7 +1956,8 @@ cygwin* | mingw* | pw32*)
       dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
     postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
       dlpath=$dir/\$dldll~
        $rm \$dlpath'
@@ -2086,7 +2010,7 @@ darwin* | rhapsody*)
   soname_spec='${libname}${release}${major}$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
   # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
   if test "$GCC" = yes; then
     sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
@@ -2124,7 +2048,14 @@ kfreebsd*-gnu)
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
-  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[[123]]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
@@ -2146,10 +2077,15 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
-  *) # from 3.2 on
+  freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \
+  freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
   esac
   ;;
 
@@ -2169,7 +2105,7 @@ hpux9* | hpux10* | hpux11*)
   version_type=sunos
   need_lib_prefix=no
   need_version=no
-  case "$host_cpu" in
+  case $host_cpu in
   ia64*)
     shrext_cmds='.so'
     hardcode_into_libs=yes
@@ -2209,6 +2145,18 @@ hpux9* | hpux10* | hpux11*)
   postinstall_cmds='chmod 555 $lib'
   ;;
 
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
 irix5* | irix6* | nonstopux*)
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
@@ -2330,6 +2278,7 @@ nto-qnx*)
 
 openbsd*)
   version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
   need_lib_prefix=no
   # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
   case $host_os in
@@ -2373,13 +2322,6 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -2405,7 +2347,7 @@ sunos4*)
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -2438,6 +2380,29 @@ sysv4*MP*)
   fi
   ;;
 
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
 uts4*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -2451,6 +2416,11 @@ uts4*)
 esac
 AC_MSG_RESULT([$dynamic_linker])
 test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
 ])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
 
 
@@ -2475,6 +2445,9 @@ if test -f "$ltmain" && test -n "$tagnames"; then
       AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
     fi
   fi
+  if test -z "$LTCFLAGS"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+  fi
 
   # Extract list of available tagged configurations in $ofile.
   # Note that this assumes the entire list is on one line.
@@ -2565,7 +2538,7 @@ AC_DEFUN([AC_LIBTOOL_DLOPEN],
 
 # AC_LIBTOOL_WIN32_DLL
 # --------------------
-# declare package support for building win32 dll's
+# declare package support for building win32 DLLs
 AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
 [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
 ])# AC_LIBTOOL_WIN32_DLL
@@ -2603,7 +2576,7 @@ AC_ARG_ENABLE([shared],
 
 # AC_DISABLE_SHARED
 # -----------------
-#- set the default shared flag to --disable-shared
+# set the default shared flag to --disable-shared
 AC_DEFUN([AC_DISABLE_SHARED],
 [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
 AC_ENABLE_SHARED(no)
@@ -2739,7 +2712,7 @@ dnl not every word.  This closes a longstanding sh security hole.
       if test -n "$file_magic_test_file"; then
 	case $deplibs_check_method in
 	"file_magic "*)
-	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
 	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
 	    $EGREP "$file_magic_regex" > /dev/null; then
@@ -2849,7 +2822,7 @@ AC_CACHE_VAL(lt_cv_path_LD,
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
       lt_cv_path_LD="$ac_dir/$ac_prog"
       # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some GNU ld's only accept -v.
+      # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
@@ -2881,7 +2854,7 @@ AC_PROG_LD_GNU
 AC_DEFUN([AC_PROG_LD_GNU],
 [AC_REQUIRE([AC_PROG_EGREP])dnl
 AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
 case `$LD -v 2>&1 </dev/null` in
 *GNU* | *'with BFD'*)
   lt_cv_prog_gnu_ld=yes
@@ -2911,7 +2884,7 @@ reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
   darwin*)
     if test "$GCC" = yes; then
-      reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
     else
       reload_cmds='$LD$reload_flag -o $output$reload_objs'
     fi
@@ -2995,7 +2968,7 @@ gnu*)
 
 hpux10.20* | hpux11*)
   lt_cv_file_magic_cmd=/usr/bin/file
-  case "$host_cpu" in
+  case $host_cpu in
   ia64*)
     lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64'
     lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
@@ -3011,6 +2984,11 @@ hpux10.20* | hpux11*)
   esac
   ;;
 
+interix3*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
+  ;;
+
 irix5* | irix6* | nonstopux*)
   case $LD in
   *-32|*"-32 ") libmagic=32-bit;;
@@ -3056,15 +3034,11 @@ osf3* | osf4* | osf5*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sco3.2v5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   case $host_vendor in
   motorola)
     lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]'
@@ -3085,10 +3059,13 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
   siemens)
     lt_cv_deplibs_check_method=pass_all
     ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
   esac
   ;;
 
-sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7* | sysv4*uw2*)
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 esac
@@ -3108,36 +3085,43 @@ AC_DEFUN([AC_PROG_NM],
   # Let the user override the test.
   lt_cv_path_NM="$NM"
 else
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
-    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-      # Check to see if the nm accepts a BSD-compat flag.
-      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-      #   nm: unknown option "B" ignored
-      # Tru64's nm complains that /dev/null is an invalid object file
-      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-      */dev/null* | *'Invalid file or object type'*)
-	lt_cv_path_NM="$tmp_nm -B"
-	break
-        ;;
-      *)
-	case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	*/dev/null*)
-	  lt_cv_path_NM="$tmp_nm -p"
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then 
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
 	  break
 	  ;;
 	*)
-	  lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	  continue # so that we can try to find one that supports BSD flags
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
 	  ;;
 	esac
-      esac
-    fi
+      fi
+    done
+    IFS="$lt_save_ifs"
   done
-  IFS="$lt_save_ifs"
   test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
 fi])
 NM="$lt_cv_path_NM"
@@ -3169,13 +3153,13 @@ esac
 # -----------------------------------
 # sets LIBLTDL to the link flags for the libltdl convenience library and
 # LTDLINCL to the include flags for the libltdl header and adds
-# --enable-ltdl-convenience to the configure arguments.  Note that LIBLTDL
-# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
-# DIRECTORY is not provided, it is assumed to be `libltdl'.  LIBLTDL will
-# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed with
-# '${top_srcdir}/' (note the single quotes!).  If your package is not
-# flat and you're not using automake, define top_builddir and
-# top_srcdir appropriately in the Makefiles.
+# --enable-ltdl-convenience to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
+# it is assumed to be `libltdl'.  LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!).  If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
 AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
 [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
   case $enable_ltdl_convenience in
@@ -3194,13 +3178,13 @@ AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
 # -----------------------------------
 # sets LIBLTDL to the link flags for the libltdl installable library and
 # LTDLINCL to the include flags for the libltdl header and adds
-# --enable-ltdl-install to the configure arguments.  Note that LIBLTDL
-# and LTDLINCL are not AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called.  If
-# DIRECTORY is not provided and an installed libltdl is not found, it is
-# assumed to be `libltdl'.  LIBLTDL will be prefixed with '${top_builddir}/'
-# and LTDLINCL will be prefixed with '${top_srcdir}/' (note the single
-# quotes!).  If your package is not flat and you're not using automake,
-# define top_builddir and top_srcdir appropriately in the Makefiles.
+# --enable-ltdl-install to the configure arguments.  Note that
+# AC_CONFIG_SUBDIRS is not called here.  If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!).  If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
 # In the future, this macro may have to be called after AC_PROG_LIBTOOL.
 AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
 [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
@@ -3243,7 +3227,7 @@ _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
 ])# _LT_AC_LANG_CXX
 
 # _LT_AC_PROG_CXXCPP
-# ---------------
+# ------------------
 AC_DEFUN([_LT_AC_PROG_CXXCPP],
 [
 AC_REQUIRE([AC_PROG_CXX])
@@ -3292,7 +3276,7 @@ _LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
 
 
 # AC_LIBTOOL_RC
-# --------------
+# -------------
 # enable support for Windows resource files
 AC_DEFUN([AC_LIBTOOL_RC],
 [AC_REQUIRE([LT_AC_PROG_RC])
@@ -3329,37 +3313,6 @@ _LT_AC_SYS_COMPILER
 _LT_COMPILER_BOILERPLATE
 _LT_LINKER_BOILERPLATE
 
-#
-# Check for any special shared library compilation flags.
-#
-_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)=
-if test "$GCC" = no; then
-  case $host_os in
-  sco3.2v5*)
-    _LT_AC_TAGVAR(lt_prog_cc_shlib, $1)='-belf'
-    ;;
-  esac
-fi
-if test -n "$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)"; then
-  AC_MSG_WARN([`$CC' requires `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to build shared libraries])
-  if echo "$old_CC $old_CFLAGS " | grep "[[ 	]]$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)[[ 	]]" >/dev/null; then :
-  else
-    AC_MSG_WARN([add `$_LT_AC_TAGVAR(lt_prog_cc_shlib, $1)' to the CC or CFLAGS env variable and reconfigure])
-    _LT_AC_TAGVAR(lt_cv_prog_cc_can_build_shared, $1)=no
-  fi
-fi
-
-
-#
-# Check to make sure the static flag actually works.
-#
-AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $_LT_AC_TAGVAR(lt_prog_compiler_static, $1) works],
-  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
-  $_LT_AC_TAGVAR(lt_prog_compiler_static, $1),
-  [],
-  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
-
-
 AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
 AC_LIBTOOL_PROG_COMPILER_PIC($1)
 AC_LIBTOOL_PROG_CC_C_O($1)
@@ -3368,9 +3321,9 @@ AC_LIBTOOL_PROG_LD_SHLIBS($1)
 AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
 AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
 AC_LIBTOOL_SYS_LIB_STRIP
-AC_LIBTOOL_DLOPEN_SELF($1)
+AC_LIBTOOL_DLOPEN_SELF
 
-# Report which librarie types wil actually be built
+# Report which library types will actually be built
 AC_MSG_CHECKING([if libtool supports shared libraries])
 AC_MSG_RESULT([$can_build_shared])
 
@@ -3379,7 +3332,7 @@ test "$can_build_shared" = "no" && enable_shared=no
 
 # On AIX, shared libraries and static libraries use the same namespace, and
 # are all built from PIC.
-case "$host_os" in
+case $host_os in
 aix3*)
   test "$enable_shared" = yes && enable_static=no
   if test -n "$RANLIB"; then
@@ -3429,6 +3382,7 @@ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
 _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
 _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
 _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
 _LT_AC_TAGVAR(hardcode_automatic, $1)=no
 _LT_AC_TAGVAR(module_cmds, $1)=
 _LT_AC_TAGVAR(module_expsym_cmds, $1)=
@@ -3446,7 +3400,7 @@ _LT_AC_TAGVAR(postdeps, $1)=
 _LT_AC_TAGVAR(compiler_lib_search_path, $1)=
 
 # Source file extension for C++ test sources.
-ac_ext=cc
+ac_ext=cpp
 
 # Object file extension for compiled C++ test sources.
 objext=o
@@ -3456,7 +3410,7 @@ _LT_AC_TAGVAR(objext, $1)=$objext
 lt_simple_compile_test_code="int some_variable = 0;\n"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 _LT_AC_SYS_COMPILER
@@ -3475,12 +3429,12 @@ lt_save_path_LD=$lt_cv_path_LD
 if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
   lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
 else
-  unset lt_cv_prog_gnu_ld
+  $as_unset lt_cv_prog_gnu_ld
 fi
 if test -n "${lt_cv_path_LDCXX+set}"; then
   lt_cv_path_LD=$lt_cv_path_LDCXX
 else
-  unset lt_cv_path_LD
+  $as_unset lt_cv_path_LD
 fi
 test -z "${LDCXX+set}" || LD=$LDCXX
 CC=${CXX-"c++"}
@@ -3575,6 +3529,7 @@ case $host_os in
 	    ;;
 	  esac
 	done
+	;;
       esac
 
       exp_sym_flag='-bexport'
@@ -3612,6 +3567,7 @@ case $host_os in
 	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
 	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
 	fi
+	;;
       esac
       shared_flag='-shared'
       if test "$aix_use_runtimelinking" = yes; then
@@ -3643,12 +3599,12 @@ case $host_os in
       _LT_AC_SYS_LIBPATH_AIX
       _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
 
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
      else
       if test "$host_cpu" = ia64; then
 	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
 	_LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
       else
 	# Determine the default libpath from the value encoded in an empty executable.
 	_LT_AC_SYS_LIBPATH_AIX
@@ -3657,16 +3613,26 @@ case $host_os in
 	# -berok will link without error, but may produce a broken library.
 	_LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
 	_LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	# -bexpall does not export symbols beginning with underscore (_)
-	_LT_AC_TAGVAR(always_export_symbols, $1)=yes
 	# Exported symbols can be pulled into shared objects from archives
-	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
 	_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-	# This is similar to how AIX traditionally builds it's shared libraries.
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	# This is similar to how AIX traditionally builds its shared libraries.
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
       fi
     fi
     ;;
+
+  beos*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      _LT_AC_TAGVAR(ld_shlibs, $1)=no
+    fi
+    ;;
+
   chorus*)
     case $cc_basename in
       *)
@@ -3676,7 +3642,6 @@ case $host_os in
     esac
     ;;
 
-
   cygwin* | mingw* | pw32*)
     # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
     # as there is no search path for DLLs.
@@ -3686,7 +3651,7 @@ case $host_os in
     _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
 
     if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       # If the export-symbols file already is a .def file (1st line
       # is EXPORTS), use it as is; otherwise, prepend...
       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
@@ -3695,13 +3660,13 @@ case $host_os in
 	echo EXPORTS > $output_objdir/$soname.def;
 	cat $export_symbols >> $output_objdir/$soname.def;
       fi~
-      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
     else
       _LT_AC_TAGVAR(ld_shlibs, $1)=no
     fi
   ;;
       darwin* | rhapsody*)
-        case "$host_os" in
+        case $host_os in
         rhapsody* | darwin1.[[012]])
          _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
          ;;
@@ -3739,7 +3704,7 @@ case $host_os in
           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
         fi
         _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
           if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
             _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           else
@@ -3752,7 +3717,7 @@ case $host_os in
          output_verbose_link_cmd='echo'
           _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
           _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
           _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
@@ -3832,33 +3797,22 @@ case $host_os in
     ;;
   hpux10*|hpux11*)
     if test $with_gnu_ld = no; then
-      case "$host_cpu" in
-      hppa*64*)
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+      case $host_cpu in
+      hppa*64*|ia64*)
 	_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-        ;;
-      ia64*)
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
         ;;
       *)
-	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
 	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
         ;;
       esac
     fi
-    case "$host_cpu" in
-    hppa*64*)
-      _LT_AC_TAGVAR(hardcode_direct, $1)=no
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      ;;
-    ia64*)
+    case $host_cpu in
+    hppa*64*|ia64*)
       _LT_AC_TAGVAR(hardcode_direct, $1)=no
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH,
-					      # but as the default
-					      # location of the library.
       ;;
     *)
       _LT_AC_TAGVAR(hardcode_direct, $1)=yes
@@ -3874,9 +3828,12 @@ case $host_os in
 	_LT_AC_TAGVAR(ld_shlibs, $1)=no
 	;;
       aCC*)
-	case "$host_cpu" in
-	hppa*64*|ia64*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	case $host_cpu in
+	hppa*64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	  ;;
 	*)
 	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
@@ -3895,9 +3852,12 @@ case $host_os in
       *)
 	if test "$GXX" = yes; then
 	  if test $with_gnu_ld = no; then
-	    case "$host_cpu" in
-	    ia64*|hppa*64*)
-	      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	    case $host_cpu in
+	    hppa*64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    ia64*)
+	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	      ;;
 	    *)
 	      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
@@ -3911,9 +3871,23 @@ case $host_os in
 	;;
     esac
     ;;
-  irix5* | irix6*)
-    case $cc_basename in
-      CC*)
+  interix3*)
+    _LT_AC_TAGVAR(hardcode_direct, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+    # Instead, shared libraries are loaded at an image base (0x10000000 by
+    # default) and relocated if they conflict, which is a slow very memory
+    # consuming and fragmenting process.  To avoid this, we pick a random,
+    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    ;;
+  irix5* | irix6*)
+    case $cc_basename in
+      CC*)
 	# SGI C++
 	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
 
@@ -3996,7 +3970,7 @@ case $host_os in
 
 	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
 	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
-	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
         ;;
       cxx*)
 	# Compaq C++
@@ -4193,19 +4167,6 @@ case $host_os in
     # FIXME: insert proper C++ library support
     _LT_AC_TAGVAR(ld_shlibs, $1)=no
     ;;
-  sco*)
-    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
-    case $cc_basename in
-      CC*)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	_LT_AC_TAGVAR(ld_shlibs, $1)=no
-	;;
-    esac
-    ;;
   sunos4*)
     case $cc_basename in
       CC*)
@@ -4228,10 +4189,11 @@ case $host_os in
     case $cc_basename in
       CC*)
 	# Sun C++ 4.2, 5.x and Centerline C++
+        _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
 	_LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+	$CC -G${allow_undefined_flag}  ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
 
 	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
 	_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -4251,15 +4213,7 @@ case $host_os in
 	esac
 	_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
 
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[[LR]]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	output_verbose_link_cmd='echo'
 
 	# Archives containing C++ object files must be created using
 	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
@@ -4305,8 +4259,59 @@ case $host_os in
 	;;
     esac
     ;;
-  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[[78]]* | unixware7*)
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+    _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  sysv5* | sco3.2v5* | sco5v6*)
+    # Note: We can NOT use -z defs as we might desire, because we do not
+    # link with -lc, and that would cause any symbols used from libc to
+    # always be unresolved, which means just about no library would
+    # ever link correctly.  If we're not using GNU ld we use -z text
+    # though, which does catch some bad symbols but isn't as heavy-handed
+    # as -z defs.
+    # For security reasons, it is highly recommended that you always
+    # use absolute paths for naming shared libraries, and exclude the
+    # DT_RUNPATH tag from executables and libraries.  But doing so
+    # requires that you compile everything twice, which is a pain.
+    # So that behaviour is only enabled if SCOABSPATH is set to a
+    # non-empty value in the environment.  Most likely only useful for
+    # creating official distributions of packages.
+    # This is a hack until libtool officially supports absolute path
+    # names for shared libraries.
+    _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+    _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
     _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+    _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+    _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+    _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+    _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
     ;;
   tandem*)
     case $cc_basename in
@@ -4343,8 +4348,6 @@ AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
 AC_LIBTOOL_PROG_LD_SHLIBS($1)
 AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
 AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-AC_LIBTOOL_SYS_LIB_STRIP
-AC_LIBTOOL_DLOPEN_SELF($1)
 
 AC_LIBTOOL_CONFIG($1)
 
@@ -4362,7 +4365,7 @@ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
 ])# AC_LIBTOOL_LANG_CXX_CONFIG
 
 # AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME])
-# ------------------------
+# ------------------------------------
 # Figure out "hidden" library dependencies from verbose
 # compiler output when linking a shared library.
 # Parse the compiler output and extract the necessary
@@ -4416,7 +4419,7 @@ if AC_TRY_EVAL(ac_compile); then
   # The `*' in the case matches for architectures that use `case' in
   # $output_verbose_cmd can trigger glob expansion during the loop
   # eval without this substitution.
-  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
 
   for p in `eval $output_verbose_link_cmd`; do
     case $p in
@@ -4492,13 +4495,37 @@ fi
 
 $rm -f confest.$objext
 
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+interix3*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  _LT_AC_TAGVAR(predep_objects,$1)=
+  _LT_AC_TAGVAR(postdep_objects,$1)=
+  _LT_AC_TAGVAR(postdeps,$1)=
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+    ;;
+  esac
+  ;;
+esac
+])
+
 case " $_LT_AC_TAGVAR(postdeps, $1) " in
 *" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
 esac
 ])# AC_LIBTOOL_POSTDEP_PREDEP
 
 # AC_LIBTOOL_LANG_F77_CONFIG
-# ------------------------
+# --------------------------
 # Ensure that the configuration vars for the C compiler are
 # suitably defined.  Those variables are subsequently used by
 # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
@@ -4561,7 +4588,7 @@ test "$can_build_shared" = "no" && enable_shared=no
 
 # On AIX, shared libraries and static libraries use the same namespace, and
 # are all built from PIC.
-case "$host_os" in
+case $host_os in
 aix3*)
   test "$enable_shared" = yes && enable_static=no
   if test -n "$RANLIB"; then
@@ -4582,8 +4609,6 @@ AC_MSG_CHECKING([whether to build static libraries])
 test "$enable_shared" = yes || enable_static=yes
 AC_MSG_RESULT([$enable_static])
 
-test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
-
 _LT_AC_TAGVAR(GCC, $1)="$G77"
 _LT_AC_TAGVAR(LD, $1)="$LD"
 
@@ -4593,8 +4618,6 @@ AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
 AC_LIBTOOL_PROG_LD_SHLIBS($1)
 AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
 AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-AC_LIBTOOL_SYS_LIB_STRIP
-
 
 AC_LIBTOOL_CONFIG($1)
 
@@ -4651,8 +4674,6 @@ AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
 AC_LIBTOOL_PROG_LD_SHLIBS($1)
 AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
 AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
-AC_LIBTOOL_SYS_LIB_STRIP
-AC_LIBTOOL_DLOPEN_SELF($1)
 
 AC_LIBTOOL_CONFIG($1)
 
@@ -4662,7 +4683,7 @@ CC="$lt_save_CC"
 
 
 # AC_LIBTOOL_LANG_RC_CONFIG
-# --------------------------
+# -------------------------
 # Ensure that the configuration vars for the Windows resource compiler are
 # suitably defined.  Those variables are subsequently used by
 # AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
@@ -4725,7 +4746,7 @@ if test -f "$ltmain"; then
   # Now quote all the things that may contain metacharacters while being
   # careful not to overquote the AC_SUBSTed values.  We take copies of the
   # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
     SED SHELL STRIP \
     libname_spec library_names_spec soname_spec extract_expsyms_cmds \
     old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -4894,6 +4915,9 @@ AR_FLAGS=$lt_AR_FLAGS
 # A C compiler.
 LTCC=$lt_LTCC
 
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
 # A language-specific compiler.
 CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
 
@@ -5267,9 +5291,18 @@ irix* | nonstopux*)
 osf*)
   symcode='[[BCDEGQRST]]'
   ;;
-solaris* | sysv5*)
+solaris*)
   symcode='[[BDRT]]'
   ;;
+sco3.2v5*)
+  symcode='[[DT]]'
+  ;;
+sysv4.2uw2*)
+  symcode='[[DT]]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[[ABDT]]'
+  ;;
 sysv4)
   symcode='[[DFNSTU]]'
   ;;
@@ -5452,6 +5485,10 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       # DJGPP does not support shared libraries at all
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
       ;;
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
     sysv4*MP*)
       if test -d /usr/nec; then
 	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
@@ -5460,7 +5497,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
     hpux*)
       # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
       # not for PA HP-UX.
-      case "$host_cpu" in
+      case $host_cpu in
       hppa*64*|ia64*)
 	;;
       *)
@@ -5521,15 +5558,15 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
 	case $cc_basename in
 	  CC*)
 	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
 	    if test "$host_cpu" != ia64; then
 	      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
 	    fi
 	    ;;
 	  aCC*)
 	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-	    case "$host_cpu" in
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+	    case $host_cpu in
 	    hppa*64*|ia64*)
 	      # +Z the default
 	      ;;
@@ -5542,6 +5579,10 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
 	    ;;
 	esac
 	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
       irix5* | irix6* | nonstopux*)
 	case $cc_basename in
 	  CC*)
@@ -5570,7 +5611,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
 	    # Portland Group C++ compiler.
 	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
 	    ;;
 	  cxx*)
 	    # Compaq C++
@@ -5621,15 +5662,6 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
 	;;
       psos*)
 	;;
-      sco*)
-	case $cc_basename in
-	  CC*)
-	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
       solaris*)
 	case $cc_basename in
 	  CC*)
@@ -5671,7 +5703,14 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
 	    ;;
 	esac
 	;;
-      unixware*)
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+	    _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+	    _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+	    ;;
+	esac
 	;;
       vxworks*)
 	;;
@@ -5718,6 +5757,11 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
       ;;
 
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
     msdosdjgpp*)
       # Just because we use GCC doesn't mean we suddenly get shared libraries
       # on systems that don't support them.
@@ -5734,7 +5778,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
     hpux*)
       # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
       # not for PA HP-UX.
-      case "$host_cpu" in
+      case $host_cpu in
       hppa*64*|ia64*)
 	# +Z the default
 	;;
@@ -5781,7 +5825,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
       # not for PA HP-UX.
-      case "$host_cpu" in
+      case $host_cpu in
       hppa*64*|ia64*)
 	# +Z the default
 	;;
@@ -5811,12 +5855,12 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
 	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
 	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
         ;;
-      pgcc* | pgf77* | pgf90*)
+      pgcc* | pgf77* | pgf90* | pgf95*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
 	_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
 	_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
-	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+	_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
         ;;
       ccc*)
         _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
@@ -5832,11 +5876,6 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    sco3.2v5*)
-      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kpic'
-      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-dn'
-      ;;
-
     solaris*)
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -5854,7 +5893,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
       ;;
 
-    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+    sysv4 | sysv4.2uw2* | sysv4.3*)
       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
       _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -5867,6 +5906,12 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
       fi
       ;;
 
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+      _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+      _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+      ;;
+
     unicos*)
       _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
       _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
@@ -5899,7 +5944,7 @@ if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
     [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
      _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
 fi
-case "$host_os" in
+case $host_os in
   # For platforms which do not support PIC, -DPIC is meaningless:
   *djgpp*)
     _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
@@ -5908,6 +5953,16 @@ case "$host_os" in
     _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
     ;;
 esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+  _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+  $lt_tmp_static_flag,
+  [],
+  [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
 ])
 
 
@@ -5986,6 +6041,10 @@ ifelse([$1],[CXX],[
       with_gnu_ld=no
     fi
     ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
   openbsd*)
     with_gnu_ld=no
     ;;
@@ -5995,7 +6054,7 @@ ifelse([$1],[CXX],[
   if test "$with_gnu_ld" = yes; then
     # If archive_cmds runs LD, not CC, wlarc should be empty
     wlarc='${wl}'
-    
+
     # Set some defaults for GNU ld with shared library support. These
     # are reset later if shared libraries are not supported. Putting them
     # here allows them to be overridden if necessary.
@@ -6016,7 +6075,7 @@ ifelse([$1],[CXX],[
       *\ 2.11.*) ;; # other 2.11 versions
       *) supports_anon_versioning=yes ;;
     esac
-    
+
     # See if GNU ld supports shared libraries.
     case $host_os in
     aix3* | aix4* | aix5*)
@@ -6070,7 +6129,7 @@ EOF
       _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
 
       if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+        _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
 	# If the export-symbols file already is a .def file (1st line
 	# is EXPORTS), use it as is; otherwise, prepend...
 	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
@@ -6079,22 +6138,37 @@ EOF
 	  echo EXPORTS > $output_objdir/$soname.def;
 	  cat $export_symbols >> $output_objdir/$soname.def;
 	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
 	_LT_AC_TAGVAR(ld_shlibs, $1)=no
       fi
       ;;
 
+    interix3*)
+      _LT_AC_TAGVAR(hardcode_direct, $1)=no
+      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
     linux*)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
 	tmp_addflag=
 	case $cc_basename,$host_cpu in
 	pgcc*)				# Portland Group C compiler
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
-	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
 	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
@@ -6126,7 +6200,7 @@ EOF
       fi
       ;;
 
-    solaris* | sysv5*)
+    solaris*)
       if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
 	_LT_AC_TAGVAR(ld_shlibs, $1)=no
 	cat <<EOF 1>&2
@@ -6147,6 +6221,33 @@ EOF
       fi
       ;;
 
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) 
+	_LT_AC_TAGVAR(ld_shlibs, $1)=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    _LT_AC_TAGVAR(ld_shlibs, $1)=no
+	  fi
+	;;
+      esac
+      ;;
+
     sunos4*)
       _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       wlarc=
@@ -6180,7 +6281,7 @@ EOF
       # Note: this linker hardcodes the directories in LIBPATH if there
       # are no directories specified by -L.
       _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
-      if test "$GCC" = yes && test -z "$link_static_flag"; then
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
 	# Neither direct hardcoding nor static linking is supported with a
 	# broken collect2.
 	_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
@@ -6214,6 +6315,7 @@ EOF
   	    break
   	  fi
 	  done
+	  ;;
 	esac
 
 	exp_sym_flag='-bexport'
@@ -6251,6 +6353,7 @@ EOF
   	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
   	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
 	  fi
+	  ;;
 	esac
 	shared_flag='-shared'
 	if test "$aix_use_runtimelinking" = yes; then
@@ -6263,11 +6366,11 @@ EOF
   	# chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
 	else
-  	if test "$aix_use_runtimelinking" = yes; then
+	  if test "$aix_use_runtimelinking" = yes; then
 	    shared_flag='${wl}-G'
 	  else
 	    shared_flag='${wl}-bM:SRE'
-  	fi
+	  fi
 	fi
       fi
 
@@ -6281,12 +6384,12 @@ EOF
        # Determine the default libpath from the value encoded in an empty executable.
        _LT_AC_SYS_LIBPATH_AIX
        _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
-	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
        else
 	if test "$host_cpu" = ia64; then
 	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
 	  _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
-	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
 	else
 	 # Determine the default libpath from the value encoded in an empty executable.
 	 _LT_AC_SYS_LIBPATH_AIX
@@ -6295,13 +6398,11 @@ EOF
 	  # -berok will link without error, but may produce a broken library.
 	  _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
 	  _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
-	  # -bexpall does not export symbols beginning with underscore (_)
-	  _LT_AC_TAGVAR(always_export_symbols, $1)=yes
 	  # Exported symbols can be pulled into shared objects from archives
-	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=' '
+	  _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
 	  _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
-	  # This is similar to how AIX traditionally builds it's shared libraries.
-	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
 	fi
       fi
       ;;
@@ -6340,7 +6441,7 @@ EOF
       ;;
 
     darwin* | rhapsody*)
-      case "$host_os" in
+      case $host_os in
         rhapsody* | darwin1.[[012]])
          _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
          ;;
@@ -6369,7 +6470,7 @@ EOF
     	output_verbose_link_cmd='echo'
         _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
       _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
       _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
       _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
     else
@@ -6378,7 +6479,7 @@ EOF
          output_verbose_link_cmd='echo'
          _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
          _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
          _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
@@ -6442,47 +6543,62 @@ EOF
       _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
       ;;
 
-    hpux10* | hpux11*)
+    hpux10*)
       if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case "$host_cpu" in
-	hppa*64*|ia64*)
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	_LT_AC_TAGVAR(hardcode_direct, $1)=yes
+	_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	_LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
 	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
 	*)
 	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
-	case "$host_cpu" in
-	hppa*64*|ia64*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	case $host_cpu in
+	hppa*64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       fi
       if test "$with_gnu_ld" = no; then
-	case "$host_cpu" in
-	hppa*64*)
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+	_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
 	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
-	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
-	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
-	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-	  ;;
-	ia64*)
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
 	  _LT_AC_TAGVAR(hardcode_direct, $1)=no
 	  _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
 	  ;;
 	*)
-	  _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
-	  _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
 	  _LT_AC_TAGVAR(hardcode_direct, $1)=yes
 	  _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
 
@@ -6584,14 +6700,6 @@ EOF
       _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
       ;;
 
-    sco3.2v5*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
-      runpath_var=LD_RUN_PATH
-      hardcode_runpath_var=yes
-      ;;
-
     solaris*)
       _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
       if test "$GCC" = yes; then
@@ -6677,36 +6785,45 @@ EOF
       fi
       ;;
 
-    sysv4.2uw2*)
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(hardcode_direct, $1)=yes
-      _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
-      hardcode_runpath_var=yes
-      runpath_var=LD_RUN_PATH
-      ;;
+      runpath_var='LD_RUN_PATH'
 
-   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[[78]]* | unixware7*)
-      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z ${wl}text'
       if test "$GCC" = yes; then
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
-      runpath_var='LD_RUN_PATH'
-      _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
       ;;
 
-    sysv5*)
-      _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
-      # $CC -shared without GNU ld will not create a library from C++
-      # object files and a static libstdc++, better avoid it by now
-      _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+      _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+      _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
       _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+      _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+      _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+      _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
       runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	_LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
       ;;
 
     uts4*)
@@ -6724,11 +6841,6 @@ EOF
 AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
 test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
 
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
 #
 # Do we need to explicitly link libc?
 #
@@ -6756,6 +6868,7 @@ x|xyes)
         libobjs=conftest.$ac_objext
         deplibs=
         wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+	pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
         compiler_flags=-v
         linker_flags=-v
         verstring=
@@ -6911,6 +7024,163 @@ SED=$lt_cv_path_SED
 AC_MSG_RESULT([$SED])
 ])
 
+# pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
+# 
+# Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+#
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# PKG_PROG_PKG_CONFIG([MIN-VERSION])
+# ----------------------------------
+AC_DEFUN([PKG_PROG_PKG_CONFIG],
+[m4_pattern_forbid([^_?PKG_[A-Z_]+$])
+m4_pattern_allow([^PKG_CONFIG(_PATH)?$])
+AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl
+if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
+	AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
+fi
+if test -n "$PKG_CONFIG"; then
+	_pkg_min_version=m4_default([$1], [0.9.0])
+	AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
+	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+		AC_MSG_RESULT([yes])
+	else
+		AC_MSG_RESULT([no])
+		PKG_CONFIG=""
+	fi
+		
+fi[]dnl
+])# PKG_PROG_PKG_CONFIG
+
+# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+#
+# Check to see whether a particular set of modules exists.  Similar
+# to PKG_CHECK_MODULES(), but does not set variables or print errors.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure to call
+# PKG_CHECK_EXISTS manually
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_EXISTS],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+if test -n "$PKG_CONFIG" && \
+    AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
+  m4_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+  $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+    if test -n "$$1"; then
+        pkg_cv_[]$1="$$1"
+    else
+        PKG_CHECK_EXISTS([$3],
+                         [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+			 [pkg_failed=yes])
+    fi
+else
+	pkg_failed=untried
+fi[]dnl
+])# _PKG_CONFIG
+
+# _PKG_SHORT_ERRORS_SUPPORTED
+# -----------------------------
+AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi[]dnl
+])# _PKG_SHORT_ERRORS_SUPPORTED
+
+
+# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
+# [ACTION-IF-NOT-FOUND])
+#
+#
+# Note that if there is a possibility the first call to
+# PKG_CHECK_MODULES might not happen, you should be sure to include an
+# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac
+#
+#
+# --------------------------------------------------------------
+AC_DEFUN([PKG_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl
+AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl
+AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl
+
+pkg_failed=no
+AC_MSG_CHECKING([for $1])
+
+_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
+_PKG_CONFIG([$1][_LIBS], [libs], [$2])
+
+m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS
+and $1[]_LIBS to avoid the need to call pkg-config.
+See the pkg-config man page for more details.])
+
+if test $pkg_failed = yes; then
+        _PKG_SHORT_ERRORS_SUPPORTED
+        if test $_pkg_short_errors_supported = yes; then
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+        else 
+	        $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+	ifelse([$4], , [AC_MSG_ERROR(dnl
+[Package requirements ($2) were not met:
+
+$$1_PKG_ERRORS
+
+Consider adjusting the PKG_CONFIG_PATH environment variable if you
+installed software in a non-standard prefix.
+
+_PKG_TEXT
+])],
+		[$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
+is in your PATH or set the PKG_CONFIG environment variable to the full
+path to pkg-config.
+
+_PKG_TEXT
+
+To get pkg-config, see <http://www.freedesktop.org/software/pkgconfig>.])],
+		[$4])
+else
+	$1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+	$1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+        AC_MSG_RESULT([yes])
+	ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
 # Copyright (C) 2002, 2003, 2005  Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
@@ -7791,6 +8061,7 @@ AC_SUBST([am__untar])
 
 m4_include([m4/evolution-plugin.m4])
 m4_include([m4/gnome.m4])
+m4_include([m4/idl.m4])
 m4_include([m4/intltool.m4])
 m4_include([m4/openssl.m4])
 m4_include([m4/reentrant-resolver.m4])
diff --git a/aml/Makefile.am b/aml/Makefile.am
@@ -0,0 +1,2 @@
+EXTRA_DIST = Makefile.aml aml.c aml.make
+MAINTAINERCLEANFILES = aml
diff --git a/aml/Makefile.aml b/aml/Makefile.aml
@@ -0,0 +1,9 @@
+# -*- mode: makefile -*-
+#
+# Since aml is needed to generate Makefile.am files, we need a plain
+# Makefile (this file) to build aml itself.
+
+WARN_CFLAGS = -Wall -Werror
+
+aml: aml.c
+	$(CC) $(CFLAGS) $(WARN_CFLAGS) `pkg-config --cflags --libs glib-2.0 libxml-2.0` -o aml aml.c
diff --git a/aml/Makefile.in b/aml/Makefile.in
@@ -0,0 +1,426 @@
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+target_triplet = @target@
+subdir = aml
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/reentrant-resolver.m4 \
+	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
+	$(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+	$(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AR = @AR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
+CATALOGS = @CATALOGS@
+CATOBJEXT = @CATOBJEXT@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DATADIRNAME = @DATADIRNAME@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EVOLUTION_PLUGIN_CFLAGS = @EVOLUTION_PLUGIN_CFLAGS@
+EVOLUTION_PLUGIN_LIBS = @EVOLUTION_PLUGIN_LIBS@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GCONFTOOL = @GCONFTOOL@
+GCONF_SCHEMAS_INSTALL_FALSE = @GCONF_SCHEMAS_INSTALL_FALSE@
+GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
+GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
+GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
+GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
+GMOFILES = @GMOFILES@
+GMSGFMT = @GMSGFMT@
+GNOME_CFLAGS = @GNOME_CFLAGS@
+GNOME_LIBS = @GNOME_LIBS@
+GOB2 = @GOB2@
+GTK_CFLAGS = @GTK_CFLAGS@
+GTK_LIBS = @GTK_LIBS@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INSTOBJEXT = @INSTOBJEXT@
+INTLLIBS = @INTLLIBS@
+INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@
+INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
+INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_ICONV = @INTLTOOL_ICONV@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@
+INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@
+INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
+INTLTOOL_PERL = @INTLTOOL_PERL@
+INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
+INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
+INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
+INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
+INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
+INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
+INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
+INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@
+INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
+INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
+INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+OBJEXT = @OBJEXT@
+OPENSSL_CFLAGS = @OPENSSL_CFLAGS@
+OPENSSL_LIBS = @OPENSSL_LIBS@
+ORBIT_IDL = @ORBIT_IDL@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POFILES = @POFILES@
+POSUB = @POSUB@
+PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
+PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
+RANLIB = @RANLIB@
+SASL_CFLAGS = @SASL_CFLAGS@
+SASL_LIBS = @SASL_LIBS@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+WARN_CFLAGS = @WARN_CFLAGS@
+WITH_EVOLUTION_FALSE = @WITH_EVOLUTION_FALSE@
+WITH_EVOLUTION_TRUE = @WITH_EVOLUTION_TRUE@
+WITH_GMAIL_FALSE = @WITH_GMAIL_FALSE@
+WITH_GMAIL_TRUE = @WITH_GMAIL_TRUE@
+WITH_IMAP_FALSE = @WITH_IMAP_FALSE@
+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_TRUE = @WITH_MBOX_TRUE@
+WITH_MH_FALSE = @WITH_MH_FALSE@
+WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
+WITH_POP3_FALSE = @WITH_POP3_FALSE@
+WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
+WITH_POP3_OR_IMAP_OR_GMAIL_FALSE = @WITH_POP3_OR_IMAP_OR_GMAIL_FALSE@
+WITH_POP3_OR_IMAP_OR_GMAIL_TRUE = @WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@
+WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
+WITH_POP3_TRUE = @WITH_POP3_TRUE@
+WITH_REGRESSION_TESTS_FALSE = @WITH_REGRESSION_TESTS_FALSE@
+WITH_REGRESSION_TESTS_TRUE = @WITH_REGRESSION_TESTS_TRUE@
+WITH_SASL_FALSE = @WITH_SASL_FALSE@
+WITH_SASL_TRUE = @WITH_SASL_TRUE@
+WITH_SSL_FALSE = @WITH_SSL_FALSE@
+WITH_SSL_TRUE = @WITH_SSL_TRUE@
+WITH_SYLPHEED_FALSE = @WITH_SYLPHEED_FALSE@
+WITH_SYLPHEED_TRUE = @WITH_SYLPHEED_TRUE@
+XGETTEXT = @XGETTEXT@
+ac_ct_AR = @ac_ct_AR@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+ac_prefix_program = @ac_prefix_program@
+ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+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@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target = @target@
+target_alias = @target_alias@
+target_cpu = @target_cpu@
+target_os = @target_os@
+target_vendor = @target_vendor@
+EXTRA_DIST = Makefile.aml aml.c aml.make
+MAINTAINERCLEANFILES = aml
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+	@for dep in $?; do \
+	  case '$(am__configure_deps)' in \
+	    *$$dep*) \
+	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+		&& exit 0; \
+	      exit 1;; \
+	  esac; \
+	done; \
+	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  aml/Makefile'; \
+	cd $(top_srcdir) && \
+	  $(AUTOMAKE) --foreign  aml/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+	@case '$?' in \
+	  *config.status*) \
+	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+	  *) \
+	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+	esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+	-rm -f *.lo
+
+clean-libtool:
+	-rm -rf .libs _libs
+
+distclean-libtool:
+	-rm -f libtool
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+	list='$(DISTFILES)'; for file in $$list; do \
+	  case $$file in \
+	    $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+	    $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+	  esac; \
+	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+	  dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+	  if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+	    dir="/$$dir"; \
+	    $(mkdir_p) "$(distdir)$$dir"; \
+	  else \
+	    dir=''; \
+	  fi; \
+	  if test -d $$d/$$file; then \
+	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+	    fi; \
+	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+	  else \
+	    test -f $(distdir)/$$file \
+	    || cp -p $$d/$$file $(distdir)/$$file \
+	    || exit 1; \
+	  fi; \
+	done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+	  `test -z '$(STRIP)' || \
+	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+	@echo "This command is intended for maintainers to use"
+	@echo "it deletes files that may require special tools to rebuild."
+	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+	-rm -f Makefile
+distclean-am: clean-am distclean-generic distclean-libtool
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+	-rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.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-exec install-exec-am \
+	install-info install-info-am install-man install-strip \
+	installcheck installcheck-am installdirs maintainer-clean \
+	maintainer-clean-generic mostlyclean mostlyclean-generic \
+	mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+	uninstall-info-am
+
+# 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/aml/aml.c b/aml/aml.c
@@ -0,0 +1,515 @@
+/* 
+ * aml.c - generate Makefile.am from an Automake Markup Language file
+ *
+ * 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.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <glib.h>
+#include <libxml/parser.h>
+#include <libxml/tree.h>
+
+typedef void (*OutputFunc) (xmlNode *node);
+
+static GHashTable *variables = NULL;
+static GSList *conditionals = NULL;
+
+static const char *current_filename = NULL;
+static char *current_object = NULL;
+
+static void aml_error (xmlNode *node, const char *format, ...);
+static char *aml_get_mandatory_property (xmlNode *node, const char *name);
+
+static void aml_append (const char *varname, const char *format, ...);
+static void aml_vappend (const char *varname, const char *format, va_list args);
+
+static void aml_object_append (const char *varname,
+			       const char *format,
+			       ...);
+static void aml_object_append_prefix (const char *prefix,
+				      const char *varname,
+				      const char *format,
+				      ...);
+static void aml_object_vappend_prefix (const char *prefix,
+				       const char *varname,
+				       const char *format,
+				       va_list args);
+
+static void aml_output_tree (xmlNode *node);
+static void aml_output_node (xmlNode *node);
+static void aml_output_object (xmlNode *node,
+			       const char *type,
+			       const char *default_dir);
+static void aml_output_program (xmlNode *node);
+static void aml_output_library (xmlNode *node);
+static void aml_output_variable (xmlNode *node);
+static void aml_output_package (xmlNode *node);
+static void aml_output_source_real (xmlNode *node, const char *format, ...);
+static void aml_output_source (xmlNode *node);
+static void aml_output_module (xmlNode *node);
+static void aml_output_class (xmlNode *node);
+static void aml_output_interface (xmlNode *node);
+static void aml_output_if (xmlNode *node);
+
+static void aml_process_file (const char *filename);
+
+static void
+aml_error (xmlNode *node, const char *format, ...)
+{
+  va_list args;
+  char *message;
+
+  g_return_if_fail(format != NULL);
+
+  va_start(args, format);
+  message = g_strdup_vprintf(format, args);
+  va_end(args);
+
+  if (node)
+    g_printerr("%s:%i: %s\n", current_filename, node->line, message);
+  else if (current_filename)
+    g_printerr("%s: %s\n", current_filename, message);
+  else
+    g_printerr("%s\n", message);
+
+  g_free(message);
+
+  exit(1);
+}
+
+static char *
+aml_get_mandatory_property (xmlNode *node, const char *name)
+{
+  char *value;
+
+  g_return_val_if_fail(node != NULL, NULL);
+  g_return_val_if_fail(name != NULL, NULL);
+
+  value = xmlGetProp(node, name);
+  if (! value)
+    aml_error(node, "mandatory property \"%s\" not specified", name);
+
+  return value;
+}
+
+static void
+aml_append (const char *varname, const char *format, ...)
+{
+  va_list args;
+
+  g_return_if_fail(varname != NULL);
+  g_return_if_fail(format != NULL);
+
+  va_start(args, format);
+  aml_vappend(varname, format, args);
+  va_end(args);
+}
+
+static void
+aml_vappend (const char *varname, const char *format, va_list args)
+{
+  char *value;
+
+  g_return_if_fail(varname != NULL);
+  g_return_if_fail(format != NULL);
+
+  value = g_strdup_vprintf(format, args);
+
+  if (g_hash_table_lookup(variables, varname))
+    g_print("%s += %s\n", varname, value);
+  else
+    {
+      /*
+       * Automake requires variables to be initialized before += can
+       * be used on them.
+       */
+
+      g_hash_table_insert(variables, g_strdup(varname), GINT_TO_POINTER(TRUE));
+      g_print("%s = %s\n", varname, value);
+    }
+
+  g_free(value);
+}
+
+static void
+aml_object_append (const char *varname,
+		   const char *format,
+		   ...)
+{
+  va_list args;
+
+  g_return_if_fail(varname != NULL);
+  g_return_if_fail(format != NULL);
+
+  va_start(args, format);
+  aml_object_vappend_prefix(NULL, varname, format, args);
+  va_end(args);
+}
+
+static void
+aml_object_append_prefix (const char *prefix,
+			  const char *varname,
+			  const char *format,
+			  ...)
+{
+  va_list args;
+
+  g_return_if_fail(varname != NULL);
+  g_return_if_fail(format != NULL);
+
+  va_start(args, format);
+  aml_object_vappend_prefix(prefix, varname, format, args);
+  va_end(args);
+}
+
+static void
+aml_object_vappend_prefix (const char *prefix,
+			   const char *varname,
+			   const char *format,
+			   va_list args)
+{
+  char *full_varname;
+
+  g_return_if_fail(varname != NULL);
+  g_return_if_fail(format != NULL);
+
+  if (prefix)
+    full_varname = g_strdup_printf("%s_%s_%s", prefix, current_object, varname);
+  else
+    full_varname = g_strdup_printf("%s_%s", current_object, varname);
+
+  aml_vappend(full_varname, format, args);
+  g_free(full_varname);
+}
+
+static void
+aml_output_tree (xmlNode *node)
+{
+  g_return_if_fail(node != NULL);
+
+  for (node = node->children; node != NULL; node = node->next)
+    if (node->type == XML_ELEMENT_NODE)
+      aml_output_node(node);
+}
+
+static void
+aml_output_node (xmlNode *node)
+{
+  static const struct
+  {
+    const char	*name;
+    OutputFunc	func;
+  } nodes[] = {
+    { "program",	aml_output_program },
+    { "library",	aml_output_library },
+    { "cppflags",	aml_output_variable },
+    { "ldflags",	aml_output_variable },
+    { "package",	aml_output_package },
+    { "source",		aml_output_source },
+    { "module",		aml_output_module },
+    { "class",		aml_output_class },
+    { "interface",	aml_output_interface },
+    { "if",		aml_output_if }
+  };
+  int i;
+
+  g_return_if_fail(node != NULL);
+
+  for (i = 0; i < G_N_ELEMENTS(nodes); i++)
+    if (! strcmp(node->name, nodes[i].name))
+      {
+	nodes[i].func(node);
+	return;
+      }
+
+  aml_error(node, "unknown element \"%s\"", node->name);
+}
+
+static void
+aml_output_object (xmlNode *node, const char *type, const char *default_dir)
+{
+  char *name;
+  char *dir;
+  char *varname;
+
+  g_return_if_fail(node != NULL);
+  g_return_if_fail(type != NULL);
+  g_return_if_fail(default_dir != NULL);
+
+  if (current_object)
+    aml_error(node, "toplevel objects cannot be nested");
+
+  name = aml_get_mandatory_property(node, "name");
+
+  dir = xmlGetProp(node, "dir");
+  if (! dir)
+    dir = g_strdup(default_dir);
+
+  varname = g_strdup_printf("%s_%s", dir, type);
+  g_free(dir);
+
+  aml_append(varname, "%s", name);
+  g_free(varname);
+
+  current_object = g_strdelimit(name, "-.", '_');
+
+  aml_output_tree(node);
+
+  g_free(current_object);
+  current_object = NULL;
+}
+
+static void
+aml_output_program (xmlNode *node)
+{
+  g_return_if_fail(node != NULL);
+
+  aml_output_object(node, "PROGRAMS", "bin");
+}
+
+static void
+aml_output_library (xmlNode *node)
+{
+  g_return_if_fail(node != NULL);
+
+  aml_output_object(node, "LTLIBRARIES", "lib");
+}
+
+static void
+aml_output_variable (xmlNode *node)
+{
+  char *content;
+
+  g_return_if_fail(node != NULL);
+
+  content = xmlNodeGetContent(node);
+  if (content)
+    {
+      char *varname;
+
+      varname = g_ascii_strup(node->name, -1);
+
+      aml_object_append(varname, content);
+
+      g_free(varname);
+      g_free(content);
+    }
+}
+
+static void
+aml_output_package (xmlNode *node)
+{
+  char *name;
+  char *varname;
+
+  g_return_if_fail(node != NULL);
+
+  name = aml_get_mandatory_property(node, "name");
+  varname = g_ascii_strup(g_strdelimit(name, "-", '_'), -1);
+  g_free(name);
+
+  aml_object_append("CPPFLAGS", "$(%s_CFLAGS)", varname);
+  aml_object_append("LDFLAGS", "$(%s_LIBS)", varname);
+
+  g_free(varname);
+}
+
+static void
+aml_output_source_real (xmlNode *node, const char *format, ...)
+{
+  va_list args;
+  char *dist;
+  char *built;
+  char *clean;
+
+  g_return_if_fail(node != NULL);
+  g_return_if_fail(format != NULL);
+
+  va_start(args, format);
+
+  dist = xmlGetProp(node, "dist");
+  aml_object_vappend_prefix(dist && ! strcmp(dist, "no") ? "nodist" : NULL, "SOURCES", format, args);
+  g_free(dist);
+
+  built = xmlGetProp(node, "built");
+  if (built)
+    {
+      if (! strcmp(built, "yes"))
+	aml_vappend("BUILT_SOURCES", format, args);
+      g_free(built);
+    }
+  
+  clean = xmlGetProp(node, "clean");
+  if (clean)
+    {
+      char *cleanvar;
+
+      if (! strcmp(clean, "yes"))
+	cleanvar = g_strdup("CLEANFILES");
+      else
+	{
+	  char *str;
+
+	  str = g_ascii_strup(clean, -1);
+	  cleanvar = g_strdup_printf("%sCLEANFILES", str);
+	  g_free(str);
+	}
+      g_free(clean);
+
+      aml_vappend(cleanvar, format, args);
+      g_free(cleanvar);
+    }
+
+  va_end(args);
+}
+
+static void
+aml_output_source (xmlNode *node)
+{
+  char *name;
+
+  g_return_if_fail(node != NULL);
+
+  name = aml_get_mandatory_property(node, "name");
+  aml_output_source_real(node, "%s", name);
+  g_free(name);
+}
+
+static void
+aml_output_module (xmlNode *node)
+{
+  char *name;
+
+  g_return_if_fail(node != NULL);
+
+  name = aml_get_mandatory_property(node, "name");
+  aml_output_source_real(node, "%s.c", name);
+  aml_output_source_real(node, "%s.h", name);
+  g_free(name);
+}
+
+static void
+aml_output_class (xmlNode *node)
+{
+  char *name;
+  char *prefix;
+
+  g_return_if_fail(node != NULL);
+
+#define GOB_BUILT_SOURCES(prefix) \
+  "%s-private.h %s.c %s.h", (prefix), (prefix), (prefix)
+
+  name = aml_get_mandatory_property(node, "name");
+  prefix = g_ascii_strdown(g_strdelimit(name, ":", '-'), -1);
+  g_free(name);
+
+  aml_object_append("SOURCES", "%s.gob %s.gob.stamp", prefix, prefix);
+  aml_object_append("SOURCES", GOB_BUILT_SOURCES(prefix));
+  aml_append("BUILT_SOURCES", "%s.gob.stamp", prefix);
+  aml_append("MAINTAINERCLEANFILES", "%s.gob.stamp", prefix);
+  aml_append("MAINTAINERCLEANFILES", GOB_BUILT_SOURCES(prefix));
+  
+  g_free(prefix);
+}
+
+static void
+aml_output_interface (xmlNode *node)
+{
+  char *name;
+
+  g_return_if_fail(node != NULL);
+
+#define IDL_BUILT_SOURCES(prefix) \
+  "%s-common.c %s-skels.c %s-stubs.c %s.h", (prefix), (prefix), (prefix), (prefix)
+
+  name = g_strdelimit(aml_get_mandatory_property(node, "name"), ":", '_');
+
+  aml_object_append("SOURCES", "%s.idl", name);
+  aml_object_append_prefix("nodist", "SOURCES", IDL_BUILT_SOURCES(name));
+  aml_append("BUILT_SOURCES", IDL_BUILT_SOURCES(name));
+  aml_append("CLEANFILES", IDL_BUILT_SOURCES(name));
+
+  g_free(name);
+}
+
+static void
+aml_output_if (xmlNode *node)
+{
+  char *test;
+
+  g_return_if_fail(node != NULL);
+
+  test = aml_get_mandatory_property(node, "test");
+
+  conditionals = g_slist_prepend(conditionals, test);
+  g_print("if %s\n", test);
+
+  aml_output_tree(node);
+
+  conditionals = g_slist_delete_link(conditionals, conditionals);
+  g_print("endif\n");
+}
+
+static void
+aml_process_file (const char *filename)
+{
+  xmlDoc *doc;
+  xmlNode *root;
+  char *basename;
+
+  g_return_if_fail(filename != NULL);
+
+  current_filename = filename;
+
+  doc = xmlParseFile(filename);
+  if (! doc)
+    exit(1);			/* error printed by libxml */
+
+  root = xmlDocGetRootElement(doc);
+  if (! root)
+    aml_error(NULL, "root element missing");
+
+  if (strcmp(root->name, "makefile"))
+    aml_error(root, "root element must be \"makefile\", not \"%s\"", root->name);
+
+  basename = g_path_get_basename(filename);
+  g_print("# Generated from %s using Jean-Yves Lefort's aml.\n", basename);
+  g_free(basename);
+
+  g_print("include $(top_srcdir)/aml/aml.make\n");
+
+  aml_output_tree(root);
+
+  g_print("include $(srcdir)/aml.make\n");
+
+  xmlFreeDoc(doc);
+}
+
+int
+main (int argc, char **argv)
+{
+  if (argc != 2)
+    aml_error(NULL, "Usage: %s INPUTFILE", argv[0]);
+
+  variables = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL);
+  aml_process_file(argv[1]);
+  g_hash_table_destroy(variables);
+
+  return 0;
+}
diff --git a/aml/aml.make b/aml/aml.make
@@ -0,0 +1,14 @@
+GOBFLAGS = --always-private-header --no-touch --exit-on-warn
+
+# intentionally do not add aml/aml to sources (Makefile.am is distributed)
+Makefile.am: automake.xml $(top_srcdir)/aml/aml.c $(top_srcdir)/aml/Makefile.aml
+	cd $(top_srcdir)/aml && $(MAKE) -f Makefile.aml $(AM_MAKEFLAGS) aml
+	$(top_srcdir)/aml/aml $< > $@.aml && mv -f $@.aml $@
+
+# intentionally do not add $(GOB2) to sources (generated files are distributed)
+%.gob.stamp: %.gob
+	$(GOB2) $(GOBFLAGS) $<
+	@touch $@
+
+%-common.c %-stubs.c %-skels.c %.h: %.idl $(ORBIT_IDL)
+	$(ORBIT_IDL) $(IDLFLAGS) $<
diff --git a/art/Makefile.am b/art/Makefile.am
@@ -1,13 +1,9 @@
-if WITH_GMAIL
-gmail_icon = gmail.png
-endif
-
 gnome_pixmapsdir = $(datadir)/pixmaps
 dist_gnome_pixmaps_DATA = mail-notification.png
 
 app_pixmapsdir = $(pkgdatadir)/ui
-dist_app_pixmaps_DATA = \
-	$(gmail_icon)		\
-	hand-open.png		\
-	logo.png		\
-	main-window.png
+dist_app_pixmaps_DATA = logo.png
+
+if WITH_GMAIL
+dist_app_pixmaps_DATA += gmail.png
+endif
diff --git a/art/Makefile.in b/art/Makefile.in
@@ -37,14 +37,15 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 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 \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
-	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
 	$(top_srcdir)/m4/reentrant-resolver.m4 \
 	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
 	$(top_srcdir)/configure.ac
@@ -55,8 +56,7 @@ CONFIG_HEADER = $(top_builddir)/config.h
 CONFIG_CLEAN_FILES =
 SOURCES =
 DIST_SOURCES =
-am__dist_app_pixmaps_DATA_DIST = gmail.png hand-open.png logo.png \
-	main-window.png
+am__dist_app_pixmaps_DATA_DIST = logo.png gmail.png
 am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
 am__vpath_adj = case $$p in \
     $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -78,7 +78,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BONOBO_ACTIVATION_IDL = @BONOBO_ACTIVATION_IDL@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -110,7 +110,6 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GMIME_CFLAGS = @GMIME_CFLAGS@
 GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
@@ -142,6 +141,7 @@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
 INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
 INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
 INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
 INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
 INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
 INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
@@ -152,7 +152,6 @@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
 INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
 INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
-LIBBONOBO_IDL = @LIBBONOBO_IDL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
@@ -247,6 +246,7 @@ 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@
@@ -274,16 +274,10 @@ target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
-@WITH_GMAIL_TRUE@gmail_icon = gmail.png
 gnome_pixmapsdir = $(datadir)/pixmaps
 dist_gnome_pixmaps_DATA = mail-notification.png
 app_pixmapsdir = $(pkgdatadir)/ui
-dist_app_pixmaps_DATA = \
-	$(gmail_icon)		\
-	hand-open.png		\
-	logo.png		\
-	main-window.png
-
+dist_app_pixmaps_DATA = logo.png $(am__append_1)
 all: all-am
 
 .SUFFIXES:
diff --git a/art/hand-open.png b/art/hand-open.png
Binary files differ.
diff --git a/art/main-window.png b/art/main-window.png
Binary files differ.
diff --git a/autogen.sh b/autogen.sh
@@ -1,22 +1,2 @@
 #!/bin/sh
-
-# change this to the path to mkinstalldirs on your system
-MKINSTALLDIRS="/usr/local/gnu-autotools/share/automake-1.9/mkinstalldirs"
-
-run() {
-    echo "Running $*..."
-    $* || exit
-}
-
-run intltoolize --force
-
-# po/Makefile.in.in requires mkinstalldirs, but intltoolize does not provide it
-run ln -sf "$MKINSTALLDIRS" mkinstalldirs
-
-run libtoolize --force
-run aclocal -I m4
-run autoheader
-run autoconf
-run automake --add-missing --force-missing
-
-echo "Finished successfully."
+exec make -f Makefile.autogen
diff --git a/config.h.in b/config.h.in
@@ -15,6 +15,9 @@
 /* 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
 
@@ -84,42 +87,45 @@
 /* Version number of package */
 #undef VERSION
 
-/* Define to 1 if evolution is enabled */
+/* Define to 1 if evolution is enabled, 0 otherwise */
 #undef WITH_EVOLUTION
 
-/* Define to 1 if gmail is enabled */
+/* Define to 1 if gmail is enabled, 0 otherwise */
 #undef WITH_GMAIL
 
-/* Define to 1 if imap is enabled */
+/* Define to 1 if imap is enabled, 0 otherwise */
 #undef WITH_IMAP
 
-/* Define to 1 if ipv6 is enabled */
+/* Define to 1 if ipv6 is enabled, 0 otherwise */
 #undef WITH_IPV6
 
-/* Define to 1 if maildir is enabled */
+/* Define to 1 if maildir is enabled, 0 otherwise */
 #undef WITH_MAILDIR
 
-/* Define to 1 if mbox is enabled */
+/* Define to 1 if mbox is enabled, 0 otherwise */
 #undef WITH_MBOX
 
-/* Define to 1 if mh is enabled */
+/* Define to 1 if mh is enabled, 0 otherwise */
 #undef WITH_MH
 
-/* Define to 1 if mime is enabled */
+/* Define to 1 if mime is enabled, 0 otherwise */
 #undef WITH_MIME
 
-/* Define to 1 if pop3 is enabled */
+/* Define to 1 if pop3 is enabled, 0 otherwise */
 #undef WITH_POP3
 
-/* Define to 1 if sasl is enabled */
+/* Define to 1 if sasl is enabled, 0 otherwise */
 #undef WITH_SASL
 
-/* Define to 1 if ssl is enabled */
+/* Define to 1 if ssl is enabled, 0 otherwise */
 #undef WITH_SSL
 
-/* Define to 1 if sylpheed is enabled */
+/* Define to 1 if sylpheed is enabled, 0 otherwise */
 #undef WITH_SYLPHEED
 
+/* Define to 1 if sylpheed-locking is enabled, 0 otherwise */
+#undef WITH_SYLPHEED_LOCKING
+
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 
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 2.0.
+# Generated by GNU Autoconf 2.59 for Mail Notification 3.0-rc1.
 #
 # Report bugs to <jylefort@brutele.be>.
 #
@@ -287,8 +287,8 @@ if test "X${echo_test_string+set}" != Xset; then
 # find a string as large as possible, as long as the shell can cope with it
   for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
     # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
-    if (echo_test_string="`eval $cmd`") 2>/dev/null &&
-       echo_test_string="`eval $cmd`" &&
+    if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+       echo_test_string=`eval $cmd` &&
        (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
     then
       break
@@ -423,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='Mail Notification'
 PACKAGE_TARNAME='mail-notification'
-PACKAGE_VERSION='2.0'
-PACKAGE_STRING='Mail Notification 2.0'
+PACKAGE_VERSION='3.0-rc1'
+PACKAGE_STRING='Mail Notification 3.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 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_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 LIBBONOBO_IDL BONOBO_ACTIVATION_IDL GOB2 GLIB_GENMARSHAL 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_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 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 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_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 2.0 to adapt to many kinds of systems.
+\`configure' configures Mail Notification 3.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 2.0:";;
+     short | recursive ) echo "Configuration of Mail Notification 3.0-rc1:";;
    esac
   cat <<\_ACEOF
 
@@ -1067,6 +1067,8 @@ Optional Features:
   --disable-gmail         disable Gmail support
   --disable-evolution     disable Evolution support
   --disable-sylpheed      disable Sylpheed support
+  --enable-sylpheed-locking
+                          enable .sylpheed_mark locking
   --enable-compile-warnings=no|yes|error
                           enable compiler warnings [no]
   --enable-regression-tests
@@ -1226,7 +1228,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-Mail Notification configure 2.0
+Mail Notification configure 3.0-rc1
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1240,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 2.0, which was
+It was created by Mail Notification $as_me 3.0-rc1, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1785,6 +1787,18 @@ esac
 else
   enable_sylpheed=yes
 fi;
+# Check whether --enable-sylpheed-locking or --disable-sylpheed-locking was given.
+if test "${enable_sylpheed_locking+set}" = set; then
+  enableval="$enable_sylpheed_locking"
+  case "$enableval" in
+	yes|no) enable_sylpheed_locking=$enableval ;;
+	*) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-sylpheed-locking" >&5
+echo "$as_me: error: bad value $enableval for --enable-sylpheed-locking" >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  enable_sylpheed_locking=no
+fi;
 
 # Check whether --enable-compile-warnings or --disable-compile-warnings was given.
 if test "${enable_compile_warnings+set}" = set; then
@@ -2229,7 +2243,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='mail-notification'
- VERSION='2.0'
+ VERSION='3.0-rc1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3691,7 +3705,7 @@ else
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
       lt_cv_path_LD="$ac_dir/$ac_prog"
       # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some GNU ld's only accept -v.
+      # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
@@ -3725,7 +3739,7 @@ echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
 if test "${lt_cv_prog_gnu_ld+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
 case `$LD -v 2>&1 </dev/null` in
 *GNU* | *'with BFD'*)
   lt_cv_prog_gnu_ld=yes
@@ -3758,7 +3772,7 @@ reload_cmds='$LD$reload_flag -o $output$reload_objs'
 case $host_os in
   darwin*)
     if test "$GCC" = yes; then
-      reload_cmds='$CC -nostdlib ${wl}-r -o $output$reload_objs'
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
     else
       reload_cmds='$LD$reload_flag -o $output$reload_objs'
     fi
@@ -3774,36 +3788,43 @@ else
   # Let the user override the test.
   lt_cv_path_NM="$NM"
 else
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    tmp_nm="$ac_dir/${ac_tool_prefix}nm"
-    if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-      # Check to see if the nm accepts a BSD-compat flag.
-      # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-      #   nm: unknown option "B" ignored
-      # Tru64's nm complains that /dev/null is an invalid object file
-      case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-      */dev/null* | *'Invalid file or object type'*)
-	lt_cv_path_NM="$tmp_nm -B"
-	break
-        ;;
-      *)
-	case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-	*/dev/null*)
-	  lt_cv_path_NM="$tmp_nm -p"
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+	# Check to see if the nm accepts a BSD-compat flag.
+	# Adding the `sed 1q' prevents false positives on HP-UX, which says:
+	#   nm: unknown option "B" ignored
+	# Tru64's nm complains that /dev/null is an invalid object file
+	case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+	*/dev/null* | *'Invalid file or object type'*)
+	  lt_cv_path_NM="$tmp_nm -B"
 	  break
 	  ;;
 	*)
-	  lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-	  continue # so that we can try to find one that supports BSD flags
+	  case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+	  */dev/null*)
+	    lt_cv_path_NM="$tmp_nm -p"
+	    break
+	    ;;
+	  *)
+	    lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+	    continue # so that we can try to find one that supports BSD flags
+	    ;;
+	  esac
 	  ;;
 	esac
-      esac
-    fi
+      fi
+    done
+    IFS="$lt_save_ifs"
   done
-  IFS="$lt_save_ifs"
   test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
 fi
 fi
@@ -3895,7 +3916,7 @@ gnu*)
 
 hpux10.20* | hpux11*)
   lt_cv_file_magic_cmd=/usr/bin/file
-  case "$host_cpu" in
+  case $host_cpu in
   ia64*)
     lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
     lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
@@ -3911,6 +3932,11 @@ hpux10.20* | hpux11*)
   esac
   ;;
 
+interix3*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
+
 irix5* | irix6* | nonstopux*)
   case $LD in
   *-32|*"-32 ") libmagic=32-bit;;
@@ -3956,15 +3982,11 @@ osf3* | osf4* | osf5*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sco3.2v5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 solaris*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   case $host_vendor in
   motorola)
     lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
@@ -3985,10 +4007,13 @@ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
   siemens)
     lt_cv_deplibs_check_method=pass_all
     ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
   esac
   ;;
 
-sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7* | sysv4*uw2*)
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 esac
@@ -4006,6 +4031,9 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
 
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
 # Allow CC to be a program name with arguments.
 compiler=$CC
 
@@ -4041,7 +4069,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 4044 "configure"' > conftest.$ac_ext
+  echo '#line 4072 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -4084,7 +4112,7 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-    case "`/usr/bin/file conftest.o`" in
+    case `/usr/bin/file conftest.o` in
     *32-bit*)
       case $host in
         x86_64-*linux*)
@@ -4197,6 +4225,26 @@ echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6
     CFLAGS="$SAVE_CFLAGS"
   fi
   ;;
+sparc*-*solaris*)
+  # Find out which ABI we are using.
+  echo 'int i;' > conftest.$ac_ext
+  if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+    case `/usr/bin/file conftest.o` in
+    *64-bit*)
+      case $lt_cv_prog_gnu_ld in
+      yes*) LD="${LD-ld} -m elf64_sparc" ;;
+      *)    LD="${LD-ld} -64" ;;
+      esac
+      ;;
+    esac
+  fi
+  rm -rf conftest*
+  ;;
+
 
 esac
 
@@ -5620,7 +5668,7 @@ fi
 
 
 # Provide some information about the compiler.
-echo "$as_me:5623:" \
+echo "$as_me:5671:" \
      "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
@@ -5817,12 +5865,18 @@ else
     elif test -x /usr/sbin/sysctl; then
       lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
     else
-      lt_cv_sys_max_cmd_len=65536 # usable default for *BSD
+      lt_cv_sys_max_cmd_len=65536	# usable default for all BSDs
     fi
     # And add a safety zone
     lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
     lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     ;;
+
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
+
   osf*)
     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
@@ -5836,6 +5890,17 @@ else
       esac
     fi
     ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ 	]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
   *)
     # If test is not a shell built-in, we'll probably end up computing a
     # maximum length that is only half of the actual maximum length, but
@@ -5921,9 +5986,18 @@ irix* | nonstopux*)
 osf*)
   symcode='[BCDEGQRST]'
   ;;
-solaris* | sysv5*)
+solaris*)
   symcode='[BDRT]'
   ;;
+sco3.2v5*)
+  symcode='[DT]'
+  ;;
+sysv4.2uw2*)
+  symcode='[DT]'
+  ;;
+sysv5* | sco5v6* | unixware* | OpenUNIX*)
+  symcode='[ABDT]'
+  ;;
 sysv4)
   symcode='[DFNSTU]'
   ;;
@@ -6132,7 +6206,7 @@ rm="rm -f"
 default_ofile=libtool
 can_build_shared=yes
 
-# All known linkers require a `.a' archive for static linking (except M$VC,
+# All known linkers require a `.a' archive for static linking (except MSVC,
 # which needs '.lib').
 libext=a
 ltmain="$ac_aux_dir/ltmain.sh"
@@ -6389,6 +6463,7 @@ test -z "$AR_FLAGS" && AR_FLAGS=cru
 test -z "$AS" && AS=as
 test -z "$CC" && CC=cc
 test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
 test -z "$DLLTOOL" && DLLTOOL=dlltool
 test -z "$LD" && LD=ld
 test -z "$LN_S" && LN_S="ln -s"
@@ -6408,10 +6483,10 @@ old_postuninstall_cmds=
 if test -n "$RANLIB"; then
   case $host_os in
   openbsd*)
-    old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
     ;;
   *)
-    old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds"
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
     ;;
   esac
   old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
@@ -6453,7 +6528,7 @@ else
       if test -n "$file_magic_test_file"; then
 	case $deplibs_check_method in
 	"file_magic "*)
-	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
 	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
 	    $EGREP "$file_magic_regex" > /dev/null; then
@@ -6515,7 +6590,7 @@ else
       if test -n "$file_magic_test_file"; then
 	case $deplibs_check_method in
 	"file_magic "*)
-	  file_magic_regex="`expr \"$deplibs_check_method\" : \"file_magic \(.*\)\"`"
+	  file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"`
 	  MAGIC_CMD="$lt_cv_path_MAGIC_CMD"
 	  if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null |
 	    $EGREP "$file_magic_regex" > /dev/null; then
@@ -6610,6 +6685,9 @@ lt_simple_link_test_code='int main(){return(0);}\n'
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
 
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
 # Allow CC to be a program name with arguments.
 compiler=$CC
 
@@ -6617,82 +6695,17 @@ compiler=$CC
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 
 ac_outfile=conftest.$ac_objext
 printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
 $rm conftest*
 
 
-#
-# Check for any special shared library compilation flags.
-#
-lt_prog_cc_shlib=
-if test "$GCC" = no; then
-  case $host_os in
-  sco3.2v5*)
-    lt_prog_cc_shlib='-belf'
-    ;;
-  esac
-fi
-if test -n "$lt_prog_cc_shlib"; then
-  { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&5
-echo "$as_me: WARNING: \`$CC' requires \`$lt_prog_cc_shlib' to build shared libraries" >&2;}
-  if echo "$old_CC $old_CFLAGS " | grep "[ 	]$lt_prog_cc_shlib[ 	]" >/dev/null; then :
-  else
-    { echo "$as_me:$LINENO: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5
-echo "$as_me: WARNING: add \`$lt_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;}
-    lt_cv_prog_cc_can_build_shared=no
-  fi
-fi
-
-
-#
-# Check to make sure the static flag actually works.
-#
-echo "$as_me:$LINENO: checking if $compiler static flag $lt_prog_compiler_static works" >&5
-echo $ECHO_N "checking if $compiler static flag $lt_prog_compiler_static works... $ECHO_C" >&6
-if test "${lt_prog_compiler_static_works+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_prog_compiler_static_works=no
-   save_LDFLAGS="$LDFLAGS"
-   LDFLAGS="$LDFLAGS $lt_prog_compiler_static"
-   printf "$lt_simple_link_test_code" > conftest.$ac_ext
-   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
-     # The compiler can only warn and ignore the option if not recognized
-     # So say no if there are warnings
-     if test -s conftest.err; then
-       # Append any errors to the config.log.
-       cat conftest.err 1>&5
-       $echo "X$_lt_linker_boilerplate" | $Xsed > conftest.exp
-       $SED '/^$/d' conftest.err >conftest.er2
-       if diff conftest.exp conftest.er2 >/dev/null; then
-         lt_prog_compiler_static_works=yes
-       fi
-     else
-       lt_prog_compiler_static_works=yes
-     fi
-   fi
-   $rm conftest*
-   LDFLAGS="$save_LDFLAGS"
-
-fi
-echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
-
-if test x"$lt_prog_compiler_static_works" = xyes; then
-    :
-else
-    lt_prog_compiler_static=
-fi
-
-
-
 
 lt_prog_compiler_no_builtin_flag=
 
@@ -6715,20 +6728,20 @@ else
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    # The option is referenced via a variable to avoid confusing sed.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:6721: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6734: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:6725: \$? = $ac_status" >&5
+   echo "$as_me:6738: \$? = $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.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-     $SED '/^$/d' conftest.err >conftest.er2
-     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_rtti_exceptions=yes
      fi
    fi
@@ -6789,6 +6802,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       lt_prog_compiler_pic='-fno-common'
       ;;
 
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
     msdosdjgpp*)
       # Just because we use GCC doesn't mean we suddenly get shared libraries
       # on systems that don't support them.
@@ -6805,7 +6823,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
     hpux*)
       # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
       # not for PA HP-UX.
-      case "$host_cpu" in
+      case $host_cpu in
       hppa*64*|ia64*)
 	# +Z the default
 	;;
@@ -6852,7 +6870,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       lt_prog_compiler_wl='-Wl,'
       # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
       # not for PA HP-UX.
-      case "$host_cpu" in
+      case $host_cpu in
       hppa*64*|ia64*)
 	# +Z the default
 	;;
@@ -6882,12 +6900,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 	lt_prog_compiler_pic='-KPIC'
 	lt_prog_compiler_static='-static'
         ;;
-      pgcc* | pgf77* | pgf90*)
+      pgcc* | pgf77* | pgf90* | pgf95*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
 	lt_prog_compiler_wl='-Wl,'
 	lt_prog_compiler_pic='-fpic'
-	lt_prog_compiler_static='-static'
+	lt_prog_compiler_static='-Bstatic'
         ;;
       ccc*)
         lt_prog_compiler_wl='-Wl,'
@@ -6903,11 +6921,6 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    sco3.2v5*)
-      lt_prog_compiler_pic='-Kpic'
-      lt_prog_compiler_static='-dn'
-      ;;
-
     solaris*)
       lt_prog_compiler_pic='-KPIC'
       lt_prog_compiler_static='-Bstatic'
@@ -6925,7 +6938,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       lt_prog_compiler_static='-Bstatic'
       ;;
 
-    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+    sysv4 | sysv4.2uw2* | sysv4.3*)
       lt_prog_compiler_wl='-Wl,'
       lt_prog_compiler_pic='-KPIC'
       lt_prog_compiler_static='-Bstatic'
@@ -6938,6 +6951,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       fi
       ;;
 
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl='-Wl,'
+      lt_prog_compiler_pic='-KPIC'
+      lt_prog_compiler_static='-Bstatic'
+      ;;
+
     unicos*)
       lt_prog_compiler_wl='-Wl,'
       lt_prog_compiler_can_build_shared=no
@@ -6977,20 +6996,20 @@ else
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    # The option is referenced via a variable to avoid confusing sed.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:6983: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7002: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:6987: \$? = $ac_status" >&5
+   echo "$as_me:7006: \$? = $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.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-     $SED '/^$/d' conftest.err >conftest.er2
-     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_prog_compiler_pic_works=yes
      fi
    fi
@@ -7011,7 +7030,7 @@ else
 fi
 
 fi
-case "$host_os" in
+case $host_os in
   # For platforms which do not support PIC, -DPIC is meaningless:
   *djgpp*)
     lt_prog_compiler_pic=
@@ -7021,6 +7040,48 @@ case "$host_os" in
     ;;
 esac
 
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works=yes
+       fi
+     else
+       lt_prog_compiler_static_works=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+    :
+else
+    lt_prog_compiler_static=
+fi
+
+
 echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
 if test "${lt_cv_prog_compiler_c_o+set}" = set; then
@@ -7039,25 +7100,25 @@ else
    # Note that $ac_compile itself does not contain backslashes and begins
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:7045: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:7106: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:7049: \$? = $ac_status" >&5
+   echo "$as_me:7110: \$? = $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
      # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-     $SED '/^$/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o=yes
      fi
    fi
-   chmod u+w .
+   chmod u+w . 2>&5
    $rm conftest*
    # SGI C++ compiler will create directory out/ii_files/ for
    # template instantiation
@@ -7153,6 +7214,10 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
       with_gnu_ld=no
     fi
     ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
   openbsd*)
     with_gnu_ld=no
     ;;
@@ -7237,7 +7302,7 @@ EOF
       export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
 
       if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+        archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
 	# If the export-symbols file already is a .def file (1st line
 	# is EXPORTS), use it as is; otherwise, prepend...
 	archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
@@ -7246,22 +7311,37 @@ EOF
 	  echo EXPORTS > $output_objdir/$soname.def;
 	  cat $export_symbols >> $output_objdir/$soname.def;
 	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
 	ld_shlibs=no
       fi
       ;;
 
+    interix3*)
+      hardcode_direct=no
+      hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
     linux*)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
 	tmp_addflag=
 	case $cc_basename,$host_cpu in
 	pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
-	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
 	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
@@ -7293,7 +7373,7 @@ EOF
       fi
       ;;
 
-    solaris* | sysv5*)
+    solaris*)
       if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
 	ld_shlibs=no
 	cat <<EOF 1>&2
@@ -7314,6 +7394,33 @@ EOF
       fi
       ;;
 
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs=no
+	  fi
+	;;
+      esac
+      ;;
+
     sunos4*)
       archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       wlarc=
@@ -7347,7 +7454,7 @@ EOF
       # Note: this linker hardcodes the directories in LIBPATH if there
       # are no directories specified by -L.
       hardcode_minus_L=yes
-      if test "$GCC" = yes && test -z "$link_static_flag"; then
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
 	# Neither direct hardcoding nor static linking is supported with a
 	# broken collect2.
 	hardcode_direct=unsupported
@@ -7381,6 +7488,7 @@ EOF
   	    break
   	  fi
 	  done
+	  ;;
 	esac
 
 	exp_sym_flag='-bexport'
@@ -7418,6 +7526,7 @@ EOF
   	  hardcode_libdir_flag_spec='-L$libdir'
   	  hardcode_libdir_separator=
 	  fi
+	  ;;
 	esac
 	shared_flag='-shared'
 	if test "$aix_use_runtimelinking" = yes; then
@@ -7430,11 +7539,11 @@ EOF
   	# chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
 	else
-  	if test "$aix_use_runtimelinking" = yes; then
+	  if test "$aix_use_runtimelinking" = yes; then
 	    shared_flag='${wl}-G'
 	  else
 	    shared_flag='${wl}-bM:SRE'
-  	fi
+	  fi
 	fi
       fi
 
@@ -7499,12 +7608,12 @@ rm -f conftest.err conftest.$ac_objext \
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
        hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath"
-	archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+	archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
        else
 	if test "$host_cpu" = ia64; then
 	  hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib'
 	  allow_undefined_flag="-z nodefs"
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
 	else
 	 # Determine the default libpath from the value encoded in an empty executable.
 	 cat >conftest.$ac_ext <<_ACEOF
@@ -7564,13 +7673,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	  # -berok will link without error, but may produce a broken library.
 	  no_undefined_flag=' ${wl}-bernotok'
 	  allow_undefined_flag=' ${wl}-berok'
-	  # -bexpall does not export symbols beginning with underscore (_)
-	  always_export_symbols=yes
 	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec=' '
+	  whole_archive_flag_spec='$convenience'
 	  archive_cmds_need_lc=yes
-	  # This is similar to how AIX traditionally builds it's shared libraries.
-	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
 	fi
       fi
       ;;
@@ -7609,7 +7716,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     darwin* | rhapsody*)
-      case "$host_os" in
+      case $host_os in
         rhapsody* | darwin1.[012])
          allow_undefined_flag='${wl}-undefined ${wl}suppress'
          ;;
@@ -7638,7 +7745,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
     	output_verbose_link_cmd='echo'
         archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
       module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
       archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
       module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
     else
@@ -7647,7 +7754,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
          output_verbose_link_cmd='echo'
          archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
          module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
          archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           module_expsym_cmds='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
@@ -7711,47 +7818,62 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       export_dynamic_flag_spec='${wl}-E'
       ;;
 
-    hpux10* | hpux11*)
+    hpux10*)
       if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case "$host_cpu" in
-	hppa*64*|ia64*)
+	archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	hardcode_direct=yes
+	export_dynamic_flag_spec='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
 	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
+	ia64*)
+	  archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
 	*)
 	  archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
-	case "$host_cpu" in
-	hppa*64*|ia64*)
-	  archive_cmds='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       fi
       if test "$with_gnu_ld" = no; then
-	case "$host_cpu" in
-	hppa*64*)
-	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
 	  hardcode_libdir_flag_spec_ld='+b $libdir'
-	  hardcode_libdir_separator=:
-	  hardcode_direct=no
-	  hardcode_shlibpath_var=no
-	  ;;
-	ia64*)
-	  hardcode_libdir_flag_spec='-L$libdir'
 	  hardcode_direct=no
 	  hardcode_shlibpath_var=no
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L=yes
 	  ;;
 	*)
-	  hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
-	  hardcode_libdir_separator=:
 	  hardcode_direct=yes
 	  export_dynamic_flag_spec='${wl}-E'
 
@@ -7853,14 +7975,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       hardcode_libdir_separator=:
       ;;
 
-    sco3.2v5*)
-      archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var=no
-      export_dynamic_flag_spec='${wl}-Bexport'
-      runpath_var=LD_RUN_PATH
-      hardcode_runpath_var=yes
-      ;;
-
     solaris*)
       no_undefined_flag=' -z text'
       if test "$GCC" = yes; then
@@ -7946,36 +8060,45 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       fi
       ;;
 
-    sysv4.2uw2*)
-      archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct=yes
-      hardcode_minus_L=no
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+      no_undefined_flag='${wl}-z,text'
+      archive_cmds_need_lc=no
       hardcode_shlibpath_var=no
-      hardcode_runpath_var=yes
-      runpath_var=LD_RUN_PATH
-      ;;
+      runpath_var='LD_RUN_PATH'
 
-   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
-      no_undefined_flag='${wl}-z ${wl}text'
       if test "$GCC" = yes; then
-	archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var=no
       ;;
 
-    sysv5*)
-      no_undefined_flag=' -z text'
-      # $CC -shared without GNU ld will not create a library from C++
-      # object files and a static libstdc++, better avoid it by now
-      archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-      hardcode_libdir_flag_spec=
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag='${wl}-z,text'
+      allow_undefined_flag='${wl}-z,nodefs'
+      archive_cmds_need_lc=no
       hardcode_shlibpath_var=no
+      hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator=':'
+      link_all_deplibs=yes
+      export_dynamic_flag_spec='${wl}-Bexport'
       runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
       ;;
 
     uts4*)
@@ -7994,11 +8117,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
 echo "${ECHO_T}$ld_shlibs" >&6
 test "$ld_shlibs" = no && can_build_shared=no
 
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
 #
 # Do we need to explicitly link libc?
 #
@@ -8031,6 +8149,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
         libobjs=conftest.$ac_objext
         deplibs=
         wl=$lt_prog_compiler_wl
+	pic_flag=$lt_prog_compiler_pic
         compiler_flags=-v
         linker_flags=-v
         verstring=
@@ -8191,7 +8310,8 @@ cygwin* | mingw* | pw32*)
       dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
     postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
       dlpath=$dir/\$dldll~
        $rm \$dlpath'
@@ -8244,7 +8364,7 @@ darwin* | rhapsody*)
   soname_spec='${libname}${release}${major}$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
   # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
   if test "$GCC" = yes; then
     sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
@@ -8282,7 +8402,14 @@ kfreebsd*-gnu)
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
-  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
@@ -8304,10 +8431,15 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
-  *) # from 3.2 on
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
   esac
   ;;
 
@@ -8327,7 +8459,7 @@ hpux9* | hpux10* | hpux11*)
   version_type=sunos
   need_lib_prefix=no
   need_version=no
-  case "$host_cpu" in
+  case $host_cpu in
   ia64*)
     shrext_cmds='.so'
     hardcode_into_libs=yes
@@ -8367,14 +8499,26 @@ hpux9* | hpux10* | hpux11*)
   postinstall_cmds='chmod 555 $lib'
   ;;
 
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
 	fi ;;
   esac
   need_lib_prefix=no
@@ -8488,6 +8632,7 @@ nto-qnx*)
 
 openbsd*)
   version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
   need_lib_prefix=no
   # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
   case $host_os in
@@ -8531,13 +8676,6 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -8563,7 +8701,7 @@ sunos4*)
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -8596,6 +8734,29 @@ sysv4*MP*)
   fi
   ;;
 
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
 uts4*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -8611,6 +8772,11 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
 echo "${ECHO_T}$dynamic_linker" >&6
 test "$dynamic_linker" = no && can_build_shared=no
 
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
 echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
 hardcode_action=
@@ -9266,7 +9432,7 @@ fi
     test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
     save_LDFLAGS="$LDFLAGS"
-    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
     save_LIBS="$LIBS"
     LIBS="$lt_cv_dlopen_libs $LIBS"
@@ -9282,7 +9448,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9285 "configure"
+#line 9451 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -9339,6 +9505,8 @@ int main ()
       else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
       /* dlclose (self); */
     }
+  else
+    puts (dlerror ());
 
     exit (status);
 }
@@ -9348,12 +9516,12 @@ EOF
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) 2>/dev/null
+    (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
       x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
       x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
     esac
   else :
     # compilation failed
@@ -9368,7 +9536,7 @@ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
 echo "${ECHO_T}$lt_cv_dlopen_self" >&6
 
     if test "x$lt_cv_dlopen_self" = xyes; then
-      LDFLAGS="$LDFLAGS $link_static_flag"
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
       echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
 echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
 if test "${lt_cv_dlopen_self_static+set}" = set; then
@@ -9380,7 +9548,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9383 "configure"
+#line 9551 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -9437,6 +9605,8 @@ int main ()
       else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
       /* dlclose (self); */
     }
+  else
+    puts (dlerror ());
 
     exit (status);
 }
@@ -9446,12 +9616,12 @@ EOF
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) 2>/dev/null
+    (./conftest; exit; ) >&5 2>/dev/null
     lt_status=$?
     case x$lt_status in
       x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
       x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
     esac
   else :
     # compilation failed
@@ -9484,7 +9654,7 @@ echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
 fi
 
 
-# Report which librarie types wil actually be built
+# Report which library types will actually be built
 echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
 echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
 echo "$as_me:$LINENO: result: $can_build_shared" >&5
@@ -9496,7 +9666,7 @@ test "$can_build_shared" = "no" && enable_shared=no
 
 # On AIX, shared libraries and static libraries use the same namespace, and
 # are all built from PIC.
-case "$host_os" in
+case $host_os in
 aix3*)
   test "$enable_shared" = yes && enable_static=no
   if test -n "$RANLIB"; then
@@ -9534,7 +9704,7 @@ if test -f "$ltmain"; then
   # Now quote all the things that may contain metacharacters while being
   # careful not to overquote the AC_SUBSTed values.  We take copies of the
   # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
     SED SHELL STRIP \
     libname_spec library_names_spec soname_spec extract_expsyms_cmds \
     old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -9700,6 +9870,9 @@ AR_FLAGS=$lt_AR_FLAGS
 # A C compiler.
 LTCC=$lt_LTCC
 
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
 # A language-specific compiler.
 CC=$lt_compiler
 
@@ -10030,6 +10203,9 @@ echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script
 echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
     fi
   fi
+  if test -z "$LTCFLAGS"; then
+    eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+  fi
 
   # Extract list of available tagged configurations in $ofile.
   # Note that this assumes the entire list is on one line.
@@ -10082,6 +10258,7 @@ hardcode_libdir_flag_spec_CXX=
 hardcode_libdir_flag_spec_ld_CXX=
 hardcode_libdir_separator_CXX=
 hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
 hardcode_automatic_CXX=no
 module_cmds_CXX=
 module_expsym_cmds_CXX=
@@ -10099,7 +10276,7 @@ postdeps_CXX=
 compiler_lib_search_path_CXX=
 
 # Source file extension for C++ test sources.
-ac_ext=cc
+ac_ext=cpp
 
 # Object file extension for compiled C++ test sources.
 objext=o
@@ -10109,13 +10286,16 @@ objext_CXX=$objext
 lt_simple_compile_test_code="int some_variable = 0;\n"
 
 # Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *) { return(0); }\n'
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
 
 # ltmain only uses $CC for tagged configurations so make sure $CC is set.
 
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
 
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
 # Allow CC to be a program name with arguments.
 compiler=$CC
 
@@ -10123,13 +10303,13 @@ compiler=$CC
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 
 ac_outfile=conftest.$ac_objext
 printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
 $rm conftest*
 
@@ -10144,12 +10324,12 @@ lt_save_path_LD=$lt_cv_path_LD
 if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then
   lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx
 else
-  unset lt_cv_prog_gnu_ld
+  $as_unset lt_cv_prog_gnu_ld
 fi
 if test -n "${lt_cv_path_LDCXX+set}"; then
   lt_cv_path_LD=$lt_cv_path_LDCXX
 else
-  unset lt_cv_path_LD
+  $as_unset lt_cv_path_LD
 fi
 test -z "${LDCXX+set}" || LD=$LDCXX
 CC=${CXX-"c++"}
@@ -10235,7 +10415,7 @@ else
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
       lt_cv_path_LD="$ac_dir/$ac_prog"
       # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some GNU ld's only accept -v.
+      # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
       case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
@@ -10269,7 +10449,7 @@ echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6
 if test "${lt_cv_prog_gnu_ld+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
 case `$LD -v 2>&1 </dev/null` in
 *GNU* | *'with BFD'*)
   lt_cv_prog_gnu_ld=yes
@@ -10360,6 +10540,7 @@ case $host_os in
 	    ;;
 	  esac
 	done
+	;;
       esac
 
       exp_sym_flag='-bexport'
@@ -10397,6 +10578,7 @@ case $host_os in
 	  hardcode_libdir_flag_spec_CXX='-L$libdir'
 	  hardcode_libdir_separator_CXX=
 	fi
+	;;
       esac
       shared_flag='-shared'
       if test "$aix_use_runtimelinking" = yes; then
@@ -10479,12 +10661,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
       hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
 
-      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+      archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
      else
       if test "$host_cpu" = ia64; then
 	hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib'
 	allow_undefined_flag_CXX="-z nodefs"
-	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
       else
 	# Determine the default libpath from the value encoded in an empty executable.
 	cat >conftest.$ac_ext <<_ACEOF
@@ -10544,16 +10726,26 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	# -berok will link without error, but may produce a broken library.
 	no_undefined_flag_CXX=' ${wl}-bernotok'
 	allow_undefined_flag_CXX=' ${wl}-berok'
-	# -bexpall does not export symbols beginning with underscore (_)
-	always_export_symbols_CXX=yes
 	# Exported symbols can be pulled into shared objects from archives
-	whole_archive_flag_spec_CXX=' '
+	whole_archive_flag_spec_CXX='$convenience'
 	archive_cmds_need_lc_CXX=yes
-	# This is similar to how AIX traditionally builds it's shared libraries.
-	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	# This is similar to how AIX traditionally builds its shared libraries.
+	archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
       fi
     fi
     ;;
+
+  beos*)
+    if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+      allow_undefined_flag_CXX=unsupported
+      # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+      # support --undefined.  This deserves some investigation.  FIXME
+      archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+    else
+      ld_shlibs_CXX=no
+    fi
+    ;;
+
   chorus*)
     case $cc_basename in
       *)
@@ -10563,7 +10755,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
     esac
     ;;
 
-
   cygwin* | mingw* | pw32*)
     # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
     # as there is no search path for DLLs.
@@ -10573,7 +10764,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
     enable_shared_with_static_runtimes_CXX=yes
 
     if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       # If the export-symbols file already is a .def file (1st line
       # is EXPORTS), use it as is; otherwise, prepend...
       archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
@@ -10582,13 +10773,13 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	echo EXPORTS > $output_objdir/$soname.def;
 	cat $export_symbols >> $output_objdir/$soname.def;
       fi~
-      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+      $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
     else
       ld_shlibs_CXX=no
     fi
   ;;
       darwin* | rhapsody*)
-        case "$host_os" in
+        case $host_os in
         rhapsody* | darwin1.[012])
          allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
          ;;
@@ -10626,7 +10817,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
           archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
         fi
         module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+        # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
           if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
             archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           else
@@ -10639,7 +10830,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
          output_verbose_link_cmd='echo'
           archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
           module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
           archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
@@ -10719,33 +10910,22 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
     ;;
   hpux10*|hpux11*)
     if test $with_gnu_ld = no; then
-      case "$host_cpu" in
-      hppa*64*)
-	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+      hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_CXX=:
+
+      case $host_cpu in
+      hppa*64*|ia64*)
 	hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
-	hardcode_libdir_separator_CXX=:
-        ;;
-      ia64*)
-	hardcode_libdir_flag_spec_CXX='-L$libdir'
         ;;
       *)
-	hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
-	hardcode_libdir_separator_CXX=:
 	export_dynamic_flag_spec_CXX='${wl}-E'
         ;;
       esac
     fi
-    case "$host_cpu" in
-    hppa*64*)
-      hardcode_direct_CXX=no
-      hardcode_shlibpath_var_CXX=no
-      ;;
-    ia64*)
+    case $host_cpu in
+    hppa*64*|ia64*)
       hardcode_direct_CXX=no
       hardcode_shlibpath_var_CXX=no
-      hardcode_minus_L_CXX=yes # Not in the search PATH,
-					      # but as the default
-					      # location of the library.
       ;;
     *)
       hardcode_direct_CXX=yes
@@ -10761,9 +10941,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	ld_shlibs_CXX=no
 	;;
       aCC*)
-	case "$host_cpu" in
-	hppa*64*|ia64*)
-	  archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	  ;;
 	*)
 	  archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
@@ -10782,9 +10965,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       *)
 	if test "$GXX" = yes; then
 	  if test $with_gnu_ld = no; then
-	    case "$host_cpu" in
-	    ia64*|hppa*64*)
-	      archive_cmds_CXX='$LD -b +h $soname -o $lib $linker_flags $libobjs $deplibs'
+	    case $host_cpu in
+	    hppa*64*)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	      ;;
+	    ia64*)
+	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	      ;;
 	    *)
 	      archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
@@ -10798,6 +10984,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	;;
     esac
     ;;
+  interix3*)
+    hardcode_direct_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+    export_dynamic_flag_spec_CXX='${wl}-E'
+    # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+    # Instead, shared libraries are loaded at an image base (0x10000000 by
+    # default) and relocated if they conflict, which is a slow very memory
+    # consuming and fragmenting process.  To avoid this, we pick a random,
+    # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+    # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+    archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+    ;;
   irix5* | irix6*)
     case $cc_basename in
       CC*)
@@ -10883,7 +11083,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
 	hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
 	export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
-	whole_archive_flag_spec_CXX='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
         ;;
       cxx*)
 	# Compaq C++
@@ -11080,19 +11280,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
     # FIXME: insert proper C++ library support
     ld_shlibs_CXX=no
     ;;
-  sco*)
-    archive_cmds_need_lc_CXX=no
-    case $cc_basename in
-      CC*)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-      *)
-	# FIXME: insert proper C++ library support
-	ld_shlibs_CXX=no
-	;;
-    esac
-    ;;
   sunos4*)
     case $cc_basename in
       CC*)
@@ -11115,10 +11302,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
     case $cc_basename in
       CC*)
 	# Sun C++ 4.2, 5.x and Centerline C++
+        archive_cmds_need_lc_CXX=yes
 	no_undefined_flag_CXX=' -zdefs'
-	archive_cmds_CXX='$CC -G${allow_undefined_flag} -nolib -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+	archive_cmds_CXX='$CC -G${allow_undefined_flag}  -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
 	archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-	$CC -G${allow_undefined_flag} -nolib ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
+	$CC -G${allow_undefined_flag}  ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp'
 
 	hardcode_libdir_flag_spec_CXX='-R$libdir'
 	hardcode_shlibpath_var_CXX=no
@@ -11138,15 +11326,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	esac
 	link_all_deplibs_CXX=yes
 
-	# Commands to make compiler produce verbose output that lists
-	# what "hidden" libraries, object files and flags are used when
-	# linking a shared library.
-	#
-	# There doesn't appear to be a way to prevent this compiler from
-	# explicitly linking system object files so we need to strip them
-	# from the output so that they don't get included in the library
-	# dependencies.
-	output_verbose_link_cmd='templist=`$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep "\-[LR]"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+	output_verbose_link_cmd='echo'
 
 	# Archives containing C++ object files must be created using
 	# "CC -xar", where "CC" is the Sun C++ compiler.  This is
@@ -11192,8 +11372,59 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	;;
     esac
     ;;
-  sysv5OpenUNIX8* | sysv5UnixWare7* | sysv5uw[78]* | unixware7*)
+  sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+    no_undefined_flag_CXX='${wl}-z,text'
+    archive_cmds_need_lc_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
+    ;;
+  sysv5* | sco3.2v5* | sco5v6*)
+    # Note: We can NOT use -z defs as we might desire, because we do not
+    # link with -lc, and that would cause any symbols used from libc to
+    # always be unresolved, which means just about no library would
+    # ever link correctly.  If we're not using GNU ld we use -z text
+    # though, which does catch some bad symbols but isn't as heavy-handed
+    # as -z defs.
+    # For security reasons, it is highly recommended that you always
+    # use absolute paths for naming shared libraries, and exclude the
+    # DT_RUNPATH tag from executables and libraries.  But doing so
+    # requires that you compile everything twice, which is a pain.
+    # So that behaviour is only enabled if SCOABSPATH is set to a
+    # non-empty value in the environment.  Most likely only useful for
+    # creating official distributions of packages.
+    # This is a hack until libtool officially supports absolute path
+    # names for shared libraries.
+    no_undefined_flag_CXX='${wl}-z,text'
+    allow_undefined_flag_CXX='${wl}-z,nodefs'
     archive_cmds_need_lc_CXX=no
+    hardcode_shlibpath_var_CXX=no
+    hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+    hardcode_libdir_separator_CXX=':'
+    link_all_deplibs_CXX=yes
+    export_dynamic_flag_spec_CXX='${wl}-Bexport'
+    runpath_var='LD_RUN_PATH'
+
+    case $cc_basename in
+      CC*)
+	archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+      *)
+	archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	;;
+    esac
     ;;
   tandem*)
     case $cc_basename in
@@ -11250,7 +11481,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   # The `*' in the case matches for architectures that use `case' in
   # $output_verbose_cmd can trigger glob expansion during the loop
   # eval without this substitution.
-  output_verbose_link_cmd="`$echo \"X$output_verbose_link_cmd\" | $Xsed -e \"$no_glob_subst\"`"
+  output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
 
   for p in `eval $output_verbose_link_cmd`; do
     case $p in
@@ -11326,6 +11557,29 @@ fi
 
 $rm -f confest.$objext
 
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix3*)
+  # Interix 3.5 installs completely hosed .la files for C++, so rather than
+  # hack all around it, let's just trust "g++" to DTRT.
+  predep_objects_CXX=
+  postdep_objects_CXX=
+  postdeps_CXX=
+  ;;
+
+solaris*)
+  case $cc_basename in
+  CC*)
+    # Adding this requires a known-good setup of shared libraries for
+    # Sun compiler versions before 5.6, else PIC objects from an old
+    # archive will be linked into the output, leading to subtle bugs.
+    postdeps_CXX='-lCstd -lCrun'
+    ;;
+  esac
+  ;;
+esac
+
+
 case " $postdeps_CXX " in
 *" -lc "*) archive_cmds_need_lc_CXX=no ;;
 esac
@@ -11373,6 +11627,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       # DJGPP does not support shared libraries at all
       lt_prog_compiler_pic_CXX=
       ;;
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
     sysv4*MP*)
       if test -d /usr/nec; then
 	lt_prog_compiler_pic_CXX=-Kconform_pic
@@ -11381,7 +11639,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
     hpux*)
       # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
       # not for PA HP-UX.
-      case "$host_cpu" in
+      case $host_cpu in
       hppa*64*|ia64*)
 	;;
       *)
@@ -11442,15 +11700,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 	case $cc_basename in
 	  CC*)
 	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
 	    if test "$host_cpu" != ia64; then
 	      lt_prog_compiler_pic_CXX='+Z'
 	    fi
 	    ;;
 	  aCC*)
 	    lt_prog_compiler_wl_CXX='-Wl,'
-	    lt_prog_compiler_static_CXX="${ac_cv_prog_cc_wl}-a ${ac_cv_prog_cc_wl}archive"
-	    case "$host_cpu" in
+	    lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+	    case $host_cpu in
 	    hppa*64*|ia64*)
 	      # +Z the default
 	      ;;
@@ -11463,6 +11721,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 	    ;;
 	esac
 	;;
+      interix*)
+	# This is c89, which is MS Visual C++ (no shared libs)
+	# Anyone wants to do a port?
+	;;
       irix5* | irix6* | nonstopux*)
 	case $cc_basename in
 	  CC*)
@@ -11491,7 +11753,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 	    # Portland Group C++ compiler.
 	    lt_prog_compiler_wl_CXX='-Wl,'
 	    lt_prog_compiler_pic_CXX='-fpic'
-	    lt_prog_compiler_static_CXX='-static'
+	    lt_prog_compiler_static_CXX='-Bstatic'
 	    ;;
 	  cxx*)
 	    # Compaq C++
@@ -11542,15 +11804,6 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 	;;
       psos*)
 	;;
-      sco*)
-	case $cc_basename in
-	  CC*)
-	    lt_prog_compiler_pic_CXX='-fPIC'
-	    ;;
-	  *)
-	    ;;
-	esac
-	;;
       solaris*)
 	case $cc_basename in
 	  CC*)
@@ -11592,7 +11845,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 	    ;;
 	esac
 	;;
-      unixware*)
+      sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+	case $cc_basename in
+	  CC*)
+	    lt_prog_compiler_wl_CXX='-Wl,'
+	    lt_prog_compiler_pic_CXX='-KPIC'
+	    lt_prog_compiler_static_CXX='-Bstatic'
+	    ;;
+	esac
 	;;
       vxworks*)
 	;;
@@ -11625,20 +11885,20 @@ else
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    # The option is referenced via a variable to avoid confusing sed.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:11631: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11891: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:11635: \$? = $ac_status" >&5
+   echo "$as_me:11895: \$? = $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.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-     $SED '/^$/d' conftest.err >conftest.er2
-     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_prog_compiler_pic_works_CXX=yes
      fi
    fi
@@ -11659,7 +11919,7 @@ else
 fi
 
 fi
-case "$host_os" in
+case $host_os in
   # For platforms which do not support PIC, -DPIC is meaningless:
   *djgpp*)
     lt_prog_compiler_pic_CXX=
@@ -11669,6 +11929,48 @@ case "$host_os" in
     ;;
 esac
 
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works_CXX=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works_CXX=yes
+       fi
+     else
+       lt_prog_compiler_static_works_CXX=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6
+
+if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+    :
+else
+    lt_prog_compiler_static_CXX=
+fi
+
+
 echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
 echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
 if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
@@ -11687,25 +11989,25 @@ else
    # Note that $ac_compile itself does not contain backslashes and begins
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:11693: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11995: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:11697: \$? = $ac_status" >&5
+   echo "$as_me:11999: \$? = $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
      # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-     $SED '/^$/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o_CXX=yes
      fi
    fi
-   chmod u+w .
+   chmod u+w . 2>&5
    $rm conftest*
    # SGI C++ compiler will create directory out/ii_files/ for
    # template instantiation
@@ -11771,11 +12073,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
 echo "${ECHO_T}$ld_shlibs_CXX" >&6
 test "$ld_shlibs_CXX" = no && can_build_shared=no
 
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
 #
 # Do we need to explicitly link libc?
 #
@@ -11808,6 +12105,7 @@ echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&
         libobjs=conftest.$ac_objext
         deplibs=
         wl=$lt_prog_compiler_wl_CXX
+	pic_flag=$lt_prog_compiler_pic_CXX
         compiler_flags=-v
         linker_flags=-v
         verstring=
@@ -11968,7 +12266,8 @@ cygwin* | mingw* | pw32*)
       dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
     postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
       dlpath=$dir/\$dldll~
        $rm \$dlpath'
@@ -12021,7 +12320,7 @@ darwin* | rhapsody*)
   soname_spec='${libname}${release}${major}$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
   # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
   if test "$GCC" = yes; then
     sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
@@ -12059,7 +12358,14 @@ kfreebsd*-gnu)
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
-  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
@@ -12081,10 +12387,15 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
-  *) # from 3.2 on
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
   esac
   ;;
 
@@ -12104,7 +12415,7 @@ hpux9* | hpux10* | hpux11*)
   version_type=sunos
   need_lib_prefix=no
   need_version=no
-  case "$host_cpu" in
+  case $host_cpu in
   ia64*)
     shrext_cmds='.so'
     hardcode_into_libs=yes
@@ -12144,6 +12455,18 @@ hpux9* | hpux10* | hpux11*)
   postinstall_cmds='chmod 555 $lib'
   ;;
 
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
 irix5* | irix6* | nonstopux*)
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
@@ -12265,6 +12588,7 @@ nto-qnx*)
 
 openbsd*)
   version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
   need_lib_prefix=no
   # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
   case $host_os in
@@ -12308,13 +12632,6 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -12340,7 +12657,7 @@ sunos4*)
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -12373,6 +12690,29 @@ sysv4*MP*)
   fi
   ;;
 
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
 uts4*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -12388,6 +12728,11 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
 echo "${ECHO_T}$dynamic_linker" >&6
 test "$dynamic_linker" = no && can_build_shared=no
 
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
 echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
 hardcode_action_CXX=
@@ -12425,1339 +12770,995 @@ elif test "$shlibpath_overrides_runpath" = yes ||
   enable_fast_install=needless
 fi
 
-striplib=
-old_striplib=
-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-   darwin*)
-       if test -n "$STRIP" ; then
-         striplib="$STRIP -x"
-         echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-       else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-       ;;
-   *)
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-    ;;
-  esac
-fi
 
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+  # See if we are running on zsh, and set the options which allow our commands through
+  # without removal of \ escapes.
+  if test -n "${ZSH_VERSION+set}" ; then
+    setopt NO_GLOB_SUBST
+  fi
+  # Now quote all the things that may contain metacharacters while being
+  # careful not to overquote the AC_SUBSTed values.  We take copies of the
+  # variables and quote the copies for generation of the libtool script.
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+    SED SHELL STRIP \
+    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+    deplibs_check_method reload_flag reload_cmds need_locks \
+    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+    lt_cv_sys_global_symbol_to_c_name_address \
+    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+    old_postinstall_cmds old_postuninstall_cmds \
+    compiler_CXX \
+    CC_CXX \
+    LD_CXX \
+    lt_prog_compiler_wl_CXX \
+    lt_prog_compiler_pic_CXX \
+    lt_prog_compiler_static_CXX \
+    lt_prog_compiler_no_builtin_flag_CXX \
+    export_dynamic_flag_spec_CXX \
+    thread_safe_flag_spec_CXX \
+    whole_archive_flag_spec_CXX \
+    enable_shared_with_static_runtimes_CXX \
+    old_archive_cmds_CXX \
+    old_archive_from_new_cmds_CXX \
+    predep_objects_CXX \
+    postdep_objects_CXX \
+    predeps_CXX \
+    postdeps_CXX \
+    compiler_lib_search_path_CXX \
+    archive_cmds_CXX \
+    archive_expsym_cmds_CXX \
+    postinstall_cmds_CXX \
+    postuninstall_cmds_CXX \
+    old_archive_from_expsyms_cmds_CXX \
+    allow_undefined_flag_CXX \
+    no_undefined_flag_CXX \
+    export_symbols_cmds_CXX \
+    hardcode_libdir_flag_spec_CXX \
+    hardcode_libdir_flag_spec_ld_CXX \
+    hardcode_libdir_separator_CXX \
+    hardcode_automatic_CXX \
+    module_cmds_CXX \
+    module_expsym_cmds_CXX \
+    lt_cv_prog_compiler_c_o_CXX \
+    exclude_expsyms_CXX \
+    include_expsyms_CXX; do
 
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
+    case $var in
+    old_archive_cmds_CXX | \
+    old_archive_from_new_cmds_CXX | \
+    archive_cmds_CXX | \
+    archive_expsym_cmds_CXX | \
+    module_cmds_CXX | \
+    module_expsym_cmds_CXX | \
+    old_archive_from_expsyms_cmds_CXX | \
+    export_symbols_cmds_CXX | \
+    extract_expsyms_cmds | reload_cmds | finish_cmds | \
+    postinstall_cmds | postuninstall_cmds | \
+    old_postinstall_cmds | old_postuninstall_cmds | \
+    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+      # Double-quote double-evaled strings.
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+      ;;
+    *)
+      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+      ;;
+    esac
+  done
+
+  case $lt_echo in
+  *'\$0 --fallback-echo"')
+    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
     ;;
+  esac
 
-  mingw* | pw32*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-   ;;
+cfgfile="$ofile"
 
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-   ;;
+  cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
 
-  darwin*)
-  # if libdl is installed we need to link against it
-    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_dl_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
 
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
 
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
 
-fi
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
 
-   ;;
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
 
-  *)
-    echo "$as_me:$LINENO: checking for shl_load" >&5
-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-if test "${ac_cv_func_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define shl_load innocuous_shl_load
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shl_load (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+# The host system.
+host_alias=$host_alias
+host=$host
+host_os=$host_os
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+# The build system.
+build_alias=$build_alias
+build=$build
+build_os=$build_os
 
-#undef shl_load
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char shl_load ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_shl_load) || defined (__stub___shl_load)
-choke me
-#else
-char (*f) () = shl_load;
-#endif
-#ifdef __cplusplus
-}
-#endif
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
 
-int
-main ()
-{
-return f != shl_load;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_shl_load=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+# A C compiler.
+LTCC=$lt_LTCC
 
-ac_cv_func_shl_load=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-if test $ac_cv_func_shl_load = yes; then
-  lt_cv_dlopen="shl_load"
-else
-  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char shl_load ();
-int
-main ()
-{
-shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_dld_shl_load=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+# A language-specific compiler.
+CC=$lt_compiler_CXX
 
-ac_cv_lib_dld_shl_load=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-if test $ac_cv_lib_dld_shl_load = yes; then
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-else
-  echo "$as_me:$LINENO: checking for dlopen" >&5
-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-if test "${ac_cv_func_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define dlopen innocuous_dlopen
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
 
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char dlopen (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
+# An ERE matcher.
+EGREP=$lt_EGREP
 
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
+# The linker used to build libraries.
+LD=$lt_LD_CXX
 
-#undef dlopen
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-char (*f) () = dlopen;
-#endif
-#ifdef __cplusplus
-}
-#endif
+# A BSD-compatible nm program.
+NM=$lt_NM
 
-int
-main ()
-{
-return f != dlopen;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+# A symbol stripping program
+STRIP=$lt_STRIP
 
-ac_cv_func_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-if test $ac_cv_func_dlopen = yes; then
-  lt_cv_dlopen="dlopen"
-else
-  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_dl_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
 
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_svld_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+# Used on cygwin: assembler.
+AS="$AS"
 
-ac_cv_lib_svld_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-if test $ac_cv_lib_svld_dlopen = yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dld_link ();
-int
-main ()
-{
-dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_cxx_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_dld_dld_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
 
-ac_cv_lib_dld_dld_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-if test $ac_cv_lib_dld_dld_link = yes; then
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
-fi
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
 
+# Object file suffix (normally "o").
+objext="$ac_objext"
 
-fi
+# Old archive suffix (normally "a").
+libext="$libext"
 
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
 
-fi
+# Executable file suffix (normally "").
+exeext="$exeext"
 
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
 
-fi
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
 
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
 
-fi
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
 
+# Do we need the lib prefix for modules?
+need_lib_prefix=$need_lib_prefix
 
-fi
+# Do we need a version for libraries?
+need_version=$need_version
 
-    ;;
-  esac
+# Whether dlopen is supported.
+dlopen_support=$enable_dlopen
 
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
+# Whether dlopen of programs is supported.
+dlopen_self=$enable_dlopen_self
 
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
+# Whether dlopen of statically linked programs is supported.
+dlopen_self_static=$enable_dlopen_self_static
 
-    save_LDFLAGS="$LDFLAGS"
-    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
 
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
 
-    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<EOF
-#line 13062 "configure"
-#include "confdefs.h"
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
 
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
 
-#include <stdio.h>
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
 
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
+# Library versioning type.
+version_type=$version_type
 
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
+# Format of library name prefix.
+libname_spec=$lt_libname_spec
 
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
+# List of archive names.  First name is the real one, the rest are links.
+# The last name is the one that the linker finds with -lNAME.
+library_names_spec=$lt_library_names_spec
 
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
+# The coded name of the library, if different from the real name.
+soname_spec=$lt_soname_spec
 
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
 
-    exit (status);
-}
-EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
 
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
 
-fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
 
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      LDFLAGS="$LDFLAGS $link_static_flag"
-      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self_static+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<EOF
-#line 13160 "configure"
-#include "confdefs.h"
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
 
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
 
-#include <stdio.h>
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
 
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
 
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
 
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
 
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
 
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
+# Method to check whether dependent libraries are shared objects.
+deplibs_check_method=$lt_deplibs_check_method
 
-    exit (status);
-}
-EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
+# Command to use when deplibs_check_method == file_magic.
+file_magic_cmd=$lt_file_magic_cmd
 
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
 
-fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
-    fi
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
 
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
 
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
 
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
+# Take the output of nm and produce a listing of raw symbols and C names.
+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
 
+# Transform the output of nm in a proper C declaration
+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
 
-# The else clause should only fire when bootstrapping the
-# libtool distribution, otherwise you forgot to ship ltmain.sh
-# with your package, and you will get complaints that there are
-# no rules to generate ltmain.sh.
-if test -f "$ltmain"; then
-  # See if we are running on zsh, and set the options which allow our commands through
-  # without removal of \ escapes.
-  if test -n "${ZSH_VERSION+set}" ; then
-    setopt NO_GLOB_SUBST
-  fi
-  # Now quote all the things that may contain metacharacters while being
-  # careful not to overquote the AC_SUBSTed values.  We take copies of the
-  # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
-    SED SHELL STRIP \
-    libname_spec library_names_spec soname_spec extract_expsyms_cmds \
-    old_striplib striplib file_magic_cmd finish_cmds finish_eval \
-    deplibs_check_method reload_flag reload_cmds need_locks \
-    lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
-    lt_cv_sys_global_symbol_to_c_name_address \
-    sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
-    old_postinstall_cmds old_postuninstall_cmds \
-    compiler_CXX \
-    CC_CXX \
-    LD_CXX \
-    lt_prog_compiler_wl_CXX \
-    lt_prog_compiler_pic_CXX \
-    lt_prog_compiler_static_CXX \
-    lt_prog_compiler_no_builtin_flag_CXX \
-    export_dynamic_flag_spec_CXX \
-    thread_safe_flag_spec_CXX \
-    whole_archive_flag_spec_CXX \
-    enable_shared_with_static_runtimes_CXX \
-    old_archive_cmds_CXX \
-    old_archive_from_new_cmds_CXX \
-    predep_objects_CXX \
-    postdep_objects_CXX \
-    predeps_CXX \
-    postdeps_CXX \
-    compiler_lib_search_path_CXX \
-    archive_cmds_CXX \
-    archive_expsym_cmds_CXX \
-    postinstall_cmds_CXX \
-    postuninstall_cmds_CXX \
-    old_archive_from_expsyms_cmds_CXX \
-    allow_undefined_flag_CXX \
-    no_undefined_flag_CXX \
-    export_symbols_cmds_CXX \
-    hardcode_libdir_flag_spec_CXX \
-    hardcode_libdir_flag_spec_ld_CXX \
-    hardcode_libdir_separator_CXX \
-    hardcode_automatic_CXX \
-    module_cmds_CXX \
-    module_expsym_cmds_CXX \
-    lt_cv_prog_compiler_c_o_CXX \
-    exclude_expsyms_CXX \
-    include_expsyms_CXX; do
+# Transform the output of nm in a C name address pair
+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
 
-    case $var in
-    old_archive_cmds_CXX | \
-    old_archive_from_new_cmds_CXX | \
-    archive_cmds_CXX | \
-    archive_expsym_cmds_CXX | \
-    module_cmds_CXX | \
-    module_expsym_cmds_CXX | \
-    old_archive_from_expsyms_cmds_CXX | \
-    export_symbols_cmds_CXX | \
-    extract_expsyms_cmds | reload_cmds | finish_cmds | \
-    postinstall_cmds | postuninstall_cmds | \
-    old_postinstall_cmds | old_postuninstall_cmds | \
-    sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
-      # Double-quote double-evaled strings.
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
-      ;;
-    *)
-      eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
-      ;;
-    esac
-  done
-
-  case $lt_echo in
-  *'\$0 --fallback-echo"')
-    lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
-    ;;
-  esac
-
-cfgfile="$ofile"
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
 
-  cat <<__EOF__ >> "$cfgfile"
-# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
 
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
 
-# Shell to use when invoking shell scripts.
-SHELL=$lt_SHELL
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
 
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
 
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
 
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc_CXX
+# If ld is used when linking, flag to hardcode \$libdir into
+# a binary during linking. This must work even if \$libdir does
+# not exist.
+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
 
-# Whether or not to disallow shared libs when runtime libs are static
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
 
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
 
-# The host system.
-host_alias=$host_alias
-host=$host
-host_os=$host_os
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
 
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
 
-# An echo program that does not interpret backslashes.
-echo=$lt_echo
+# Set to yes if building a shared library automatically hardcodes DIR into the library
+# and all subsequent libraries and executables linked against it.
+hardcode_automatic=$hardcode_automatic_CXX
 
-# The archiver.
-AR=$lt_AR
-AR_FLAGS=$lt_AR_FLAGS
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
 
-# A C compiler.
-LTCC=$lt_LTCC
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
 
-# A language-specific compiler.
-CC=$lt_compiler_CXX
+# Compile-time system search path for libraries
+sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
 
-# Is the compiler the GNU C compiler?
-with_gcc=$GCC_CXX
+# Run-time system search path for libraries
+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
 
-# An ERE matcher.
-EGREP=$lt_EGREP
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
 
-# The linker used to build libraries.
-LD=$lt_LD_CXX
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
 
-# Whether we need hard or soft links.
-LN_S=$lt_LN_S
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
 
-# A BSD-compatible nm program.
-NM=$lt_NM
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
 
-# A symbol stripping program
-STRIP=$lt_STRIP
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
 
-# Used to examine libraries when file_magic_cmd begins "file"
-MAGIC_CMD=$MAGIC_CMD
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
 
-# Used on cygwin: DLL creation program.
-DLLTOOL="$DLLTOOL"
+# ### END LIBTOOL TAG CONFIG: $tagname
 
-# Used on cygwin: object dumper.
-OBJDUMP="$OBJDUMP"
+__EOF__
 
-# Used on cygwin: assembler.
-AS="$AS"
 
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
+else
+  # If there is no Makefile yet, we rely on a make rule to execute
+  # `config.status --recheck' to rerun these tests and create the
+  # libtool script then.
+  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+  if test -f "$ltmain_in"; then
+    test -f Makefile && make "$ltmain"
+  fi
+fi
 
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
 
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl_CXX
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-# Object file suffix (normally "o").
-objext="$ac_objext"
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+with_gnu_ld=$lt_save_with_gnu_ld
+lt_cv_path_LDCXX=$lt_cv_path_LD
+lt_cv_path_LD=$lt_save_path_LD
+lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
+lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
 
-# Old archive suffix (normally "a").
-libext="$libext"
+	else
+	  tagname=""
+	fi
+	;;
 
-# Shared library suffix (normally ".so").
-shrext_cmds='$shrext_cmds'
+      F77)
+	if test -n "$F77" && test "X$F77" != "Xno"; then
 
-# Executable file suffix (normally "").
-exeext="$exeext"
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
 
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic_CXX
-pic_mode=$pic_mode
 
-# What is the maximum length of a command?
-max_cmd_len=$lt_cv_sys_max_cmd_len
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
 
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+# Source file extension for f77 test sources.
+ac_ext=f
 
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
 
-# Do we need the lib prefix for modules?
-need_lib_prefix=$need_lib_prefix
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
 
-# Do we need a version for libraries?
-need_version=$need_version
+# Code to be used in simple link tests
+lt_simple_link_test_code="      program t\n      end\n"
 
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
 
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
+# If no C compiler was specified, use CC.
+LTCC=${LTCC-"$CC"}
 
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
 
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static_CXX
+# Allow CC to be a program name with arguments.
+compiler=$CC
 
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
 
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+# save warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_compiler_boilerplate=`cat conftest.err`
+$rm conftest*
 
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+ac_outfile=conftest.$ac_objext
+printf "$lt_simple_link_test_code" >conftest.$ac_ext
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
+_lt_linker_boilerplate=`cat conftest.err`
+$rm conftest*
 
-# Compiler flag to generate thread-safe objects.
-thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
 
-# Library versioning type.
-version_type=$version_type
-
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
-
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME.
-library_names_spec=$lt_library_names_spec
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+  case $cc_temp in
+    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+    \-*) ;;
+    *) break;;
+  esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
 
-# Commands used to build and install an old-style archive.
-RANLIB=$lt_RANLIB
-old_archive_cmds=$lt_old_archive_cmds_CXX
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
+echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6
 
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
+test "$can_build_shared" = "no" && enable_shared=no
 
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+# On AIX, shared libraries and static libraries use the same namespace, and
+# are all built from PIC.
+case $host_os in
+aix3*)
+  test "$enable_shared" = yes && enable_static=no
+  if test -n "$RANLIB"; then
+    archive_cmds="$archive_cmds~\$RANLIB \$lib"
+    postinstall_cmds='$RANLIB $lib'
+  fi
+  ;;
+aix4* | aix5*)
+  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+    test "$enable_shared" = yes && enable_static=no
+  fi
+  ;;
+esac
+echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6
 
-# Commands used to build and install a shared archive.
-archive_cmds=$lt_archive_cmds_CXX
-archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
-postinstall_cmds=$lt_postinstall_cmds
-postuninstall_cmds=$lt_postuninstall_cmds
+echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6
 
-# Commands used to build a loadable module (assumed same as above if empty)
-module_cmds=$lt_module_cmds_CXX
-module_expsym_cmds=$lt_module_expsym_cmds_CXX
+GCC_F77="$G77"
+LD_F77="$LD"
 
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
 
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predep_objects=$lt_predep_objects_CXX
+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdep_objects=$lt_postdep_objects_CXX
+  if test "$GCC" = yes; then
+    lt_prog_compiler_wl_F77='-Wl,'
+    lt_prog_compiler_static_F77='-static'
 
-# Dependencies to place before the objects being linked to create a
-# shared library.
-predeps=$lt_predeps_CXX
+    case $host_os in
+      aix*)
+      # All AIX code is PIC.
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
 
-# Dependencies to place after the objects being linked to create a
-# shared library.
-postdeps=$lt_postdeps_CXX
+    amigaos*)
+      # FIXME: we need at least 68020 code to build shared libraries, but
+      # adding the `-m68020' flag to GCC prevents building anything better,
+      # like `-m68040'.
+      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
+      ;;
 
-# The library search path used internally by the compiler when linking
-# a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+      # PIC is the default for these OSes.
+      ;;
 
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
 
-# Command to use when deplibs_check_method == file_magic.
-file_magic_cmd=$lt_file_magic_cmd
+    darwin* | rhapsody*)
+      # PIC is the default on this platform
+      # Common symbols not allowed in MH_DYLIB files
+      lt_prog_compiler_pic_F77='-fno-common'
+      ;;
 
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag_CXX
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
 
-# Flag that forces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag_CXX
+    msdosdjgpp*)
+      # Just because we use GCC doesn't mean we suddenly get shared libraries
+      # on systems that don't support them.
+      lt_prog_compiler_can_build_shared_F77=no
+      enable_shared=no
+      ;;
 
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	lt_prog_compiler_pic_F77=-Kconform_pic
+      fi
+      ;;
 
-# Same as above, but a single script fragment to be evaled but not shown.
-finish_eval=$lt_finish_eval
+    hpux*)
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='-fPIC'
+	;;
+      esac
+      ;;
 
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
+    *)
+      lt_prog_compiler_pic_F77='-fPIC'
+      ;;
+    esac
+  else
+    # PORTME Check for flag to pass linker flags through the system compiler.
+    case $host_os in
+    aix*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      if test "$host_cpu" = ia64; then
+	# AIX 5 now supports IA64 processor
+	lt_prog_compiler_static_F77='-Bstatic'
+      else
+	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+      fi
+      ;;
+      darwin*)
+        # PIC is the default on this platform
+        # Common symbols not allowed in MH_DYLIB files
+       case $cc_basename in
+         xlc*)
+         lt_prog_compiler_pic_F77='-qnocommon'
+         lt_prog_compiler_wl_F77='-Wl,'
+         ;;
+       esac
+       ;;
 
-# Transform the output of nm in a proper C declaration
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
+    mingw* | pw32* | os2*)
+      # This hack is so that the source file can tell whether it is being
+      # built for inclusion in a dll (and should export symbols for example).
+      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
+      ;;
 
-# Transform the output of nm in a C name address pair
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
+    hpux9* | hpux10* | hpux11*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
+      # not for PA HP-UX.
+      case $host_cpu in
+      hppa*64*|ia64*)
+	# +Z the default
+	;;
+      *)
+	lt_prog_compiler_pic_F77='+Z'
+	;;
+      esac
+      # Is there a better lt_prog_compiler_static that works with the bundled CC?
+      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+      ;;
 
-# This is the shared library runtime path variable.
-runpath_var=$runpath_var
+    irix5* | irix6* | nonstopux*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # PIC (with -KPIC) is the default.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
 
-# This is the shared library path variable.
-shlibpath_var=$shlibpath_var
+    newsos6)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
 
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+    linux*)
+      case $cc_basename in
+      icc* | ecc*)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-KPIC'
+	lt_prog_compiler_static_F77='-static'
+        ;;
+      pgcc* | pgf77* | pgf90* | pgf95*)
+        # Portland Group compilers (*not* the Pentium gcc compiler,
+	# which looks to be a dead project)
+	lt_prog_compiler_wl_F77='-Wl,'
+	lt_prog_compiler_pic_F77='-fpic'
+	lt_prog_compiler_static_F77='-Bstatic'
+        ;;
+      ccc*)
+        lt_prog_compiler_wl_F77='-Wl,'
+        # All Alpha code is PIC.
+        lt_prog_compiler_static_F77='-non_shared'
+        ;;
+      esac
+      ;;
 
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action_CXX
+    osf3* | osf4* | osf5*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      # All OSF/1 code is PIC.
+      lt_prog_compiler_static_F77='-non_shared'
+      ;;
 
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
-
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist.
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX
+    solaris*)
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      case $cc_basename in
+      f77* | f90* | f95*)
+	lt_prog_compiler_wl_F77='-Qoption ld ';;
+      *)
+	lt_prog_compiler_wl_F77='-Wl,';;
+      esac
+      ;;
 
-# If ld is used when linking, flag to hardcode \$libdir into
-# a binary during linking. This must work even if \$libdir does
-# not exist.
-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX
+    sunos4*)
+      lt_prog_compiler_wl_F77='-Qoption ld '
+      lt_prog_compiler_pic_F77='-PIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
 
-# Whether we need a single -rpath flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+    sysv4 | sysv4.2uw2* | sysv4.3*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
 
-# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
-# resulting binary.
-hardcode_direct=$hardcode_direct_CXX
+    sysv4*MP*)
+      if test -d /usr/nec ;then
+	lt_prog_compiler_pic_F77='-Kconform_pic'
+	lt_prog_compiler_static_F77='-Bstatic'
+      fi
+      ;;
 
-# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
-# resulting binary.
-hardcode_minus_L=$hardcode_minus_L_CXX
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_pic_F77='-KPIC'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
 
-# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
-# the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+    unicos*)
+      lt_prog_compiler_wl_F77='-Wl,'
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
 
-# Set to yes if building a shared library automatically hardcodes DIR into the library
-# and all subsequent libraries and executables linked against it.
-hardcode_automatic=$hardcode_automatic_CXX
+    uts4*)
+      lt_prog_compiler_pic_F77='-pic'
+      lt_prog_compiler_static_F77='-Bstatic'
+      ;;
 
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at relink time.
-variables_saved_for_relink="$variables_saved_for_relink"
+    *)
+      lt_prog_compiler_can_build_shared_F77=no
+      ;;
+    esac
+  fi
 
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs_CXX
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
 
-# Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
 
-# Run-time system search path for libraries
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_pic_works_F77=no
+  ac_outfile=conftest.$ac_objext
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+   lt_compiler_flag="$lt_prog_compiler_pic_F77"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   # The option is referenced via a variable to avoid confusing sed.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -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:13565: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>conftest.err)
+   ac_status=$?
+   cat conftest.err >&5
+   echo "$as_me:13569: \$? = $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.
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+       lt_prog_compiler_pic_works_F77=yes
+     fi
+   fi
+   $rm conftest*
 
-# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path_CXX"
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
 
-# Set to yes if exported symbols are required.
-always_export_symbols=$always_export_symbols_CXX
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+    case $lt_prog_compiler_pic_F77 in
+     "" | " "*) ;;
+     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+     esac
+else
+    lt_prog_compiler_pic_F77=
+     lt_prog_compiler_can_build_shared_F77=no
+fi
 
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds_CXX
+fi
+case $host_os in
+  # For platforms which do not support PIC, -DPIC is meaningless:
+  *djgpp*)
+    lt_prog_compiler_pic_F77=
+    ;;
+  *)
+    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+    ;;
+esac
 
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_prog_compiler_static_works_F77=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works_F77=yes
+       fi
+     else
+       lt_prog_compiler_static_works_F77=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
 
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms_CXX
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6
 
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms_CXX
+if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+    :
+else
+    lt_prog_compiler_static_F77=
+fi
 
-# ### END LIBTOOL TAG CONFIG: $tagname
 
-__EOF__
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_F77=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
 
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
+   # with a dollar sign (not a hyphen), so the echo should work correctly.
+   lt_compile=`echo "$ac_compile" | $SED \
+   -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:13669: $lt_compile\"" >&5)
+   (eval "$lt_compile" 2>out/conftest.err)
+   ac_status=$?
+   cat out/conftest.err >&5
+   echo "$as_me:13673: \$? = $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
+     # So say no if there are warnings
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+       lt_cv_prog_compiler_c_o_F77=yes
+     fi
+   fi
+   chmod u+w . 2>&5
+   $rm conftest*
+   # SGI C++ compiler will create directory out/ii_files/ for
+   # template instantiation
+   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
+   $rm out/* && rmdir out
+   cd ..
+   rmdir conftest
+   $rm conftest*
 
-else
-  # If there is no Makefile yet, we rely on a make rule to execute
-  # `config.status --recheck' to rerun these tests and create the
-  # libtool script then.
-  ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
-  if test -f "$ltmain_in"; then
-    test -f Makefile && make "$ltmain"
-  fi
 fi
+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
 
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC=$lt_save_CC
-LDCXX=$LD
-LD=$lt_save_LD
-GCC=$lt_save_GCC
-with_gnu_ldcxx=$with_gnu_ld
-with_gnu_ld=$lt_save_with_gnu_ld
-lt_cv_path_LDCXX=$lt_cv_path_LD
-lt_cv_path_LD=$lt_save_path_LD
-lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld
-lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+  # do not overwrite the value of need_locks provided by the user
+  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
+  hard_links=yes
+  $rm conftest*
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  touch conftest.a
+  ln conftest.a conftest.b 2>&5 || hard_links=no
+  ln conftest.a conftest.b 2>/dev/null && hard_links=no
+  echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6
+  if test "$hard_links" = no; then
+    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
+    need_locks=warn
+  fi
+else
+  need_locks=no
+fi
 
-	else
-	  tagname=""
-	fi
-	;;
+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
 
-      F77)
-	if test -n "$F77" && test "X$F77" != "Xno"; then
-
-ac_ext=f
-ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
-ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_f77_compiler_gnu
-
-
-archive_cmds_need_lc_F77=no
-allow_undefined_flag_F77=
-always_export_symbols_F77=no
-archive_expsym_cmds_F77=
-export_dynamic_flag_spec_F77=
-hardcode_direct_F77=no
-hardcode_libdir_flag_spec_F77=
-hardcode_libdir_flag_spec_ld_F77=
-hardcode_libdir_separator_F77=
-hardcode_minus_L_F77=no
-hardcode_automatic_F77=no
-module_cmds_F77=
-module_expsym_cmds_F77=
-link_all_deplibs_F77=unknown
-old_archive_cmds_F77=$old_archive_cmds
-no_undefined_flag_F77=
-whole_archive_flag_spec_F77=
-enable_shared_with_static_runtimes_F77=no
-
-# Source file extension for f77 test sources.
-ac_ext=f
-
-# Object file extension for compiled f77 test sources.
-objext=o
-objext_F77=$objext
-
-# Code to be used in simple compile tests
-lt_simple_compile_test_code="      subroutine t\n      return\n      end\n"
-
-# Code to be used in simple link tests
-lt_simple_link_test_code="      program t\n      end\n"
-
-# ltmain only uses $CC for tagged configurations so make sure $CC is set.
-
-# If no C compiler was specified, use CC.
-LTCC=${LTCC-"$CC"}
-
-# Allow CC to be a program name with arguments.
-compiler=$CC
-
-
-# save warnings/boilerplate of simple test code
-ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
-_lt_compiler_boilerplate=`cat conftest.err`
-$rm conftest*
-
-ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
-_lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
-
-
-# Allow CC to be a program name with arguments.
-lt_save_CC="$CC"
-CC=${F77-"f77"}
-compiler=$CC
-compiler_F77=$CC
-for cc_temp in $compiler""; do
+  runpath_var=
+  allow_undefined_flag_F77=
+  enable_shared_with_static_runtimes_F77=no
+  archive_cmds_F77=
+  archive_expsym_cmds_F77=
+  old_archive_From_new_cmds_F77=
+  old_archive_from_expsyms_cmds_F77=
+  export_dynamic_flag_spec_F77=
+  whole_archive_flag_spec_F77=
+  thread_safe_flag_spec_F77=
+  hardcode_libdir_flag_spec_F77=
+  hardcode_libdir_flag_spec_ld_F77=
+  hardcode_libdir_separator_F77=
+  hardcode_direct_F77=no
+  hardcode_minus_L_F77=no
+  hardcode_shlibpath_var_F77=unsupported
+  link_all_deplibs_F77=unknown
+  hardcode_automatic_F77=no
+  module_cmds_F77=
+  module_expsym_cmds_F77=
+  always_export_symbols_F77=no
+  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+  # include_expsyms should be a list of space-separated symbols to be *always*
+  # included in the symbol list
+  include_expsyms_F77=
+  # exclude_expsyms can be an extended regexp of symbols to exclude
+  # it will be wrapped by ` (' and `)$', so one must not match beginning or
+  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
+  # as well as any symbol that contains `d'.
+  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
+  # platforms (ab)use it in PIC code, but their linkers get confused if
+  # the symbol is explicitly referenced.  Since portable code cannot
+  # rely on this symbol name, it's probably fine to never include it in
+  # preloaded symbol tables.
+  extract_expsyms_cmds=
+  # Just being paranoid about ensuring that cc_basename is set.
+  for cc_temp in $compiler""; do
   case $cc_temp in
     compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
     distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
@@ -13767,500 +13768,460 @@ for cc_temp in $compiler""; do
 done
 cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
 
+  case $host_os in
+  cygwin* | mingw* | pw32*)
+    # FIXME: the MSVC++ port hasn't been tested in a loooong time
+    # When not using gcc, we currently assume that we are using
+    # Microsoft Visual C++.
+    if test "$GCC" != yes; then
+      with_gnu_ld=no
+    fi
+    ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
+  openbsd*)
+    with_gnu_ld=no
+    ;;
+  esac
 
-echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
-echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6
-echo "$as_me:$LINENO: result: $can_build_shared" >&5
-echo "${ECHO_T}$can_build_shared" >&6
-
-echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
-echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6
-test "$can_build_shared" = "no" && enable_shared=no
-
-# On AIX, shared libraries and static libraries use the same namespace, and
-# are all built from PIC.
-case "$host_os" in
-aix3*)
-  test "$enable_shared" = yes && enable_static=no
-  if test -n "$RANLIB"; then
-    archive_cmds="$archive_cmds~\$RANLIB \$lib"
-    postinstall_cmds='$RANLIB $lib'
-  fi
-  ;;
-aix4* | aix5*)
-  if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-    test "$enable_shared" = yes && enable_static=no
-  fi
-  ;;
-esac
-echo "$as_me:$LINENO: result: $enable_shared" >&5
-echo "${ECHO_T}$enable_shared" >&6
-
-echo "$as_me:$LINENO: checking whether to build static libraries" >&5
-echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6
-# Make sure either enable_shared or enable_static is yes.
-test "$enable_shared" = yes || enable_static=yes
-echo "$as_me:$LINENO: result: $enable_static" >&5
-echo "${ECHO_T}$enable_static" >&6
-
-test "$ld_shlibs_F77" = no && can_build_shared=no
-
-GCC_F77="$G77"
-LD_F77="$LD"
+  ld_shlibs_F77=yes
+  if test "$with_gnu_ld" = yes; then
+    # If archive_cmds runs LD, not CC, wlarc should be empty
+    wlarc='${wl}'
 
-lt_prog_compiler_wl_F77=
-lt_prog_compiler_pic_F77=
-lt_prog_compiler_static_F77=
+    # Set some defaults for GNU ld with shared library support. These
+    # are reset later if shared libraries are not supported. Putting them
+    # here allows them to be overridden if necessary.
+    runpath_var=LD_RUN_PATH
+    hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
+    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
+    # ancient GNU ld didn't support --whole-archive et. al.
+    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
+	whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+      else
+  	whole_archive_flag_spec_F77=
+    fi
+    supports_anon_versioning=no
+    case `$LD -v 2>/dev/null` in
+      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
+      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
+      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
+      *\ 2.11.*) ;; # other 2.11 versions
+      *) supports_anon_versioning=yes ;;
+    esac
 
-echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
-echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
+    # See if GNU ld supports shared libraries.
+    case $host_os in
+    aix3* | aix4* | aix5*)
+      # On AIX/PPC, the GNU linker is very broken
+      if test "$host_cpu" != ia64; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
 
-  if test "$GCC" = yes; then
-    lt_prog_compiler_wl_F77='-Wl,'
-    lt_prog_compiler_static_F77='-static'
+*** Warning: the GNU linker, at least up to release 2.9.1, is reported
+*** to be unable to reliably create shared libraries on AIX.
+*** Therefore, libtool is disabling shared libraries support.  If you
+*** really care for shared libraries, you may want to modify your PATH
+*** so that a non-GNU linker is found, and then restart.
 
-    case $host_os in
-      aix*)
-      # All AIX code is PIC.
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
+EOF
       fi
       ;;
 
     amigaos*)
-      # FIXME: we need at least 68020 code to build shared libraries, but
-      # adding the `-m68020' flag to GCC prevents building anything better,
-      # like `-m68040'.
-      lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
-      ;;
-
-    beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
-      # PIC is the default for these OSes.
-      ;;
-
-    mingw* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    darwin* | rhapsody*)
-      # PIC is the default on this platform
-      # Common symbols not allowed in MH_DYLIB files
-      lt_prog_compiler_pic_F77='-fno-common'
-      ;;
+      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
 
-    msdosdjgpp*)
-      # Just because we use GCC doesn't mean we suddenly get shared libraries
-      # on systems that don't support them.
-      lt_prog_compiler_can_build_shared_F77=no
-      enable_shared=no
+      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+      # that the semantics of dynamic libraries on AmigaOS, at least up
+      # to version 4, is to share data among multiple programs linked
+      # with the same dynamic library.  Since this doesn't match the
+      # behavior of shared libraries on other platforms, we can't use
+      # them.
+      ld_shlibs_F77=no
       ;;
 
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	lt_prog_compiler_pic_F77=-Kconform_pic
+    beos*)
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	allow_undefined_flag_F77=unsupported
+	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+	# support --undefined.  This deserves some investigation.  FIXME
+	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+      else
+	ld_shlibs_F77=no
       fi
       ;;
 
-    hpux*)
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case "$host_cpu" in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='-fPIC'
-	;;
-      esac
-      ;;
+    cygwin* | mingw* | pw32*)
+      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+      # as there is no search path for DLLs.
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=no
+      enable_shared_with_static_runtimes_F77=yes
+      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
 
-    *)
-      lt_prog_compiler_pic_F77='-fPIC'
-      ;;
-    esac
-  else
-    # PORTME Check for flag to pass linker flags through the system compiler.
-    case $host_os in
-    aix*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      if test "$host_cpu" = ia64; then
-	# AIX 5 now supports IA64 processor
-	lt_prog_compiler_static_F77='-Bstatic'
+      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
+	# If the export-symbols file already is a .def file (1st line
+	# is EXPORTS), use it as is; otherwise, prepend...
+	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
+	  cp $export_symbols $output_objdir/$soname.def;
+	else
+	  echo EXPORTS > $output_objdir/$soname.def;
+	  cat $export_symbols >> $output_objdir/$soname.def;
+	fi~
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
-	lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+	ld_shlibs_F77=no
       fi
       ;;
-      darwin*)
-        # PIC is the default on this platform
-        # Common symbols not allowed in MH_DYLIB files
-       case $cc_basename in
-         xlc*)
-         lt_prog_compiler_pic_F77='-qnocommon'
-         lt_prog_compiler_wl_F77='-Wl,'
-         ;;
-       esac
-       ;;
-
-    mingw* | pw32* | os2*)
-      # This hack is so that the source file can tell whether it is being
-      # built for inclusion in a dll (and should export symbols for example).
-      lt_prog_compiler_pic_F77='-DDLL_EXPORT'
-      ;;
-
-    hpux9* | hpux10* | hpux11*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
-      # not for PA HP-UX.
-      case "$host_cpu" in
-      hppa*64*|ia64*)
-	# +Z the default
-	;;
-      *)
-	lt_prog_compiler_pic_F77='+Z'
-	;;
-      esac
-      # Is there a better lt_prog_compiler_static that works with the bundled CC?
-      lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
-      ;;
 
-    irix5* | irix6* | nonstopux*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # PIC (with -KPIC) is the default.
-      lt_prog_compiler_static_F77='-non_shared'
-      ;;
-
-    newsos6)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
+    interix3*)
+      hardcode_direct_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec_F77='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
       ;;
 
     linux*)
-      case $cc_basename in
-      icc* | ecc*)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-KPIC'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      pgcc* | pgf77* | pgf90*)
-        # Portland Group compilers (*not* the Pentium gcc compiler,
-	# which looks to be a dead project)
-	lt_prog_compiler_wl_F77='-Wl,'
-	lt_prog_compiler_pic_F77='-fpic'
-	lt_prog_compiler_static_F77='-static'
-        ;;
-      ccc*)
-        lt_prog_compiler_wl_F77='-Wl,'
-        # All Alpha code is PIC.
-        lt_prog_compiler_static_F77='-non_shared'
-        ;;
-      esac
-      ;;
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	tmp_addflag=
+	case $cc_basename,$host_cpu in
+	pgcc*)				# Portland Group C compiler
+	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag'
+	  ;;
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  tmp_addflag=' $pic_flag -Mnomain' ;;
+	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
+	  tmp_addflag=' -i_dynamic' ;;
+	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
+	  tmp_addflag=' -i_dynamic -nofor_main' ;;
+	ifc* | ifort*)			# Intel Fortran compiler
+	  tmp_addflag=' -nofor_main' ;;
+	esac
+	archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
 
-    osf3* | osf4* | osf5*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      # All OSF/1 code is PIC.
-      lt_prog_compiler_static_F77='-non_shared'
+	if test $supports_anon_versioning = yes; then
+	  archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+  $echo "local: *; };" >> $output_objdir/$libname.ver~
+	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+	fi
+      else
+	ld_shlibs_F77=no
+      fi
       ;;
 
-    sco3.2v5*)
-      lt_prog_compiler_pic_F77='-Kpic'
-      lt_prog_compiler_static_F77='-dn'
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+	wlarc=
+      else
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      fi
       ;;
 
     solaris*)
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      case $cc_basename in
-      f77* | f90* | f95*)
-	lt_prog_compiler_wl_F77='-Qoption ld ';;
-      *)
-	lt_prog_compiler_wl_F77='-Wl,';;
-      esac
-      ;;
-
-    sunos4*)
-      lt_prog_compiler_wl_F77='-Qoption ld '
-      lt_prog_compiler_pic_F77='-PIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
+      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+	ld_shlibs_F77=no
+	cat <<EOF 1>&2
 
-    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_pic_F77='-KPIC'
-      lt_prog_compiler_static_F77='-Bstatic'
-      ;;
+*** Warning: The releases 2.8.* of the GNU linker cannot reliably
+*** create shared libraries on Solaris systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.9.1 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
 
-    sysv4*MP*)
-      if test -d /usr/nec ;then
-	lt_prog_compiler_pic_F77='-Kconform_pic'
-	lt_prog_compiler_static_F77='-Bstatic'
+EOF
+      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
       fi
       ;;
 
-    unicos*)
-      lt_prog_compiler_wl_F77='-Wl,'
-      lt_prog_compiler_can_build_shared_F77=no
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs_F77=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs_F77=no
+	  fi
+	;;
+      esac
       ;;
 
-    uts4*)
-      lt_prog_compiler_pic_F77='-pic'
-      lt_prog_compiler_static_F77='-Bstatic'
+    sunos4*)
+      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      wlarc=
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
       ;;
 
     *)
-      lt_prog_compiler_can_build_shared_F77=no
+      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+      else
+	ld_shlibs_F77=no
+      fi
       ;;
     esac
-  fi
 
-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6
+    if test "$ld_shlibs_F77" = no; then
+      runpath_var=
+      hardcode_libdir_flag_spec_F77=
+      export_dynamic_flag_spec_F77=
+      whole_archive_flag_spec_F77=
+    fi
+  else
+    # PORTME fill in a description of your system's linker (not GNU ld)
+    case $host_os in
+    aix3*)
+      allow_undefined_flag_F77=unsupported
+      always_export_symbols_F77=yes
+      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
+      # Note: this linker hardcodes the directories in LIBPATH if there
+      # are no directories specified by -L.
+      hardcode_minus_L_F77=yes
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
+	# Neither direct hardcoding nor static linking is supported with a
+	# broken collect2.
+	hardcode_direct_F77=unsupported
+      fi
+      ;;
 
-#
-# Check to make sure the PIC flag actually works.
-#
-if test -n "$lt_prog_compiler_pic_F77"; then
+    aix4* | aix5*)
+      if test "$host_cpu" = ia64; then
+	# On IA64, the linker does run time linking by default, so we don't
+	# have to do anything special.
+	aix_use_runtimelinking=no
+	exp_sym_flag='-Bexport'
+	no_entry_flag=""
+      else
+	# If we're using GNU nm, then we don't want the "-C" option.
+	# -C means demangle to AIX nm, but means don't demangle with GNU nm
+	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	else
+	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+	fi
+	aix_use_runtimelinking=no
 
-echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
-echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6
-if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_prog_compiler_pic_works_F77=no
-  ac_outfile=conftest.$ac_objext
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-   lt_compiler_flag="$lt_prog_compiler_pic_F77"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   # The option is referenced via a variable to avoid confusing sed.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14045: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>conftest.err)
-   ac_status=$?
-   cat conftest.err >&5
-   echo "$as_me:14049: \$? = $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.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-     $SED '/^$/d' conftest.err >conftest.er2
-     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
-       lt_prog_compiler_pic_works_F77=yes
-     fi
-   fi
-   $rm conftest*
+	# Test if we are trying to use run time linking or normal
+	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
+	# need to do runtime linking.
+	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+	  for ld_flag in $LDFLAGS; do
+  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
+  	    aix_use_runtimelinking=yes
+  	    break
+  	  fi
+	  done
+	  ;;
+	esac
 
-fi
-echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6
+	exp_sym_flag='-bexport'
+	no_entry_flag='-bnoentry'
+      fi
 
-if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
-    case $lt_prog_compiler_pic_F77 in
-     "" | " "*) ;;
-     *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
-     esac
-else
-    lt_prog_compiler_pic_F77=
-     lt_prog_compiler_can_build_shared_F77=no
-fi
+      # When large executables or shared objects are built, AIX ld can
+      # have problems creating the table of contents.  If linking a library
+      # or program results in "error TOC overflow" add -mminimal-toc to
+      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
+      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
 
-fi
-case "$host_os" in
-  # For platforms which do not support PIC, -DPIC is meaningless:
-  *djgpp*)
-    lt_prog_compiler_pic_F77=
-    ;;
-  *)
-    lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
-    ;;
-esac
+      archive_cmds_F77=''
+      hardcode_direct_F77=yes
+      hardcode_libdir_separator_F77=':'
+      link_all_deplibs_F77=yes
 
-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  lt_cv_prog_compiler_c_o_F77=no
-   $rm -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+      if test "$GCC" = yes; then
+	case $host_os in aix4.[012]|aix4.[012].*)
+	# We only want to do this on AIX 4.2 and lower, the check
+	# below for broken collect2 doesn't work under 4.3+
+	  collect2name=`${CC} -print-prog-name=collect2`
+	  if test -f "$collect2name" && \
+  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
+	  then
+  	  # We have reworked collect2
+  	  hardcode_direct_F77=yes
+	  else
+  	  # We have old collect2
+  	  hardcode_direct_F77=unsupported
+  	  # It fails to find uninstalled libraries when the uninstalled
+  	  # path is not listed in the libpath.  Setting hardcode_minus_L
+  	  # to unsupported forces relinking
+  	  hardcode_minus_L_F77=yes
+  	  hardcode_libdir_flag_spec_F77='-L$libdir'
+  	  hardcode_libdir_separator_F77=
+	  fi
+	  ;;
+	esac
+	shared_flag='-shared'
+	if test "$aix_use_runtimelinking" = yes; then
+	  shared_flag="$shared_flag "'${wl}-G'
+	fi
+      else
+	# not using gcc
+	if test "$host_cpu" = ia64; then
+  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
+  	# chokes on -Wl,-G. The following line is correct:
+	  shared_flag='-G'
+	else
+	  if test "$aix_use_runtimelinking" = yes; then
+	    shared_flag='${wl}-G'
+	  else
+	    shared_flag='${wl}-bM:SRE'
+	  fi
+	fi
+      fi
 
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
-   # with a dollar sign (not a hyphen), so the echo should work correctly.
-   lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
-   -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-   -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:14107: $lt_compile\"" >&5)
-   (eval "$lt_compile" 2>out/conftest.err)
-   ac_status=$?
-   cat out/conftest.err >&5
-   echo "$as_me:14111: \$? = $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
-     # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-     $SED '/^$/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
-       lt_cv_prog_compiler_c_o_F77=yes
-     fi
-   fi
-   chmod u+w .
-   $rm conftest*
-   # SGI C++ compiler will create directory out/ii_files/ for
-   # template instantiation
-   test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files
-   $rm out/* && rmdir out
-   cd ..
-   rmdir conftest
-   $rm conftest*
+      # It seems that -bexpall does not export symbols beginning with
+      # underscore (_), so it is better to generate a list of symbols to export.
+      always_export_symbols_F77=yes
+      if test "$aix_use_runtimelinking" = yes; then
+	# Warning - without using the other runtime loading flags (-brtl),
+	# -berok will link without error, but may produce a broken library.
+	allow_undefined_flag_F77='-berok'
+       # Determine the default libpath from the value encoded in an empty executable.
+       cat >conftest.$ac_ext <<_ACEOF
+      program main
+
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
+else
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
 fi
-echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
-echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
+       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+       else
+	if test "$host_cpu" = ia64; then
+	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
+	  allow_undefined_flag_F77="-z nodefs"
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
+	else
+	 # Determine the default libpath from the value encoded in an empty executable.
+	 cat >conftest.$ac_ext <<_ACEOF
+      program main
 
-hard_links="nottested"
-if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
-  # do not overwrite the value of need_locks provided by the user
-  echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
-echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6
-  hard_links=yes
-  $rm conftest*
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  touch conftest.a
-  ln conftest.a conftest.b 2>&5 || hard_links=no
-  ln conftest.a conftest.b 2>/dev/null && hard_links=no
-  echo "$as_me:$LINENO: result: $hard_links" >&5
-echo "${ECHO_T}$hard_links" >&6
-  if test "$hard_links" = no; then
-    { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
-echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;}
-    need_locks=warn
-  fi
+      end
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>conftest.er1
+  ac_status=$?
+  grep -v '^ *+' conftest.er1 >conftest.err
+  rm -f conftest.er1
+  cat conftest.err >&5
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } &&
+	 { ac_try='test -z "$ac_f77_werror_flag"
+			 || test ! -s conftest.err'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } &&
+	 { ac_try='test -s conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
+}'`; fi
 else
-  need_locks=no
+  echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
 fi
+rm -f conftest.err conftest.$ac_objext \
+      conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
-echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
-echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6
-
-  runpath_var=
-  allow_undefined_flag_F77=
-  enable_shared_with_static_runtimes_F77=no
-  archive_cmds_F77=
-  archive_expsym_cmds_F77=
-  old_archive_From_new_cmds_F77=
-  old_archive_from_expsyms_cmds_F77=
-  export_dynamic_flag_spec_F77=
-  whole_archive_flag_spec_F77=
-  thread_safe_flag_spec_F77=
-  hardcode_libdir_flag_spec_F77=
-  hardcode_libdir_flag_spec_ld_F77=
-  hardcode_libdir_separator_F77=
-  hardcode_direct_F77=no
-  hardcode_minus_L_F77=no
-  hardcode_shlibpath_var_F77=unsupported
-  link_all_deplibs_F77=unknown
-  hardcode_automatic_F77=no
-  module_cmds_F77=
-  module_expsym_cmds_F77=
-  always_export_symbols_F77=no
-  export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
-  # include_expsyms should be a list of space-separated symbols to be *always*
-  # included in the symbol list
-  include_expsyms_F77=
-  # exclude_expsyms can be an extended regexp of symbols to exclude
-  # it will be wrapped by ` (' and `)$', so one must not match beginning or
-  # end of line.  Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
-  # as well as any symbol that contains `d'.
-  exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
-  # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
-  # platforms (ab)use it in PIC code, but their linkers get confused if
-  # the symbol is explicitly referenced.  Since portable code cannot
-  # rely on this symbol name, it's probably fine to never include it in
-  # preloaded symbol tables.
-  extract_expsyms_cmds=
-  # Just being paranoid about ensuring that cc_basename is set.
-  for cc_temp in $compiler""; do
-  case $cc_temp in
-    compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
-    distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
-    \-*) ;;
-    *) break;;
-  esac
-done
-cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
-
-  case $host_os in
-  cygwin* | mingw* | pw32*)
-    # FIXME: the MSVC++ port hasn't been tested in a loooong time
-    # When not using gcc, we currently assume that we are using
-    # Microsoft Visual C++.
-    if test "$GCC" != yes; then
-      with_gnu_ld=no
-    fi
-    ;;
-  openbsd*)
-    with_gnu_ld=no
-    ;;
-  esac
-
-  ld_shlibs_F77=yes
-  if test "$with_gnu_ld" = yes; then
-    # If archive_cmds runs LD, not CC, wlarc should be empty
-    wlarc='${wl}'
-
-    # Set some defaults for GNU ld with shared library support. These
-    # are reset later if shared libraries are not supported. Putting them
-    # here allows them to be overridden if necessary.
-    runpath_var=LD_RUN_PATH
-    hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir'
-    export_dynamic_flag_spec_F77='${wl}--export-dynamic'
-    # ancient GNU ld didn't support --whole-archive et. al.
-    if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then
-	whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
-      else
-  	whole_archive_flag_spec_F77=
-    fi
-    supports_anon_versioning=no
-    case `$LD -v 2>/dev/null` in
-      *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11
-      *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ...
-      *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ...
-      *\ 2.11.*) ;; # other 2.11 versions
-      *) supports_anon_versioning=yes ;;
-    esac
-
-    # See if GNU ld supports shared libraries.
-    case $host_os in
-    aix3* | aix4* | aix5*)
-      # On AIX/PPC, the GNU linker is very broken
-      if test "$host_cpu" != ia64; then
-	ld_shlibs_F77=no
-	cat <<EOF 1>&2
-
-*** Warning: the GNU linker, at least up to release 2.9.1, is reported
-*** to be unable to reliably create shared libraries on AIX.
-*** Therefore, libtool is disabling shared libraries support.  If you
-*** really care for shared libraries, you may want to modify your PATH
-*** so that a non-GNU linker is found, and then restart.
-
-EOF
+	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+	  # Warning - without using the other run time loading flags,
+	  # -berok will link without error, but may produce a broken library.
+	  no_undefined_flag_F77=' ${wl}-bernotok'
+	  allow_undefined_flag_F77=' ${wl}-berok'
+	  # Exported symbols can be pulled into shared objects from archives
+	  whole_archive_flag_spec_F77='$convenience'
+	  archive_cmds_need_lc_F77=yes
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	fi
       fi
       ;;
 
@@ -14268,840 +14229,499 @@ EOF
       archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
       hardcode_libdir_flag_spec_F77='-L$libdir'
       hardcode_minus_L_F77=yes
-
-      # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
-      # that the semantics of dynamic libraries on AmigaOS, at least up
-      # to version 4, is to share data among multiple programs linked
-      # with the same dynamic library.  Since this doesn't match the
-      # behavior of shared libraries on other platforms, we can't use
-      # them.
+      # see comment about different semantics on the GNU ld section
       ld_shlibs_F77=no
       ;;
 
-    beos*)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	allow_undefined_flag_F77=unsupported
-	# Joseph Beckenbach <jrb3@best.com> says some releases of gcc
-	# support --undefined.  This deserves some investigation.  FIXME
-	archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
+    bsdi[45]*)
+      export_dynamic_flag_spec_F77=-rdynamic
       ;;
 
     cygwin* | mingw* | pw32*)
-      # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
-      # as there is no search path for DLLs.
-      hardcode_libdir_flag_spec_F77='-L$libdir'
+      # When not using gcc, we currently assume that we are using
+      # Microsoft Visual C++.
+      # hardcode_libdir_flag_spec is actually meaningless, as there is
+      # no search path for DLLs.
+      hardcode_libdir_flag_spec_F77=' '
       allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=no
+      # Tell ltmain to make .lib files, not .a files.
+      libext=lib
+      # Tell ltmain to make .dll files, not .so files.
+      shrext_cmds=".dll"
+      # FIXME: Setting linknames here is a bad hack.
+      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+      # The linker will automatically build a .lib file if we build a DLL.
+      old_archive_From_new_cmds_F77='true'
+      # FIXME: Should let the user specify the lib program.
+      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
       enable_shared_with_static_runtimes_F77=yes
-      export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
-
-      if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
-	# If the export-symbols file already is a .def file (1st line
-	# is EXPORTS), use it as is; otherwise, prepend...
-	archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
-	  cp $export_symbols $output_objdir/$soname.def;
-	else
-	  echo EXPORTS > $output_objdir/$soname.def;
-	  cat $export_symbols >> $output_objdir/$soname.def;
-	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
-      else
-	ld_shlibs_F77=no
-      fi
       ;;
 
-    linux*)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	tmp_addflag=
-	case $cc_basename,$host_cpu in
-	pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag'
-	  ;;
-	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_F77='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
-	  tmp_addflag=' $pic_flag -Mnomain' ;;
-	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
-	  tmp_addflag=' -i_dynamic' ;;
-	efc*,ia64* | ifort*,ia64*)	# Intel Fortran compiler on ia64
-	  tmp_addflag=' -i_dynamic -nofor_main' ;;
-	ifc* | ifort*)			# Intel Fortran compiler
-	  tmp_addflag=' -nofor_main' ;;
-	esac
-	archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-
-	if test $supports_anon_versioning = yes; then
-	  archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
-  cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
-  $echo "local: *; };" >> $output_objdir/$libname.ver~
-	  $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
-	fi
-      else
-	ld_shlibs_F77=no
-      fi
+    darwin* | rhapsody*)
+      case $host_os in
+        rhapsody* | darwin1.[012])
+         allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+         ;;
+       *) # Darwin 1.3 on
+         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+           allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+         else
+           case ${MACOSX_DEPLOYMENT_TARGET} in
+             10.[012])
+               allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+               ;;
+             10.*)
+               allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+               ;;
+           esac
+         fi
+         ;;
+      esac
+      archive_cmds_need_lc_F77=no
+      hardcode_direct_F77=no
+      hardcode_automatic_F77=yes
+      hardcode_shlibpath_var_F77=unsupported
+      whole_archive_flag_spec_F77=''
+      link_all_deplibs_F77=yes
+    if test "$GCC" = yes ; then
+    	output_verbose_link_cmd='echo'
+        archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+      module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+      archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+      module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+    else
+      case $cc_basename in
+        xlc*)
+         output_verbose_link_cmd='echo'
+         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+         module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+          ;;
+       *)
+         ld_shlibs_F77=no
+          ;;
+      esac
+    fi
       ;;
 
-    netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
-	wlarc=
-      else
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      fi
+    dgux*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_shlibpath_var_F77=no
       ;;
 
-    solaris* | sysv5*)
-      if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
-	ld_shlibs_F77=no
-	cat <<EOF 1>&2
+    freebsd1*)
+      ld_shlibs_F77=no
+      ;;
 
-*** Warning: The releases 2.8.* of the GNU linker cannot reliably
-*** create shared libraries on Solaris systems.  Therefore, libtool
-*** is disabling shared libraries support.  We urge you to upgrade GNU
-*** binutils to release 2.9.1 or newer.  Another option is to modify
-*** your PATH or compiler configuration so that the native linker is
-*** used, and then restart.
+    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+    # support.  Future versions do this automatically, but an explicit c++rt0.o
+    # does not break anything, and helps significantly (at the cost of a little
+    # extra space).
+    freebsd2.2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
 
-EOF
-      elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
-      else
-	ld_shlibs_F77=no
-      fi
+    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+    freebsd2*)
+      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
+      hardcode_shlibpath_var_F77=no
       ;;
 
-    sunos4*)
-      archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      wlarc=
+    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+    freebsd* | kfreebsd*-gnu | dragonfly*)
+      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+      hardcode_libdir_flag_spec_F77='-R$libdir'
       hardcode_direct_F77=yes
       hardcode_shlibpath_var_F77=no
       ;;
 
-    *)
-      if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
-	archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+    hpux9*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       else
-	ld_shlibs_F77=no
+	archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
       fi
-      ;;
-    esac
+      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_direct_F77=yes
 
-    if test "$ld_shlibs_F77" = no; then
-      runpath_var=
-      hardcode_libdir_flag_spec_F77=
-      export_dynamic_flag_spec_F77=
-      whole_archive_flag_spec_F77=
-    fi
-  else
-    # PORTME fill in a description of your system's linker (not GNU ld)
-    case $host_os in
-    aix3*)
-      allow_undefined_flag_F77=unsupported
-      always_export_symbols_F77=yes
-      archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname'
-      # Note: this linker hardcodes the directories in LIBPATH if there
-      # are no directories specified by -L.
+      # hardcode_minus_L: Not really in the search PATH,
+      # but as the default location of the library.
       hardcode_minus_L_F77=yes
-      if test "$GCC" = yes && test -z "$link_static_flag"; then
-	# Neither direct hardcoding nor static linking is supported with a
-	# broken collect2.
-	hardcode_direct_F77=unsupported
+      export_dynamic_flag_spec_F77='${wl}-E'
+      ;;
+
+    hpux10*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_F77=:
+
+	hardcode_direct_F77=yes
+	export_dynamic_flag_spec_F77='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L_F77=yes
       fi
       ;;
 
-    aix4* | aix5*)
-      if test "$host_cpu" = ia64; then
-	# On IA64, the linker does run time linking by default, so we don't
-	# have to do anything special.
-	aix_use_runtimelinking=no
-	exp_sym_flag='-Bexport'
-	no_entry_flag=""
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
       else
-	# If we're using GNU nm, then we don't want the "-C" option.
-	# -C means demangle to AIX nm, but means don't demangle with GNU nm
-	if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
-	  export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-	else
-	  export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
-	fi
-	aix_use_runtimelinking=no
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	*)
+	  archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	esac
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_F77=:
 
-	# Test if we are trying to use run time linking or normal
-	# AIX style linking. If -brtl is somewhere in LDFLAGS, we
-	# need to do runtime linking.
-	case $host_os in aix4.[23]|aix4.[23].*|aix5*)
-	  for ld_flag in $LDFLAGS; do
-  	  if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
-  	    aix_use_runtimelinking=yes
-  	    break
-  	  fi
-	  done
+	case $host_cpu in
+	hppa*64*|ia64*)
+	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+	  hardcode_direct_F77=no
+	  hardcode_shlibpath_var_F77=no
+	  ;;
+	*)
+	  hardcode_direct_F77=yes
+	  export_dynamic_flag_spec_F77='${wl}-E'
+
+	  # hardcode_minus_L: Not really in the search PATH,
+	  # but as the default location of the library.
+	  hardcode_minus_L_F77=yes
+	  ;;
 	esac
+      fi
+      ;;
 
-	exp_sym_flag='-bexport'
-	no_entry_flag='-bnoentry'
+    irix5* | irix6* | nonstopux*)
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
       fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      link_all_deplibs_F77=yes
+      ;;
 
-      # When large executables or shared objects are built, AIX ld can
-      # have problems creating the table of contents.  If linking a library
-      # or program results in "error TOC overflow" add -mminimal-toc to
-      # CXXFLAGS/CFLAGS for g++/gcc.  In the cases where that is not
-      # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS.
+    netbsd*)
+      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      else
+	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      ;;
 
-      archive_cmds_F77=''
+    newsos6)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       hardcode_direct_F77=yes
-      hardcode_libdir_separator_F77=':'
-      link_all_deplibs_F77=yes
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
+      hardcode_shlibpath_var_F77=no
+      ;;
 
-      if test "$GCC" = yes; then
-	case $host_os in aix4.[012]|aix4.[012].*)
-	# We only want to do this on AIX 4.2 and lower, the check
-	# below for broken collect2 doesn't work under 4.3+
-	  collect2name=`${CC} -print-prog-name=collect2`
-	  if test -f "$collect2name" && \
-  	   strings "$collect2name" | grep resolve_lib_name >/dev/null
-	  then
-  	  # We have reworked collect2
-  	  hardcode_direct_F77=yes
-	  else
-  	  # We have old collect2
-  	  hardcode_direct_F77=unsupported
-  	  # It fails to find uninstalled libraries when the uninstalled
-  	  # path is not listed in the libpath.  Setting hardcode_minus_L
-  	  # to unsupported forces relinking
-  	  hardcode_minus_L_F77=yes
-  	  hardcode_libdir_flag_spec_F77='-L$libdir'
-  	  hardcode_libdir_separator_F77=
-	  fi
-	esac
-	shared_flag='-shared'
-	if test "$aix_use_runtimelinking" = yes; then
-	  shared_flag="$shared_flag "'${wl}-G'
-	fi
+    openbsd*)
+      hardcode_direct_F77=yes
+      hardcode_shlibpath_var_F77=no
+      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+	archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	export_dynamic_flag_spec_F77='${wl}-E'
       else
-	# not using gcc
-	if test "$host_cpu" = ia64; then
-  	# VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release
-  	# chokes on -Wl,-G. The following line is correct:
-	  shared_flag='-G'
-	else
-  	if test "$aix_use_runtimelinking" = yes; then
-	    shared_flag='${wl}-G'
-	  else
-	    shared_flag='${wl}-bM:SRE'
-  	fi
-	fi
+       case $host_os in
+	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+	   archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+	   hardcode_libdir_flag_spec_F77='-R$libdir'
+	   ;;
+	 *)
+	   archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+	   hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+	   ;;
+       esac
       fi
+      ;;
 
-      # It seems that -bexpall does not export symbols beginning with
-      # underscore (_), so it is better to generate a list of symbols to export.
-      always_export_symbols_F77=yes
-      if test "$aix_use_runtimelinking" = yes; then
-	# Warning - without using the other runtime loading flags (-brtl),
-	# -berok will link without error, but may produce a broken library.
-	allow_undefined_flag_F77='-berok'
-       # Determine the default libpath from the value encoded in an empty executable.
-       cat >conftest.$ac_ext <<_ACEOF
-      program main
+    os2*)
+      hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_minus_L_F77=yes
+      allow_undefined_flag_F77=unsupported
+      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
+      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      ;;
 
-      end
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_f77_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-       hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-	archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
-       else
-	if test "$host_cpu" = ia64; then
-	  hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib'
-	  allow_undefined_flag_F77="-z nodefs"
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
-	else
-	 # Determine the default libpath from the value encoded in an empty executable.
-	 cat >conftest.$ac_ext <<_ACEOF
-      program main
-
-      end
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_f77_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`
-# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0  *\(.*\)$/\1/; p; }
-}'`; fi
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
-
-	 hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
-	  # Warning - without using the other run time loading flags,
-	  # -berok will link without error, but may produce a broken library.
-	  no_undefined_flag_F77=' ${wl}-bernotok'
-	  allow_undefined_flag_F77=' ${wl}-berok'
-	  # -bexpall does not export symbols beginning with underscore (_)
-	  always_export_symbols_F77=yes
-	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec_F77=' '
-	  archive_cmds_need_lc_F77=yes
-	  # This is similar to how AIX traditionally builds it's shared libraries.
-	  archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
-	fi
+    osf3*)
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
       fi
+      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      hardcode_libdir_separator_F77=:
       ;;
 
-    amigaos*)
-      archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_minus_L_F77=yes
-      # see comment about different semantics on the GNU ld section
-      ld_shlibs_F77=no
-      ;;
-
-    bsdi[45]*)
-      export_dynamic_flag_spec_F77=-rdynamic
-      ;;
+    osf4* | osf5*)	# as osf3* with the addition of -msym flag
+      if test "$GCC" = yes; then
+	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+      else
+	allow_undefined_flag_F77=' -expect_unresolved \*'
+	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
 
-    cygwin* | mingw* | pw32*)
-      # When not using gcc, we currently assume that we are using
-      # Microsoft Visual C++.
-      # hardcode_libdir_flag_spec is actually meaningless, as there is
-      # no search path for DLLs.
-      hardcode_libdir_flag_spec_F77=' '
-      allow_undefined_flag_F77=unsupported
-      # Tell ltmain to make .lib files, not .a files.
-      libext=lib
-      # Tell ltmain to make .dll files, not .so files.
-      shrext_cmds=".dll"
-      # FIXME: Setting linknames here is a bad hack.
-      archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
-      # The linker will automatically build a .lib file if we build a DLL.
-      old_archive_From_new_cmds_F77='true'
-      # FIXME: Should let the user specify the lib program.
-      old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
-      fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
-      enable_shared_with_static_runtimes_F77=yes
+	# Both c and cxx compiler support -rpath directly
+	hardcode_libdir_flag_spec_F77='-rpath $libdir'
+      fi
+      hardcode_libdir_separator_F77=:
       ;;
 
-    darwin* | rhapsody*)
-      case "$host_os" in
-        rhapsody* | darwin1.[012])
-         allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
-         ;;
-       *) # Darwin 1.3 on
-         if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
-           allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-         else
-           case ${MACOSX_DEPLOYMENT_TARGET} in
-             10.[012])
-               allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
-               ;;
-             10.*)
-               allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
-               ;;
-           esac
-         fi
-         ;;
+    solaris*)
+      no_undefined_flag_F77=' -z text'
+      if test "$GCC" = yes; then
+	wlarc='${wl}'
+	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      else
+	wlarc=''
+	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+      fi
+      hardcode_libdir_flag_spec_F77='-R$libdir'
+      hardcode_shlibpath_var_F77=no
+      case $host_os in
+      solaris2.[0-5] | solaris2.[0-5].*) ;;
+      *)
+ 	# The compiler driver will combine linker options so we
+ 	# cannot just pass the convience library names through
+ 	# without $wl, iff we do not link with $LD.
+ 	# Luckily, gcc supports the same syntax we need for Sun Studio.
+ 	# Supported since Solaris 2.6 (maybe 2.5.1?)
+ 	case $wlarc in
+ 	'')
+ 	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ 	*)
+ 	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ 	esac ;;
       esac
-      archive_cmds_need_lc_F77=no
-      hardcode_direct_F77=no
-      hardcode_automatic_F77=yes
-      hardcode_shlibpath_var_F77=unsupported
-      whole_archive_flag_spec_F77=''
       link_all_deplibs_F77=yes
-    if test "$GCC" = yes ; then
-    	output_verbose_link_cmd='echo'
-        archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
-      module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
-      archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-      module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-    else
-      case $cc_basename in
-        xlc*)
-         output_verbose_link_cmd='echo'
-         archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
-         module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
-         archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
-          ;;
-       *)
-         ld_shlibs_F77=no
-          ;;
-      esac
-    fi
       ;;
 
-    dgux*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+    sunos4*)
+      if test "x$host_vendor" = xsequent; then
+	# Use $CC to link under sequent, because it throws in some extra .o
+	# files that make .init and .fini sections work.
+	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+      fi
       hardcode_libdir_flag_spec_F77='-L$libdir'
+      hardcode_direct_F77=yes
+      hardcode_minus_L_F77=yes
       hardcode_shlibpath_var_F77=no
       ;;
 
-    freebsd1*)
-      ld_shlibs_F77=no
+    sysv4)
+      case $host_vendor in
+	sni)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=yes # is this really true???
+	;;
+	siemens)
+	  ## LD is ld it makes a PLAMLIB
+	  ## CC just makes a GrossModule.
+	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+	  reload_cmds_F77='$CC -r -o $output$reload_objs'
+	  hardcode_direct_F77=no
+        ;;
+	motorola)
+	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+	;;
+      esac
+      runpath_var='LD_RUN_PATH'
+      hardcode_shlibpath_var_F77=no
       ;;
 
-    # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
-    # support.  Future versions do this automatically, but an explicit c++rt0.o
-    # does not break anything, and helps significantly (at the cost of a little
-    # extra space).
-    freebsd2.2*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
+    sysv4.3*)
+      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
       hardcode_shlibpath_var_F77=no
+      export_dynamic_flag_spec_F77='-Bexport'
       ;;
 
-    # Unfortunately, older versions of FreeBSD 2 do not have this feature.
-    freebsd2*)
-      archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
+    sysv4*MP*)
+      if test -d /usr/nec; then
+	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+	hardcode_shlibpath_var_F77=no
+	runpath_var=LD_RUN_PATH
+	hardcode_runpath_var=yes
+	ld_shlibs_F77=yes
+      fi
       ;;
 
-    # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
-    freebsd* | kfreebsd*-gnu | dragonfly*)
-      archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+      no_undefined_flag_F77='${wl}-z,text'
+      archive_cmds_need_lc_F77=no
       hardcode_shlibpath_var_F77=no
-      ;;
+      runpath_var='LD_RUN_PATH'
 
-    hpux9*)
       if test "$GCC" = yes; then
-	archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      else
-	archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_direct_F77=yes
-
-      # hardcode_minus_L: Not really in the search PATH,
-      # but as the default location of the library.
-      hardcode_minus_L_F77=yes
-      export_dynamic_flag_spec_F77='${wl}-E'
-      ;;
-
-    hpux10* | hpux11*)
-      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case "$host_cpu" in
-	hppa*64*|ia64*)
-	  archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	*)
-	  archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
-	  ;;
-	esac
+	archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	case "$host_cpu" in
-	hppa*64*|ia64*)
-	  archive_cmds_F77='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  ;;
-	*)
-	  archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
-	  ;;
-	esac
-      fi
-      if test "$with_gnu_ld" = no; then
-	case "$host_cpu" in
-	hppa*64*)
-	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	  hardcode_libdir_flag_spec_ld_F77='+b $libdir'
-	  hardcode_libdir_separator_F77=:
-	  hardcode_direct_F77=no
-	  hardcode_shlibpath_var_F77=no
-	  ;;
-	ia64*)
-	  hardcode_libdir_flag_spec_F77='-L$libdir'
-	  hardcode_direct_F77=no
-	  hardcode_shlibpath_var_F77=no
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_F77=yes
-	  ;;
-	*)
-	  hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
-	  hardcode_libdir_separator_F77=:
-	  hardcode_direct_F77=yes
-	  export_dynamic_flag_spec_F77='${wl}-E'
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_F77=yes
-	  ;;
-	esac
+	archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
       ;;
 
-    irix5* | irix6* | nonstopux*)
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag_F77='${wl}-z,text'
+      allow_undefined_flag_F77='${wl}-z,nodefs'
+      archive_cmds_need_lc_F77=no
+      hardcode_shlibpath_var_F77=no
+      hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator_F77=':'
       link_all_deplibs_F77=yes
-      ;;
+      export_dynamic_flag_spec_F77='${wl}-Bexport'
+      runpath_var='LD_RUN_PATH'
 
-    netbsd*)
-      if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-	archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'  # a.out
+      if test "$GCC" = yes; then
+	archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags'      # ELF
+	archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
       ;;
 
-    newsos6)
+    uts4*)
       archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    openbsd*)
-      hardcode_direct_F77=yes
-      hardcode_shlibpath_var_F77=no
-      if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-	archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
-	hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	export_dynamic_flag_spec_F77='${wl}-E'
-      else
-       case $host_os in
-	 openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
-	   archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
-	   hardcode_libdir_flag_spec_F77='-R$libdir'
-	   ;;
-	 *)
-	   archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
-	   hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
-	   ;;
-       esac
-      fi
-      ;;
-
-    os2*)
       hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_minus_L_F77=yes
-      allow_undefined_flag_F77=unsupported
-      archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def'
-      old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+      hardcode_shlibpath_var_F77=no
       ;;
 
-    osf3*)
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-      fi
-      hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      hardcode_libdir_separator_F77=:
+    *)
+      ld_shlibs_F77=no
       ;;
+    esac
+  fi
 
-    osf4* | osf5*)	# as osf3* with the addition of -msym flag
-      if test "$GCC" = yes; then
-	allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
-	archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
-	hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
-      else
-	allow_undefined_flag_F77=' -expect_unresolved \*'
-	archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
-	archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
-	$LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp'
+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6
+test "$ld_shlibs_F77" = no && can_build_shared=no
 
-	# Both c and cxx compiler support -rpath directly
-	hardcode_libdir_flag_spec_F77='-rpath $libdir'
-      fi
-      hardcode_libdir_separator_F77=:
-      ;;
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+  # Assume -lc should be added
+  archive_cmds_need_lc_F77=yes
 
-    sco3.2v5*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_F77=no
-      export_dynamic_flag_spec_F77='${wl}-Bexport'
-      runpath_var=LD_RUN_PATH
-      hardcode_runpath_var=yes
+  if test "$enable_shared" = yes && test "$GCC" = yes; then
+    case $archive_cmds_F77 in
+    *'~'*)
+      # FIXME: we may have to deal with multi-command sequences.
       ;;
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-    solaris*)
-      no_undefined_flag_F77=' -z text'
-      if test "$GCC" = yes; then
-	wlarc='${wl}'
-	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-	  $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_F77
+	pic_flag=$lt_prog_compiler_pic_F77
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+        allow_undefined_flag_F77=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_F77=no
+        else
+	  archive_cmds_need_lc_F77=yes
+        fi
+        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
       else
-	wlarc=''
-	archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-  	$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
+        cat conftest.err 1>&5
       fi
-      hardcode_libdir_flag_spec_F77='-R$libdir'
-      hardcode_shlibpath_var_F77=no
-      case $host_os in
-      solaris2.[0-5] | solaris2.[0-5].*) ;;
-      *)
- 	# The compiler driver will combine linker options so we
- 	# cannot just pass the convience library names through
- 	# without $wl, iff we do not link with $LD.
- 	# Luckily, gcc supports the same syntax we need for Sun Studio.
- 	# Supported since Solaris 2.6 (maybe 2.5.1?)
- 	case $wlarc in
- 	'')
- 	  whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
- 	*)
- 	  whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
- 	esac ;;
-      esac
-      link_all_deplibs_F77=yes
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
       ;;
-
-    sunos4*)
-      if test "x$host_vendor" = xsequent; then
-	# Use $CC to link under sequent, because it throws in some extra .o
-	# files that make .init and .fini sections work.
-	archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
-      fi
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=yes
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4)
-      case $host_vendor in
-	sni)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=yes # is this really true???
-	;;
-	siemens)
-	  ## LD is ld it makes a PLAMLIB
-	  ## CC just makes a GrossModule.
-	  archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-	  reload_cmds_F77='$CC -r -o $output$reload_objs'
-	  hardcode_direct_F77=no
-        ;;
-	motorola)
-	  archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	  hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
-	;;
-      esac
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv4.3*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_F77=no
-      export_dynamic_flag_spec_F77='-Bexport'
-      ;;
-
-    sysv4*MP*)
-      if test -d /usr/nec; then
-	archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-	hardcode_shlibpath_var_F77=no
-	runpath_var=LD_RUN_PATH
-	hardcode_runpath_var=yes
-	ld_shlibs_F77=yes
-      fi
-      ;;
-
-    sysv4.2uw2*)
-      archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_F77=yes
-      hardcode_minus_L_F77=no
-      hardcode_shlibpath_var_F77=no
-      hardcode_runpath_var=yes
-      runpath_var=LD_RUN_PATH
-      ;;
-
-   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
-      no_undefined_flag_F77='${wl}-z ${wl}text'
-      if test "$GCC" = yes; then
-	archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      else
-	archive_cmds_F77='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
-      fi
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    sysv5*)
-      no_undefined_flag_F77=' -z text'
-      # $CC -shared without GNU ld will not create a library from C++
-      # object files and a static libstdc++, better avoid it by now
-      archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-      hardcode_libdir_flag_spec_F77=
-      hardcode_shlibpath_var_F77=no
-      runpath_var='LD_RUN_PATH'
-      ;;
-
-    uts4*)
-      archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_libdir_flag_spec_F77='-L$libdir'
-      hardcode_shlibpath_var_F77=no
-      ;;
-
-    *)
-      ld_shlibs_F77=no
-      ;;
-    esac
-  fi
-
-echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
-echo "${ECHO_T}$ld_shlibs_F77" >&6
-test "$ld_shlibs_F77" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-#
-# Do we need to explicitly link libc?
-#
-case "x$archive_cmds_need_lc_F77" in
-x|xyes)
-  # Assume -lc should be added
-  archive_cmds_need_lc_F77=yes
-
-  if test "$enable_shared" = yes && test "$GCC" = yes; then
-    case $archive_cmds_F77 in
-    *'~'*)
-      # FIXME: we may have to deal with multi-command sequences.
-      ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-      $rm conftest*
-      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl_F77
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag_F77
-        allow_undefined_flag_F77=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-  (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-	  archive_cmds_need_lc_F77=no
-        else
-	  archive_cmds_need_lc_F77=yes
-        fi
-        allow_undefined_flag_F77=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $rm conftest*
-      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
-echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6
-      ;;
-    esac
-  fi
-  ;;
-esac
+    esac
+  fi
+  ;;
+esac
 
 echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
@@ -15233,7 +14853,8 @@ cygwin* | mingw* | pw32*)
       dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
       dldir=$destdir/`dirname \$dlpath`~
       test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
     postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
       dlpath=$dir/\$dldll~
        $rm \$dlpath'
@@ -15286,7 +14907,7 @@ darwin* | rhapsody*)
   soname_spec='${libname}${release}${major}$shared_ext'
   shlibpath_overrides_runpath=yes
   shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
   # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
   if test "$GCC" = yes; then
     sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
@@ -15324,7 +14945,14 @@ kfreebsd*-gnu)
 freebsd* | dragonfly*)
   # DragonFly does not have aout.  When/if they implement a new
   # versioning mechanism, adjust this.
-  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
   version_type=freebsd-$objformat
   case $version_type in
     freebsd-elf*)
@@ -15346,10 +14974,15 @@ freebsd* | dragonfly*)
     shlibpath_overrides_runpath=yes
     hardcode_into_libs=yes
     ;;
-  *) # from 3.2 on
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
     shlibpath_overrides_runpath=no
     hardcode_into_libs=yes
     ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
   esac
   ;;
 
@@ -15369,7 +15002,7 @@ hpux9* | hpux10* | hpux11*)
   version_type=sunos
   need_lib_prefix=no
   need_version=no
-  case "$host_cpu" in
+  case $host_cpu in
   ia64*)
     shrext_cmds='.so'
     hardcode_into_libs=yes
@@ -15409,6 +15042,18 @@ hpux9* | hpux10* | hpux11*)
   postinstall_cmds='chmod 555 $lib'
   ;;
 
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
+
 irix5* | irix6* | nonstopux*)
   case $host_os in
     nonstopux*) version_type=nonstopux ;;
@@ -15530,6 +15175,7 @@ nto-qnx*)
 
 openbsd*)
   version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
   need_lib_prefix=no
   # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
   case $host_os in
@@ -15573,13 +15219,6 @@ osf3* | osf4* | osf5*)
   sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
   ;;
 
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
 solaris*)
   version_type=linux
   need_lib_prefix=no
@@ -15605,7 +15244,7 @@ sunos4*)
   need_version=yes
   ;;
 
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+sysv4 | sysv4.3*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
   soname_spec='${libname}${release}${shared_ext}$major'
@@ -15638,6 +15277,29 @@ sysv4*MP*)
   fi
   ;;
 
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
+    esac
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
+
 uts4*)
   version_type=linux
   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
@@ -15653,6 +15315,11 @@ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
 echo "${ECHO_T}$dynamic_linker" >&6
 test "$dynamic_linker" = no && can_build_shared=no
 
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
+fi
+
 echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
 echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
 hardcode_action_F77=
@@ -15690,36 +15357,6 @@ elif test "$shlibpath_overrides_runpath" = yes ||
   enable_fast_install=needless
 fi
 
-striplib=
-old_striplib=
-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-   darwin*)
-       if test -n "$STRIP" ; then
-         striplib="$STRIP -x"
-         echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-       else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-       ;;
-   *)
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-    ;;
-  esac
-fi
-
-
 
 # The else clause should only fire when bootstrapping the
 # libtool distribution, otherwise you forgot to ship ltmain.sh
@@ -15734,7 +15371,7 @@ if test -f "$ltmain"; then
   # Now quote all the things that may contain metacharacters while being
   # careful not to overquote the AC_SUBSTed values.  We take copies of the
   # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
     SED SHELL STRIP \
     libname_spec library_names_spec soname_spec extract_expsyms_cmds \
     old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -15852,6 +15489,9 @@ AR_FLAGS=$lt_AR_FLAGS
 # A C compiler.
 LTCC=$lt_LTCC
 
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
 # A language-specific compiler.
 CC=$lt_compiler_F77
 
@@ -16162,6 +15802,9 @@ lt_simple_link_test_code='public class conftest { public static void main(String
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
 
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
 # Allow CC to be a program name with arguments.
 compiler=$CC
 
@@ -16169,13 +15812,13 @@ compiler=$CC
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 
 ac_outfile=conftest.$ac_objext
 printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
 $rm conftest*
 
@@ -16223,20 +15866,20 @@ else
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    # The option is referenced via a variable to avoid confusing sed.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:16229: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15872: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16233: \$? = $ac_status" >&5
+   echo "$as_me:15876: \$? = $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.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-     $SED '/^$/d' conftest.err >conftest.er2
-     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_rtti_exceptions=yes
      fi
    fi
@@ -16297,6 +15940,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       lt_prog_compiler_pic_GCJ='-fno-common'
       ;;
 
+    interix3*)
+      # Interix 3.x gcc -fpic/-fPIC options generate broken code.
+      # Instead, we relocate shared libraries at runtime.
+      ;;
+
     msdosdjgpp*)
       # Just because we use GCC doesn't mean we suddenly get shared libraries
       # on systems that don't support them.
@@ -16313,7 +15961,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
     hpux*)
       # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
       # not for PA HP-UX.
-      case "$host_cpu" in
+      case $host_cpu in
       hppa*64*|ia64*)
 	# +Z the default
 	;;
@@ -16360,7 +16008,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       lt_prog_compiler_wl_GCJ='-Wl,'
       # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but
       # not for PA HP-UX.
-      case "$host_cpu" in
+      case $host_cpu in
       hppa*64*|ia64*)
 	# +Z the default
 	;;
@@ -16390,12 +16038,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
 	lt_prog_compiler_pic_GCJ='-KPIC'
 	lt_prog_compiler_static_GCJ='-static'
         ;;
-      pgcc* | pgf77* | pgf90*)
+      pgcc* | pgf77* | pgf90* | pgf95*)
         # Portland Group compilers (*not* the Pentium gcc compiler,
 	# which looks to be a dead project)
 	lt_prog_compiler_wl_GCJ='-Wl,'
 	lt_prog_compiler_pic_GCJ='-fpic'
-	lt_prog_compiler_static_GCJ='-static'
+	lt_prog_compiler_static_GCJ='-Bstatic'
         ;;
       ccc*)
         lt_prog_compiler_wl_GCJ='-Wl,'
@@ -16411,11 +16059,6 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       lt_prog_compiler_static_GCJ='-non_shared'
       ;;
 
-    sco3.2v5*)
-      lt_prog_compiler_pic_GCJ='-Kpic'
-      lt_prog_compiler_static_GCJ='-dn'
-      ;;
-
     solaris*)
       lt_prog_compiler_pic_GCJ='-KPIC'
       lt_prog_compiler_static_GCJ='-Bstatic'
@@ -16433,7 +16076,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       lt_prog_compiler_static_GCJ='-Bstatic'
       ;;
 
-    sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+    sysv4 | sysv4.2uw2* | sysv4.3*)
       lt_prog_compiler_wl_GCJ='-Wl,'
       lt_prog_compiler_pic_GCJ='-KPIC'
       lt_prog_compiler_static_GCJ='-Bstatic'
@@ -16446,6 +16089,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6
       fi
       ;;
 
+    sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+      lt_prog_compiler_wl_GCJ='-Wl,'
+      lt_prog_compiler_pic_GCJ='-KPIC'
+      lt_prog_compiler_static_GCJ='-Bstatic'
+      ;;
+
     unicos*)
       lt_prog_compiler_wl_GCJ='-Wl,'
       lt_prog_compiler_can_build_shared_GCJ=no
@@ -16485,20 +16134,20 @@ else
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    # The option is referenced via a variable to avoid confusing sed.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:16491: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16140: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:16495: \$? = $ac_status" >&5
+   echo "$as_me:16144: \$? = $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.
-     $echo "X$_lt_compiler_boilerplate" | $Xsed >conftest.exp
-     $SED '/^$/d' conftest.err >conftest.er2
-     if test ! -s conftest.err || diff conftest.exp conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+     $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+     if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
        lt_prog_compiler_pic_works_GCJ=yes
      fi
    fi
@@ -16519,7 +16168,7 @@ else
 fi
 
 fi
-case "$host_os" in
+case $host_os in
   # For platforms which do not support PIC, -DPIC is meaningless:
   *djgpp*)
     lt_prog_compiler_pic_GCJ=
@@ -16529,43 +16178,85 @@ case "$host_os" in
     ;;
 esac
 
-echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
-echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
-if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6
+if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  lt_cv_prog_compiler_c_o_GCJ=no
-   $rm -r conftest 2>/dev/null
-   mkdir conftest
-   cd conftest
-   mkdir out
-   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-   lt_compiler_flag="-o out/conftest2.$ac_objext"
-   # Insert the option either (1) after the last *FLAGS variable, or
-   # (2) before a word containing "conftest.", or (3) at the end.
-   # Note that $ac_compile itself does not contain backslashes and begins
+  lt_prog_compiler_static_works_GCJ=no
+   save_LDFLAGS="$LDFLAGS"
+   LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+   printf "$lt_simple_link_test_code" > conftest.$ac_ext
+   if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
+     # The linker can only warn and ignore the option if not recognized
+     # So say no if there are warnings
+     if test -s conftest.err; then
+       # Append any errors to the config.log.
+       cat conftest.err 1>&5
+       $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+       $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+       if diff conftest.exp conftest.er2 >/dev/null; then
+         lt_prog_compiler_static_works_GCJ=yes
+       fi
+     else
+       lt_prog_compiler_static_works_GCJ=yes
+     fi
+   fi
+   $rm conftest*
+   LDFLAGS="$save_LDFLAGS"
+
+fi
+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6
+
+if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+    :
+else
+    lt_prog_compiler_static_GCJ=
+fi
+
+
+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  lt_cv_prog_compiler_c_o_GCJ=no
+   $rm -r conftest 2>/dev/null
+   mkdir conftest
+   cd conftest
+   mkdir out
+   printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+   lt_compiler_flag="-o out/conftest2.$ac_objext"
+   # Insert the option either (1) after the last *FLAGS variable, or
+   # (2) before a word containing "conftest.", or (3) at the end.
+   # Note that $ac_compile itself does not contain backslashes and begins
    # with a dollar sign (not a hyphen), so the echo should work correctly.
    lt_compile=`echo "$ac_compile" | $SED \
-   -e 's:.*FLAGS}? :&$lt_compiler_flag :; t' \
+   -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:16553: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:16244: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:16557: \$? = $ac_status" >&5
+   echo "$as_me:16248: \$? = $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
      # So say no if there are warnings
-     $echo "X$_lt_compiler_boilerplate" | $Xsed > out/conftest.exp
-     $SED '/^$/d' out/conftest.err >out/conftest.er2
-     if test ! -s out/conftest.err || diff out/conftest.exp out/conftest.er2 >/dev/null; then
+     $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp
+     $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2
+     if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then
        lt_cv_prog_compiler_c_o_GCJ=yes
      fi
    fi
-   chmod u+w .
+   chmod u+w . 2>&5
    $rm conftest*
    # SGI C++ compiler will create directory out/ii_files/ for
    # template instantiation
@@ -16661,6 +16352,10 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
       with_gnu_ld=no
     fi
     ;;
+  interix*)
+    # we just hope/assume this is gcc and not c89 (= MSVC++)
+    with_gnu_ld=yes
+    ;;
   openbsd*)
     with_gnu_ld=no
     ;;
@@ -16745,7 +16440,7 @@ EOF
       export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
 
       if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
-        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000 ${wl}--out-implib,$lib'
+        archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
 	# If the export-symbols file already is a .def file (1st line
 	# is EXPORTS), use it as is; otherwise, prepend...
 	archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then
@@ -16754,22 +16449,37 @@ EOF
 	  echo EXPORTS > $output_objdir/$soname.def;
 	  cat $export_symbols >> $output_objdir/$soname.def;
 	fi~
-	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--image-base=0x10000000  ${wl}--out-implib,$lib'
+	$CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
       else
 	ld_shlibs_GCJ=no
       fi
       ;;
 
+    interix3*)
+      hardcode_direct_GCJ=no
+      hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+      export_dynamic_flag_spec_GCJ='${wl}-E'
+      # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc.
+      # Instead, shared libraries are loaded at an image base (0x10000000 by
+      # default) and relocated if they conflict, which is a slow very memory
+      # consuming and fragmenting process.  To avoid this, we pick a random,
+      # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link
+      # time.  Moving up from 0x10000000 also allows more sbrk(2) space.
+      archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
+      ;;
+
     linux*)
       if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
 	tmp_addflag=
 	case $cc_basename,$host_cpu in
 	pgcc*)				# Portland Group C compiler
-	  whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag'
 	  ;;
-	pgf77* | pgf90* )			# Portland Group f77 and f90 compilers
-	  whole_archive_flag_spec_GCJ='${wl}--whole-archive,`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+	pgf77* | pgf90* | pgf95*)	# Portland Group f77 and f90 compilers
+	  whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
 	  tmp_addflag=' $pic_flag -Mnomain' ;;
 	ecc*,ia64* | icc*,ia64*)		# Intel C compiler on ia64
 	  tmp_addflag=' -i_dynamic' ;;
@@ -16801,7 +16511,7 @@ EOF
       fi
       ;;
 
-    solaris* | sysv5*)
+    solaris*)
       if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
 	ld_shlibs_GCJ=no
 	cat <<EOF 1>&2
@@ -16822,6 +16532,33 @@ EOF
       fi
       ;;
 
+    sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+      case `$LD -v 2>&1` in
+        *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+	ld_shlibs_GCJ=no
+	cat <<_LT_EOF 1>&2
+
+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not
+*** reliably create shared libraries on SCO systems.  Therefore, libtool
+*** is disabling shared libraries support.  We urge you to upgrade GNU
+*** binutils to release 2.16.91.0.3 or newer.  Another option is to modify
+*** your PATH or compiler configuration so that the native linker is
+*** used, and then restart.
+
+_LT_EOF
+	;;
+	*)
+	  if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+	    hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+	    archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+	    archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+	  else
+	    ld_shlibs_GCJ=no
+	  fi
+	;;
+      esac
+      ;;
+
     sunos4*)
       archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
       wlarc=
@@ -16855,7 +16592,7 @@ EOF
       # Note: this linker hardcodes the directories in LIBPATH if there
       # are no directories specified by -L.
       hardcode_minus_L_GCJ=yes
-      if test "$GCC" = yes && test -z "$link_static_flag"; then
+      if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then
 	# Neither direct hardcoding nor static linking is supported with a
 	# broken collect2.
 	hardcode_direct_GCJ=unsupported
@@ -16889,6 +16626,7 @@ EOF
   	    break
   	  fi
 	  done
+	  ;;
 	esac
 
 	exp_sym_flag='-bexport'
@@ -16926,6 +16664,7 @@ EOF
   	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
   	  hardcode_libdir_separator_GCJ=
 	  fi
+	  ;;
 	esac
 	shared_flag='-shared'
 	if test "$aix_use_runtimelinking" = yes; then
@@ -16938,11 +16677,11 @@ EOF
   	# chokes on -Wl,-G. The following line is correct:
 	  shared_flag='-G'
 	else
-  	if test "$aix_use_runtimelinking" = yes; then
+	  if test "$aix_use_runtimelinking" = yes; then
 	    shared_flag='${wl}-G'
 	  else
 	    shared_flag='${wl}-bM:SRE'
-  	fi
+	  fi
 	fi
       fi
 
@@ -17007,12 +16746,12 @@ rm -f conftest.err conftest.$ac_objext \
 if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 
        hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
-	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+	archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
        else
 	if test "$host_cpu" = ia64; then
 	  hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib'
 	  allow_undefined_flag_GCJ="-z nodefs"
-	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols"
 	else
 	 # Determine the default libpath from the value encoded in an empty executable.
 	 cat >conftest.$ac_ext <<_ACEOF
@@ -17072,13 +16811,11 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
 	  # -berok will link without error, but may produce a broken library.
 	  no_undefined_flag_GCJ=' ${wl}-bernotok'
 	  allow_undefined_flag_GCJ=' ${wl}-berok'
-	  # -bexpall does not export symbols beginning with underscore (_)
-	  always_export_symbols_GCJ=yes
 	  # Exported symbols can be pulled into shared objects from archives
-	  whole_archive_flag_spec_GCJ=' '
+	  whole_archive_flag_spec_GCJ='$convenience'
 	  archive_cmds_need_lc_GCJ=yes
-	  # This is similar to how AIX traditionally builds it's shared libraries.
-	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${wl}-bE:$export_symbols ${wl}-bnoentry${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
+	  # This is similar to how AIX traditionally builds its shared libraries.
+	  archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname'
 	fi
       fi
       ;;
@@ -17117,7 +16854,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       ;;
 
     darwin* | rhapsody*)
-      case "$host_os" in
+      case $host_os in
         rhapsody* | darwin1.[012])
          allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
          ;;
@@ -17146,7 +16883,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
     	output_verbose_link_cmd='echo'
         archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
       module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+      # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
       archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
       module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
     else
@@ -17155,7 +16892,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
          output_verbose_link_cmd='echo'
          archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
          module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
-          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin ld's
+          # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
          archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[    ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag  -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
           ;;
@@ -17219,47 +16956,62 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       export_dynamic_flag_spec_GCJ='${wl}-E'
       ;;
 
-    hpux10* | hpux11*)
+    hpux10*)
       if test "$GCC" = yes -a "$with_gnu_ld" = no; then
-	case "$host_cpu" in
-	hppa*64*|ia64*)
+	archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+      fi
+      if test "$with_gnu_ld" = no; then
+	hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_GCJ=:
+
+	hardcode_direct_GCJ=yes
+	export_dynamic_flag_spec_GCJ='${wl}-E'
+
+	# hardcode_minus_L: Not really in the search PATH,
+	# but as the default location of the library.
+	hardcode_minus_L_GCJ=yes
+      fi
+      ;;
+
+    hpux11*)
+      if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+	case $host_cpu in
+	hppa*64*)
 	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
+	ia64*)
+	  archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
 	*)
 	  archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       else
-	case "$host_cpu" in
-	hppa*64*|ia64*)
-	  archive_cmds_GCJ='$LD -b +h $soname -o $lib $libobjs $deplibs $linker_flags'
+	case $host_cpu in
+	hppa*64*)
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	  ;;
+	ia64*)
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	*)
-	  archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'
+	  archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
 	  ;;
 	esac
       fi
       if test "$with_gnu_ld" = no; then
-	case "$host_cpu" in
-	hppa*64*)
-	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+	hardcode_libdir_separator_GCJ=:
+
+	case $host_cpu in
+	hppa*64*|ia64*)
 	  hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
-	  hardcode_libdir_separator_GCJ=:
-	  hardcode_direct_GCJ=no
-	  hardcode_shlibpath_var_GCJ=no
-	  ;;
-	ia64*)
-	  hardcode_libdir_flag_spec_GCJ='-L$libdir'
 	  hardcode_direct_GCJ=no
 	  hardcode_shlibpath_var_GCJ=no
-
-	  # hardcode_minus_L: Not really in the search PATH,
-	  # but as the default location of the library.
-	  hardcode_minus_L_GCJ=yes
 	  ;;
 	*)
-	  hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
-	  hardcode_libdir_separator_GCJ=:
 	  hardcode_direct_GCJ=yes
 	  export_dynamic_flag_spec_GCJ='${wl}-E'
 
@@ -17361,14 +17113,6 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       hardcode_libdir_separator_GCJ=:
       ;;
 
-    sco3.2v5*)
-      archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_shlibpath_var_GCJ=no
-      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
-      runpath_var=LD_RUN_PATH
-      hardcode_runpath_var=yes
-      ;;
-
     solaris*)
       no_undefined_flag_GCJ=' -z text'
       if test "$GCC" = yes; then
@@ -17454,36 +17198,45 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
       fi
       ;;
 
-    sysv4.2uw2*)
-      archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
-      hardcode_direct_GCJ=yes
-      hardcode_minus_L_GCJ=no
+    sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+      no_undefined_flag_GCJ='${wl}-z,text'
+      archive_cmds_need_lc_GCJ=no
       hardcode_shlibpath_var_GCJ=no
-      hardcode_runpath_var=yes
-      runpath_var=LD_RUN_PATH
-      ;;
+      runpath_var='LD_RUN_PATH'
 
-   sysv5OpenUNIX8* | sysv5UnixWare7* |  sysv5uw[78]* | unixware7*)
-      no_undefined_flag_GCJ='${wl}-z ${wl}text'
       if test "$GCC" = yes; then
-	archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       else
-	archive_cmds_GCJ='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
       fi
-      runpath_var='LD_RUN_PATH'
-      hardcode_shlibpath_var_GCJ=no
       ;;
 
-    sysv5*)
-      no_undefined_flag_GCJ=' -z text'
-      # $CC -shared without GNU ld will not create a library from C++
-      # object files and a static libstdc++, better avoid it by now
-      archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
-      archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
-  		$LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp'
-      hardcode_libdir_flag_spec_GCJ=
+    sysv5* | sco3.2v5* | sco5v6*)
+      # Note: We can NOT use -z defs as we might desire, because we do not
+      # link with -lc, and that would cause any symbols used from libc to
+      # always be unresolved, which means just about no library would
+      # ever link correctly.  If we're not using GNU ld we use -z text
+      # though, which does catch some bad symbols but isn't as heavy-handed
+      # as -z defs.
+      no_undefined_flag_GCJ='${wl}-z,text'
+      allow_undefined_flag_GCJ='${wl}-z,nodefs'
+      archive_cmds_need_lc_GCJ=no
       hardcode_shlibpath_var_GCJ=no
+      hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+      hardcode_libdir_separator_GCJ=':'
+      link_all_deplibs_GCJ=yes
+      export_dynamic_flag_spec_GCJ='${wl}-Bexport'
       runpath_var='LD_RUN_PATH'
+
+      if test "$GCC" = yes; then
+	archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      else
+	archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+	archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+      fi
       ;;
 
     uts4*)
@@ -17502,11 +17255,6 @@ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
 echo "${ECHO_T}$ld_shlibs_GCJ" >&6
 test "$ld_shlibs_GCJ" = no && can_build_shared=no
 
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
 #
 # Do we need to explicitly link libc?
 #
@@ -17520,1475 +17268,688 @@ x|xyes)
     *'~'*)
       # FIXME: we may have to deal with multi-command sequences.
       ;;
-    '$CC '*)
-      # Test whether the compiler implicitly links with -lc since on some
-      # systems, -lgcc has to come before -lc. If gcc already passes -lc
-      # to ld, don't add -lc before -lgcc.
-      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
-echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
-      $rm conftest*
-      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
-
-      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
-  (eval $ac_compile) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } 2>conftest.err; then
-        soname=conftest
-        lib=conftest
-        libobjs=conftest.$ac_objext
-        deplibs=
-        wl=$lt_prog_compiler_wl_GCJ
-        compiler_flags=-v
-        linker_flags=-v
-        verstring=
-        output_objdir=.
-        libname=conftest
-        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
-        allow_undefined_flag_GCJ=
-        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
-  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }
-        then
-	  archive_cmds_need_lc_GCJ=no
-        else
-	  archive_cmds_need_lc_GCJ=yes
-        fi
-        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
-      else
-        cat conftest.err 1>&5
-      fi
-      $rm conftest*
-      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
-echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
-      ;;
-    esac
-  fi
-  ;;
-esac
-
-echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
-echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
-library_names_spec=
-libname_spec='lib$name'
-soname_spec=
-shrext_cmds=".so"
-postinstall_cmds=
-postuninstall_cmds=
-finish_cmds=
-finish_eval=
-shlibpath_var=
-shlibpath_overrides_runpath=unknown
-version_type=none
-dynamic_linker="$host_os ld.so"
-sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$GCC" = yes; then
-  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
-    # if the path contains ";" then we assume it to be the separator
-    # otherwise default to the standard path separator (i.e. ":") - it is
-    # assumed that no part of a normal pathname contains ";" but that should
-    # okay in the real world where ";" in dirpaths is itself problematic.
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-  else
-    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-  fi
-else
-  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
-need_lib_prefix=unknown
-hardcode_into_libs=no
-
-# when you set need_version to no, make sure it does not cause -set_version
-# flags to be left without arguments
-need_version=unknown
-
-case $host_os in
-aix3*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
-  shlibpath_var=LIBPATH
-
-  # AIX 3 has no versioning support, so we append a major version to the name.
-  soname_spec='${libname}${release}${shared_ext}$major'
-  ;;
-
-aix4* | aix5*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  hardcode_into_libs=yes
-  if test "$host_cpu" = ia64; then
-    # AIX 5 supports IA64
-    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
-    shlibpath_var=LD_LIBRARY_PATH
-  else
-    # With GCC up to 2.95.x, collect2 would create an import file
-    # for dependence libraries.  The import file would start with
-    # the line `#! .'.  This would cause the generated library to
-    # depend on `.', always an invalid library.  This was fixed in
-    # development snapshots of GCC prior to 3.0.
-    case $host_os in
-      aix4 | aix4.[01] | aix4.[01].*)
-      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
-	   echo ' yes '
-	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
-	:
-      else
-	can_build_shared=no
-      fi
-      ;;
-    esac
-    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
-    # soname into executable. Probably we can add versioning support to
-    # collect2, so additional links can be useful in future.
-    if test "$aix_use_runtimelinking" = yes; then
-      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
-      # instead of lib<name>.a to let people know that these are not
-      # typical AIX shared libraries.
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    else
-      # We preserve .a as extension for shared libraries through AIX4.2
-      # and later when we are not doing run time linking.
-      library_names_spec='${libname}${release}.a $libname.a'
-      soname_spec='${libname}${release}${shared_ext}$major'
-    fi
-    shlibpath_var=LIBPATH
-  fi
-  ;;
-
-amigaos*)
-  library_names_spec='$libname.ixlibrary $libname.a'
-  # Create ${libname}_ixlibrary.a entries in /sys/libs.
-  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
-  ;;
-
-beos*)
-  library_names_spec='${libname}${shared_ext}'
-  dynamic_linker="$host_os ld.so"
-  shlibpath_var=LIBRARY_PATH
-  ;;
-
-bsdi[45]*)
-  version_type=linux
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
-  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
-  # the default ld.so.conf also contains /usr/contrib/lib and
-  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
-  # libtool to hard-code these into programs
-  ;;
-
-cygwin* | mingw* | pw32*)
-  version_type=windows
-  shrext_cmds=".dll"
-  need_version=no
-  need_lib_prefix=no
-
-  case $GCC,$host_os in
-  yes,cygwin* | yes,mingw* | yes,pw32*)
-    library_names_spec='$libname.dll.a'
-    # DLL is installed to $(libdir)/../bin by postinstall_cmds
-    postinstall_cmds='base_file=`basename \${file}`~
-      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
-      dldir=$destdir/`dirname \$dlpath`~
-      test -d \$dldir || mkdir -p \$dldir~
-      $install_prog $dir/$dlname \$dldir/$dlname'
-    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
-      dlpath=$dir/\$dldll~
-       $rm \$dlpath'
-    shlibpath_overrides_runpath=yes
-
-    case $host_os in
-    cygwin*)
-      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
-      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
-      ;;
-    mingw*)
-      # MinGW DLLs use traditional 'lib' prefix
-      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
-      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
-        # It is most probably a Windows format PATH printed by
-        # mingw gcc, but we are running on Cygwin. Gcc prints its search
-        # path with ; separators, and with drive letters. We can handle the
-        # drive letters (cygwin fileutils understands them), so leave them,
-        # especially as we might pass files found there to a mingw objdump,
-        # which wouldn't understand a cygwinified path. Ahh.
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
-      else
-        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
-      fi
-      ;;
-    pw32*)
-      # pw32 DLLs use 'pw' prefix rather than 'lib'
-      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
-      ;;
-    esac
-    ;;
-
-  *)
-    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
-    ;;
-  esac
-  dynamic_linker='Win32 ld.exe'
-  # FIXME: first we should search . and the directory the executable is in
-  shlibpath_var=PATH
-  ;;
-
-darwin* | rhapsody*)
-  dynamic_linker="$host_os dyld"
-  version_type=darwin
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
-  soname_spec='${libname}${release}${major}$shared_ext'
-  shlibpath_overrides_runpath=yes
-  shlibpath_var=DYLD_LIBRARY_PATH
-  shrext_cmds='$(test .$module = .yes && echo .so || echo .dylib)'
-  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
-  if test "$GCC" = yes; then
-    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
-  else
-    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
-  fi
-  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
-  ;;
-
-dgux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-freebsd1*)
-  dynamic_linker=no
-  ;;
-
-kfreebsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='GNU ld.so'
-  ;;
-
-freebsd* | dragonfly*)
-  # DragonFly does not have aout.  When/if they implement a new
-  # versioning mechanism, adjust this.
-  objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout`
-  version_type=freebsd-$objformat
-  case $version_type in
-    freebsd-elf*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-      need_version=no
-      need_lib_prefix=no
-      ;;
-    freebsd-*)
-      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
-      need_version=yes
-      ;;
-  esac
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_os in
-  freebsd2*)
-    shlibpath_overrides_runpath=yes
-    ;;
-  freebsd3.[01]* | freebsdelf3.[01]*)
-    shlibpath_overrides_runpath=yes
-    hardcode_into_libs=yes
-    ;;
-  *) # from 3.2 on
-    shlibpath_overrides_runpath=no
-    hardcode_into_libs=yes
-    ;;
-  esac
-  ;;
-
-gnu*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  hardcode_into_libs=yes
-  ;;
-
-hpux9* | hpux10* | hpux11*)
-  # Give a soname corresponding to the major version so that dld.sl refuses to
-  # link against other versions.
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  case "$host_cpu" in
-  ia64*)
-    shrext_cmds='.so'
-    hardcode_into_libs=yes
-    dynamic_linker="$host_os dld.so"
-    shlibpath_var=LD_LIBRARY_PATH
-    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    if test "X$HPUX_IA64_MODE" = X32; then
-      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
-    else
-      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
-    fi
-    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-    ;;
-   hppa*64*)
-     shrext_cmds='.sl'
-     hardcode_into_libs=yes
-     dynamic_linker="$host_os dld.sl"
-     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
-     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
-     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-     soname_spec='${libname}${release}${shared_ext}$major'
-     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
-     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
-     ;;
-   *)
-    shrext_cmds='.sl'
-    dynamic_linker="$host_os dld.sl"
-    shlibpath_var=SHLIB_PATH
-    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    ;;
-  esac
-  # HP-UX runs *really* slowly unless shared libraries are mode 555.
-  postinstall_cmds='chmod 555 $lib'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $host_os in
-    nonstopux*) version_type=nonstopux ;;
-    *)
-	if test "$lt_cv_prog_gnu_ld" = yes; then
-		version_type=linux
-	else
-		version_type=irix
-	fi ;;
-  esac
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
-  case $host_os in
-  irix5* | nonstopux*)
-    libsuff= shlibsuff=
-    ;;
-  *)
-    case $LD in # libtool.m4 will add one of these switches to LD
-    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
-      libsuff= shlibsuff= libmagic=32-bit;;
-    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
-      libsuff=32 shlibsuff=N32 libmagic=N32;;
-    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
-      libsuff=64 shlibsuff=64 libmagic=64-bit;;
-    *) libsuff= shlibsuff= libmagic=never-match;;
-    esac
-    ;;
-  esac
-  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
-  shlibpath_overrides_runpath=no
-  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
-  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
-  hardcode_into_libs=yes
-  ;;
-
-# No shared lib support for Linux oldld, aout, or coff.
-linux*oldld* | linux*aout* | linux*coff*)
-  dynamic_linker=no
-  ;;
-
-# This must be Linux ELF.
-linux*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  # This implies no fast_install, which is unacceptable.
-  # Some rework will be needed to allow for fast_install
-  # before this can be enabled.
-  hardcode_into_libs=yes
-
-  # Append ld.so.conf contents to the search path
-  if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
-    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
-  fi
-
-  # We used to test for /lib/ld.so.1 and disable shared libraries on
-  # powerpc, because MkLinux only supported shared libraries with the
-  # GNU dynamic linker.  Since this was broken with cross compilers,
-  # most powerpc-linux boxes support dynamic linking these days and
-  # people can always --disable-shared, the test was removed, and we
-  # assume the GNU/Linux dynamic linker is in use.
-  dynamic_linker='GNU/Linux ld.so'
-  ;;
-
-knetbsd*-gnu)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  dynamic_linker='GNU ld.so'
-  ;;
-
-netbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  need_version=no
-  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-    dynamic_linker='NetBSD (a.out) ld.so'
-  else
-    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
-    soname_spec='${libname}${release}${shared_ext}$major'
-    dynamic_linker='NetBSD ld.elf_so'
-  fi
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  ;;
-
-newsos6)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-nto-qnx*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  ;;
-
-openbsd*)
-  version_type=sunos
-  need_lib_prefix=no
-  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
-  case $host_os in
-    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-	shlibpath_overrides_runpath=no
-	;;
-      *)
-	shlibpath_overrides_runpath=yes
-	;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-sco3.2v5*)
-  version_type=osf
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-solaris*)
-  version_type=linux
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      export_dynamic_flag_spec='${wl}-Blargedynsym'
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    version_type=linux
-    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
-    soname_spec='$libname${shared_ext}.$major'
-    shlibpath_var=LD_LIBRARY_PATH
-  fi
-  ;;
-
-uts4*)
-  version_type=linux
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-echo "$as_me:$LINENO: result: $dynamic_linker" >&5
-echo "${ECHO_T}$dynamic_linker" >&6
-test "$dynamic_linker" = no && can_build_shared=no
-
-echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
-echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
-hardcode_action_GCJ=
-if test -n "$hardcode_libdir_flag_spec_GCJ" || \
-   test -n "$runpath_var_GCJ" || \
-   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
-
-  # We can hardcode non-existant directories.
-  if test "$hardcode_direct_GCJ" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
-     test "$hardcode_minus_L_GCJ" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action_GCJ=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action_GCJ=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action_GCJ=unsupported
-fi
-echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
-echo "${ECHO_T}$hardcode_action_GCJ" >&6
-
-if test "$hardcode_action_GCJ" = relink; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-striplib=
-old_striplib=
-echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
-echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6
-if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-   darwin*)
-       if test -n "$STRIP" ; then
-         striplib="$STRIP -x"
-         echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-       else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-       ;;
-   *)
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-    ;;
-  esac
-fi
-
-if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-   ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-   ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_dl_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-   ;;
-
-  *)
-    echo "$as_me:$LINENO: checking for shl_load" >&5
-echo $ECHO_N "checking for shl_load... $ECHO_C" >&6
-if test "${ac_cv_func_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define shl_load innocuous_shl_load
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char shl_load (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef shl_load
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char shl_load ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_shl_load) || defined (__stub___shl_load)
-choke me
-#else
-char (*f) () = shl_load;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != shl_load;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_shl_load=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_shl_load=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
-echo "${ECHO_T}$ac_cv_func_shl_load" >&6
-if test $ac_cv_func_shl_load = yes; then
-  lt_cv_dlopen="shl_load"
-else
-  echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
-echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_shl_load+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char shl_load ();
-int
-main ()
-{
-shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_dld_shl_load=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dld_shl_load=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6
-if test $ac_cv_lib_dld_shl_load = yes; then
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
-else
-  echo "$as_me:$LINENO: checking for dlopen" >&5
-echo $ECHO_N "checking for dlopen... $ECHO_C" >&6
-if test "${ac_cv_func_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
-   For example, HP-UX 11i <limits.h> declares gettimeofday.  */
-#define dlopen innocuous_dlopen
-
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char dlopen (); below.
-    Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
-    <limits.h> exists even on freestanding compilers.  */
-
-#ifdef __STDC__
-# include <limits.h>
-#else
-# include <assert.h>
-#endif
-
-#undef dlopen
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-/* The GNU C library defines this for functions which it implements
-    to always fail with ENOSYS.  Some functions are actually named
-    something starting with __ and the normal name is an alias.  */
-#if defined (__stub_dlopen) || defined (__stub___dlopen)
-choke me
-#else
-char (*f) () = dlopen;
-#endif
-#ifdef __cplusplus
-}
-#endif
-
-int
-main ()
-{
-return f != dlopen;
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_func_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_func_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
-echo "${ECHO_T}$ac_cv_func_dlopen" >&6
-if test $ac_cv_func_dlopen = yes; then
-  lt_cv_dlopen="dlopen"
-else
-  echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
-echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6
-if test "${ac_cv_lib_dl_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_dl_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_dl_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6
-if test $ac_cv_lib_dl_dlopen = yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
-echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6
-if test "${ac_cv_lib_svld_dlopen+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dlopen ();
-int
-main ()
-{
-dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_svld_dlopen=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_lib_svld_dlopen=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
-echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6
-if test $ac_cv_lib_svld_dlopen = yes; then
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
-echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6
-if test "${ac_cv_lib_dld_dld_link+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $LIBS"
-cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+    '$CC '*)
+      # Test whether the compiler implicitly links with -lc since on some
+      # systems, -lgcc has to come before -lc. If gcc already passes -lc
+      # to ld, don't add -lc before -lgcc.
+      echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6
+      $rm conftest*
+      printf "$lt_simple_compile_test_code" > conftest.$ac_ext
 
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char dld_link ();
-int
-main ()
-{
-dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-	 { ac_try='test -z "$ac_c_werror_flag"
-			 || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+      if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+  (eval $ac_compile) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-	 { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+  (exit $ac_status); } 2>conftest.err; then
+        soname=conftest
+        lib=conftest
+        libobjs=conftest.$ac_objext
+        deplibs=
+        wl=$lt_prog_compiler_wl_GCJ
+	pic_flag=$lt_prog_compiler_pic_GCJ
+        compiler_flags=-v
+        linker_flags=-v
+        verstring=
+        output_objdir=.
+        libname=conftest
+        lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+        allow_undefined_flag_GCJ=
+        if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+  (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_lib_dld_dld_link=yes
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+  (exit $ac_status); }
+        then
+	  archive_cmds_need_lc_GCJ=no
+        else
+	  archive_cmds_need_lc_GCJ=yes
+        fi
+        allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+      else
+        cat conftest.err 1>&5
+      fi
+      $rm conftest*
+      echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6
+      ;;
+    esac
+  fi
+  ;;
+esac
 
-ac_cv_lib_dld_dld_link=no
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
-echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6
-if test $ac_cv_lib_dld_dld_link = yes; then
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6
+library_names_spec=
+libname_spec='lib$name'
+soname_spec=
+shrext_cmds=".so"
+postinstall_cmds=
+postuninstall_cmds=
+finish_cmds=
+finish_eval=
+shlibpath_var=
+shlibpath_overrides_runpath=unknown
+version_type=none
+dynamic_linker="$host_os ld.so"
+sys_lib_dlsearch_path_spec="/lib /usr/lib"
+if test "$GCC" = yes; then
+  sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+  if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+    # if the path contains ";" then we assume it to be the separator
+    # otherwise default to the standard path separator (i.e. ":") - it is
+    # assumed that no part of a normal pathname contains ";" but that should
+    # okay in the real world where ";" in dirpaths is itself problematic.
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+  else
+    sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+  fi
+else
+  sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
 fi
+need_lib_prefix=unknown
+hardcode_into_libs=no
 
+# when you set need_version to no, make sure it does not cause -set_version
+# flags to be left without arguments
+need_version=unknown
 
-fi
+case $host_os in
+aix3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+  shlibpath_var=LIBPATH
 
+  # AIX 3 has no versioning support, so we append a major version to the name.
+  soname_spec='${libname}${release}${shared_ext}$major'
+  ;;
 
-fi
+aix4* | aix5*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  hardcode_into_libs=yes
+  if test "$host_cpu" = ia64; then
+    # AIX 5 supports IA64
+    library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}'
+    shlibpath_var=LD_LIBRARY_PATH
+  else
+    # With GCC up to 2.95.x, collect2 would create an import file
+    # for dependence libraries.  The import file would start with
+    # the line `#! .'.  This would cause the generated library to
+    # depend on `.', always an invalid library.  This was fixed in
+    # development snapshots of GCC prior to 3.0.
+    case $host_os in
+      aix4 | aix4.[01] | aix4.[01].*)
+      if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)'
+	   echo ' yes '
+	   echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then
+	:
+      else
+	can_build_shared=no
+      fi
+      ;;
+    esac
+    # AIX (on Power*) has no versioning support, so currently we can not hardcode correct
+    # soname into executable. Probably we can add versioning support to
+    # collect2, so additional links can be useful in future.
+    if test "$aix_use_runtimelinking" = yes; then
+      # If using run time linking (on AIX 4.2 or later) use lib<name>.so
+      # instead of lib<name>.a to let people know that these are not
+      # typical AIX shared libraries.
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    else
+      # We preserve .a as extension for shared libraries through AIX4.2
+      # and later when we are not doing run time linking.
+      library_names_spec='${libname}${release}.a $libname.a'
+      soname_spec='${libname}${release}${shared_ext}$major'
+    fi
+    shlibpath_var=LIBPATH
+  fi
+  ;;
 
+amigaos*)
+  library_names_spec='$libname.ixlibrary $libname.a'
+  # Create ${libname}_ixlibrary.a entries in /sys/libs.
+  finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done'
+  ;;
 
-fi
+beos*)
+  library_names_spec='${libname}${shared_ext}'
+  dynamic_linker="$host_os ld.so"
+  shlibpath_var=LIBRARY_PATH
+  ;;
 
+bsdi[45]*)
+  version_type=linux
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib"
+  sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib"
+  # the default ld.so.conf also contains /usr/contrib/lib and
+  # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow
+  # libtool to hard-code these into programs
+  ;;
 
-fi
+cygwin* | mingw* | pw32*)
+  version_type=windows
+  shrext_cmds=".dll"
+  need_version=no
+  need_lib_prefix=no
 
+  case $GCC,$host_os in
+  yes,cygwin* | yes,mingw* | yes,pw32*)
+    library_names_spec='$libname.dll.a'
+    # DLL is installed to $(libdir)/../bin by postinstall_cmds
+    postinstall_cmds='base_file=`basename \${file}`~
+      dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~
+      dldir=$destdir/`dirname \$dlpath`~
+      test -d \$dldir || mkdir -p \$dldir~
+      $install_prog $dir/$dlname \$dldir/$dlname~
+      chmod a+x \$dldir/$dlname'
+    postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~
+      dlpath=$dir/\$dldll~
+       $rm \$dlpath'
+    shlibpath_overrides_runpath=yes
 
-fi
+    case $host_os in
+    cygwin*)
+      # Cygwin DLLs use 'cyg' prefix rather than 'lib'
+      soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib"
+      ;;
+    mingw*)
+      # MinGW DLLs use traditional 'lib' prefix
+      soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+      if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+        # It is most probably a Windows format PATH printed by
+        # mingw gcc, but we are running on Cygwin. Gcc prints its search
+        # path with ; separators, and with drive letters. We can handle the
+        # drive letters (cygwin fileutils understands them), so leave them,
+        # especially as we might pass files found there to a mingw objdump,
+        # which wouldn't understand a cygwinified path. Ahh.
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+      else
+        sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED  -e "s/$PATH_SEPARATOR/ /g"`
+      fi
+      ;;
+    pw32*)
+      # pw32 DLLs use 'pw' prefix rather than 'lib'
+      library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+      ;;
+    esac
+    ;;
 
+  *)
+    library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
     ;;
   esac
+  dynamic_linker='Win32 ld.exe'
+  # FIXME: first we should search . and the directory the executable is in
+  shlibpath_var=PATH
+  ;;
 
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
+darwin* | rhapsody*)
+  dynamic_linker="$host_os dyld"
+  version_type=darwin
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext'
+  soname_spec='${libname}${release}${major}$shared_ext'
+  shlibpath_overrides_runpath=yes
+  shlibpath_var=DYLD_LIBRARY_PATH
+  shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
+  # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+  if test "$GCC" = yes; then
+    sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
   else
-    enable_dlopen=no
+    sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
   fi
+  sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
+  ;;
 
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
+dgux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
 
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
+freebsd1*)
+  dynamic_linker=no
+  ;;
 
-    echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
-echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<EOF
-#line 18793 "configure"
-#include "confdefs.h"
+kfreebsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
 
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
+freebsd* | dragonfly*)
+  # DragonFly does not have aout.  When/if they implement a new
+  # versioning mechanism, adjust this.
+  if test -x /usr/bin/objformat; then
+    objformat=`/usr/bin/objformat`
+  else
+    case $host_os in
+    freebsd[123]*) objformat=aout ;;
+    *) objformat=elf ;;
+    esac
+  fi
+  version_type=freebsd-$objformat
+  case $version_type in
+    freebsd-elf*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+      need_version=no
+      need_lib_prefix=no
+      ;;
+    freebsd-*)
+      library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix'
+      need_version=yes
+      ;;
+  esac
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_os in
+  freebsd2*)
+    shlibpath_overrides_runpath=yes
+    ;;
+  freebsd3.[01]* | freebsdelf3.[01]*)
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  freebsd3.[2-9]* | freebsdelf3.[2-9]* | \
+  freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1)
+    shlibpath_overrides_runpath=no
+    hardcode_into_libs=yes
+    ;;
+  freebsd*) # from 4.6 on
+    shlibpath_overrides_runpath=yes
+    hardcode_into_libs=yes
+    ;;
+  esac
+  ;;
 
-#include <stdio.h>
+gnu*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  ;;
 
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
+hpux9* | hpux10* | hpux11*)
+  # Give a soname corresponding to the major version so that dld.sl refuses to
+  # link against other versions.
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  case $host_cpu in
+  ia64*)
+    shrext_cmds='.so'
+    hardcode_into_libs=yes
+    dynamic_linker="$host_os dld.so"
+    shlibpath_var=LD_LIBRARY_PATH
+    shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    if test "X$HPUX_IA64_MODE" = X32; then
+      sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib"
+    else
+      sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64"
+    fi
+    sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+    ;;
+   hppa*64*)
+     shrext_cmds='.sl'
+     hardcode_into_libs=yes
+     dynamic_linker="$host_os dld.sl"
+     shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH
+     shlibpath_overrides_runpath=yes # Unless +noenvvar is specified.
+     library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+     soname_spec='${libname}${release}${shared_ext}$major'
+     sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64"
+     sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec
+     ;;
+   *)
+    shrext_cmds='.sl'
+    dynamic_linker="$host_os dld.sl"
+    shlibpath_var=SHLIB_PATH
+    shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    ;;
+  esac
+  # HP-UX runs *really* slowly unless shared libraries are mode 555.
+  postinstall_cmds='chmod 555 $lib'
+  ;;
 
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
+interix3*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
+irix5* | irix6* | nonstopux*)
+  case $host_os in
+    nonstopux*) version_type=nonstopux ;;
+    *)
+	if test "$lt_cv_prog_gnu_ld" = yes; then
+		version_type=linux
+	else
+		version_type=irix
+	fi ;;
+  esac
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}'
+  case $host_os in
+  irix5* | nonstopux*)
+    libsuff= shlibsuff=
+    ;;
+  *)
+    case $LD in # libtool.m4 will add one of these switches to LD
+    *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ")
+      libsuff= shlibsuff= libmagic=32-bit;;
+    *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ")
+      libsuff=32 shlibsuff=N32 libmagic=N32;;
+    *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ")
+      libsuff=64 shlibsuff=64 libmagic=64-bit;;
+    *) libsuff= shlibsuff= libmagic=never-match;;
+    esac
+    ;;
+  esac
+  shlibpath_var=LD_LIBRARY${shlibsuff}_PATH
+  shlibpath_overrides_runpath=no
+  sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}"
+  sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}"
+  hardcode_into_libs=yes
+  ;;
 
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
+# No shared lib support for Linux oldld, aout, or coff.
+linux*oldld* | linux*aout* | linux*coff*)
+  dynamic_linker=no
+  ;;
 
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
+# This must be Linux ELF.
+linux*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  # This implies no fast_install, which is unacceptable.
+  # Some rework will be needed to allow for fast_install
+  # before this can be enabled.
+  hardcode_into_libs=yes
 
-    exit (status);
-}
-EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_unknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
+  # Append ld.so.conf contents to the search path
+  if test -f /etc/ld.so.conf; then
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,	]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
   fi
-fi
-rm -fr conftest*
 
+  # We used to test for /lib/ld.so.1 and disable shared libraries on
+  # powerpc, because MkLinux only supported shared libraries with the
+  # GNU dynamic linker.  Since this was broken with cross compilers,
+  # most powerpc-linux boxes support dynamic linking these days and
+  # people can always --disable-shared, the test was removed, and we
+  # assume the GNU/Linux dynamic linker is in use.
+  dynamic_linker='GNU/Linux ld.so'
+  ;;
 
-fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self" >&6
+knetbsd*-gnu)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  dynamic_linker='GNU ld.so'
+  ;;
 
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      LDFLAGS="$LDFLAGS $link_static_flag"
-      echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
-echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6
-if test "${lt_cv_dlopen_self_static+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  	  if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<EOF
-#line 18891 "configure"
-#include "confdefs.h"
+netbsd*)
+  version_type=sunos
+  need_lib_prefix=no
+  need_version=no
+  if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+    finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+    dynamic_linker='NetBSD (a.out) ld.so'
+  else
+    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+    soname_spec='${libname}${release}${shared_ext}$major'
+    dynamic_linker='NetBSD ld.elf_so'
+  fi
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  ;;
 
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
+newsos6)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
 
-#include <stdio.h>
+nto-qnx*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  ;;
 
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL		RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL		DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL		0
-#  endif
-#endif
+openbsd*)
+  version_type=sunos
+  sys_lib_dlsearch_path_spec="/usr/lib"
+  need_lib_prefix=no
+  # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
+  case $host_os in
+    openbsd3.3 | openbsd3.3.*) need_version=yes ;;
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+	shlibpath_overrides_runpath=no
+	;;
+      *)
+	shlibpath_overrides_runpath=yes
+	;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
 
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW		RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW		DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW	RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW	DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW	0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
 
-#ifdef __cplusplus
-extern "C" void exit (int);
-#endif
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
 
-void fnord() { int i=42;}
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
+solaris*)
+  version_type=linux
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
 
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore;
-      /* dlclose (self); */
-    }
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
 
-    exit (status);
-}
-EOF
-  if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_unknown|x*) lt_cv_dlopen_self_static=no ;;
+sysv4 | sysv4.3*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      export_dynamic_flag_spec='${wl}-Blargedynsym'
+      runpath_var=LD_RUN_PATH
+      ;;
+    siemens)
+      need_lib_prefix=no
+      ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    version_type=linux
+    library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+    soname_spec='$libname${shared_ext}.$major'
+    shlibpath_var=LD_LIBRARY_PATH
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+    shlibpath_overrides_runpath=no
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    shlibpath_overrides_runpath=yes
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+	;;
     esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
   fi
-fi
-rm -fr conftest*
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
 
+uts4*)
+  version_type=linux
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$dynamic_linker" >&6
+test "$dynamic_linker" = no && can_build_shared=no
 
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
-echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
-echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6
-    fi
 
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+   test -n "$runpath_var_GCJ" || \
+   test "X$hardcode_automatic_GCJ" = "Xyes" ; then
 
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
+  # We can hardcode non-existant directories.
+  if test "$hardcode_direct_GCJ" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+     test "$hardcode_minus_L_GCJ" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action_GCJ=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action_GCJ=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action_GCJ=unsupported
+fi
+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6
 
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
+if test "$hardcode_action_GCJ" = relink; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
 fi
 
 
@@ -19005,7 +17966,7 @@ if test -f "$ltmain"; then
   # Now quote all the things that may contain metacharacters while being
   # careful not to overquote the AC_SUBSTed values.  We take copies of the
   # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
     SED SHELL STRIP \
     libname_spec library_names_spec soname_spec extract_expsyms_cmds \
     old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -19123,6 +18084,9 @@ AR_FLAGS=$lt_AR_FLAGS
 # A C compiler.
 LTCC=$lt_LTCC
 
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
 # A language-specific compiler.
 CC=$lt_compiler_GCJ
 
@@ -19432,6 +18396,9 @@ lt_simple_link_test_code="$lt_simple_compile_test_code"
 # If no C compiler was specified, use CC.
 LTCC=${LTCC-"$CC"}
 
+# If no C compiler flags were specified, use CFLAGS.
+LTCFLAGS=${LTCFLAGS-"$CFLAGS"}
+
 # Allow CC to be a program name with arguments.
 compiler=$CC
 
@@ -19439,13 +18406,13 @@ compiler=$CC
 # save warnings/boilerplate of simple test code
 ac_outfile=conftest.$ac_objext
 printf "$lt_simple_compile_test_code" >conftest.$ac_ext
-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_compiler_boilerplate=`cat conftest.err`
 $rm conftest*
 
 ac_outfile=conftest.$ac_objext
 printf "$lt_simple_link_test_code" >conftest.$ac_ext
-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d' >conftest.err
+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
 _lt_linker_boilerplate=`cat conftest.err`
 $rm conftest*
 
@@ -19480,7 +18447,7 @@ if test -f "$ltmain"; then
   # Now quote all the things that may contain metacharacters while being
   # careful not to overquote the AC_SUBSTed values.  We take copies of the
   # variables and quote the copies for generation of the libtool script.
-  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC NM \
+  for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
     SED SHELL STRIP \
     libname_spec library_names_spec soname_spec extract_expsyms_cmds \
     old_striplib striplib file_magic_cmd finish_cmds finish_eval \
@@ -19598,6 +18565,9 @@ AR_FLAGS=$lt_AR_FLAGS
 # A C compiler.
 LTCC=$lt_LTCC
 
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
 # A language-specific compiler.
 CC=$lt_compiler_RC
 
@@ -19949,7 +18919,7 @@ _ACEOF
 
 
 
-ALL_LINGUAS="bg de fr pl pt ru sr sr@Latn"
+ALL_LINGUAS="bg cs de fr ja nl pl pt pt_BR ru sr sr@Latn"
 
 
 for ac_header in locale.h
@@ -21520,25 +20490,30 @@ echo "${ECHO_T}$LINGUAS" >&6
 
 
 
+case "$am__api_version" in
+    1.01234)
+	{ { echo "$as_me:$LINENO: error: Automake 1.5 or newer is required to use intltool" >&5
+echo "$as_me: error: Automake 1.5 or newer is required to use intltool" >&2;}
+   { (exit 1); exit 1; }; }
+    ;;
+    *)
+    ;;
+esac
 
 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. '{ printf "%d", $1 * 100 + $2; }'`
-    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $2; }'  < ${ac_aux_dir}/intltool-update.in`
-
-    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split($2, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
-
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo  | awk -F. '{ print $ 1 * 100 + $ 2; }'`
+    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`
 
-    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
-	echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5
+    echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found" >&5
 echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found" >&6
-    else
-	echo "$as_me:$LINENO: result: $INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool  or later." >&5
-echo "${ECHO_T}$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool  or later." >&6
-	exit 1
-    fi
+    test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+	{ { echo "$as_me:$LINENO: error: Your intltool is too old.  You need intltool  or later." >&5
+echo "$as_me: error: Your intltool is too old.  You need intltool  or later." >&2;}
+   { (exit 1); exit 1; }; }
 fi
 
   INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
@@ -21558,6 +20533,7 @@ INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcar
     INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
   INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
     INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
 
 
 
@@ -21577,14 +20553,13 @@ INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcar
 
 
 
-# Use the tools built into the package, not the ones that are installed.
 
+# Use the tools built into the package, not the ones that are installed.
 INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
-INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
-INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
-
 
+INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
 
+INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
 
 
 # Extract the first word of "perl", so it can be a program name with args.
@@ -21810,16 +20785,9 @@ echo "${ECHO_T}no" >&6
 fi
 
 
-# Remove file type tags (using []) from po/POTFILES.
-
-
 
 
 
-
-
-# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
-
           ac_config_commands="$ac_config_commands intltool"
 
 
@@ -23840,57 +22808,62 @@ echo "${ECHO_T}no" >&6
 fi
 
 pkg_failed=no
-echo "$as_me:$LINENO: checking for GNOME_CFLAGS" >&5
-echo $ECHO_N "checking for GNOME_CFLAGS... $ECHO_C" >&6
-if test "${pkg_cv_GNOME_CFLAGS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "x$ac_cv_env_GNOME_CFLAGS_set" = "xset"; then
-	pkg_cv_GNOME_CFLAGS=$ac_cv_env_GNOME_CFLAGS_value
-elif test -n "$PKG_CONFIG"; then
-	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"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\" >/dev/null 2>&1") >&5
-  ($PKG_CONFIG --exists "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" >/dev/null 2>&1) 2>&5
+echo "$as_me:$LINENO: checking for GNOME" >&5
+echo $ECHO_N "checking for GNOME... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GNOME_CFLAGS"; 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
   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`
-	else
-		pkg_failed=yes
-	fi
+  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`
 else
-	pkg_failed=untried
-fi
+  pkg_failed=yes
 fi
-echo "$as_me:$LINENO: result: $pkg_cv_GNOME_CFLAGS" >&5
-echo "${ECHO_T}$pkg_cv_GNOME_CFLAGS" >&6
-echo "$as_me:$LINENO: checking for GNOME_LIBS" >&5
-echo $ECHO_N "checking for GNOME_LIBS... $ECHO_C" >&6
-if test "${pkg_cv_GNOME_LIBS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    fi
 else
-  if test "x$ac_cv_env_GNOME_LIBS_set" = "xset"; then
-	pkg_cv_GNOME_LIBS=$ac_cv_env_GNOME_LIBS_value
-elif test -n "$PKG_CONFIG"; then
-	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"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\" >/dev/null 2>&1") >&5
-  ($PKG_CONFIG --exists "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" >/dev/null 2>&1) 2>&5
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GNOME_LIBS"; 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
   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`
-	else
-		pkg_failed=yes
-	fi
+  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`
 else
-	pkg_failed=untried
+  pkg_failed=yes
 fi
+    fi
+else
+	pkg_failed=untried
 fi
-echo "$as_me:$LINENO: result: $pkg_cv_GNOME_LIBS" >&5
-echo "${ECHO_T}$pkg_cv_GNOME_LIBS" >&6
+
+
 
 if test $pkg_failed = yes; then
-	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"`
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+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"`
+        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"`
+        fi
 	# Put the nasty error message in config.log where it belongs
-	echo "$GNOME_PKG_ERRORS" 1>&5
+	echo "$GNOME_PKG_ERRORS" >&5
 
 	{ { echo "$as_me:$LINENO: error: unable to find the GNOME libraries" >&5
 echo "$as_me: error: unable to find the GNOME libraries" >&2;}
@@ -23902,6 +22875,8 @@ echo "$as_me: error: unable to find the GNOME libraries" >&2;}
 else
 	GNOME_CFLAGS=$pkg_cv_GNOME_CFLAGS
 	GNOME_LIBS=$pkg_cv_GNOME_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
 	:
 fi
 
@@ -23940,19 +22915,16 @@ echo "${ECHO_T}Using $GCONF_SCHEMA_FILE_DIR as install directory for schema file
   # Check whether --enable-schemas-install or --disable-schemas-install was given.
 if test "${enable_schemas_install+set}" = set; then
   enableval="$enable_schemas_install"
-  case "${enableval}" in
-       yes) schemas_install=true ;;
-       no)  schemas_install=false ;;
-       *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --disable-schemas-install" >&5
-echo "$as_me: error: bad value ${enableval} for --disable-schemas-install" >&2;}
+  case ${enableval} in
+       yes|no) ;;
+       *) { { echo "$as_me:$LINENO: error: bad value ${enableval} for --enable-schemas-install" >&5
+echo "$as_me: error: bad value ${enableval} for --enable-schemas-install" >&2;}
    { (exit 1); exit 1; }; } ;;
-     esac
-else
-  schemas_install=true
+      esac
 fi;
 
 
-if test x$schemas_install = xtrue; then
+if test "$enable_schemas_install" != no; then
   GCONF_SCHEMAS_INSTALL_TRUE=
   GCONF_SCHEMAS_INSTALL_FALSE='#'
 else
@@ -23964,234 +22936,26 @@ fi
 
 
 
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-
-if test -n "$PKG_CONFIG"; then
-  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-echo "${ECHO_T}$PKG_CONFIG" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
-
-if test -n "$ac_pt_PKG_CONFIG"; then
-  echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
-echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-  PKG_CONFIG=$ac_pt_PKG_CONFIG
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
-
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.9.0
-	echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
-echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-	else
-		echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-		PKG_CONFIG=""
-	fi
-
-fi
-
-echo "$as_me:$LINENO: checking for the GNOME installation prefix" >&5
-echo $ECHO_N "checking for the GNOME installation prefix... $ECHO_C" >&6
-
-gnome_prefix=""
-if test -n "$PKG_CONFIG"; then
-	gnome_prefix=`$PKG_CONFIG --variable prefix libgnome-2.0`
-fi
-
-if test -n "$gnome_prefix"; then
-	echo "$as_me:$LINENO: result: $gnome_prefix" >&5
-echo "${ECHO_T}$gnome_prefix" >&6
-	:
-else
-	echo "$as_me:$LINENO: result: not found" >&5
-echo "${ECHO_T}not found" >&6
-	:
-fi
-
-
-
-
-if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
-	if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args.
-set dummy ${ac_tool_prefix}pkg-config; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-PKG_CONFIG=$ac_cv_path_PKG_CONFIG
+echo "$as_me:$LINENO: checking for the GNOME installation prefix" >&5
+echo $ECHO_N "checking for the GNOME installation prefix... $ECHO_C" >&6
 
+gnome_prefix=""
 if test -n "$PKG_CONFIG"; then
-  echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
-echo "${ECHO_T}$PKG_CONFIG" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
-fi
-if test -z "$ac_cv_path_PKG_CONFIG"; then
-  ac_pt_PKG_CONFIG=$PKG_CONFIG
-  # Extract the first word of "pkg-config", so it can be a program name with args.
-set dummy pkg-config; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $ac_pt_PKG_CONFIG in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
+	gnome_prefix=`$PKG_CONFIG --variable prefix libgnome-2.0 2>/dev/null`
 fi
-ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG
 
-if test -n "$ac_pt_PKG_CONFIG"; then
-  echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
-echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6
+if test -n "$gnome_prefix"; then
+	echo "$as_me:$LINENO: result: $gnome_prefix" >&5
+echo "${ECHO_T}$gnome_prefix" >&6
+	:
 else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
+	echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+	:
 fi
 
-  PKG_CONFIG=$ac_pt_PKG_CONFIG
-else
-  PKG_CONFIG="$ac_cv_path_PKG_CONFIG"
-fi
 
-fi
-if test -n "$PKG_CONFIG"; then
-	_pkg_min_version=0.9.0
-	echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
-echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6
-	if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
-		echo "$as_me:$LINENO: result: yes" >&5
-echo "${ECHO_T}yes" >&6
-	else
-		echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-		PKG_CONFIG=""
-	fi
 
-fi
 
 echo "$as_me:$LINENO: checking for the GNOME capplet directory" >&5
 echo $ECHO_N "checking for the GNOME capplet directory... $ECHO_C" >&6
@@ -24254,13 +23018,63 @@ echo "$as_me: error: unable to find the gconftool-2 program" >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
 
 
-LIBBONOBO_IDL="`$PKG_CONFIG --variable=idldir libbonobo-2.0`"
+echo "$as_me:$LINENO: checking for orbit-idl-2" >&5
+echo $ECHO_N "checking for orbit-idl-2... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+	ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0 2>/dev/null`"
+else
+	ORBIT_IDL=""
+fi
+
+if test -n "$ORBIT_IDL"; then
+	echo "$as_me:$LINENO: result: $ORBIT_IDL" >&5
+echo "${ECHO_T}$ORBIT_IDL" >&6
+	:
+else
+	echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+	{ { echo "$as_me:$LINENO: error: unable to find the orbit-idl-2 program" >&5
+echo "$as_me: error: unable to find the orbit-idl-2 program" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+echo "$as_me:$LINENO: checking for BONOBO IDL" >&5
+echo $ECHO_N "checking for BONOBO IDL... $ECHO_C" >&6
+if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"libbonobo-2.0 bonobo-activation-2.0\"") >&5
+  ($PKG_CONFIG --exists --print-errors "libbonobo-2.0 bonobo-activation-2.0") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  found=yes
+else
+  found=no
+fi
+echo "$as_me:$LINENO: result: $found" >&5
+echo "${ECHO_T}$found" >&6
 
+BONOBO_IDLFLAGS=""
+if test $found = yes; then
+	for module in libbonobo-2.0 bonobo-activation-2.0; do
+		idldir="`$PKG_CONFIG --variable=idldir $module 2>/dev/null`"
+		if test -n "$idldir"; then
+			BONOBO_IDLFLAGS="$BONOBO_IDLFLAGS -I$idldir"
+		fi
+	done
+	:
+else
+	{ { echo "$as_me:$LINENO: error: unable to find the Bonobo IDL modules" >&5
+echo "$as_me: error: unable to find the Bonobo IDL modules" >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
-BONOBO_ACTIVATION_IDL="`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
 
 
 ### optional libraries
@@ -24305,45 +23119,6 @@ else
 echo "${ECHO_T}no" >&6
 fi
 
-# Extract the first word of "glib-genmarshal", so it can be a program name with args.
-set dummy glib-genmarshal; ac_word=$2
-echo "$as_me:$LINENO: checking for $ac_word" >&5
-echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_GLIB_GENMARSHAL+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  case $GLIB_GENMARSHAL in
-  [\\/]* | ?:[\\/]*)
-  ac_cv_path_GLIB_GENMARSHAL="$GLIB_GENMARSHAL" # Let the user override the test with a path.
-  ;;
-  *)
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-  for ac_exec_ext in '' $ac_executable_extensions; do
-  if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_path_GLIB_GENMARSHAL="$as_dir/$ac_word$ac_exec_ext"
-    echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
-done
-
-  ;;
-esac
-fi
-GLIB_GENMARSHAL=$ac_cv_path_GLIB_GENMARSHAL
-
-if test -n "$GLIB_GENMARSHAL"; then
-  echo "$as_me:$LINENO: result: $GLIB_GENMARSHAL" >&5
-echo "${ECHO_T}$GLIB_GENMARSHAL" >&6
-else
-  echo "$as_me:$LINENO: result: no" >&5
-echo "${ECHO_T}no" >&6
-fi
-
 
 enable_mime=no
 if test $enable_mbox = yes ||
@@ -24354,57 +23129,62 @@ if test $enable_mbox = yes ||
    test $enable_sylpheed = yes; then
 
 pkg_failed=no
-echo "$as_me:$LINENO: checking for GMIME_CFLAGS" >&5
-echo $ECHO_N "checking for GMIME_CFLAGS... $ECHO_C" >&6
-if test "${pkg_cv_GMIME_CFLAGS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "x$ac_cv_env_GMIME_CFLAGS_set" = "xset"; then
-	pkg_cv_GMIME_CFLAGS=$ac_cv_env_GMIME_CFLAGS_value
-elif test -n "$PKG_CONFIG"; then
-	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"gmime-2.0 >= 2.1.0\" >/dev/null 2>&1") >&5
-  ($PKG_CONFIG --exists "gmime-2.0 >= 2.1.0" >/dev/null 2>&1) 2>&5
+echo "$as_me:$LINENO: checking for GMIME" >&5
+echo $ECHO_N "checking for GMIME... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GMIME_CFLAGS"; then
+        pkg_cv_GMIME_CFLAGS="$GMIME_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gmime-2.0 >= 2.1.0\"") >&5
+  ($PKG_CONFIG --exists --print-errors "gmime-2.0 >= 2.1.0") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-		pkg_cv_GMIME_CFLAGS=`$PKG_CONFIG --cflags "gmime-2.0 >= 2.1.0" 2>/dev/null`
-	else
-		pkg_failed=yes
-	fi
+  pkg_cv_GMIME_CFLAGS=`$PKG_CONFIG --cflags "gmime-2.0 >= 2.1.0" 2>/dev/null`
 else
-	pkg_failed=untried
+  pkg_failed=yes
 fi
-fi
-echo "$as_me:$LINENO: result: $pkg_cv_GMIME_CFLAGS" >&5
-echo "${ECHO_T}$pkg_cv_GMIME_CFLAGS" >&6
-echo "$as_me:$LINENO: checking for GMIME_LIBS" >&5
-echo $ECHO_N "checking for GMIME_LIBS... $ECHO_C" >&6
-if test "${pkg_cv_GMIME_LIBS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
+    fi
 else
-  if test "x$ac_cv_env_GMIME_LIBS_set" = "xset"; then
-	pkg_cv_GMIME_LIBS=$ac_cv_env_GMIME_LIBS_value
-elif test -n "$PKG_CONFIG"; then
-	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"gmime-2.0 >= 2.1.0\" >/dev/null 2>&1") >&5
-  ($PKG_CONFIG --exists "gmime-2.0 >= 2.1.0" >/dev/null 2>&1) 2>&5
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$GMIME_LIBS"; then
+        pkg_cv_GMIME_LIBS="$GMIME_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"gmime-2.0 >= 2.1.0\"") >&5
+  ($PKG_CONFIG --exists --print-errors "gmime-2.0 >= 2.1.0") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; then
-		pkg_cv_GMIME_LIBS=`$PKG_CONFIG --libs "gmime-2.0 >= 2.1.0" 2>/dev/null`
-	else
-		pkg_failed=yes
-	fi
+  pkg_cv_GMIME_LIBS=`$PKG_CONFIG --libs "gmime-2.0 >= 2.1.0" 2>/dev/null`
 else
-	pkg_failed=untried
+  pkg_failed=yes
 fi
+    fi
+else
+	pkg_failed=untried
 fi
-echo "$as_me:$LINENO: result: $pkg_cv_GMIME_LIBS" >&5
-echo "${ECHO_T}$pkg_cv_GMIME_LIBS" >&6
+
+
 
 if test $pkg_failed = yes; then
-	GMIME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gmime-2.0 >= 2.1.0"`
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        GMIME_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "gmime-2.0 >= 2.1.0"`
+        else
+	        GMIME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gmime-2.0 >= 2.1.0"`
+        fi
 	# Put the nasty error message in config.log where it belongs
-	echo "$GMIME_PKG_ERRORS" 1>&5
+	echo "$GMIME_PKG_ERRORS" >&5
 
 	:
 elif test $pkg_failed = untried; then
@@ -24412,6 +23192,8 @@ elif test $pkg_failed = untried; then
 else
 	GMIME_CFLAGS=$pkg_cv_GMIME_CFLAGS
 	GMIME_LIBS=$pkg_cv_GMIME_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
 	enable_mime=yes
 fi
 	if test $enable_mime = no; then
@@ -24454,6 +23236,13 @@ disable_sylpheed_reason="(GMime not found)"
 	fi
 fi
 
+if test $enable_sylpheed_locking = yes && test $enable_sylpheed = no; then
+	{ echo "$as_me:$LINENO: Sylpheed support disabled: forcing --disable-sylpheed-locking" >&5
+echo "$as_me: Sylpheed support disabled: forcing --disable-sylpheed-locking" >&6;}
+enable_sylpheed_locking=no
+disable_sylpheed_locking_reason="(Sylpheed support disabled)"
+fi
+
 if test $enable_pop3 = no && test $enable_imap = no; then
 	if test $enable_ssl = yes; then
 		{ echo "$as_me:$LINENO: POP3 and IMAP support disabled: forcing --disable-ssl" >&5
@@ -24475,41 +23264,119 @@ disable_ipv6_reason="(POP3 and IMAP support disabled)"
 	fi
 fi
 
-if test $enable_ssl = yes; then
+if test $enable_ssl = yes; then
+	OPENSSL_CFLAGS=""
+OPENSSL_LIBS="-lssl -lcrypto"
+
+ac_save_CFLAGS="$CFLAGS"
+ac_save_LIBS="$LIBS"
+CFLAGS="$CFLAGS $OPENSSL_CFLAGS"
+LIBS="$LIBS $OPENSSL_LIBS"
+
+# the OPENSSL_VERSION_NUMBER format we use appeared in 0.9.5b
+openssl_min_version=0.9.5b
+
+echo "$as_me:$LINENO: checking for OpenSSL - version >= $openssl_min_version" >&5
+echo $ECHO_N "checking for OpenSSL - version >= $openssl_min_version... $ECHO_C" >&6
+if test "$cross_compiling" = yes; then
+  found=yes
+else
+  cat >conftest.$ac_ext <<_ACEOF
+
+#include <openssl/opensslv.h>
+
+int main() {
+  int n;
+  char cpatch = 0;
+  int major, minor, fix, patch = 0;
+  int openssl_major, openssl_minor, openssl_fix, openssl_patch;
+
+  n = sscanf("$openssl_min_version", "%d.%d.%d%c", &major, &minor, &fix, &cpatch);
+  if (n < 3)
+    exit(1); /* bad version string */
+  if (cpatch)
+    patch = cpatch - 96; /* letter -> number */
+
+  if (OPENSSL_VERSION_NUMBER <
+      (major << 28) + (minor << 20) + (fix << 12) + (patch << 4))
+    exit(2); /* version too old */
+
+  exit(0);
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+  found=yes
+else
+  echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+found=no
+fi
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+echo "$as_me:$LINENO: result: $found" >&5
+echo "${ECHO_T}$found" >&6
+
+CFLAGS="$ac_save_CFLAGS"
+LIBS="$ac_save_LIBS"
+
+if test $found = yes; then
+	:
+else
 	OPENSSL_CFLAGS=""
-OPENSSL_LIBS="-lssl -lcrypto"
+	OPENSSL_LIBS=""
+	{ echo "$as_me:$LINENO: OpenSSL not found: forcing --disable-ssl" >&5
+echo "$as_me: OpenSSL not found: forcing --disable-ssl" >&6;}
+enable_ssl=no
+disable_ssl_reason="(OpenSSL not found)"
+fi
+
+
+
+fi
+if test $enable_sasl = yes; then
+	SASL_CFLAGS=""
+SASL_LIBS="-lsasl2"
 
 ac_save_CFLAGS="$CFLAGS"
 ac_save_LIBS="$LIBS"
-CFLAGS="$CFLAGS $OPENSSL_CFLAGS"
-LIBS="$LIBS $OPENSSL_LIBS"
+CFLAGS="$CFLAGS $SASL_CFLAGS"
+LIBS="$LIBS $SASL_LIBS"
 
-# the OPENSSL_VERSION_NUMBER format we use appeared in 0.9.5b
-openssl_min_version=0.9.5b
+sasl2_min_version=2.0
 
-echo "$as_me:$LINENO: checking for OpenSSL - version >= $openssl_min_version" >&5
-echo $ECHO_N "checking for OpenSSL - version >= $openssl_min_version... $ECHO_C" >&6
+echo "$as_me:$LINENO: checking for Cyrus SASL - version >= $sasl2_min_version" >&5
+echo $ECHO_N "checking for Cyrus SASL - version >= $sasl2_min_version... $ECHO_C" >&6
 if test "$cross_compiling" = yes; then
   found=yes
 else
   cat >conftest.$ac_ext <<_ACEOF
 
-#include <openssl/opensslv.h>
+#include <sasl/sasl.h>
 
 int main() {
-  int n;
-  char cpatch = 0;
-  int major, minor, fix, patch = 0;
-  int openssl_major, openssl_minor, openssl_fix, openssl_patch;
+  int major, minor, step = 0, patch = 0;
+  int sasl_major, sasl_minor, sasl_step, sasl_patch;
 
-  n = sscanf("$openssl_min_version", "%d.%d.%d%c", &major, &minor, &fix, &cpatch);
-  if (n < 3)
+  if (sscanf("$sasl2_min_version", "%d.%d.%d.%d", &major, &minor, &step, &patch) < 2)
     exit(1); /* bad version string */
-  if (cpatch)
-    patch = cpatch - 96; /* letter -> number */
 
-  if (OPENSSL_VERSION_NUMBER <
-      (major << 28) + (minor << 20) + (fix << 12) + (patch << 4))
+  sasl_version_info(0, 0, &sasl_major, &sasl_minor, &sasl_step, &sasl_patch);
+  if ((sasl_major << 24) + (sasl_minor << 16) + (sasl_step << 8) + sasl_patch
+      < (major << 24) + (minor << 16) + (step << 8) + patch)
     exit(2); /* version too old */
 
   exit(0);
@@ -24545,99 +23412,416 @@ CFLAGS="$ac_save_CFLAGS"
 LIBS="$ac_save_LIBS"
 
 if test $found = yes; then
-	:
-else
-	OPENSSL_CFLAGS=""
-	OPENSSL_LIBS=""
-	{ echo "$as_me:$LINENO: OpenSSL not found: forcing --disable-ssl" >&5
-echo "$as_me: OpenSSL not found: forcing --disable-ssl" >&6;}
-enable_ssl=no
-disable_ssl_reason="(OpenSSL not found)"
+	:
+else
+	SASL_CFLAGS=""
+	SASL_LIBS=""
+	{ echo "$as_me:$LINENO: Cyrus SASL not found: forcing --disable-sasl" >&5
+echo "$as_me: Cyrus SASL not found: forcing --disable-sasl" >&6;}
+enable_sasl=no
+disable_sasl_reason="(Cyrus SASL not found)"
+fi
+
+
+
+fi
+
+if test $enable_evolution = yes; then
+	evolution=no
+
+
+evolution_branch=2.8
+evolution_plugin_min_version=
+
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for EVOLUTION_PLUGIN" >&5
+echo $ECHO_N "checking for EVOLUTION_PLUGIN... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVOLUTION_PLUGIN_CFLAGS"; then
+        pkg_cv_EVOLUTION_PLUGIN_CFLAGS="$EVOLUTION_PLUGIN_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-plugin-\$evolution_branch \$evolution_plugin_min_version\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_EVOLUTION_PLUGIN_CFLAGS=`$PKG_CONFIG --cflags "evolution-plugin-$evolution_branch $evolution_plugin_min_version" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVOLUTION_PLUGIN_LIBS"; then
+        pkg_cv_EVOLUTION_PLUGIN_LIBS="$EVOLUTION_PLUGIN_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-plugin-\$evolution_branch \$evolution_plugin_min_version\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_EVOLUTION_PLUGIN_LIBS=`$PKG_CONFIG --libs "evolution-plugin-$evolution_branch $evolution_plugin_min_version" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        EVOLUTION_PLUGIN_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version"`
+        else
+	        EVOLUTION_PLUGIN_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$EVOLUTION_PLUGIN_PKG_ERRORS" >&5
+
+	found=no
+elif test $pkg_failed = untried; then
+	found=no
+else
+	EVOLUTION_PLUGIN_CFLAGS=$pkg_cv_EVOLUTION_PLUGIN_CFLAGS
+	EVOLUTION_PLUGIN_LIBS=$pkg_cv_EVOLUTION_PLUGIN_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	found=yes
+fi
+
+if test $found = yes; then
+	echo "$as_me:$LINENO: checking for the Evolution plugin directory" >&5
+echo $ECHO_N "checking for the Evolution plugin directory... $ECHO_C" >&6
+	evolution_plugindir=`$PKG_CONFIG --variable=plugindir evolution-plugin-$evolution_branch 2>/dev/null`
+	if test -n "$evolution_plugindir"; then
+		echo "$as_me:$LINENO: result: $evolution_plugindir" >&5
+echo "${ECHO_T}$evolution_plugindir" >&6
+	else
+		echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+		found=no
+	fi
+fi
+
+if test $found = yes; then
+	evolution=yes
+else
+	evolution_plugindir=""
+	:
+fi
+
+
+	if test $evolution = no; then
+
+
+evolution_branch=2.6
+evolution_plugin_min_version=
+
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for EVOLUTION_PLUGIN" >&5
+echo $ECHO_N "checking for EVOLUTION_PLUGIN... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVOLUTION_PLUGIN_CFLAGS"; then
+        pkg_cv_EVOLUTION_PLUGIN_CFLAGS="$EVOLUTION_PLUGIN_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-plugin-\$evolution_branch \$evolution_plugin_min_version\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_EVOLUTION_PLUGIN_CFLAGS=`$PKG_CONFIG --cflags "evolution-plugin-$evolution_branch $evolution_plugin_min_version" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVOLUTION_PLUGIN_LIBS"; then
+        pkg_cv_EVOLUTION_PLUGIN_LIBS="$EVOLUTION_PLUGIN_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-plugin-\$evolution_branch \$evolution_plugin_min_version\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_EVOLUTION_PLUGIN_LIBS=`$PKG_CONFIG --libs "evolution-plugin-$evolution_branch $evolution_plugin_min_version" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        EVOLUTION_PLUGIN_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version"`
+        else
+	        EVOLUTION_PLUGIN_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$EVOLUTION_PLUGIN_PKG_ERRORS" >&5
+
+	found=no
+elif test $pkg_failed = untried; then
+	found=no
+else
+	EVOLUTION_PLUGIN_CFLAGS=$pkg_cv_EVOLUTION_PLUGIN_CFLAGS
+	EVOLUTION_PLUGIN_LIBS=$pkg_cv_EVOLUTION_PLUGIN_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	found=yes
+fi
+
+if test $found = yes; then
+	echo "$as_me:$LINENO: checking for the Evolution plugin directory" >&5
+echo $ECHO_N "checking for the Evolution plugin directory... $ECHO_C" >&6
+	evolution_plugindir=`$PKG_CONFIG --variable=plugindir evolution-plugin-$evolution_branch 2>/dev/null`
+	if test -n "$evolution_plugindir"; then
+		echo "$as_me:$LINENO: result: $evolution_plugindir" >&5
+echo "${ECHO_T}$evolution_plugindir" >&6
+	else
+		echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+		found=no
+	fi
+fi
+
+if test $found = yes; then
+	evolution=yes
+else
+	evolution_plugindir=""
+	:
+fi
+
+
+	fi
+	if test $evolution = no; then
+
+
+evolution_branch=2.4
+evolution_plugin_min_version=
+
+
+pkg_failed=no
+echo "$as_me:$LINENO: checking for EVOLUTION_PLUGIN" >&5
+echo $ECHO_N "checking for EVOLUTION_PLUGIN... $ECHO_C" >&6
+
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVOLUTION_PLUGIN_CFLAGS"; then
+        pkg_cv_EVOLUTION_PLUGIN_CFLAGS="$EVOLUTION_PLUGIN_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-plugin-\$evolution_branch \$evolution_plugin_min_version\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_EVOLUTION_PLUGIN_CFLAGS=`$PKG_CONFIG --cflags "evolution-plugin-$evolution_branch $evolution_plugin_min_version" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVOLUTION_PLUGIN_LIBS"; then
+        pkg_cv_EVOLUTION_PLUGIN_LIBS="$EVOLUTION_PLUGIN_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-plugin-\$evolution_branch \$evolution_plugin_min_version\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version") 2>&5
+  ac_status=$?
+  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; then
+  pkg_cv_EVOLUTION_PLUGIN_LIBS=`$PKG_CONFIG --libs "evolution-plugin-$evolution_branch $evolution_plugin_min_version" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
+else
+        _pkg_short_errors_supported=no
+fi
+        if test $_pkg_short_errors_supported = yes; then
+	        EVOLUTION_PLUGIN_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version"`
+        else
+	        EVOLUTION_PLUGIN_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$EVOLUTION_PLUGIN_PKG_ERRORS" >&5
+
+	found=no
+elif test $pkg_failed = untried; then
+	found=no
+else
+	EVOLUTION_PLUGIN_CFLAGS=$pkg_cv_EVOLUTION_PLUGIN_CFLAGS
+	EVOLUTION_PLUGIN_LIBS=$pkg_cv_EVOLUTION_PLUGIN_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	found=yes
+fi
+
+if test $found = yes; then
+	echo "$as_me:$LINENO: checking for the Evolution plugin directory" >&5
+echo $ECHO_N "checking for the Evolution plugin directory... $ECHO_C" >&6
+	evolution_plugindir=`$PKG_CONFIG --variable=plugindir evolution-plugin-$evolution_branch 2>/dev/null`
+	if test -n "$evolution_plugindir"; then
+		echo "$as_me:$LINENO: result: $evolution_plugindir" >&5
+echo "${ECHO_T}$evolution_plugindir" >&6
+	else
+		echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+		found=no
+	fi
 fi
 
-
-
+if test $found = yes; then
+	evolution=yes
+else
+	evolution_plugindir=""
+	:
 fi
-if test $enable_sasl = yes; then
-	SASL_CFLAGS=""
-SASL_LIBS="-lsasl2"
-
-ac_save_CFLAGS="$CFLAGS"
-ac_save_LIBS="$LIBS"
-CFLAGS="$CFLAGS $SASL_CFLAGS"
-LIBS="$LIBS $SASL_LIBS"
 
-sasl2_min_version=2.0
-
-echo "$as_me:$LINENO: checking for Cyrus SASL - version >= $sasl2_min_version" >&5
-echo $ECHO_N "checking for Cyrus SASL - version >= $sasl2_min_version... $ECHO_C" >&6
-if test "$cross_compiling" = yes; then
-  found=yes
-else
-  cat >conftest.$ac_ext <<_ACEOF
 
-#include <sasl/sasl.h>
+	fi
+	if test $evolution = no; then
 
-int main() {
-  int major, minor, step = 0, patch = 0;
-  int sasl_major, sasl_minor, sasl_step, sasl_patch;
 
-  if (sscanf("$sasl2_min_version", "%d.%d.%d.%d", &major, &minor, &step, &patch) < 2)
-    exit(1); /* bad version string */
+evolution_branch=2.2
+evolution_plugin_min_version=
 
-  sasl_version_info(0, 0, &sasl_major, &sasl_minor, &sasl_step, &sasl_patch);
-  if ((sasl_major << 24) + (sasl_minor << 16) + (sasl_step << 8) + sasl_patch
-      < (major << 24) + (minor << 16) + (step << 8) + patch)
-    exit(2); /* version too old */
 
-  exit(0);
-}
+pkg_failed=no
+echo "$as_me:$LINENO: checking for EVOLUTION_PLUGIN" >&5
+echo $ECHO_N "checking for EVOLUTION_PLUGIN... $ECHO_C" >&6
 
-_ACEOF
-rm -f conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>&5
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVOLUTION_PLUGIN_CFLAGS"; then
+        pkg_cv_EVOLUTION_PLUGIN_CFLAGS="$EVOLUTION_PLUGIN_CFLAGS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-plugin-\$evolution_branch \$evolution_plugin_min_version\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
+  (exit $ac_status); }; then
+  pkg_cv_EVOLUTION_PLUGIN_CFLAGS=`$PKG_CONFIG --cflags "evolution-plugin-$evolution_branch $evolution_plugin_min_version" 2>/dev/null`
+else
+  pkg_failed=yes
+fi
+    fi
+else
+	pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+    if test -n "$EVOLUTION_PLUGIN_LIBS"; then
+        pkg_cv_EVOLUTION_PLUGIN_LIBS="$EVOLUTION_PLUGIN_LIBS"
+    else
+        if test -n "$PKG_CONFIG" && \
+    { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"evolution-plugin-\$evolution_branch \$evolution_plugin_min_version\"") >&5
+  ($PKG_CONFIG --exists --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version") 2>&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  found=yes
+  (exit $ac_status); }; then
+  pkg_cv_EVOLUTION_PLUGIN_LIBS=`$PKG_CONFIG --libs "evolution-plugin-$evolution_branch $evolution_plugin_min_version" 2>/dev/null`
 else
-  echo "$as_me: program exited with status $ac_status" >&5
-echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-( exit $ac_status )
-found=no
+  pkg_failed=yes
 fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+    fi
+else
+	pkg_failed=untried
 fi
-echo "$as_me:$LINENO: result: $found" >&5
-echo "${ECHO_T}$found" >&6
 
-CFLAGS="$ac_save_CFLAGS"
-LIBS="$ac_save_LIBS"
 
-if test $found = yes; then
-	:
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+        _pkg_short_errors_supported=yes
 else
-	SASL_CFLAGS=""
-	SASL_LIBS=""
-	{ echo "$as_me:$LINENO: Cyrus SASL not found: forcing --disable-sasl" >&5
-echo "$as_me: Cyrus SASL not found: forcing --disable-sasl" >&6;}
-enable_sasl=no
-disable_sasl_reason="(Cyrus SASL not found)"
+        _pkg_short_errors_supported=no
 fi
+        if test $_pkg_short_errors_supported = yes; then
+	        EVOLUTION_PLUGIN_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version"`
+        else
+	        EVOLUTION_PLUGIN_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "evolution-plugin-$evolution_branch $evolution_plugin_min_version"`
+        fi
+	# Put the nasty error message in config.log where it belongs
+	echo "$EVOLUTION_PLUGIN_PKG_ERRORS" >&5
 
+	found=no
+elif test $pkg_failed = untried; then
+	found=no
+else
+	EVOLUTION_PLUGIN_CFLAGS=$pkg_cv_EVOLUTION_PLUGIN_CFLAGS
+	EVOLUTION_PLUGIN_LIBS=$pkg_cv_EVOLUTION_PLUGIN_LIBS
+        echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+	found=yes
+fi
 
+if test $found = yes; then
+	echo "$as_me:$LINENO: checking for the Evolution plugin directory" >&5
+echo $ECHO_N "checking for the Evolution plugin directory... $ECHO_C" >&6
+	evolution_plugindir=`$PKG_CONFIG --variable=plugindir evolution-plugin-$evolution_branch 2>/dev/null`
+	if test -n "$evolution_plugindir"; then
+		echo "$as_me:$LINENO: result: $evolution_plugindir" >&5
+echo "${ECHO_T}$evolution_plugindir" >&6
+	else
+		echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6
+		found=no
+	fi
+fi
 
+if test $found = yes; then
+	evolution=yes
+else
+	evolution_plugindir=""
+	:
 fi
 
-if test $enable_evolution = yes; then
+
+		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
@@ -24657,7 +23841,6 @@ 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
 
@@ -24773,97 +23956,29 @@ fi
 fi
 
 if test $found = yes; then
-	evolution_plugin_min_version=
-
-pkg_failed=no
-echo "$as_me:$LINENO: checking for EVOLUTION_PLUGIN_CFLAGS" >&5
-echo $ECHO_N "checking for EVOLUTION_PLUGIN_CFLAGS... $ECHO_C" >&6
-if test "${pkg_cv_EVOLUTION_PLUGIN_CFLAGS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "x$ac_cv_env_EVOLUTION_PLUGIN_CFLAGS_set" = "xset"; then
-	pkg_cv_EVOLUTION_PLUGIN_CFLAGS=$ac_cv_env_EVOLUTION_PLUGIN_CFLAGS_value
-elif test -n "$PKG_CONFIG"; then
-	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"evolution-plugin-2.2 \$evolution_plugin_min_version\" >/dev/null 2>&1") >&5
-  ($PKG_CONFIG --exists "evolution-plugin-2.2 $evolution_plugin_min_version" >/dev/null 2>&1) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-		pkg_cv_EVOLUTION_PLUGIN_CFLAGS=`$PKG_CONFIG --cflags "evolution-plugin-2.2 $evolution_plugin_min_version" 2>/dev/null`
-	else
-		pkg_failed=yes
-	fi
-else
-	pkg_failed=untried
-fi
-fi
-echo "$as_me:$LINENO: result: $pkg_cv_EVOLUTION_PLUGIN_CFLAGS" >&5
-echo "${ECHO_T}$pkg_cv_EVOLUTION_PLUGIN_CFLAGS" >&6
-echo "$as_me:$LINENO: checking for EVOLUTION_PLUGIN_LIBS" >&5
-echo $ECHO_N "checking for EVOLUTION_PLUGIN_LIBS... $ECHO_C" >&6
-if test "${pkg_cv_EVOLUTION_PLUGIN_LIBS+set}" = set; then
-  echo $ECHO_N "(cached) $ECHO_C" >&6
-else
-  if test "x$ac_cv_env_EVOLUTION_PLUGIN_LIBS_set" = "xset"; then
-	pkg_cv_EVOLUTION_PLUGIN_LIBS=$ac_cv_env_EVOLUTION_PLUGIN_LIBS_value
-elif test -n "$PKG_CONFIG"; then
-	if { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists \"evolution-plugin-2.2 \$evolution_plugin_min_version\" >/dev/null 2>&1") >&5
-  ($PKG_CONFIG --exists "evolution-plugin-2.2 $evolution_plugin_min_version" >/dev/null 2>&1) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; then
-		pkg_cv_EVOLUTION_PLUGIN_LIBS=`$PKG_CONFIG --libs "evolution-plugin-2.2 $evolution_plugin_min_version" 2>/dev/null`
-	else
-		pkg_failed=yes
-	fi
+	:
 else
-	pkg_failed=untried
+	evolution_source_dir=""
+	evolution=no
 fi
-fi
-echo "$as_me:$LINENO: result: $pkg_cv_EVOLUTION_PLUGIN_LIBS" >&5
-echo "${ECHO_T}$pkg_cv_EVOLUTION_PLUGIN_LIBS" >&6
 
-if test $pkg_failed = yes; then
-	EVOLUTION_PLUGIN_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "evolution-plugin-2.2 $evolution_plugin_min_version"`
-	# Put the nasty error message in config.log where it belongs
-	echo "$EVOLUTION_PLUGIN_PKG_ERRORS" 1>&5
 
-	found=no
-elif test $pkg_failed = untried; then
-	found=no
-else
-	EVOLUTION_PLUGIN_CFLAGS=$pkg_cv_EVOLUTION_PLUGIN_CFLAGS
-	EVOLUTION_PLUGIN_LIBS=$pkg_cv_EVOLUTION_PLUGIN_LIBS
-	:
-fi
-fi
+		fi
+		if test $evolution = yes; then
+			EVOLUTION_PLUGIN_CFLAGS="$EVOLUTION_PLUGIN_CFLAGS -I$evolution_source_dir"
 
-if test $found = yes; then
-	echo "$as_me:$LINENO: checking for the Evolution plugin directory" >&5
-echo $ECHO_N "checking for the Evolution plugin directory... $ECHO_C" >&6
-	evolution_plugindir=`$PKG_CONFIG --variable=plugindir evolution-plugin-2.2 2>/dev/null`
-	if test -n "$evolution_plugindir"; then
-		echo "$as_me:$LINENO: result: $evolution_plugindir" >&5
-echo "${ECHO_T}$evolution_plugindir" >&6
-	else
-		echo "$as_me:$LINENO: result: not found" >&5
-echo "${ECHO_T}not found" >&6
-		found=no
-	fi
-fi
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_EVOLUTION_2_2 1
+_ACEOF
 
-if test $found = yes; then
-	EVOLUTION_PLUGIN_CFLAGS="$EVOLUTION_PLUGIN_CFLAGS -I$evolution_source_dir"
-	:
-else
-	evolution_plugindir=""
-	{ echo "$as_me:$LINENO: Evolution not found: forcing --disable-evolution" >&5
+		fi
+	fi
+	if test $evolution = no; then
+		{ echo "$as_me:$LINENO: Evolution not found: forcing --disable-evolution" >&5
 echo "$as_me: Evolution not found: forcing --disable-evolution" >&6;}
 enable_evolution=no
 disable_evolution_reason="(Evolution not found)"
-fi
-
-
+	fi
 fi
 
 ### Automake conditionals
@@ -25031,95 +24146,89 @@ fi
 
 ### config.h definitions
 
-if test $enable_mbox = yes; then
+if test $enable_mbox = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_MBOX 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_MBOX $_value
 _ACEOF
 
-fi
-if test $enable_mh = yes; then
+if test $enable_mh = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_MH 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_MH $_value
 _ACEOF
 
-fi
-if test $enable_maildir = yes; then
+if test $enable_maildir = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_MAILDIR 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_MAILDIR $_value
 _ACEOF
 
-fi
-if test $enable_pop3 = yes; then
+if test $enable_pop3 = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_POP3 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_POP3 $_value
 _ACEOF
 
-fi
-if test $enable_imap = yes; then
+if test $enable_imap = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_IMAP 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_IMAP $_value
 _ACEOF
 
-fi
-if test $enable_ssl = yes; then
+if test $enable_ssl = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_SSL 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_SSL $_value
 _ACEOF
 
-fi
-if test $enable_sasl = yes; then
+if test $enable_sasl = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_SASL 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_SASL $_value
 _ACEOF
 
-fi
-if test $enable_ipv6 = yes; then
+if test $enable_ipv6 = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_IPV6 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_IPV6 $_value
 _ACEOF
 
-fi
-if test $enable_gmail = yes; then
+if test $enable_gmail = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_GMAIL 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_GMAIL $_value
 _ACEOF
 
-fi
-if test $enable_evolution = yes; then
+if test $enable_evolution = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_EVOLUTION 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_EVOLUTION $_value
 _ACEOF
 
-fi
-if test $enable_sylpheed = yes; then
+if test $enable_sylpheed = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_SYLPHEED 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_SYLPHEED $_value
 _ACEOF
 
-fi
-if test $enable_mime = yes; then
+if test $enable_sylpheed_locking = yes; then _value=1; else _value=0; fi
 
-cat >>confdefs.h <<\_ACEOF
-#define WITH_MIME 1
+cat >>confdefs.h <<_ACEOF
+#define WITH_SYLPHEED_LOCKING $_value
+_ACEOF
+
+if test $enable_mime = yes; then _value=1; else _value=0; fi
+
+cat >>confdefs.h <<_ACEOF
+#define WITH_MIME $_value
 _ACEOF
 
-fi
 
 
 ### output
 
-                                                                                                    ac_config_files="$ac_config_files Makefile art/Makefile data/Makefile help/Makefile help/C/Makefile m4/Makefile po/Makefile.in src/Makefile tests/Makefile ui/Makefile"
+                                                                                                              ac_config_files="$ac_config_files Makefile aml/Makefile art/Makefile data/Makefile help/Makefile help/C/Makefile m4/Makefile po/Makefile.in src/Makefile tests/Makefile ui/Makefile"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -25241,9 +24350,8 @@ Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
 
-       mv -f po/POTFILES po/POTFILES.tmp
-        sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES
-        rm -f po/POTFILES.tmp
+            ac_config_commands="$ac_config_commands po/stamp-it"
+
 
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
@@ -25642,7 +24750,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by Mail Notification $as_me 2.0, which was
+This file was extended by Mail Notification $as_me 3.0-rc1, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -25705,7 +24813,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-Mail Notification config.status 2.0
+Mail Notification config.status 3.0-rc1
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -25806,10 +24914,11 @@ cat >>$CONFIG_STATUS <<_ACEOF
 
 AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 
-INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
-INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}'
-MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}'
-XGETTEXT='${INTLTOOL_XGETTEXT}'
+INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir='${ac_aux_dir}'
+prefix="$prefix" exec_prefix="$exec_prefix" INTLTOOL_LIBDIR="$libdir"
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' INTLTOOL_ICONV='${INTLTOOL_ICONV}'
+INTLTOOL_MSGFMT='${INTLTOOL_MSGFMT}' INTLTOOL_MSGMERGE='${INTLTOOL_MSGMERGE}'
+INTLTOOL_XGETTEXT='${INTLTOOL_XGETTEXT}'
 
 _ACEOF
 
@@ -25821,6 +24930,7 @@ do
   case "$ac_config_target" in
   # Handling of arguments.
   "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;;
+  "aml/Makefile" ) CONFIG_FILES="$CONFIG_FILES aml/Makefile" ;;
   "art/Makefile" ) CONFIG_FILES="$CONFIG_FILES art/Makefile" ;;
   "data/Makefile" ) CONFIG_FILES="$CONFIG_FILES data/Makefile" ;;
   "help/Makefile" ) CONFIG_FILES="$CONFIG_FILES help/Makefile" ;;
@@ -25833,6 +24943,7 @@ do
   "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
   "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
   "intltool" ) CONFIG_COMMANDS="$CONFIG_COMMANDS intltool" ;;
+  "po/stamp-it" ) CONFIG_COMMANDS="$CONFIG_COMMANDS po/stamp-it" ;;
   "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
@@ -26026,6 +25137,7 @@ s,@INTLTOOL_XML_NOMERGE_RULE@,$INTLTOOL_XML_NOMERGE_RULE,;t t
 s,@INTLTOOL_CAVES_RULE@,$INTLTOOL_CAVES_RULE,;t t
 s,@INTLTOOL_SCHEMAS_RULE@,$INTLTOOL_SCHEMAS_RULE,;t t
 s,@INTLTOOL_THEME_RULE@,$INTLTOOL_THEME_RULE,;t t
+s,@INTLTOOL_SERVICE_RULE@,$INTLTOOL_SERVICE_RULE,;t t
 s,@INTLTOOL_EXTRACT@,$INTLTOOL_EXTRACT,;t t
 s,@INTLTOOL_MERGE@,$INTLTOOL_MERGE,;t t
 s,@INTLTOOL_UPDATE@,$INTLTOOL_UPDATE,;t t
@@ -26048,10 +25160,8 @@ s,@gnome_prefix@,$gnome_prefix,;t t
 s,@gnome_cappletdir@,$gnome_cappletdir,;t t
 s,@GCONFTOOL@,$GCONFTOOL,;t t
 s,@ORBIT_IDL@,$ORBIT_IDL,;t t
-s,@LIBBONOBO_IDL@,$LIBBONOBO_IDL,;t t
-s,@BONOBO_ACTIVATION_IDL@,$BONOBO_ACTIVATION_IDL,;t t
+s,@BONOBO_IDLFLAGS@,$BONOBO_IDLFLAGS,;t t
 s,@GOB2@,$GOB2,;t t
-s,@GLIB_GENMARSHAL@,$GLIB_GENMARSHAL,;t t
 s,@GMIME_CFLAGS@,$GMIME_CFLAGS,;t t
 s,@GMIME_LIBS@,$GMIME_LIBS,;t t
 s,@OPENSSL_CFLAGS@,$OPENSSL_CFLAGS,;t t
@@ -26061,6 +25171,7 @@ 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_MH_TRUE@,$WITH_MH_TRUE,;t t
@@ -26782,44 +25893,48 @@ done
       esac ;;
     intltool )
 
-intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \
-               -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \
-               -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \
-               -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \
-               -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \
-               -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'"
-
-eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
-  > intltool-extract.out
-if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
-  rm -f intltool-extract.out
-else
-  mv -f intltool-extract.out intltool-extract
-fi
-chmod ugo+x intltool-extract
-chmod u+w intltool-extract
-
-eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
-  > intltool-merge.out
-if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
-  rm -f intltool-merge.out
-else
-  mv -f intltool-merge.out intltool-merge
-fi
-chmod ugo+x intltool-merge
-chmod u+w intltool-merge
-
-eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
-  > intltool-update.out
-if cmp -s intltool-update intltool-update.out 2>/dev/null; then
-  rm -f intltool-update.out
-else
-  mv -f intltool-update.out intltool-update
-fi
-chmod ugo+x intltool-update
-chmod u+w intltool-update
+for file in intltool-extract intltool-merge intltool-update; do
+  sed -e "s|@INTLTOOL_EXTRACT@|`pwd`/intltool-extract|g" \
+      -e "s|@INTLTOOL_LIBDIR@|${INTLTOOL_LIBDIR}|g" \
+      -e "s|@INTLTOOL_ICONV@|${INTLTOOL_ICONV}|g" \
+      -e "s|@INTLTOOL_MSGFMT@|${INTLTOOL_MSGFMT}|g" \
+      -e "s|@INTLTOOL_MSGMERGE@|${INTLTOOL_MSGMERGE}|g" \
+      -e "s|@INTLTOOL_XGETTEXT@|${INTLTOOL_XGETTEXT}|g" \
+      -e "s|@INTLTOOL_PERL@|${INTLTOOL_PERL}|g" \
+	< ${ac_aux_dir}/${file}.in > ${file}.out
+  if cmp -s ${file} ${file}.out 2>/dev/null; then
+    rm -f ${file}.out
+  else
+    mv -f ${file}.out ${file}
+  fi
+  chmod ugo+x ${file}
+  chmod u+w ${file}
+done
 
  ;;
+    po/stamp-it )
+    rm -f "po/stamp-it" "po/stamp-it.tmp" "po/POTFILES" "po/Makefile.tmp"
+    >"po/stamp-it.tmp"
+    sed '/^#/d
+	 s/^[[].*] *//
+	 /^[ 	]*$/d
+	'"s|^|	$ac_top_srcdir/|" \
+      "$srcdir/po/POTFILES.in" | sed '$!s/$/ \\/' >"po/POTFILES"
+
+    if test ! -f "po/Makefile"; then
+      { { echo "$as_me:$LINENO: error: po/Makefile is not ready." >&5
+echo "$as_me: error: po/Makefile is not ready." >&2;}
+   { (exit 1); exit 1; }; }
+    fi
+    mv "po/Makefile" "po/Makefile.tmp"
+    sed '/^POTFILES =/,/[^\\]$/ {
+		/^POTFILES =/!d
+		r po/POTFILES
+	  }
+	 ' "po/Makefile.tmp" >"po/Makefile"
+    rm -f "po/Makefile.tmp"
+    mv "po/stamp-it.tmp" "po/stamp-it"
+   ;;
   esac
 done
 _ACEOF
@@ -26880,6 +25995,7 @@ Mailbox backends
   --enable-gmail               $enable_gmail $disable_gmail_reason
   --enable-evolution           $enable_evolution $disable_evolution_reason
   --enable-sylpheed            $enable_sylpheed $disable_sylpheed_reason
+  --enable-sylpheed-locking    $enable_sylpheed_locking $disable_sylpheed_locking_reason
 
 POP3 and IMAP features
   --enable-ssl                 $enable_ssl $disable_ssl_reason
diff --git a/configure.ac b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT([Mail Notification], 2.0, jylefort@brutele.be)
+AC_INIT([Mail Notification], 3.0-rc1, jylefort@brutele.be)
 AC_CONFIG_SRCDIR(src/mn-main.c)
 
 AC_PREREQ(2.59)
@@ -19,6 +19,7 @@ MN_ARG_ENABLE(ipv6, [disable IPv6 support])
 MN_ARG_ENABLE(gmail, [disable Gmail support])
 MN_ARG_ENABLE(evolution, [disable Evolution support])
 MN_ARG_ENABLE(sylpheed, [disable Sylpheed support])
+MN_ARG_ENABLE(sylpheed-locking, [enable .sylpheed_mark locking], no)
 
 MN_ARG_COMPILE_WARNINGS
 MN_ARG_ENABLE(regression-tests, [build and run regression tests], no)
@@ -35,11 +36,11 @@ AC_PROG_LIBTOOL
 
 ### i18n
 
-GETTEXT_PACKAGE=AC_PACKAGE_TARNAME
+GETTEXT_PACKAGE=mail-notification
 AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Define to the gettext package name])
 AC_SUBST(GETTEXT_PACKAGE)
 
-ALL_LINGUAS="bg de fr pl pt ru sr sr@Latn"
+ALL_LINGUAS="bg cs de fr ja nl pl pt pt_BR ru sr sr@Latn"
 AM_GLIB_GNU_GETTEXT
 
 AC_PROG_INTLTOOL
@@ -78,20 +79,14 @@ if test -z "$GCONFTOOL"; then
 	AC_MSG_ERROR([unable to find the gconftool-2 program])
 fi
 
-ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
-AC_SUBST(ORBIT_IDL)
+AM_PATH_ORBIT_IDL(, [AC_MSG_ERROR([unable to find the orbit-idl-2 program])])
 
-LIBBONOBO_IDL="`$PKG_CONFIG --variable=idldir libbonobo-2.0`"
-AC_SUBST(LIBBONOBO_IDL)
-
-BONOBO_ACTIVATION_IDL="`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
-AC_SUBST(BONOBO_ACTIVATION_IDL)
+IDL_CHECK_MODULES(BONOBO, [libbonobo-2.0 bonobo-activation-2.0],, [AC_MSG_ERROR([unable to find the Bonobo IDL modules])])
 
 ### optional libraries
 
 # not needed by end-users, as generated files are distributed
 AC_PATH_PROG(GOB2, gob2)
-AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal)
 
 MN_FEATURE_VAR_NAME(mime)=no
 if MN_FEATURE_ENABLED(mbox) ||
@@ -123,6 +118,10 @@ if MN_FEATURE_ENABLED(mbox) ||
 	fi
 fi
 	
+if MN_FEATURE_ENABLED(sylpheed-locking) && MN_FEATURE_DISABLED(sylpheed); then
+	MN_FEATURE_DISABLE(sylpheed-locking, [Sylpheed support disabled])
+fi
+
 if MN_FEATURE_DISABLED(pop3) && MN_FEATURE_DISABLED(imap); then
 	if MN_FEATURE_ENABLED(ssl); then
 		MN_FEATURE_DISABLE(ssl, [POP3 and IMAP support disabled])
@@ -143,7 +142,27 @@ if MN_FEATURE_ENABLED(sasl); then
 fi
 
 if MN_FEATURE_ENABLED(evolution); then
-	AM_PATH_EVOLUTION_PLUGIN(, [mail/em-event.h, mail/em-folder-tree.h, mail/mail-component.h, mail/mail-tools.h],, [MN_FEATURE_DISABLE(evolution, [Evolution not found])])
+	evolution=no
+	AM_PATH_EVOLUTION_PLUGIN(2.8,, [evolution=yes])
+	if test $evolution = no; then
+		AM_PATH_EVOLUTION_PLUGIN(2.6,, [evolution=yes])
+	fi
+	if test $evolution = no; then
+		AM_PATH_EVOLUTION_PLUGIN(2.4,, [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
+	fi
+	if test $evolution = no; then
+		MN_FEATURE_DISABLE(evolution, [Evolution not found])
+	fi
 fi
 
 ### Automake conditionals
@@ -167,11 +186,12 @@ 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, mime])
+MN_FEATURES_DEFINE([mbox, mh, maildir, pop3, imap, ssl, sasl, ipv6, gmail, evolution, sylpheed, sylpheed-locking, mime])
 
 ### output
 
 AC_CONFIG_FILES(Makefile
+		aml/Makefile
 		art/Makefile
 		data/Makefile
 		help/Makefile
@@ -195,7 +215,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])
+MN_REPORT_FEATURES([mbox, mh, maildir, pop3, imap, gmail, evolution, sylpheed, sylpheed-locking])
 POP3 and IMAP features
 MN_REPORT_FEATURES([ssl, sasl, ipv6])
 EOF
diff --git a/data/Makefile.am b/data/Makefile.am
@@ -3,14 +3,14 @@ evolution_server_in = GNOME_MailNotification_Evolution.server.in
 evolution_server = GNOME_MailNotification_Evolution.server
 endif
 
-applicationsdir = $(datadir)/applications
-applications_in_files = mail-notification.desktop.in
-applications_DATA = mail-notification.desktop
-
 # gnome_cappletdir is defined by configure
 gnome_capplet_in_files = mail-notification-properties.desktop.in
 gnome_capplet_DATA = mail-notification-properties.desktop
 
+autostartdir = $(sysconfdir)/xdg/autostart
+autostart_in_files = mail-notification.desktop.in
+autostart_DATA = mail-notification.desktop
+
 serverdir = $(libdir)/bonobo/servers
 server_in_files = $(evolution_server_in) GNOME_MailNotification.server.in
 server_DATA = $(evolution_server) GNOME_MailNotification.server
@@ -19,14 +19,9 @@ schemasdir = $(GCONF_SCHEMA_FILE_DIR)
 schemas_in_files = mail-notification.schemas.in
 schemas_DATA = mail-notification.schemas
 
-soundlistdir = $(sysconfdir)/sound/events
-soundlist_in_files = mail-notification.soundlist.in
-soundlist_DATA = mail-notification.soundlist
-
 @INTLTOOL_DESKTOP_RULE@
 @INTLTOOL_SERVER_RULE@
 @INTLTOOL_SCHEMAS_RULE@
-@INTLTOOL_SOUNDLIST_RULE@
 
 if GCONF_SCHEMAS_INSTALL
 install-data-local: install-schemas
@@ -40,8 +35,7 @@ EXTRA_DIST = \
 	GNOME_MailNotification_Evolution.server.in	\
 	mail-notification-properties.desktop.in		\
 	mail-notification.desktop.in			\
-	mail-notification.schemas.in			\
-	mail-notification.soundlist.in
+	mail-notification.schemas.in
 
 CLEANFILES = \
 	$(evolution_server)			\
@@ -49,8 +43,7 @@ CLEANFILES = \
 	GNOME_MailNotification.server.in	\
 	mail-notification-properties.desktop	\
 	mail-notification.desktop		\
-	mail-notification.schemas		\
-	mail-notification.soundlist
+	mail-notification.schemas
 
 GNOME_MailNotification.server.in: GNOME_MailNotification.server.in.in
 	sed -e 's|\@bindir\@|$(bindir)|' GNOME_MailNotification.server.in.in > GNOME_MailNotification.server.in
diff --git a/data/Makefile.in b/data/Makefile.in
@@ -41,8 +41,8 @@ subdir = data
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
-	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
 	$(top_srcdir)/m4/reentrant-resolver.m4 \
 	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
 	$(top_srcdir)/configure.ac
@@ -59,16 +59,15 @@ am__vpath_adj = case $$p in \
     *) f=$$p;; \
   esac;
 am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
-am__installdirs = "$(DESTDIR)$(applicationsdir)" \
+am__installdirs = "$(DESTDIR)$(autostartdir)" \
 	"$(DESTDIR)$(gnome_cappletdir)" "$(DESTDIR)$(schemasdir)" \
-	"$(DESTDIR)$(serverdir)" "$(DESTDIR)$(soundlistdir)"
-applicationsDATA_INSTALL = $(INSTALL_DATA)
+	"$(DESTDIR)$(serverdir)"
+autostartDATA_INSTALL = $(INSTALL_DATA)
 gnome_cappletDATA_INSTALL = $(INSTALL_DATA)
 schemasDATA_INSTALL = $(INSTALL_DATA)
 serverDATA_INSTALL = $(INSTALL_DATA)
-soundlistDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(applications_DATA) $(gnome_capplet_DATA) $(schemas_DATA) \
-	$(server_DATA) $(soundlist_DATA)
+DATA = $(autostart_DATA) $(gnome_capplet_DATA) $(schemas_DATA) \
+	$(server_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMDEP_FALSE = @AMDEP_FALSE@
@@ -79,7 +78,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BONOBO_ACTIVATION_IDL = @BONOBO_ACTIVATION_IDL@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -111,7 +110,6 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GMIME_CFLAGS = @GMIME_CFLAGS@
 GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
@@ -143,6 +141,7 @@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
 INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
 INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
 INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
 INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
 INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
 INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
@@ -153,7 +152,6 @@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
 INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
 INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
-LIBBONOBO_IDL = @LIBBONOBO_IDL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
@@ -248,6 +246,7 @@ 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@
@@ -277,29 +276,25 @@ target_os = @target_os@
 target_vendor = @target_vendor@
 @WITH_EVOLUTION_TRUE@evolution_server_in = GNOME_MailNotification_Evolution.server.in
 @WITH_EVOLUTION_TRUE@evolution_server = GNOME_MailNotification_Evolution.server
-applicationsdir = $(datadir)/applications
-applications_in_files = mail-notification.desktop.in
-applications_DATA = mail-notification.desktop
 
 # gnome_cappletdir is defined by configure
 gnome_capplet_in_files = mail-notification-properties.desktop.in
 gnome_capplet_DATA = mail-notification-properties.desktop
+autostartdir = $(sysconfdir)/xdg/autostart
+autostart_in_files = mail-notification.desktop.in
+autostart_DATA = mail-notification.desktop
 serverdir = $(libdir)/bonobo/servers
 server_in_files = $(evolution_server_in) GNOME_MailNotification.server.in
 server_DATA = $(evolution_server) GNOME_MailNotification.server
 schemasdir = $(GCONF_SCHEMA_FILE_DIR)
 schemas_in_files = mail-notification.schemas.in
 schemas_DATA = mail-notification.schemas
-soundlistdir = $(sysconfdir)/sound/events
-soundlist_in_files = mail-notification.soundlist.in
-soundlist_DATA = mail-notification.soundlist
 EXTRA_DIST = \
 	GNOME_MailNotification.server.in.in		\
 	GNOME_MailNotification_Evolution.server.in	\
 	mail-notification-properties.desktop.in		\
 	mail-notification.desktop.in			\
-	mail-notification.schemas.in			\
-	mail-notification.soundlist.in
+	mail-notification.schemas.in
 
 CLEANFILES = \
 	$(evolution_server)			\
@@ -307,8 +302,7 @@ CLEANFILES = \
 	GNOME_MailNotification.server.in	\
 	mail-notification-properties.desktop	\
 	mail-notification.desktop		\
-	mail-notification.schemas		\
-	mail-notification.soundlist
+	mail-notification.schemas
 
 all: all-am
 
@@ -352,22 +346,22 @@ clean-libtool:
 distclean-libtool:
 	-rm -f libtool
 uninstall-info-am:
-install-applicationsDATA: $(applications_DATA)
+install-autostartDATA: $(autostart_DATA)
 	@$(NORMAL_INSTALL)
-	test -z "$(applicationsdir)" || $(mkdir_p) "$(DESTDIR)$(applicationsdir)"
-	@list='$(applications_DATA)'; for p in $$list; do \
+	test -z "$(autostartdir)" || $(mkdir_p) "$(DESTDIR)$(autostartdir)"
+	@list='$(autostart_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  f=$(am__strip_dir) \
-	  echo " $(applicationsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(applicationsdir)/$$f'"; \
-	  $(applicationsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(applicationsdir)/$$f"; \
+	  echo " $(autostartDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(autostartdir)/$$f'"; \
+	  $(autostartDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(autostartdir)/$$f"; \
 	done
 
-uninstall-applicationsDATA:
+uninstall-autostartDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(applications_DATA)'; for p in $$list; do \
+	@list='$(autostart_DATA)'; for p in $$list; do \
 	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(applicationsdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(applicationsdir)/$$f"; \
+	  echo " rm -f '$(DESTDIR)$(autostartdir)/$$f'"; \
+	  rm -f "$(DESTDIR)$(autostartdir)/$$f"; \
 	done
 install-gnome_cappletDATA: $(gnome_capplet_DATA)
 	@$(NORMAL_INSTALL)
@@ -420,23 +414,6 @@ uninstall-serverDATA:
 	  echo " rm -f '$(DESTDIR)$(serverdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(serverdir)/$$f"; \
 	done
-install-soundlistDATA: $(soundlist_DATA)
-	@$(NORMAL_INSTALL)
-	test -z "$(soundlistdir)" || $(mkdir_p) "$(DESTDIR)$(soundlistdir)"
-	@list='$(soundlist_DATA)'; for p in $$list; do \
-	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
-	  f=$(am__strip_dir) \
-	  echo " $(soundlistDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(soundlistdir)/$$f'"; \
-	  $(soundlistDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(soundlistdir)/$$f"; \
-	done
-
-uninstall-soundlistDATA:
-	@$(NORMAL_UNINSTALL)
-	@list='$(soundlist_DATA)'; for p in $$list; do \
-	  f=$(am__strip_dir) \
-	  echo " rm -f '$(DESTDIR)$(soundlistdir)/$$f'"; \
-	  rm -f "$(DESTDIR)$(soundlistdir)/$$f"; \
-	done
 tags: TAGS
 TAGS:
 
@@ -475,7 +452,7 @@ check-am: all-am
 check: check-am
 all-am: Makefile $(DATA)
 installdirs:
-	for dir in "$(DESTDIR)$(applicationsdir)" "$(DESTDIR)$(gnome_cappletdir)" "$(DESTDIR)$(schemasdir)" "$(DESTDIR)$(serverdir)" "$(DESTDIR)$(soundlistdir)"; do \
+	for dir in "$(DESTDIR)$(autostartdir)" "$(DESTDIR)$(gnome_cappletdir)" "$(DESTDIR)$(schemasdir)" "$(DESTDIR)$(serverdir)"; do \
 	  test -z "$$dir" || $(mkdir_p) "$$dir"; \
 	done
 install: install-am
@@ -522,9 +499,9 @@ info: info-am
 
 info-am:
 
-install-data-am: install-applicationsDATA install-data-local \
+install-data-am: install-autostartDATA install-data-local \
 	install-gnome_cappletDATA install-schemasDATA \
-	install-serverDATA install-soundlistDATA
+	install-serverDATA
 
 install-exec-am:
 
@@ -550,30 +527,27 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-applicationsDATA uninstall-gnome_cappletDATA \
-	uninstall-info-am uninstall-schemasDATA uninstall-serverDATA \
-	uninstall-soundlistDATA
+uninstall-am: uninstall-autostartDATA uninstall-gnome_cappletDATA \
+	uninstall-info-am uninstall-schemasDATA uninstall-serverDATA
 
 .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-applicationsDATA install-data install-data-am \
+	install-autostartDATA install-data install-data-am \
 	install-data-local install-exec install-exec-am \
 	install-gnome_cappletDATA install-info install-info-am \
 	install-man install-schemasDATA install-serverDATA \
-	install-soundlistDATA 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-applicationsDATA uninstall-gnome_cappletDATA \
-	uninstall-info-am uninstall-schemasDATA uninstall-serverDATA \
-	uninstall-soundlistDATA
+	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-autostartDATA \
+	uninstall-gnome_cappletDATA uninstall-info-am \
+	uninstall-schemasDATA uninstall-serverDATA
 
 
 @INTLTOOL_DESKTOP_RULE@
 @INTLTOOL_SERVER_RULE@
 @INTLTOOL_SCHEMAS_RULE@
-@INTLTOOL_SOUNDLIST_RULE@
 
 @GCONF_SCHEMAS_INSTALL_TRUE@install-data-local: install-schemas
 @GCONF_SCHEMAS_INSTALL_TRUE@install-schemas:
diff --git a/data/mail-notification.desktop.in b/data/mail-notification.desktop.in
@@ -5,7 +5,7 @@ Icon=mail-notification.png
 _Comment=Get notified when new mail arrives
 Type=Application
 Categories=GNOME;Application;Network;
-Exec=mail-notification --display-main-window
+Exec=mail-notification --sm-disable
 Terminal=false
 StartupNotify=true
 X-GNOME-DocPath=mail-notification/mail-notification.xml
 \ No newline at end of file
diff --git a/data/mail-notification.schemas.in b/data/mail-notification.schemas.in
@@ -1,28 +1,6 @@
 <gconfschemafile>
   <schemalist>
     <schema>
-      <key>/schemas/apps/mail-notification/delay/minutes</key>
-      <applyto>/apps/mail-notification/delay/minutes</applyto>
-      <owner>mail-notification</owner>
-      <type>int</type>
-      <default>5</default>
-      <locale name="C">
-        <short>Minutes between mail checks</short>
-        <long>Delay between mail checks (minutes part).</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/delay/seconds</key>
-      <applyto>/apps/mail-notification/delay/seconds</applyto>
-      <owner>mail-notification</owner>
-      <type>int</type>
-      <default>0</default>
-      <locale name="C">
-        <short>Seconds between mail checks</short>
-        <long>Delay between mail checks (seconds part).</long>
-      </locale>
-    </schema>
-    <schema>
       <key>/schemas/apps/mail-notification/commands/new-mail/enabled</key>
       <applyto>/apps/mail-notification/commands/new-mail/enabled</applyto>
       <owner>mail-notification</owner>
@@ -65,28 +43,6 @@
       </locale>
     </schema>
     <schema>
-      <key>/schemas/apps/mail-notification/commands/mail-reader/enabled</key>
-      <applyto>/apps/mail-notification/commands/mail-reader/enabled</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-        <short>Set a mail reader</short>
-	<long>Whether to set a mail reader or not.</long>
-      </locale>
-    </schema> 
-    <schema>
-      <key>/schemas/apps/mail-notification/commands/mail-reader/command</key>
-      <applyto>/apps/mail-notification/commands/mail-reader/command</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <default>evolution</default>
-      <locale name="C">
-        <short>Mail reader command</short>
-	<long>The command to run to launch the mail reader.</long>
-      </locale>
-    </schema>
-    <schema>
       <key>/schemas/apps/mail-notification/ui/properties-dialog/height</key>
       <applyto>/apps/mail-notification/ui/properties-dialog/height</applyto>
       <owner>mail-notification</owner>
@@ -109,94 +65,6 @@
       </locale>
     </schema>
     <schema>
-      <key>/schemas/apps/mail-notification/ui/immediate-notification-error-dialog/do-not-show</key>
-      <applyto>/apps/mail-notification/ui/immediate-notification-error-dialog/do-not-show</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>0</default>
-      <locale name="C">
-        <short>Do not show the immediate notification error dialog</short>
-	<long>Whether to prevent the immediate notification error dialog from being displayed or not.</long>
-      </locale>
-    </schema> 
-    <schema>
-      <key>/schemas/apps/mail-notification/ui/main-window/dimensions/height</key>
-      <applyto>/apps/mail-notification/ui/main-window/dimensions/height</applyto>
-      <owner>mail-notification</owner>
-      <type>int</type>
-      <default>300</default>
-      <locale name="C">
-        <short>Height of main window</short>
-        <long>The height of the main window in pixels.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/ui/main-window/dimensions/width</key>
-      <applyto>/apps/mail-notification/ui/main-window/dimensions/width</applyto>
-      <owner>mail-notification</owner>
-      <type>int</type>
-      <default>400</default>
-      <locale name="C">
-        <short>Width of main window</short>
-        <long>The width of the main window in pixels.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/ui/main-window/view-toolbars</key>
-      <applyto>/apps/mail-notification/ui/main-window/view-toolbars</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>1</default>
-      <locale name="C">
-	<short>View toolbars</short>
-	<long>Whether the toolbars should be visible or not.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/ui/main-window/view-statusbar</key>
-      <applyto>/apps/mail-notification/ui/main-window/view-statusbar</applyto>
-      <owner>mail-notification</owner>
-      <type>bool</type>
-      <default>1</default>
-      <locale name="C">
-	<short>View statusbar</short>
-	<long>Whether the statusbar should be visible or not.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/ui/main-window/toolbars-style</key>
-      <applyto>/apps/mail-notification/ui/main-window/toolbars-style</applyto>
-      <owner>mail-notification</owner>
-      <type>string</type>
-      <default>desktop-default</default>
-      <locale name="C">
-	<short>Toolbars style</short>
-	<long>The style of the toolbars. Must be "desktop-default", "icons", "text", "both" or "both-horiz".</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/ui/main-window/edit-toolbars-dialog/height</key>
-      <applyto>/apps/mail-notification/ui/main-window/edit-toolbars-dialog/height</applyto>
-      <owner>mail-notification</owner>
-      <type>int</type>
-      <default>-1</default>
-      <locale name="C">
-        <short>Height of edit toolbars dialog</short>
-        <long>The height of the edit toolbars dialog in pixels.</long>
-      </locale>
-    </schema>
-    <schema>
-      <key>/schemas/apps/mail-notification/ui/main-window/edit-toolbars-dialog/width</key>
-      <applyto>/apps/mail-notification/ui/main-window/edit-toolbars-dialog/width</applyto>
-      <owner>mail-notification</owner>
-      <type>int</type>
-      <default>-1</default>
-      <locale name="C">
-        <short>Width of edit toolbars dialog</short>
-        <long>The width of the edit toolbars 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>
@@ -351,26 +219,48 @@
       </locale>
     </schema>
     <schema>
-      <key>/schemas/apps/mail-notification/double-click-action-2</key>
-      <applyto>/apps/mail-notification/double-click-action-2</applyto>
+      <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>display-main-window</default>
+      <default>standard</default>
       <locale name="C">
-        <short>Double-click action</short>
-	<long>The action to perform when the icon is double-clicked. Must be "display-main-window", "launch-mail-reader" or "update-mail-status".</long>
+        <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/summary-tooltip</key>
-      <applyto>/apps/mail-notification/summary-tooltip</applyto>
+      <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>1</default>
+      <default>0</default>
       <locale name="C">
-        <short>Display mail summary in tooltip</short>
-	<long>Whether to display the mail summary in the status icon tooltip or not.</long>
+        <short>Always display an icon</short>
+	<long>Whether to display an icon when there is no new mail or not.</long>
       </locale>
-    </schema> 
+    </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.soundlist.in b/data/mail-notification.soundlist.in
@@ -1,6 +0,0 @@
-[__section_info__]
-_description=Mail Notification
-
-[new-mail]
-file=email.wav
-_description=New Mail
diff --git a/help/C/Makefile.in b/help/C/Makefile.in
@@ -105,8 +105,8 @@ DIST_COMMON = $(dist_noinst_DATA) $(srcdir)/Makefile.am \
 subdir = help/C
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
-	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
 	$(top_srcdir)/m4/reentrant-resolver.m4 \
 	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
 	$(top_srcdir)/configure.ac
@@ -128,7 +128,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BONOBO_ACTIVATION_IDL = @BONOBO_ACTIVATION_IDL@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -160,7 +160,6 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GMIME_CFLAGS = @GMIME_CFLAGS@
 GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
@@ -192,6 +191,7 @@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
 INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
 INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
 INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
 INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
 INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
 INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
@@ -202,7 +202,6 @@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
 INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
 INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
-LIBBONOBO_IDL = @LIBBONOBO_IDL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
@@ -297,6 +296,7 @@ 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>
-      2005-08-09
+      2006-05-16
     </date>
-    <version identifier="2.12" date="2005-08-09" description="Thirteenth release"/>
+    <version identifier="2.13" date="2006-05-16" description="Fourteenth release"/>
     <subject category="GNOME|Internet"/>
     <description>
       Mail Notification Manual
diff --git a/help/C/mail-notification.xml b/help/C/mail-notification.xml
@@ -2,9 +2,9 @@
 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
   <!ENTITY app "<application>Mail Notification</application>">
-  <!ENTITY appversion "2.0">
-  <!ENTITY manrevision "2.12">
-  <!ENTITY date "Tuesday, August 9, 2005">
+  <!ENTITY appversion "3.0 Release Candidate 1">
+  <!ENTITY manrevision "2.13">
+  <!ENTITY date "Tuesday, May 16, 2006">
 
   <!ENTITY project "The Mail Notification Project">
 
@@ -26,10 +26,10 @@
   <!ENTITY gnomevfs "<link linkend=&#34;gnomevfs&#34;>GnomeVFS</link>">
 ]>
 
-<!-- $Id: mail-notification.xml,v 1.113 2005/08/09 19:17:30 jylefort Exp $ -->
+<!-- $Id: mail-notification.xml,v 1.130 2006/05/16 00:10:50 jylefort Exp $ -->
 <!-- Mail Notification Manual -->
 
-<!-- Copyright (C) 2004, 2005 Jean-Yves Lefort -->
+<!-- Copyright (C) 2004-2006 Jean-Yves Lefort -->
 <!-- All rights reserved. -->
 
 <!-- Redistribution and use in source (SGML DocBook) and 'compiled' -->
@@ -73,6 +73,7 @@
     <copyright>
       <year>2004</year>
       <year>2005</year>
+      <year>2006</year>
       <holder>Jean-Yves Lefort</holder>
     </copyright>
 <!-- translators: uncomment this:
@@ -135,6 +136,17 @@
 	</revdescription>
       </revision>
       <revision>
+	<revnumber>Mail Notification Manual V2.12</revnumber>
+	<date>Tuesday, August 9, 2005</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.11</revnumber>
 	<date>Sunday, March 6, 2005</date>
 	<revdescription>
@@ -322,13 +334,13 @@
       </para>
       <variablelist>
     	<varlistentry>
-	  <term><guimenu>Applications</guimenu> menu</term>
+	  <term><guimenu>Desktop</guimenu> menu</term>
 	  <listitem>
 	    <para>Choose
 	      <menuchoice>
-    		<guisubmenu>Internet</guisubmenu>
+    		<guisubmenu>Preferences</guisubmenu>
     		<guimenuitem>&app;</guimenuitem>
-	      </menuchoice>.</para>
+	      </menuchoice> (this location may vary across systems).</para>
 	  </listitem>
     	</varlistentry>
 
@@ -349,6 +361,11 @@
 	    </para>
 	    <variablelist>
 	      <varlistentry>
+		<term>--version</term>
+		<listitem><para>Show version information and compiled-in features</para></listitem>
+	      </varlistentry>
+
+	      <varlistentry>
 		<term>--enable-info</term>
 		<listitem>
 		  <para>Enable informational output</para>
@@ -364,16 +381,6 @@
 	      </varlistentry>
 
 	      <varlistentry>
-		<term>--list-features</term>
-		<listitem><para>List the compiled-in features</para></listitem>
-	      </varlistentry>
-
-	      <varlistentry>
-		<term>--display-main-window</term>
-		<listitem><para>Display the main window</para></listitem>
-	      </varlistentry>
-
-	      <varlistentry>
 		<term>--display-properties</term>
 		<listitem><para>Display the properties dialog</para></listitem>
 	      </varlistentry>
@@ -442,13 +449,6 @@
       <itemizedlist>
 	<listitem>
 	  <para>
-	    the <guilabel>Mail Notification</guilabel> > <guilabel>New Mail</guilabel>
-	    GNOME sound event is emitted (you can configure the sound
-	    to be played from the GNOME sound preferences)
-	  </para>
-	</listitem>
-	<listitem>
-	  <para>
 	    if a command to be executed when new mail arrives is set in
 	    the <link linkend="commands">Commands</link> properties,
 	    that command is executed
@@ -468,106 +468,13 @@
       </para>
       <para>
 	Leaving your mouse over the icon will reveal more details
-	about the status of your mailboxes. Double-clicking on the
+	about the status of your mailboxes. Clicking on the
 	icon will perform the action specified in the
-	<link linkend="double-click-action">Double-click Action</link> setting.
+	<link linkend="click-action">Click Action</link> setting.
       </para>
     </sect2>
   </sect1>
 
-  <sect1 id="main-window">
-    <title>Main Window</title>
-    <para>
-      You can access the main window in the following ways:
-    </para>
-    <variablelist>
-      <varlistentry>
-	<term><guimenu>Applications</guimenu> menu</term>
-	<listitem>
-	  <para>Choose
-	    <menuchoice>
-	      <guisubmenu>Internet</guisubmenu>
-	      <guimenuitem>&app;</guimenuitem>
-	    </menuchoice>.</para>
-	</listitem>
-      </varlistentry>
-
-      <varlistentry>
-	<term>Command line</term>
-	<listitem>
-	  <para>
-	    Type the following command, then press <keycap>Return</keycap>:
-	  </para>
-	  <para>
-	    <command>mail-notification --display-main-window</command>
-	  </para>
-	</listitem>
-      </varlistentry>
-
-      <varlistentry>
-	<term>Mail icon</term>
-	<listitem>
-	  <para>
-	    Right-click on the mail icon and choose
-	    <menuchoice><guimenuitem>Main Window</guimenuitem></menuchoice>.
-	  </para>
-	</listitem>
-      </varlistentry>
-    </variablelist>
-	 
-    <para>
-      The main window displays the list of new and unread messages,
-      sorted by sent date in descending order.
-    </para>
-    <para>
-      The main window can also be used to invoke &app; features when
-      the mail icon is hidden.
-    </para>
-
-    <sect2 id="main-window-edit-toolbars">
-      <title>Editing the Main Window Toolbars</title>
-      <para>
-	To edit the main window toolbars, choose
-	<menuchoice> 
-	  <guimenu>Edit</guimenu> 
-	  <guimenuitem>Toolbars</guimenuitem> 
-	</menuchoice>, then:
-      </para>
-      <itemizedlist>
-	<listitem>
-	  <para>
-	    To add or remove buttons from your toolbars, drag icons
-	    from and to the editor.
-	  </para>
-	</listitem>
-	<listitem>
-	  <para>
-	    To reset the toolbars configuration to factory defaults,
-	    click on the <guibutton>Use Default</guibutton> button.
-	  </para>
-	</listitem>
-	<listitem>
-	  <para>
-	    To add a new toolbar, click on the <guibutton>Add a New
-	    Toolbar</guibutton> button.
-	  </para>
-	</listitem>
-	<listitem>
-	  <para>
-	    To remove a toolbar, remove all items from it. The toolbar
-	    will then automatically be removed.
-	  </para>
-	</listitem>
-	<listitem>
-	  <para>
-	    Drag buttons to rearrange them either on the same toolbar
-	    or between different toolbars.
-	  </para>
-	</listitem>
-      </itemizedlist>
-    </sect2>
-  </sect1>
-    
   <sect1 id="properties"> 
     <title>Properties</title> 
     <para>To configure &app;, choose
@@ -586,7 +493,7 @@
 	<para><link linkend="properties-general">General</link></para>
       </listitem>
       <listitem>
-	<para><link linkend="properties-mailboxes">Mailboxes</link></para>
+	<para><link linkend="properties-status-icon">Status Icon</link></para>
       </listitem>
       <listitem>
 	<para><link linkend="properties-mail-summary-popup">Mail Summary Popup</link></para>
@@ -601,95 +508,25 @@
 	  <listitem>
 	    <variablelist>
 	      <varlistentry>
-		<term><guilabel>Start Mail Notification on GNOME login</guilabel></term>
-		<listitem>
-		  <para>
-		    If this option is enabled, &app; will be started along
-		    with your GNOME session.
-		  </para>
-		</listitem>
-	      </varlistentry>
-	      <varlistentry id="blink-on-errors">
-		<term><guilabel>Blink on errors</guilabel></term>
-		<listitem>
-		  <para>
-		    If this option is enabled, &app; will show the status
-		    icon and make it blink on errors. Disabling this option
-		    is useful if some of your mailboxes are not permanently
-		    accessible.
-		  </para>
-		</listitem>
-	      </varlistentry>
-	      <varlistentry>
-		<term><guilabel>Display mail summary in tooltip</guilabel></term>
+		<term><guilabel>Display seen mail</guilabel></term>
 		<listitem>
 		  <para>
-		    If this option is enabled, the mail summary will
-		    be displayed in the status icon tooltip.
+		    If this option is enabled, mail which is still
+		    marked as unread but has been seen will be
+		    displayed.
 		  </para>
-		</listitem>
-	      </varlistentry>
-	    </variablelist>
-	  </listitem>
-	</varlistentry>
-	<varlistentry id="commands">
-	  <term><guilabel>Commands</guilabel></term>
-	  <listitem>
-	    <para>
-	      You can specify a <guilabel>mail reader</guilabel>
-	      (which can be launched from various parts of &app;), as
-	      well as configure commands to be executed <guilabel>when new mail arrives</guilabel>
-	      and <guilabel>when all mail has been read</guilabel>.
-	    </para>
-	  </listitem>
-	</varlistentry>
-	<varlistentry id="double-click-action">
-	  <term><guilabel>Double-click Action</guilabel></term>
-	  <listitem>
-	    <para>
-	      You can choose an action to be performed when the mail
-	      icon is double-clicked:
-	      <guilabel>display the main window</guilabel>,
-	      <guilabel>launch the mail reader</guilabel> or
-	      <guilabel>update the mail status</guilabel>.
-	    </para>
-	  </listitem>
-	</varlistentry>
-      </variablelist>
-    </sect2>
-    
-    <sect2 id="properties-mailboxes">
-      <title>Mailboxes</title>
-      <variablelist>
-	<varlistentry>
-	  <term><guilabel>General</guilabel></term>
-	  <listitem>
-	    <variablelist>
-	      <varlistentry id="delay-between-mail-checks">
-		<term><guilabel>Delay between mail checks</guilabel></term>
-		<listitem>
 		  <para>
-		    This is the amount of time to wait between mail
-		    checks.
-		    <note>
-		      <para>
-			This delay only applies to mailboxes which do
-			not support <link linkend="immediate-notification">immediate
-			notification</link> of changes.
-		      </para>
-		      <para>
-			If all the mailboxes support <link
-			linkend="immediate-notification">immediate
-			notification</link>, this control is disabled.
-		      </para>
-		    </note>
+		    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.
 		  </para>
 		</listitem>
 	      </varlistentry>
 	    </variablelist>
 	  </listitem>
 	</varlistentry>
-	<varlistentry>
+	<varlistentry id="mailbox-list">
 	  <term><guilabel>Mailbox List</guilabel></term>
 	  <listitem>
 	    <para>
@@ -735,7 +572,7 @@
 		      mailbox. The mailbox is unhandled.
 		    </entry>
 		  </row>
-		  <row>
+		  <row id="poll-emblem">
 		    <entry>
 		      <screenshot>
 			<mediaobject>
@@ -750,7 +587,7 @@
 		    </entry>
 		    <entry>
 		      The mailbox does not support <link linkend="immediate-notification">immediate notification</link>,
-		      and is checked periodically according to the
+		      and is checked periodically according to its
 		      <link linkend="delay-between-mail-checks">Delay between mail checks</link> setting.
 		    </entry>
 		  </row>
@@ -777,6 +614,73 @@
 	    </table>
 	  </listitem>
 	</varlistentry>
+	<varlistentry id="commands">
+	  <term><guilabel>Commands</guilabel></term>
+	  <listitem>
+	    <para>
+	      You can configure commands to be executed <guilabel>when
+	      new mail arrives</guilabel> and <guilabel>when all mail
+	      has been read</guilabel>.
+	    </para>
+	  </listitem>
+	</varlistentry>
+      </variablelist>
+    </sect2>
+    
+    <sect2 id="properties-status-icon">
+      <title>Status Icon</title>
+      <variablelist>
+	<varlistentry>
+	  <term><guilabel>General</guilabel></term>
+	  <listitem>
+	    <variablelist>
+	      <varlistentry id="blink-on-errors">
+		<term><guilabel>Blink on errors</guilabel></term>
+		<listitem>
+		  <para>
+		    If this option is enabled, &app; will show the status
+		    icon and make it blink on errors. Disabling this option
+		    is useful if some of your mailboxes are not permanently
+		    accessible.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	      <varlistentry>
+		<term><guilabel>Always display</guilabel></term>
+		<listitem>
+		  <para>
+		    If this is option is enabled, &app; will display
+		    an icon even when there is no new mail.
+		  </para>
+		</listitem>
+	      </varlistentry>
+	    </variablelist>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
+	  <term><guilabel>Tooltip Mail Summary</guilabel></term>
+	  <listitem>
+	    <para>
+	      You can choose the layout of the tooltip mail summary
+	      (<guilabel>standard</guilabel> or
+	      <guilabel>compact</guilabel>), or you can choose to
+	      disable the tooltip mail summary
+	      (<guilabel>none</guilabel>).
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry id="click-action">
+	  <term><guilabel>Click Action</guilabel></term>
+	  <listitem>
+	    <para>
+	      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>update the mail status</guilabel>.
+	    </para>
+	  </listitem>
+	</varlistentry>
       </variablelist>
     </sect2>
 
@@ -793,12 +697,6 @@
 		  <para>
 		    If this option is enabled, the mail summary popup
 		    will be displayed when new mail arrives.
-		    <note>
-		      <para>
-			The mail summary popup will not be displayed
-			if the <link linkend="main-window">main window</link> is displayed.
-		      </para>
-		    </note>
 		  </para>
 		</listitem>
 	      </varlistentry>
@@ -818,11 +716,14 @@
 		</listitem>
 	      </varlistentry>
 	      <varlistentry>
-		<term><guilabel>Only display recent mail</guilabel></term>
+		<term><guilabel>Hide previously displayed mail</guilabel></term>
 		<listitem>
 		  <para>
 		    If this option is enabled, the mail summary popup
-		    will hide previously displayed mail.
+		    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).
 		  </para>
 		</listitem>
 	      </varlistentry>
@@ -866,6 +767,16 @@
 	  </listitem>
 	</varlistentry>
 	<varlistentry>
+	  <term><guilabel>Layout</guilabel></term>
+	  <listitem>
+	    <para>
+	      You can choose the layout of the mail summary:
+	      <guilabel>standard</guilabel> or
+	      <guilabel>compact</guilabel>.
+	    </para>
+	  </listitem>
+	</varlistentry>
+	<varlistentry>
 	  <term><guilabel>Fonts</guilabel></term>
 	  <listitem>
 	    <para>
@@ -939,6 +850,24 @@
 	  </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>.
+	      </para>
+	    </note>
+	  </para>
+	</listitem>
+      </varlistentry>
     </variablelist>
 
     <para>
@@ -1277,8 +1206,11 @@
 	  If immediate notification cannot be enabled for a mailbox
 	  (either because that type of mailbox does not support it or
 	  because the requirements are not met), the mailbox will be
-	  checked periodically according to the
-	  <link linkend="delay-between-mail-checks">Delay between mail checks</link> setting.
+	  checked periodically according to its
+	  <link linkend="delay-between-mail-checks">Delay between mail checks</link> setting,
+	  and an <link linkend="poll-emblem">emblem</link> will be
+	  displayed in the <link linkend="mailbox-list">mailbox
+	  list</link>.
 	</para>
       </note>
     </sect2>
@@ -1424,10 +1356,14 @@ if (! success) {
 	  </thead>
 	  <tbody>
 	    <row>
-	      <entry>status icon</entry>
+	      <entry>status icon when there is new mail</entry>
 	      <entry>mn-mail</entry>
 	    </row>
 	    <row>
+	      <entry>status icon when there is no new mail</entry>
+	      <entry>mn-no-mail</entry>
+	    </row>
+	    <row>
 	      <entry>local mailbox</entry>
 	      <entry>mn-local</entry>
 	    </row>
@@ -1472,14 +1408,6 @@ if (! success) {
 	      <entry>mn-mail-reader</entry>
 	    </row>
 	    <row>
-	      <entry>main window</entry>
-	      <entry>mn-main-window</entry>
-	    </row>
-	    <row>
-	      <entry>leave fullscreen</entry>
-	      <entry>mn-leave-fullscreen</entry>
-	    </row>
-	    <row>
 	      <entry>connect (in the SSL/TLS confirmation dialog)</entry>
 	      <entry>mn-connect</entry>
 	    </row>
@@ -1550,6 +1478,99 @@ widget "*" style "mn-icons"</programlisting>
     </sect2>
   </sect1>
     
+  <sect1 id="faq">
+    <title>Frequently Asked Questions</title>
+    <qandaset defaultlabel="number">
+      <qandaentry>
+	<question>
+	  <para>
+	    How can I access the <link
+	    linkend="properties">Properties</link> dialog?
+	  </para>
+	</question>
+	<answer>
+	  <para>
+	    Choose
+	    <menuchoice>
+	      <guimenu>Desktop</guimenu>
+	      <guisubmenu>Preferences</guisubmenu>
+	      <guimenuitem>Mail Notification</guimenuitem>
+	    </menuchoice> (this location may vary across systems) or type
+	    <command>mail-notification -p</command> in a terminal.
+	  </para>
+	</answer>
+      </qandaentry>
+      <qandaentry>
+	<question>
+	  <para>
+	    You say that &app; supports &lt;insert mailbox type or
+	    feature&gt;, but there is no such entry in the <link
+	    linkend="mailbox-properties">Mailbox Properties</link>
+	    dialog.
+	  </para>
+	</question>
+	<answer>
+	  <para>
+	    &app; was built without support for &lt;insert mailbox
+	    type or feature&gt;.
+	  </para>
+	  <para>
+	    If you have installed &app; from a package, contact the
+	    package maintainer and ask him to enable &lt;insert
+	    mailbox type or feature&gt; support.
+	  </para>
+	  <para>
+	    If you have built &app; yourself, install the &lt;insert
+	    mailbox type or feature&gt; prerequisites (they are listed
+	    in the <filename>INSTALL</filename> file), then rebuild
+	    &app;.
+	  </para>
+	</answer>
+      </qandaentry>
+      <qandaentry>
+	<question>
+	  <para>
+	    I need &ssl;/&tls; for connecting to my &pop3; or &imap;
+	    server, but the &ssl;/&tls; options are greyed out.
+	  </para>
+	</question>
+	<answer>
+	  <para>
+	    See the previous question.
+	  </para>
+	</answer>
+      </qandaentry>
+      <qandaentry>
+	<question>
+	  <para>
+	    How can I monitor multiple &imap; folders?
+	  </para>
+	</question>
+	<answer>
+	  <para>
+	    Add each folder as a separate &app; mailbox.
+	  </para>
+	</answer>
+      </qandaentry>
+      <qandaentry>
+	<question>
+	  <para>
+	    Can I monitor a &lt;insert webmail provider&gt; account?
+	  </para>
+	</question>
+	<answer>
+	  <para>
+	    &app; has no native support for &lt;insert webmail
+	    provider&gt; mailboxes. However, &app; supports the &pop3;
+	    and &imap; protocols; you can therefore use a separate
+	    application for providing &pop3; or &imap; access to the
+	    &lt;insert webmail provider&gt; account.
+	  </para>
+	</answer>
+      </qandaentry>
+    </qandaset>
+  </sect1>
+
   <sect1 id="about">
     <title>About &app;</title>
     <para>
@@ -1572,15 +1593,21 @@ widget "*" style "mn-icons"</programlisting>
       <itemizedlist>
 	<!-- We don't use <firstname> and <surname> because we can't -->
 	<!-- unambiguously split some names. -->
+	<listitem><para>Claudio André</para></listitem>
 	<listitem><para>Hendrik Brandt</para></listitem>
+	<listitem><para>Kim Briggs</para></listitem>
+	<listitem><para>Hiroshi Hasebe</para></listitem>
 	<listitem><para>Duarte Henriques</para></listitem>
 	<listitem><para>Dan Korostelev</para></listitem>
+	<listitem><para>Pav Lucistnik</para></listitem>
 	<listitem><para>Filip Miletic</para></listitem>
 	<listitem><para>Phil Nelson</para></listitem>
 	<listitem><para>Maurycy Pawłowski-Wieroński</para></listitem>
 	<listitem><para>Vladimir Petkov</para></listitem>
+	<listitem><para>Benoît Rouits</para></listitem>
 	<listitem><para>Tomasz Sarota-Raczek</para></listitem>
 	<listitem><para>Edwin Shin</para></listitem>
+	<listitem><para>Marcel J. Zwiebel</para></listitem>
       </itemizedlist>
     </sect2>
 
diff --git a/help/Makefile.in b/help/Makefile.in
@@ -40,8 +40,8 @@ subdir = help
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
-	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
 	$(top_srcdir)/m4/reentrant-resolver.m4 \
 	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
 	$(top_srcdir)/configure.ac
@@ -71,7 +71,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BONOBO_ACTIVATION_IDL = @BONOBO_ACTIVATION_IDL@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -103,7 +103,6 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GMIME_CFLAGS = @GMIME_CFLAGS@
 GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
@@ -135,6 +134,7 @@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
 INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
 INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
 INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
 INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
 INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
 INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
@@ -145,7 +145,6 @@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
 INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
 INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
-LIBBONOBO_IDL = @LIBBONOBO_IDL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
@@ -240,6 +239,7 @@ 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.1";
+my $VERSION      = "0.34.2";
 
 ## Loaded modules
 use strict; 
@@ -485,10 +485,12 @@ sub parseTree
 sub intltool_tree_comment
 {
     my $expat = shift;
-    my $data  = shift;
+    my $data  = $expat->original_string();
     my $clist = $expat->{Curlist};
     my $pos   = $#$clist;
 
+    $data =~ s/^<!--//s;
+    $data =~ s/-->$//s;
     push @$clist, 1 => $data;
 }
 
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.1";
+my $VERSION = "0.34.2";
 
 ## Loaded modules
 use strict; 
@@ -91,7 +91,7 @@ my $OUTFILE;
 
 my %po_files_by_lang = ();
 my %translations = ();
-my $iconv = $ENV{"ICONV"} || $ENV{"INTLTOOL_ICONV"} || "/usr/local/bin/iconv";
+my $iconv = $ENV{"ICONV"} || $ENV{"INTLTOOL_ICONV"} || "@INTLTOOL_ICONV@";
 my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null');
 
 # Use this instead of \w for XML files to handle more possible characters.
@@ -257,7 +257,7 @@ sub gather_po_files
 sub get_local_charset
 {
     my ($encoding) = @_;
-    my $alias_file = $ENV{"G_CHARSET_ALIAS"} || "/usr/local/libdata/charset.alias";
+    my $alias_file = $ENV{"G_CHARSET_ALIAS"} || "@INTLTOOL_LIBDIR@/charset.alias";
 
     # seek character encoding aliases in charset.alias (glib)
 
diff --git a/intltool-update.in b/intltool-update.in
@@ -30,7 +30,7 @@
 
 ## Release information
 my $PROGRAM = "intltool-update";
-my $VERSION = "0.34.1";
+my $VERSION = "0.34.2";
 my $PACKAGE = "intltool";
 
 ## Loaded modules
@@ -80,7 +80,8 @@ my $ini_support =
 "directory(?:\\.in)+|".	# http://www.freedesktop.org/Standards/menu-spec
 "soundlist(?:\\.in)+|".	# GNOME specific
 "keys(?:\\.in)+|".	# GNOME Mime database specific
-"theme(?:\\.in)+";	# http://www.freedesktop.org/Standards/icon-theme-spec
+"theme(?:\\.in)+|".	# http://www.freedesktop.org/Standards/icon-theme-spec
+"service(?:\\.in)+";    # DBus specific
 
 my $buildin_gettext_support = 
 "c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py";
@@ -610,7 +611,7 @@ sub GenerateHeaders
 #
 sub GeneratePOTemplate
 {
-    my $XGETTEXT = $ENV{"XGETTEXT"} || "/usr/local/bin/xgettext";
+    my $XGETTEXT = $ENV{"XGETTEXT"} || "@INTLTOOL_XGETTEXT@";
     my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || '';
     chomp $XGETTEXT;
 
@@ -781,7 +782,7 @@ sub POFile_Update
 {
     -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n";
 
-    my $MSGMERGE = $ENV{"MSGMERGE"} || "/usr/local/bin/msgmerge";
+    my $MSGMERGE = $ENV{"MSGMERGE"} || "@INTLTOOL_MSGMERGE@";
     my ($lang, $outfile) = @_;
 
     print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE;
@@ -824,7 +825,7 @@ sub POFile_GetLanguage ($)
 sub Console_Write_TranslationStatus
 {
     my ($lang, $output_file) = @_;
-    my $MSGFMT = $ENV{"MSGFMT"} || "/usr/local/bin/msgfmt";
+    my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
 
     $output_file = "$SRCDIR/$lang.po" if ($output_file eq "");
 
@@ -833,7 +834,7 @@ sub Console_Write_TranslationStatus
 
 sub Console_Write_CoverageReport
 {
-    my $MSGFMT = $ENV{"MSGFMT"} || "/usr/local/bin/msgfmt";
+    my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@";
 
     &GatherPOFiles;
 
@@ -991,9 +992,9 @@ sub FindPackageName
 	($name, $version) = ($1, $2);
 	$name    =~ s/[\[\]\s]//g;
 	$version =~ s/[\[\]\s]//g;
-	$varhash{"AC_PACKAGE_NAME"} = $name;
+	$varhash{"PACKAGE_NAME"} = $name;
 	$varhash{"PACKAGE"} = $name;
-	$varhash{"AC_PACKAGE_VERSION"} = $version;
+	$varhash{"PACKAGE_VERSION"} = $version;
 	$varhash{"VERSION"} = $version;
     }
     
@@ -1002,19 +1003,18 @@ sub FindPackageName
 	($name, $version) = ($1, $2);
 	$name    =~ s/[\[\]\s]//g;
 	$version =~ s/[\[\]\s]//g;
-	$varhash{"AC_PACKAGE_NAME"} = $name;
+	$varhash{"PACKAGE_NAME"} = $name;
 	$varhash{"PACKAGE"} = $name;
-	$varhash{"AC_PACKAGE_VERSION"} = $version;
+	$varhash{"PACKAGE_VERSION"} = $version;
 	$varhash{"VERSION"} = $version;
     }
 
     # \s makes this not work, why?
     $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m;
     
-    # prepend '$' to auto* internal variables, usually they are
-    # used in configure.in/ac without the '$'
-    $name =~ s/AC_/\$AC_/g;
-    $name =~ s/\$\$/\$/g;
+    # m4 macros AC_PACKAGE_NAME, AC_PACKAGE_VERSION etc. have same value
+    # as corresponding $PACKAGE_NAME, $PACKAGE_VERSION etc. shell variables.
+    $name =~ s/\bAC_PACKAGE_/\$PACKAGE_/g;
 
     $name = $domain if $domain;
 
diff --git a/ltmain.sh b/ltmain.sh
@@ -43,8 +43,8 @@ EXIT_FAILURE=1
 
 PROGRAM=ltmain.sh
 PACKAGE=libtool
-VERSION=1.5.18
-TIMESTAMP=" (1.1220.2.245 2005/05/16 08:55:27)"
+VERSION=1.5.22
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
 
 # See if we are running on zsh, and set the options which allow our
 # commands through without removal of \ escapes.
@@ -88,14 +88,15 @@ rm="rm -f"
 Xsed="${SED}"' -e 1s/^X//'
 sed_quote_subst='s/\([\\`\\"$\\\\]\)/\\\1/g'
 # test EBCDIC or ASCII
-case `echo A|tr A '\301'` in
- A) # EBCDIC based system
-  SP2NL="tr '\100' '\n'"
-  NL2SP="tr '\r\n' '\100\100'"
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  SP2NL='tr \040 \012'
+  NL2SP='tr \015\012 \040\040'
   ;;
- *) # Assume ASCII based system
-  SP2NL="tr '\040' '\012'"
-  NL2SP="tr '\015\012' '\040\040'"
+ *) # EBCDIC based system
+  SP2NL='tr \100 \n'
+  NL2SP='tr \r\n \100\100'
   ;;
 esac
 
@@ -131,14 +132,52 @@ run=
 show="$echo"
 show_help=
 execute_dlfiles=
+duplicate_deps=no
+preserve_args=
 lo2o="s/\\.lo\$/.${objext}/"
 o2lo="s/\\.${objext}\$/.lo/"
-quote_scanset='[[~#^*{};<>?'"'"' 	]'
 
 #####################################
 # Shell function definitions:
 # This seems to be the best place for them
 
+# func_mktempdir [string]
+# Make a temporary directory that won't clash with other running
+# libtool processes, and avoids race conditions if possible.  If
+# given, STRING is the basename for that directory.
+func_mktempdir ()
+{
+    my_template="${TMPDIR-/tmp}/${1-$progname}"
+
+    if test "$run" = ":"; then
+      # Return a directory name, but don't create it in dry-run mode
+      my_tmpdir="${my_template}-$$"
+    else
+
+      # If mktemp works, use that first and foremost
+      my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
+
+      if test ! -d "$my_tmpdir"; then
+	# Failing that, at least try and use $RANDOM to avoid a race
+	my_tmpdir="${my_template}-${RANDOM-0}$$"
+
+	save_mktempdir_umask=`umask`
+	umask 0077
+	$mkdir "$my_tmpdir"
+	umask $save_mktempdir_umask
+      fi
+
+      # If we're not in dry-run mode, bomb out on failure
+      test -d "$my_tmpdir" || {
+        $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+	exit $EXIT_FAILURE
+      }
+    fi
+
+    $echo "X$my_tmpdir" | $Xsed
+}
+
+
 # func_win32_libid arg
 # return the library type of file 'arg'
 #
@@ -157,12 +196,11 @@ func_win32_libid ()
     if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
       $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
       win32_nmres=`eval $NM -f posix -A $1 | \
-	sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'`
-      if test "X$win32_nmres" = "Ximport" ; then
-        win32_libid_type="x86 archive import"
-      else
-        win32_libid_type="x86 archive static"
-      fi
+	$SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+      case $win32_nmres in
+      import*)  win32_libid_type="x86 archive import";;
+      *)        win32_libid_type="x86 archive static";;
+      esac
     fi
     ;;
   *DLL*)
@@ -188,11 +226,25 @@ func_win32_libid ()
 # arg is usually of the form 'gcc ...'
 func_infer_tag ()
 {
+    # FreeBSD-specific: where we install compilers with non-standard names
+    tag_compilers_CC="*cc cc* *gcc gcc*"
+    tag_compilers_CXX="*c++ c++* *g++ g++*"
+    base_compiler=`set -- "$@"; echo $1`
+
+    # If $tagname isn't set, then try to infer if the default "CC" tag applies
+    if test -z "$tagname"; then
+      for zp in $tag_compilers_CC; do
+        case $base_compiler in
+	 $zp) tagname="CC"; break;;
+	esac
+      done
+    fi
+
     if test -n "$available_tags" && test -z "$tagname"; then
       CC_quoted=
       for arg in $CC; do
 	case $arg in
-	  *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	  *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	  arg="\"$arg\""
 	  ;;
 	esac
@@ -213,7 +265,7 @@ func_infer_tag ()
 	    for arg in $CC; do
 	    # Double-quote args containing other shell metacharacters.
 	    case $arg in
-	      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	      arg="\"$arg\""
 	      ;;
 	    esac
@@ -228,7 +280,22 @@ func_infer_tag ()
 	      break
 	      ;;
 	    esac
-	  fi
+
+	    # FreeBSD-specific: try compilers based on inferred tag
+	    if test -z "$tagname"; then
+	      eval "tag_compilers=\$tag_compilers_${z}"
+	      if test -n "$tag_compilers"; then
+		for zp in $tag_compilers; do
+		  case $base_compiler in   
+		    $zp) tagname=$z; break;;
+		  esac
+		done
+		if test -n "$tagname"; then
+		  break
+		fi
+	      fi
+            fi
+          fi
 	done
 	# If $tagname still isn't set, then no tagged configuration
 	# was found and let the user know that the "--tag" command
@@ -295,9 +362,9 @@ func_extract_archives ()
       $run ${rm}r "$my_xdir"
       $show "$mkdir $my_xdir"
       $run $mkdir "$my_xdir"
-      status=$?
-      if test "$status" -ne 0 && test ! -d "$my_xdir"; then
-	exit $status
+      exit_status=$?
+      if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+	exit $exit_status
       fi
       case $host in
       *-darwin*)
@@ -337,7 +404,7 @@ func_extract_archives ()
  	    func_extract_an_archive "$my_xdir" "$my_xabs"
 	  fi # $darwin_arches
 	fi # $run
-      ;;
+	;;
       *)
         func_extract_an_archive "$my_xdir" "$my_xabs"
         ;;
@@ -352,6 +419,8 @@ func_extract_archives ()
 # Darwin sucks
 eval std_shrext=\"$shrext_cmds\"
 
+disable_libs=no
+
 # Parse our command line options once, thoroughly.
 while test "$#" -gt 0
 do
@@ -468,7 +537,11 @@ do
     preserve_args="$preserve_args $arg"
     ;;
 
-  --tag) prevopt="--tag" prev=tag ;;
+  --tag)
+    prevopt="--tag"
+    prev=tag
+    preserve_args="$preserve_args --tag"
+    ;;
   --tag=*)
     set tag "$optarg" ${1+"$@"}
     shift
@@ -500,6 +573,18 @@ if test -n "$prevopt"; then
   exit $EXIT_FAILURE
 fi
 
+case $disable_libs in
+no) 
+  ;;
+shared)
+  build_libtool_libs=no
+  build_old_libs=yes
+  ;;
+static)
+  build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+  ;;
+esac
+
 # If this variable is set in any of the actions, the command in it
 # will be execed at the end.  This prevents here-documents from being
 # left over by shells.
@@ -576,7 +661,7 @@ if test -z "$show_help"; then
 
     for arg
     do
-      case "$arg_mode" in
+      case $arg_mode in
       arg  )
 	# do not "continue".  Instead, add this to base_compile
 	lastarg="$arg"
@@ -627,7 +712,7 @@ if test -z "$show_help"; then
 	    # Many Bourne shells cannot handle close brackets correctly
 	    # in scan sets, so we specify it separately.
 	    case $arg in
-	      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	      arg="\"$arg\""
 	      ;;
 	    esac
@@ -662,7 +747,7 @@ if test -z "$show_help"; then
       # in scan sets (worked around with variable expansion),
       # and furthermore cannot handle '|' '&' '(' ')' in scan sets 
       # at all, so we specify them separately.
-      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	lastarg="\"$lastarg\""
 	;;
       esac
@@ -737,13 +822,12 @@ if test -z "$show_help"; then
 
     qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
     case $qlibobj in
-      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	qlibobj="\"$qlibobj\"" ;;
     esac
-    if test "X$libobj" != "X$qlibobj"; then
-	$echo "$modename: libobj name \`$libobj' may not contain shell special characters."
-	exit $EXIT_FAILURE
-    fi
+    test "X$libobj" != "X$qlibobj" \
+	&& $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' 	&()|`$[]' \
+	&& $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
     objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
     xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
     if test "X$xdir" = "X$obj"; then
@@ -824,7 +908,7 @@ compiler."
     fi
     qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
     case $qsrcfile in
-      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
       qsrcfile="\"$qsrcfile\"" ;;
     esac
 
@@ -857,9 +941,9 @@ EOF
       if test ! -d "${xdir}$objdir"; then
 	$show "$mkdir ${xdir}$objdir"
 	$run $mkdir ${xdir}$objdir
-	status=$?
-	if test "$status" -ne 0 && test ! -d "${xdir}$objdir"; then
-	  exit $status
+	exit_status=$?
+	if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+	  exit $exit_status
 	fi
       fi
 
@@ -1062,6 +1146,7 @@ EOF
     no_install=no
     objs=
     non_pic_objects=
+    notinst_path= # paths that contain not-installed libtool libraries
     precious_files_regex=
     prefer_static_libs=no
     preload=no
@@ -1090,14 +1175,15 @@ EOF
 	  if test -n "$link_static_flag"; then
 	    dlopen_self=$dlopen_self_static
 	  fi
+	  prefer_static_libs=yes
 	else
 	  if test -z "$pic_flag" && test -n "$link_static_flag"; then
 	    dlopen_self=$dlopen_self_static
 	  fi
+	  prefer_static_libs=built
 	fi
 	build_libtool_libs=no
 	build_old_libs=yes
-	prefer_static_libs=yes
 	break
 	;;
       esac
@@ -1111,7 +1197,7 @@ EOF
       arg="$1"
       shift
       case $arg in
-      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
 	;;
       *) qarg=$arg ;;
@@ -1272,6 +1358,11 @@ EOF
 		  if test -z "$pic_object" || test "$pic_object" = none ; then
 		    arg="$non_pic_object"
 		  fi
+		else
+		  # If the PIC object exists, use it instead.
+		  # $xdir was prepended to $pic_object above.
+		  non_pic_object="$pic_object"
+		  non_pic_objects="$non_pic_objects $non_pic_object"
 		fi
 	      else
 		# Only an error if not doing a dry-run.
@@ -1355,8 +1446,8 @@ EOF
 	  prev=
 	  continue
 	  ;;
-        darwin_framework)
-	  compiler_flags="$compiler_flags $arg"
+	darwin_framework|darwin_framework_skip)
+	  test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
 	  compile_command="$compile_command $arg"
 	  finalize_command="$finalize_command $arg"
 	  prev=
@@ -1420,13 +1511,17 @@ EOF
 	continue
 	;;
 
-      -framework)
-        prev=darwin_framework
-        compiler_flags="$compiler_flags $arg"
+      -framework|-arch|-isysroot)
+	case " $CC " in
+	  *" ${arg} ${1} "* | *" ${arg}	${1} "*) 
+		prev=darwin_framework_skip ;;
+	  *) compiler_flags="$compiler_flags $arg"
+	     prev=darwin_framework ;;
+	esac
 	compile_command="$compile_command $arg"
 	finalize_command="$finalize_command $arg"
-        continue
-        ;;
+	continue
+	;;
 
       -inst-prefix-dir)
 	prev=inst_prefix
@@ -1454,7 +1549,8 @@ EOF
 	  absdir=`cd "$dir" && pwd`
 	  if test -z "$absdir"; then
 	    $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
-	    exit $EXIT_FAILURE
+	    absdir="$dir"
+	    notinst_path="$notinst_path $dir"
 	  fi
 	  dir="$absdir"
 	  ;;
@@ -1468,10 +1564,15 @@ EOF
 	esac
 	case $host in
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$dir:"*) ;;
 	  *) dllsearchpath="$dllsearchpath:$dir";;
 	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  esac
 	  ;;
 	esac
 	continue
@@ -1480,11 +1581,11 @@ EOF
       -l*)
 	if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then
 	  case $host in
-	  *-*-cygwin* | *-*-pw32* | *-*-beos*)
+	  *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*)
 	    # These systems don't actually have a C or math library (as such)
 	    continue
 	    ;;
-	  *-*-mingw* | *-*-os2*)
+	  *-*-os2*)
 	    # These systems don't actually have a C library (as such)
 	    test "X$arg" = "X-lc" && continue
 	    ;;
@@ -1496,6 +1597,15 @@ EOF
 	    # Rhapsody C and math libraries are in the System framework
 	    deplibs="$deplibs -framework System"
 	    continue
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
+	    test "X$arg" = "X-lc" && continue
+	    ;;
 	  esac
 	elif test "X$arg" = "X-lc_r"; then
 	 case $host in
@@ -1523,6 +1633,7 @@ EOF
 	compiler_flags="$compiler_flags $arg"
 	compile_command="$compile_command $arg"
 	finalize_command="$finalize_command $arg"
+	deplibs="$deplibs $arg"
 	continue
 	;;
 
@@ -1537,21 +1648,24 @@ EOF
       # +DA*, +DD* enable 64-bit mode on the HP compiler
       # -q* pass through compiler args for the IBM compiler
       # -m* pass through architecture-specific compiler args for GCC
-      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*)
+      # -m*, -t[45]*, -txscale* pass through architecture-specific
+      # compiler args for GCC
+      # -pg pass through profiling flag for GCC
+      # @file GCC response files
+      -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+      -t[45]*|-txscale*|@*)
 
 	# Unknown arguments in both finalize_command and compile_command need
 	# to be aesthetically quoted because they are evaled later.
 	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
 	case $arg in
-	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	  arg="\"$arg\""
 	  ;;
 	esac
         compile_command="$compile_command $arg"
         finalize_command="$finalize_command $arg"
-        if test "$with_gcc" = "yes" ; then
-          compiler_flags="$compiler_flags $arg"
-        fi
+        compiler_flags="$compiler_flags $arg"
         continue
         ;;
 
@@ -1659,7 +1773,7 @@ EOF
 	for flag in $args; do
 	  IFS="$save_ifs"
 	  case $flag in
-	    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	    flag="\"$flag\""
 	    ;;
 	  esac
@@ -1677,7 +1791,7 @@ EOF
 	for flag in $args; do
 	  IFS="$save_ifs"
 	  case $flag in
-	    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	    flag="\"$flag\""
 	    ;;
 	  esac
@@ -1710,7 +1824,7 @@ EOF
 	# to be aesthetically quoted because they are evaled later.
 	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
 	case $arg in
-	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	  arg="\"$arg\""
 	  ;;
 	esac
@@ -1789,6 +1903,11 @@ EOF
 	    if test -z "$pic_object" || test "$pic_object" = none ; then
 	      arg="$non_pic_object"
 	    fi
+	  else
+	    # If the PIC object exists, use it instead.
+	    # $xdir was prepended to $pic_object above.
+	    non_pic_object="$pic_object"
+	    non_pic_objects="$non_pic_objects $non_pic_object"
 	  fi
 	else
 	  # Only an error if not doing a dry-run.
@@ -1844,7 +1963,7 @@ EOF
 	# to be aesthetically quoted because they are evaled later.
 	arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
 	case $arg in
-	*$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+	*[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	  arg="\"$arg\""
 	  ;;
 	esac
@@ -1894,9 +2013,9 @@ EOF
     if test ! -d "$output_objdir"; then
       $show "$mkdir $output_objdir"
       $run $mkdir $output_objdir
-      status=$?
-      if test "$status" -ne 0 && test ! -d "$output_objdir"; then
-	exit $status
+      exit_status=$?
+      if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+	exit $exit_status
       fi
     fi
 
@@ -1959,7 +2078,6 @@ EOF
     newlib_search_path=
     need_relink=no # whether we're linking any uninstalled libtool libraries
     notinst_deplibs= # not-installed libtool libraries
-    notinst_path= # paths that contain not-installed libtool libraries
     case $linkmode in
     lib)
 	passes="conv link"
@@ -2013,6 +2131,29 @@ EOF
 	  else
 	    compiler_flags="$compiler_flags $deplib"
 	  fi
+
+	  case $linkmode in
+	  lib)
+	    deplibs="$deplib $deplibs"
+	    test "$pass" = conv && continue
+	    newdependency_libs="$deplib $newdependency_libs"
+	    ;;
+	  prog)
+	    if test "$pass" = conv; then
+	      deplibs="$deplib $deplibs"
+	      continue
+	    fi
+	    if test "$pass" = scan; then
+	      deplibs="$deplib $deplibs"
+	    else
+	      compile_deplibs="$deplib $compile_deplibs"
+	      finalize_deplibs="$deplib $finalize_deplibs"
+	    fi
+	    ;;
+	  *)
+	    ;;
+	  esac # linkmode
+
 	  continue
 	  ;;
 	-l*)
@@ -2195,7 +2336,7 @@ EOF
 	esac # case $deplib
 	if test "$found" = yes || test -f "$lib"; then :
 	else
-	  $echo "$modename: cannot find the library \`$lib'" 1>&2
+	  $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
 	  exit $EXIT_FAILURE
 	fi
 
@@ -2409,7 +2550,7 @@ EOF
 	      case "$temp_rpath " in
 	      *" $dir "*) ;;
 	      *" $absdir "*) ;;
-	      *) temp_rpath="$temp_rpath $dir" ;;
+	      *) temp_rpath="$temp_rpath $absdir" ;;
 	      esac
 	    fi
 
@@ -2446,8 +2587,12 @@ EOF
 	fi
 
 	link_static=no # Whether the deplib will be linked statically
+	use_static_libs=$prefer_static_libs
+	if test "$use_static_libs" = built && test "$installed" = yes ; then
+	  use_static_libs=no
+	fi
 	if test -n "$library_names" &&
-	   { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+	   { test "$use_static_libs" = no || test -z "$old_library"; }; then
 	  if test "$installed" = no; then
 	    notinst_deplibs="$notinst_deplibs $lib"
 	    need_relink=yes
@@ -2560,11 +2705,15 @@ EOF
 	      if test "$hardcode_direct" = no; then
 		add="$dir/$linklib"
 		case $host in
-		  *-*-sco3.2v5* ) add_dir="-L$dir" ;;
+		  *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;;
+		  *-*-sysv4*uw2*) add_dir="-L$dir" ;;
+		  *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \
+		    *-*-unixware7*) add_dir="-L$dir" ;;
 		  *-*-darwin* )
 		    # if the lib is a module then we can not link against
 		    # it, someone is ignoring the new warnings I added
-		    if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then
+		    if /usr/bin/file -L $add 2> /dev/null |
+                      $EGREP ": [^:]* bundle" >/dev/null ; then
 		      $echo "** Warning, lib $linklib is a module, not a shared library"
 		      if test -z "$old_library" ; then
 		        $echo
@@ -2595,7 +2744,7 @@ EOF
 		add_dir="-L$dir"
 		# Try looking first in the location we're being installed to.
 		if test -n "$inst_prefix_dir"; then
-		  case "$libdir" in
+		  case $libdir in
 		    [\\/]*)
 		      add_dir="$add_dir -L$inst_prefix_dir$libdir"
 		      ;;
@@ -2668,7 +2817,7 @@ EOF
 	      add_dir="-L$libdir"
 	      # Try looking first in the location we're being installed to.
 	      if test -n "$inst_prefix_dir"; then
-		case "$libdir" in
+		case $libdir in
 		  [\\/]*)
 		    add_dir="$add_dir -L$inst_prefix_dir$libdir"
 		    ;;
@@ -2729,8 +2878,6 @@ EOF
 	      fi
 	    fi
 	  else
-	    convenience="$convenience $dir/$old_library"
-	    old_convenience="$old_convenience $dir/$old_library"
 	    deplibs="$dir/$old_library $deplibs"
 	    link_static=yes
 	  fi
@@ -3317,9 +3464,9 @@ EOF
 
       # Eliminate all temporary directories.
       for path in $notinst_path; do
-	lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'`
-	deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'`
-	dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'`
+	lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+	deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+	dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
       done
 
       if test -n "$xrpath"; then
@@ -3372,7 +3519,12 @@ EOF
 	    ;;
 	  *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*)
 	    # Do not include libc due to us having libc/libc_r.
-	    test "X$arg" = "X-lc" && continue
+	    ;;
+	  *-*-sco3.2v5* | *-*-sco5v6*)
+	    # Causes problems with __ctype
+	    ;;
+	  *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*)
+	    # Compiler inserts libc in the correct place for threads to work
 	    ;;
  	  *)
 	    # Add libc to deplibs on all other systems if necessary.
@@ -3416,11 +3568,11 @@ EOF
 	  int main() { return 0; }
 EOF
 	  $rm conftest
-	  $LTCC -o conftest conftest.c $deplibs
+	  $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
 	  if test "$?" -eq 0 ; then
 	    ldd_output=`ldd conftest`
 	    for i in $deplibs; do
-	      name="`expr $i : '-l\(.*\)'`"
+	      name=`expr $i : '-l\(.*\)'`
 	      # If $name is empty we are operating on a -L argument.
               if test "$name" != "" && test "$name" -ne "0"; then
 		if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
@@ -3457,11 +3609,11 @@ EOF
 	    # Error occurred in the first compile.  Let's try to salvage
 	    # the situation: Compile a separate program for each library.
 	    for i in $deplibs; do
-	      name="`expr $i : '-l\(.*\)'`"
+	      name=`expr $i : '-l\(.*\)'`
 	      # If $name is empty we are operating on a -L argument.
               if test "$name" != "" && test "$name" != "0"; then
 		$rm conftest
-		$LTCC -o conftest conftest.c $i
+		$LTCC $LTCFLAGS -o conftest conftest.c $i
 		# Did it work?
 		if test "$?" -eq 0 ; then
 		  ldd_output=`ldd conftest`
@@ -3509,7 +3661,7 @@ EOF
 	  set dummy $deplibs_check_method
 	  file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
 	  for a_deplib in $deplibs; do
-	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    name=`expr $a_deplib : '-l\(.*\)'`
 	    # If $name is empty we are operating on a -L argument.
             if test "$name" != "" && test  "$name" != "0"; then
 	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
@@ -3578,7 +3730,7 @@ EOF
 	  set dummy $deplibs_check_method
 	  match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
 	  for a_deplib in $deplibs; do
-	    name="`expr $a_deplib : '-l\(.*\)'`"
+	    name=`expr $a_deplib : '-l\(.*\)'`
 	    # If $name is empty we are operating on a -L argument.
 	    if test -n "$name" && test "$name" != "0"; then
 	      if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
@@ -3708,6 +3860,35 @@ EOF
 	deplibs=$newdeplibs
       fi
 
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $deplibs " in
+	  *" -L$path/$objdir "*)
+	    new_libs="$new_libs -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) new_libs="$new_libs $deplib" ;;
+	  esac
+	  ;;
+	*) new_libs="$new_libs $deplib" ;;
+	esac
+      done
+      deplibs="$new_libs"
+
+
       # All the library-specific variables (install_libdir is set above).
       library_names=
       old_library=
@@ -3791,6 +3972,7 @@ EOF
 	fi
 
 	lib="$output_objdir/$realname"
+	linknames=
 	for link
 	do
 	  linknames="$linknames $link"
@@ -3819,6 +4001,9 @@ EOF
 	        # The command line is too long to execute in one step.
 	        $show "using reloadable object file for export list..."
 	        skipped_export=:
+		# Break out early, otherwise skipped_export may be
+		# set to false by a later but shorter cmd.
+		break
 	      fi
 	    done
 	    IFS="$save_ifs"
@@ -3888,7 +4073,8 @@ EOF
 	  fi
 	fi
 
-	if test "X$skipped_export" != "X:" && len=`expr "X$test_cmds" : ".*"` &&
+	if test "X$skipped_export" != "X:" &&
+	   len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
 	   test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
 	  :
 	else
@@ -3923,7 +4109,7 @@ EOF
 	  do
 	    eval test_cmds=\"$reload_cmds $objlist $last_robj\"
 	    if test "X$objlist" = X ||
-	       { len=`expr "X$test_cmds" : ".*"` &&
+	       { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
 		 test "$len" -le "$max_cmd_len"; }; then
 	      objlist="$objlist $obj"
 	    else
@@ -4013,13 +4199,30 @@ EOF
 	  IFS="$save_ifs"
 	  eval cmd=\"$cmd\"
 	  $show "$cmd"
-	  $run eval "$cmd" || exit $?
+	  $run eval "$cmd" || {
+	    lt_exit=$?
+
+	    # Restore the uninstalled library and exit
+	    if test "$mode" = relink; then
+	      $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	    fi
+
+	    exit $lt_exit
+	  }
 	done
 	IFS="$save_ifs"
 
 	# Restore the uninstalled library and exit
 	if test "$mode" = relink; then
 	  $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $?
+
+	  if test -n "$convenience"; then
+	    if test -z "$whole_archive_flag_spec"; then
+	      $show "${rm}r $gentop"
+	      $run ${rm}r "$gentop"
+	    fi
+	  fi
+
 	  exit $EXIT_SUCCESS
 	fi
 
@@ -4201,6 +4404,35 @@ EOF
         ;;
       esac
 
+
+      # move library search paths that coincide with paths to not yet
+      # installed libraries to the beginning of the library search list
+      new_libs=
+      for path in $notinst_path; do
+	case " $new_libs " in
+	*" -L$path/$objdir "*) ;;
+	*)
+	  case " $compile_deplibs " in
+	  *" -L$path/$objdir "*)
+	    new_libs="$new_libs -L$path/$objdir" ;;
+	  esac
+	  ;;
+	esac
+      done
+      for deplib in $compile_deplibs; do
+	case $deplib in
+	-L*)
+	  case " $new_libs " in
+	  *" $deplib "*) ;;
+	  *) new_libs="$new_libs $deplib" ;;
+	  esac
+	  ;;
+	*) new_libs="$new_libs $deplib" ;;
+	esac
+      done
+      compile_deplibs="$new_libs"
+
+
       compile_command="$compile_command $compile_deplibs"
       finalize_command="$finalize_command $finalize_deplibs"
 
@@ -4245,10 +4477,15 @@ EOF
 	fi
 	case $host in
 	*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+	  testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
 	  case :$dllsearchpath: in
 	  *":$libdir:"*) ;;
 	  *) dllsearchpath="$dllsearchpath:$libdir";;
 	  esac
+	  case :$dllsearchpath: in
+	  *":$testbindir:"*) ;;
+	  *) dllsearchpath="$dllsearchpath:$testbindir";;
+	  esac
 	  ;;
 	esac
       done
@@ -4364,11 +4601,23 @@ extern \"C\" {
 	    if test -z "$export_symbols"; then
 	      export_symbols="$output_objdir/$outputname.exp"
 	      $run $rm $export_symbols
-	      $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+	      $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+              case $host in
+              *cygwin* | *mingw* )
+	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+		$run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+                ;;
+              esac
 	    else
-	      $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+	      $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
 	      $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
 	      $run eval 'mv "$nlist"T "$nlist"'
+              case $host in
+              *cygwin* | *mingw* )
+	        $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+		$run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+                ;;
+              esac
 	    fi
 	  fi
 
@@ -4485,16 +4734,32 @@ static const void *lt_preloaded_setup() {
 	  esac
 
 	  # Now compile the dynamic symbol file.
-	  $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
-	  $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+	  $show "(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+	  $run eval '(cd $output_objdir && $LTCC  $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
 
 	  # Clean up the generated files.
 	  $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
 	  $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
 
 	  # Transform the symbol file into the correct name.
-	  compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
-	  finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+          case $host in
+          *cygwin* | *mingw* )
+            if test -f "$output_objdir/${outputname}.def" ; then
+              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+            else
+              compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+              finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+             fi
+            ;;
+          * )
+            compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+            finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+            ;;
+          esac
+	  ;;
+	*-*-freebsd*)
+	  # FreeBSD doesn't need this...
 	  ;;
 	*)
 	  $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
@@ -4519,7 +4784,7 @@ static const void *lt_preloaded_setup() {
 	# We have no uninstalled library dependencies, so finalize right now.
 	$show "$link_command"
 	$run eval "$link_command"
-	status=$?
+	exit_status=$?
 
 	# Delete the generated files.
 	if test -n "$dlsyms"; then
@@ -4527,7 +4792,7 @@ static const void *lt_preloaded_setup() {
 	  $run $rm "$output_objdir/${outputname}S.${objext}"
 	fi
 
-	exit $status
+	exit $exit_status
       fi
 
       if test -n "$shlibpath_var"; then
@@ -4667,10 +4932,12 @@ static const void *lt_preloaded_setup() {
 	esac
 	case $host in
 	  *cygwin* | *mingw* )
-	    cwrappersource=`$echo ${objdir}/lt-${outputname}.c`
-	    cwrapper=`$echo ${output}.exe`
-	    $rm $cwrappersource $cwrapper
-	    trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
+            output_name=`basename $output`
+            output_path=`dirname $output`
+            cwrappersource="$output_path/$objdir/lt-$output_name.c"
+            cwrapper="$output_path/$output_name.exe"
+            $rm $cwrappersource $cwrapper
+            trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15
 
 	    cat > $cwrappersource <<EOF
 
@@ -4695,6 +4962,9 @@ EOF
 #include <malloc.h>
 #include <stdarg.h>
 #include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
 
 #if defined(PATH_MAX)
 # define LT_PATHMAX PATH_MAX
@@ -4705,15 +4975,19 @@ EOF
 #endif
 
 #ifndef DIR_SEPARATOR
-#define DIR_SEPARATOR '/'
+# define DIR_SEPARATOR '/'
+# define PATH_SEPARATOR ':'
 #endif
 
 #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \
   defined (__OS2__)
-#define HAVE_DOS_BASED_FILE_SYSTEM
-#ifndef DIR_SEPARATOR_2
-#define DIR_SEPARATOR_2 '\\'
-#endif
+# define HAVE_DOS_BASED_FILE_SYSTEM
+# ifndef DIR_SEPARATOR_2
+#  define DIR_SEPARATOR_2 '\\'
+# endif
+# ifndef PATH_SEPARATOR_2
+#  define PATH_SEPARATOR_2 ';'
+# endif
 #endif
 
 #ifndef DIR_SEPARATOR_2
@@ -4723,17 +4997,32 @@ EOF
         (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2))
 #endif /* DIR_SEPARATOR_2 */
 
+#ifndef PATH_SEPARATOR_2
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR)
+#else /* PATH_SEPARATOR_2 */
+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2)
+#endif /* PATH_SEPARATOR_2 */
+
 #define XMALLOC(type, num)      ((type *) xmalloc ((num) * sizeof(type)))
 #define XFREE(stale) do { \
   if (stale) { free ((void *) stale); stale = 0; } \
 } while (0)
 
+/* -DDEBUG is fairly common in CFLAGS.  */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
 const char *program_name = NULL;
 
 void * xmalloc (size_t num);
 char * xstrdup (const char *string);
-char * basename (const char *name);
-char * fnqualify(const char *path);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int    check_executable(const char *path);
 char * strendzap(char *str, const char *pat);
 void lt_fatal (const char *message, ...);
 
@@ -4743,29 +5032,51 @@ main (int argc, char *argv[])
   char **newargz;
   int i;
 
-  program_name = (char *) xstrdup ((char *) basename (argv[0]));
+  program_name = (char *) xstrdup (base_name (argv[0]));
+  DEBUG("(main) argv[0]      : %s\n",argv[0]);
+  DEBUG("(main) program_name : %s\n",program_name);
   newargz = XMALLOC(char *, argc+2);
 EOF
 
-	    cat >> $cwrappersource <<EOF
-  newargz[0] = "$SHELL";
+            cat >> $cwrappersource <<EOF
+  newargz[0] = (char *) xstrdup("$SHELL");
 EOF
 
-	    cat >> $cwrappersource <<"EOF"
-  newargz[1] = fnqualify(argv[0]);
+            cat >> $cwrappersource <<"EOF"
+  newargz[1] = find_executable(argv[0]);
+  if (newargz[1] == NULL)
+    lt_fatal("Couldn't find %s", argv[0]);
+  DEBUG("(main) found exe at : %s\n",newargz[1]);
   /* we know the script has the same name, without the .exe */
   /* so make sure newargz[1] doesn't end in .exe */
   strendzap(newargz[1],".exe");
   for (i = 1; i < argc; i++)
     newargz[i+1] = xstrdup(argv[i]);
   newargz[argc+1] = NULL;
+
+  for (i=0; i<argc+1; i++)
+  {
+    DEBUG("(main) newargz[%d]   : %s\n",i,newargz[i]);
+    ;
+  }
+
 EOF
 
-	    cat >> $cwrappersource <<EOF
+            case $host_os in
+              mingw*)
+                cat >> $cwrappersource <<EOF
+  execv("$SHELL",(char const **)newargz);
+EOF
+              ;;
+              *)
+                cat >> $cwrappersource <<EOF
   execv("$SHELL",newargz);
 EOF
+              ;;
+            esac
 
-	    cat >> $cwrappersource <<"EOF"
+            cat >> $cwrappersource <<"EOF"
+  return 127;
 }
 
 void *
@@ -4785,48 +5096,148 @@ xstrdup (const char *string)
 ;
 }
 
-char *
-basename (const char *name)
+const char *
+base_name (const char *name)
 {
   const char *base;
 
 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
   /* Skip over the disk name in MSDOS pathnames. */
-  if (isalpha (name[0]) && name[1] == ':')
+  if (isalpha ((unsigned char)name[0]) && name[1] == ':')
     name += 2;
 #endif
 
   for (base = name; *name; name++)
     if (IS_DIR_SEPARATOR (*name))
       base = name + 1;
-  return (char *) base;
+  return base;
+}
+
+int
+check_executable(const char * path)
+{
+  struct stat st;
+
+  DEBUG("(check_executable)  : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+  if ((!path) || (!*path))
+    return 0;
+
+  if ((stat (path, &st) >= 0) &&
+      (
+        /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+       ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+       ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+       ((st.st_mode & S_IXUSR) == S_IXUSR))
+      )
+    return 1;
+  else
+    return 0;
 }
 
+/* Searches for the full path of the wrapper.  Returns
+   newly allocated full path name if found, NULL otherwise */
 char *
-fnqualify(const char *path)
+find_executable (const char* wrapper)
 {
-  size_t size;
-  char *p;
+  int has_slash = 0;
+  const char* p;
+  const char* p_next;
+  /* static buffer for getcwd */
   char tmp[LT_PATHMAX + 1];
+  int tmp_len;
+  char* concat_name;
+
+  DEBUG("(find_executable)  : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
 
-  assert(path != NULL);
+  if ((wrapper == NULL) || (*wrapper == '\0'))
+    return NULL;
 
-  /* Is it qualified already? */
+  /* Absolute path? */
 #if defined (HAVE_DOS_BASED_FILE_SYSTEM)
-  if (isalpha (path[0]) && path[1] == ':')
-    return xstrdup (path);
+  if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':')
+  {
+    concat_name = xstrdup (wrapper);
+    if (check_executable(concat_name))
+      return concat_name;
+    XFREE(concat_name);
+  }
+  else
+  {
+#endif
+    if (IS_DIR_SEPARATOR (wrapper[0]))
+    {
+      concat_name = xstrdup (wrapper);
+      if (check_executable(concat_name))
+        return concat_name;
+      XFREE(concat_name);
+    }
+#if defined (HAVE_DOS_BASED_FILE_SYSTEM)
+  }
 #endif
-  if (IS_DIR_SEPARATOR (path[0]))
-    return xstrdup (path);
 
-  /* prepend the current directory */
-  /* doesn't handle '~' */
+  for (p = wrapper; *p; p++)
+    if (*p == '/')
+    {
+      has_slash = 1;
+      break;
+    }
+  if (!has_slash)
+  {
+    /* no slashes; search PATH */
+    const char* path = getenv ("PATH");
+    if (path != NULL)
+    {
+      for (p = path; *p; p = p_next)
+      {
+        const char* q;
+        size_t p_len;
+        for (q = p; *q; q++)
+          if (IS_PATH_SEPARATOR(*q))
+            break;
+        p_len = q - p;
+        p_next = (*q == '\0' ? q : q + 1);
+        if (p_len == 0)
+        {
+          /* empty path: current directory */
+          if (getcwd (tmp, LT_PATHMAX) == NULL)
+            lt_fatal ("getcwd failed");
+          tmp_len = strlen(tmp);
+          concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+          memcpy (concat_name, tmp, tmp_len);
+          concat_name[tmp_len] = '/';
+          strcpy (concat_name + tmp_len + 1, wrapper);
+        }
+        else
+        {
+          concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1);
+          memcpy (concat_name, p, p_len);
+          concat_name[p_len] = '/';
+          strcpy (concat_name + p_len + 1, wrapper);
+        }
+        if (check_executable(concat_name))
+          return concat_name;
+        XFREE(concat_name);
+      }
+    }
+    /* not found in PATH; assume curdir */
+  }
+  /* Relative path | not found in path: prepend cwd */
   if (getcwd (tmp, LT_PATHMAX) == NULL)
     lt_fatal ("getcwd failed");
-  size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */
-  p = XMALLOC(char, size);
-  sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path);
-  return p;
+  tmp_len = strlen(tmp);
+  concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1);
+  memcpy (concat_name, tmp, tmp_len);
+  concat_name[tmp_len] = '/';
+  strcpy (concat_name + tmp_len + 1, wrapper);
+
+  if (check_executable(concat_name))
+    return concat_name;
+  XFREE(concat_name);
+  return NULL;
 }
 
 char *
@@ -4870,16 +5281,16 @@ lt_fatal (const char *message, ...)
   va_end (ap);
 }
 EOF
-	  # we should really use a build-platform specific compiler
-	  # here, but OTOH, the wrappers (shell script and this C one)
-	  # are only useful if you want to execute the "real" binary.
-	  # Since the "real" binary is built for $host, then this
-	  # wrapper might as well be built for $host, too.
-	  $run $LTCC -s -o $cwrapper $cwrappersource
-	  ;;
-	esac
-	$rm $output
-	trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+          # we should really use a build-platform specific compiler
+          # here, but OTOH, the wrappers (shell script and this C one)
+          # are only useful if you want to execute the "real" binary.
+          # Since the "real" binary is built for $host, then this
+          # wrapper might as well be built for $host, too.
+          $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+          ;;
+        esac
+        $rm $output
+        trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
 
 	$echo > $output "\
 #! $SHELL
@@ -5029,13 +5440,13 @@ else
 	# Backslashes separate directories on plain windows
 	*-*-mingw | *-*-os2*)
 	  $echo >> $output "\
-      exec \$progdir\\\\\$program \${1+\"\$@\"}
+      exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
 "
 	  ;;
 
 	*)
 	  $echo >> $output "\
-      exec \$progdir/\$program \${1+\"\$@\"}
+      exec \"\$progdir/\$program\" \${1+\"\$@\"}
 "
 	  ;;
 	esac
@@ -5045,7 +5456,7 @@ else
     fi
   else
     # The program doesn't exist.
-    \$echo \"\$0: error: \$progdir/\$program does not exist\" 1>&2
+    \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2
     \$echo \"This script is just a wrapper for \$program.\" 1>&2
     $echo \"See the $PACKAGE documentation for more information.\" 1>&2
     exit $EXIT_FAILURE
@@ -5109,9 +5520,9 @@ fi\
 	    $run ${rm}r "$gentop"
 	    $show "$mkdir $gentop"
 	    $run $mkdir "$gentop"
-	    status=$?
-	    if test "$status" -ne 0 && test ! -d "$gentop"; then
-	      exit $status
+	    exit_status=$?
+	    if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+	      exit $exit_status
 	    fi
 	  fi
 
@@ -5168,7 +5579,7 @@ fi\
 	    oldobjs="$objlist $obj"
 	    objlist="$objlist $obj"
 	    eval test_cmds=\"$old_archive_cmds\"
-	    if len=`expr "X$test_cmds" : ".*"` &&
+	    if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
 	       test "$len" -le "$max_cmd_len"; then
 	      :
 	    else
@@ -5365,11 +5776,11 @@ relink_command=\"$relink_command\""
     # install_prog (especially on Windows NT).
     if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh ||
        # Allow the use of GNU shtool's install command.
-       $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then
+       $echo "X$nonopt" | grep shtool > /dev/null; then
       # Aesthetically quote it.
       arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
       case $arg in
-      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	arg="\"$arg\""
 	;;
       esac
@@ -5378,14 +5789,14 @@ relink_command=\"$relink_command\""
       shift
     else
       install_prog=
-      arg="$nonopt"
+      arg=$nonopt
     fi
 
     # The real first argument should be the name of the installation program.
     # Aesthetically quote it.
     arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
     case $arg in
-    *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+    *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
       arg="\"$arg\""
       ;;
     esac
@@ -5403,28 +5814,31 @@ relink_command=\"$relink_command\""
     do
       if test -n "$dest"; then
 	files="$files $dest"
-	dest="$arg"
+	dest=$arg
 	continue
       fi
 
       case $arg in
       -d) isdir=yes ;;
-      -f) prev="-f" ;;
-      -g) prev="-g" ;;
-      -m) prev="-m" ;;
-      -o) prev="-o" ;;
+      -f) 
+      	case " $install_prog " in
+	*[\\\ /]cp\ *) ;;
+	*) prev=$arg ;;
+	esac
+	;;
+      -g | -m | -o) prev=$arg ;;
       -s)
 	stripme=" -s"
 	continue
 	;;
-      -*) ;;
-
+      -*)
+	;;
       *)
 	# If the previous option needed an argument, then skip it.
 	if test -n "$prev"; then
 	  prev=
 	else
-	  dest="$arg"
+	  dest=$arg
 	  continue
 	fi
 	;;
@@ -5433,7 +5847,7 @@ relink_command=\"$relink_command\""
       # Aesthetically quote the argument.
       arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
       case $arg in
-      *$quote_scanset* | *]* | *\|* | *\&* | *\(* | *\)* | "")
+      *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \	]*|*]*|"")
 	arg="\"$arg\""
 	;;
       esac
@@ -5602,11 +6016,14 @@ relink_command=\"$relink_command\""
 
 	  if test "$#" -gt 0; then
 	    # Delete the old symlinks, and create new ones.
+	    # Try `ln -sf' first, because the `ln' binary might depend on
+	    # the symlink we replace!  Solaris /bin/ln does not understand -f,
+	    # so we also need to try rm && ln -s.
 	    for linkname
 	    do
 	      if test "$linkname" != "$realname"; then
-		$show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
-		$run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)"
+                $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+                $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
 	      fi
 	    done
 	  fi
@@ -5619,7 +6036,16 @@ relink_command=\"$relink_command\""
 	    IFS="$save_ifs"
 	    eval cmd=\"$cmd\"
 	    $show "$cmd"
-	    $run eval "$cmd" || exit $?
+	    $run eval "$cmd" || {
+	      lt_exit=$?
+
+	      # Restore the uninstalled library and exit
+	      if test "$mode" = relink; then
+		$run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+	      fi
+
+	      exit $lt_exit
+	    }
 	  done
 	  IFS="$save_ifs"
 	fi
@@ -5713,17 +6139,15 @@ relink_command=\"$relink_command\""
 	  notinst_deplibs=
 	  relink_command=
 
-	  # To insure that "foo" is sourced, and not "foo.exe",
-	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
-	  # which disallows the automatic-append-.exe behavior.
-	  case $build in
-	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
-	  *) wrapperdot=${wrapper} ;;
-	  esac
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
+	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
+	  # `FILE.' does not work on cygwin managed mounts.
+	  #
 	  # If there is no directory component, then add one.
-	  case $file in
-	  */* | *\\*) . ${wrapperdot} ;;
-	  *) . ./${wrapperdot} ;;
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
 	  esac
 
 	  # Check the variables that should have been set.
@@ -5751,34 +6175,21 @@ relink_command=\"$relink_command\""
 	  done
 
 	  relink_command=
-	  # To insure that "foo" is sourced, and not "foo.exe",
-	  # finese the cygwin/MSYS system by explicitly sourcing "foo."
-	  # which disallows the automatic-append-.exe behavior.
-	  case $build in
-	  *cygwin* | *mingw*) wrapperdot=${wrapper}. ;;
-	  *) wrapperdot=${wrapper} ;;
-	  esac
+	  # Note that it is not necessary on cygwin/mingw to append a dot to
+	  # foo even if both foo and FILE.exe exist: automatic-append-.exe
+	  # behavior happens only for exec(3), not for open(2)!  Also, sourcing
+	  # `FILE.' does not work on cygwin managed mounts.
+	  #
 	  # If there is no directory component, then add one.
-	  case $file in
-	  */* | *\\*) . ${wrapperdot} ;;
-	  *) . ./${wrapperdot} ;;
+	  case $wrapper in
+	  */* | *\\*) . ${wrapper} ;;
+	  *) . ./${wrapper} ;;
 	  esac
 
 	  outputname=
 	  if test "$fast_install" = no && test -n "$relink_command"; then
 	    if test "$finalize" = yes && test -z "$run"; then
-	      tmpdir="/tmp"
-	      test -n "$TMPDIR" && tmpdir="$TMPDIR"
-	      tmpdir="$tmpdir/libtool-$$"
-	      save_umask=`umask`
-	      umask 0077
-	      if $mkdir "$tmpdir"; then
-	        umask $save_umask
-	      else
-	        umask $save_umask
-		$echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2
-		continue
-	      fi
+	      tmpdir=`func_mktempdir`
 	      file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
 	      outputname="$tmpdir/$file"
 	      # Replace the output file specification.
@@ -5802,7 +6213,7 @@ relink_command=\"$relink_command\""
 	fi
 
 	# remove .exe since cygwin /usr/bin/install will append another
-	# one anyways
+	# one anyway 
 	case $install_prog,$host in
 	*/usr/bin/install*,*cygwin*)
 	  case $file:$destfile in
@@ -5902,7 +6313,7 @@ relink_command=\"$relink_command\""
     # Exit here if they wanted silent mode.
     test "$show" = : && exit $EXIT_SUCCESS
 
-    $echo "----------------------------------------------------------------------"
+    $echo "X----------------------------------------------------------------------" | $Xsed
     $echo "Libraries have been installed in:"
     for libdir in $libdirs; do
       $echo "   $libdir"
@@ -5935,7 +6346,7 @@ relink_command=\"$relink_command\""
     $echo
     $echo "See any operating system documentation about shared libraries for"
     $echo "more information, such as the ld(1) and ld.so(8) manual pages."
-    $echo "----------------------------------------------------------------------"
+    $echo "X----------------------------------------------------------------------" | $Xsed
     exit $EXIT_SUCCESS
     ;;
 
@@ -6152,9 +6563,17 @@ relink_command=\"$relink_command\""
 	    rmfiles="$rmfiles $objdir/$n"
 	  done
 	  test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
-	  test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
 
-	  if test "$mode" = uninstall; then
+	  case "$mode" in
+	  clean)
+	    case "  $library_names " in
+	    # "  " in the beginning catches empty $dlname
+	    *" $dlname "*) ;;
+	    *) rmfiles="$rmfiles $objdir/$dlname" ;;
+	    esac
+	     test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+	    ;;
+	  uninstall)
 	    if test -n "$library_names"; then
 	      # Do each command in the postuninstall commands.
 	      cmds=$postuninstall_cmds
@@ -6187,7 +6606,8 @@ relink_command=\"$relink_command\""
 	      IFS="$save_ifs"
 	    fi
 	    # FIXME: should reinstall the best remaining shared library.
-	  fi
+	    ;;
+	  esac
 	fi
 	;;
 
@@ -6486,12 +6906,11 @@ exit $?
 # configuration.  But we'll never go from static-only to shared-only.
 
 # ### BEGIN LIBTOOL TAG CONFIG: disable-shared
-build_libtool_libs=no
-build_old_libs=yes
+disable_libs=shared
 # ### END LIBTOOL TAG CONFIG: disable-shared
 
 # ### BEGIN LIBTOOL TAG CONFIG: disable-static
-build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac`
+disable_libs=static
 # ### END LIBTOOL TAG CONFIG: disable-static
 
 # Local Variables:
diff --git a/m4/Makefile.am b/m4/Makefile.am
@@ -1,6 +1,7 @@
 EXTRA_DIST = \
 	evolution-plugin.m4	\
 	gnome.m4		\
+	idl.m4			\
 	openssl.m4		\
 	reentrant-resolver.m4	\
 	sasl2.m4
diff --git a/m4/Makefile.in b/m4/Makefile.in
@@ -40,8 +40,8 @@ subdir = m4
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
-	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
 	$(top_srcdir)/m4/reentrant-resolver.m4 \
 	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
 	$(top_srcdir)/configure.ac
@@ -62,7 +62,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BONOBO_ACTIVATION_IDL = @BONOBO_ACTIVATION_IDL@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -94,7 +94,6 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GMIME_CFLAGS = @GMIME_CFLAGS@
 GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
@@ -126,6 +125,7 @@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
 INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
 INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
 INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
 INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
 INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
 INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
@@ -136,7 +136,6 @@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
 INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
 INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
-LIBBONOBO_IDL = @LIBBONOBO_IDL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
@@ -231,6 +230,7 @@ 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@
@@ -261,6 +261,7 @@ target_vendor = @target_vendor@
 EXTRA_DIST = \
 	evolution-plugin.m4	\
 	gnome.m4		\
+	idl.m4			\
 	openssl.m4		\
 	reentrant-resolver.m4	\
 	sasl2.m4
diff --git a/m4/evolution-plugin.m4 b/m4/evolution-plugin.m4
@@ -6,9 +6,39 @@
 # Jean-Yves Lefort gives unlimited permission to copy, distribute and
 # modify this file.
 
-dnl AM_PATH_EVOLUTION_PLUGIN([MINIMUM-VERSION], [SOURCE-FILES], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl AM_PATH_EVOLUTION_PLUGIN([BRANCH], [MINIMUM-VERSION], [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
 dnl
 AC_DEFUN([AM_PATH_EVOLUTION_PLUGIN],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+
+evolution_branch=ifelse([$1],, [2.4], [$1])
+evolution_plugin_min_version=ifelse([$2],,, [>= $2])
+
+PKG_CHECK_MODULES(EVOLUTION_PLUGIN, [evolution-plugin-$evolution_branch $evolution_plugin_min_version], [found=yes], [found=no])
+
+if test $found = yes; then
+	AC_MSG_CHECKING([for the Evolution plugin directory])
+	evolution_plugindir=`$PKG_CONFIG --variable=plugindir evolution-plugin-$evolution_branch 2>/dev/null`
+	if test -n "$evolution_plugindir"; then
+		AC_MSG_RESULT([$evolution_plugindir])
+	else
+		AC_MSG_RESULT([not found])
+		found=no
+	fi
+fi
+
+if test $found = yes; then
+	ifelse([$3],, :, [$3])
+else
+	evolution_plugindir=""
+	ifelse([$4],, :, [$4])
+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=""])
@@ -20,10 +50,9 @@ 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([$2],, evolution-plugin.pc.in, [$2])],
+		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])
@@ -33,27 +62,10 @@ fi
 fi
 
 if test $found = yes; then
-	evolution_plugin_min_version=ifelse([$1],,, [>= $1])
-	PKG_CHECK_MODULES(EVOLUTION_PLUGIN, [evolution-plugin-2.2 $evolution_plugin_min_version],, [found=no])
-fi
-
-if test $found = yes; then
-	AC_MSG_CHECKING([for the Evolution plugin directory])
-	evolution_plugindir=`$PKG_CONFIG --variable=plugindir evolution-plugin-2.2 2>/dev/null`
-	if test -n "$evolution_plugindir"; then
-		AC_MSG_RESULT([$evolution_plugindir])
-	else
-		AC_MSG_RESULT([not found])
-		found=no
-	fi
-fi
-
-if test $found = yes; then
-	EVOLUTION_PLUGIN_CFLAGS="$EVOLUTION_PLUGIN_CFLAGS -I$evolution_source_dir"
-	ifelse([$3],, :, [$3])
+	ifelse([$2],, :, [$2])
 else
-	evolution_plugindir=""
-	ifelse([$4],, :, [$4])
+	evolution_source_dir=""
+	ifelse([$3],, :, [$3])
 fi
 
-AC_SUBST(evolution_plugindir)])
+AC_SUBST(evolution_source_dir)])
diff --git a/m4/gnome.m4 b/m4/gnome.m4
@@ -9,13 +9,13 @@
 dnl AM_PATH_GNOME_PREFIX([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
 dnl
 AC_DEFUN([AM_PATH_GNOME_PREFIX],
-[PKG_PROG_PKG_CONFIG
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
 
 AC_MSG_CHECKING([for the GNOME installation prefix])
 
 gnome_prefix=""
 if test -n "$PKG_CONFIG"; then
-	gnome_prefix=`$PKG_CONFIG --variable prefix libgnome-2.0`
+	gnome_prefix=`$PKG_CONFIG --variable prefix libgnome-2.0 2>/dev/null`
 fi
 
 if test -n "$gnome_prefix"; then
@@ -31,7 +31,7 @@ AC_SUBST(gnome_prefix)])
 dnl AM_PATH_GNOME_CAPPLETDIR
 dnl
 AC_DEFUN([AM_PATH_GNOME_CAPPLETDIR],
-[PKG_PROG_PKG_CONFIG
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
 
 AC_MSG_CHECKING([for the GNOME capplet directory])
 
diff --git a/m4/idl.m4 b/m4/idl.m4
@@ -0,0 +1,54 @@
+# This file is part of Mail Notification.
+#
+# Copyright (C) 2005 Jean-Yves Lefort.
+#
+# As a special exception to the Mail Notification licensing terms,
+# Jean-Yves Lefort gives unlimited permission to copy, distribute and
+# modify this file.
+
+dnl AM_PATH_ORBIT_IDL([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl
+AC_DEFUN([AM_PATH_ORBIT_IDL],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+
+AC_MSG_CHECKING([for orbit-idl-2])
+
+if test -n "$PKG_CONFIG"; then
+	ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0 2>/dev/null`"
+else
+	ORBIT_IDL=""
+fi
+
+if test -n "$ORBIT_IDL"; then
+	AC_MSG_RESULT([$ORBIT_IDL])
+	ifelse([$1],, :, [$1])
+else
+	AC_MSG_RESULT([not found])
+	ifelse([$2],, :, [$2])
+fi
+
+AC_SUBST(ORBIT_IDL)])
+
+dnl IDL_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
+dnl
+AC_DEFUN([IDL_CHECK_MODULES],
+[AC_REQUIRE([PKG_PROG_PKG_CONFIG])
+
+AC_MSG_CHECKING([for [$1] IDL])
+PKG_CHECK_EXISTS([$2], found=yes, found=no)
+AC_MSG_RESULT([$found])
+
+$1_IDLFLAGS=""
+if test $found = yes; then
+	for module in $2; do
+		idldir="`$PKG_CONFIG --variable=idldir $module 2>/dev/null`"
+		if test -n "$idldir"; then
+			$1_IDLFLAGS="$[$1]_IDLFLAGS -I$idldir"
+		fi
+	done
+	ifelse([$3],, :, [$3])
+else
+	ifelse([$4],, :, [$4])
+fi
+
+AC_SUBST($1_IDLFLAGS)])
diff --git a/m4/intltool.m4 b/m4/intltool.m4
@@ -25,23 +25,26 @@
 dnl IT_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
 # serial 2 IT_PROG_INTLTOOL
 AC_DEFUN([IT_PROG_INTLTOOL],
-[
+[AC_PREREQ([2.50])dnl
+
+case "$am__api_version" in
+    1.[01234])
+	AC_MSG_ERROR([Automake 1.5 or newer is required to use intltool])
+    ;;
+    *)
+    ;;
+esac
 
 if test -n "$1"; then
     AC_MSG_CHECKING(for intltool >= $1)
 
-    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ printf "%d", $[1] * 100 + $[2]; }'`
-    INTLTOOL_APPLIED_VERSION=`awk -F\" '/\\$VERSION / { printf $[2]; }'  < ${ac_aux_dir}/intltool-update.in`
-    changequote({{,}})
-    INTLTOOL_APPLIED_VERSION_AS_INT=`awk -F\" '/\\$VERSION / { split(${{2}}, VERSION, "."); printf "%d\n", VERSION[1] * 100 + VERSION[2];}' < ${ac_aux_dir}/intltool-update.in`
-    changequote([,])
-
-    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
-	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
-    else
-	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool $1 or later.])
-	exit 1
-    fi
+    INTLTOOL_REQUIRED_VERSION_AS_INT=`echo $1 | awk -F. '{ print $ 1 * 100 + $ 2; }'`
+    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`
+    ]
+    AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
+    test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT" ||
+	AC_MSG_ERROR([Your intltool is too old.  You need intltool $1 or later.])
 fi
 
   INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
@@ -61,6 +64,7 @@ INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcar
     INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
   INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
     INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SERVICE_RULE='%.service: %.service.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@'
 
 AC_SUBST(INTLTOOL_DESKTOP_RULE)
 AC_SUBST(INTLTOOL_DIRECTORY_RULE)
@@ -79,16 +83,12 @@ AC_SUBST(INTLTOOL_XML_NOMERGE_RULE)
 AC_SUBST(INTLTOOL_CAVES_RULE)
 AC_SUBST(INTLTOOL_SCHEMAS_RULE)
 AC_SUBST(INTLTOOL_THEME_RULE)
+AC_SUBST(INTLTOOL_SERVICE_RULE)
 
 # Use the tools built into the package, not the ones that are installed.
-
-INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
-INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
-INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
-
-AC_SUBST(INTLTOOL_EXTRACT)
-AC_SUBST(INTLTOOL_MERGE)
-AC_SUBST(INTLTOOL_UPDATE)
+AC_SUBST(INTLTOOL_EXTRACT, '$(top_builddir)/intltool-extract')
+AC_SUBST(INTLTOOL_MERGE, '$(top_builddir)/intltool-merge')
+AC_SUBST(INTLTOOL_UPDATE, '$(top_builddir)/intltool-update')
 
 AC_PATH_PROG(INTLTOOL_PERL, perl)
 if test -z "$INTLTOOL_PERL"; then
@@ -111,74 +111,91 @@ AC_PATH_PROG(INTLTOOL_MSGFMT, msgfmt, msgfmt)
 AC_PATH_PROG(INTLTOOL_MSGMERGE, msgmerge, msgmerge)
 AC_PATH_PROG(INTLTOOL_XGETTEXT, xgettext, xgettext)
 
-# Remove file type tags (using []) from po/POTFILES.
-
-ifdef([AC_DIVERSION_ICMDS],[
-  AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)
-     [mv -f po/POTFILES po/POTFILES.tmp
-      sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES
-      rm -f po/POTFILES.tmp
-     ]dnl
-  AC_DIVERT_POP()
-],[
-  ifdef([AC_CONFIG_COMMANDS_PRE],[
-    AC_CONFIG_COMMANDS_PRE([
-       [mv -f po/POTFILES po/POTFILES.tmp
-        sed -e '/[[]encoding.*]/d' -e 's/[[].*] *//' < po/POTFILES.tmp > po/POTFILES
-        rm -f po/POTFILES.tmp
-       ]dnl
-    ])
-  ])
-])
-
-# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
+IT_PO_SUBDIR([po])
+
+dnl The following is very similar to
+dnl
+dnl	AC_CONFIG_FILES([intltool-extract intltool-merge intltool-update])
+dnl
+dnl with the following slight differences:
+dnl  - the *.in files are in ac_aux_dir,
+dnl  - if the file haven't changed upon reconfigure, it's not touched,
+dnl  - the evaluation of the third parameter enables a hack which computes
+dnl    the actual value of $libdir,
+dnl  - the user sees "executing intltool commands", instead of
+dnl    "creating intltool-extract" and such.
+dnl
+dnl Nothing crucial here, and we could use AC_CONFIG_FILES, if there were
+dnl a reason for it.
 
 AC_CONFIG_COMMANDS([intltool], [
 
-intltool_edit="-e 's#@INTLTOOL_EXTRACT@#`pwd`/intltool-extract#g' \
-               -e 's#@INTLTOOL_ICONV@#${INTLTOOL_ICONV}#g' \
-               -e 's#@INTLTOOL_MSGFMT@#${INTLTOOL_MSGFMT}#g' \
-               -e 's#@INTLTOOL_MSGMERGE@#${INTLTOOL_MSGMERGE}#g' \
-               -e 's#@INTLTOOL_XGETTEXT@#${INTLTOOL_XGETTEXT}#g' \
-               -e 's#@INTLTOOL_PERL@#${INTLTOOL_PERL}#g'"
-
-eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-extract.in \
-  > intltool-extract.out
-if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
-  rm -f intltool-extract.out
-else
-  mv -f intltool-extract.out intltool-extract
-fi
-chmod ugo+x intltool-extract
-chmod u+w intltool-extract
-
-eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-merge.in \
-  > intltool-merge.out
-if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
-  rm -f intltool-merge.out
-else
-  mv -f intltool-merge.out intltool-merge
-fi
-chmod ugo+x intltool-merge
-chmod u+w intltool-merge
-
-eval sed ${intltool_edit} < ${ac_aux_dir}/intltool-update.in \
-  > intltool-update.out
-if cmp -s intltool-update intltool-update.out 2>/dev/null; then
-  rm -f intltool-update.out
-else
-  mv -f intltool-update.out intltool-update
-fi
-chmod ugo+x intltool-update
-chmod u+w intltool-update
+for file in intltool-extract intltool-merge intltool-update; do
+  sed -e "s|@INTLTOOL_EXTRACT@|`pwd`/intltool-extract|g" \
+      -e "s|@INTLTOOL_LIBDIR@|${INTLTOOL_LIBDIR}|g" \
+      -e "s|@INTLTOOL_ICONV@|${INTLTOOL_ICONV}|g" \
+      -e "s|@INTLTOOL_MSGFMT@|${INTLTOOL_MSGFMT}|g" \
+      -e "s|@INTLTOOL_MSGMERGE@|${INTLTOOL_MSGMERGE}|g" \
+      -e "s|@INTLTOOL_XGETTEXT@|${INTLTOOL_XGETTEXT}|g" \
+      -e "s|@INTLTOOL_PERL@|${INTLTOOL_PERL}|g" \
+	< ${ac_aux_dir}/${file}.in > ${file}.out
+  if cmp -s ${file} ${file}.out 2>/dev/null; then
+    rm -f ${file}.out
+  else
+    mv -f ${file}.out ${file}
+  fi
+  chmod ugo+x ${file}
+  chmod u+w ${file}
+done
+
+],
+[INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir='${ac_aux_dir}'
+prefix="$prefix" exec_prefix="$exec_prefix" INTLTOOL_LIBDIR="$libdir" 
+INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' INTLTOOL_ICONV='${INTLTOOL_ICONV}'
+INTLTOOL_MSGFMT='${INTLTOOL_MSGFMT}' INTLTOOL_MSGMERGE='${INTLTOOL_MSGMERGE}'
+INTLTOOL_XGETTEXT='${INTLTOOL_XGETTEXT}'])
+
+])
 
-], INTLTOOL_PERL='${INTLTOOL_PERL}' ac_aux_dir=${ac_aux_dir}
-INTLTOOL_EXTRACT='${INTLTOOL_EXTRACT}' ICONV='${INTLTOOL_ICONV}'
-MSGFMT='${INTLTOOL_MSGFMT}' MSGMERGE='${INTLTOOL_MSGMERGE}'
-XGETTEXT='${INTLTOOL_XGETTEXT}')
 
+# IT_PO_SUBDIR(DIRNAME)
+# ---------------------
+# All po subdirs have to be declared with this macro; the subdir "po" is
+# declared by IT_PROG_INTLTOOL.
+#
+AC_DEFUN([IT_PO_SUBDIR],
+[AC_PREREQ([2.53])dnl We use ac_top_srcdir inside AC_CONFIG_COMMANDS.
+dnl
+dnl The following CONFIG_COMMANDS should be exetuted at the very end
+dnl of config.status.
+AC_CONFIG_COMMANDS_PRE([
+  AC_CONFIG_COMMANDS([$1/stamp-it], [
+    rm -f "$1/stamp-it" "$1/stamp-it.tmp" "$1/POTFILES" "$1/Makefile.tmp"
+    >"$1/stamp-it.tmp"
+    [sed '/^#/d
+	 s/^[[].*] *//
+	 /^[ 	]*$/d
+	'"s|^|	$ac_top_srcdir/|" \
+      "$srcdir/$1/POTFILES.in" | sed '$!s/$/ \\/' >"$1/POTFILES"
+    ]
+    if test ! -f "$1/Makefile"; then
+      AC_MSG_ERROR([$1/Makefile is not ready.])
+    fi
+    mv "$1/Makefile" "$1/Makefile.tmp"
+    [sed '/^POTFILES =/,/[^\\]$/ {
+		/^POTFILES =/!d
+		r $1/POTFILES
+	  }
+	 ' "$1/Makefile.tmp" >"$1/Makefile"]
+    rm -f "$1/Makefile.tmp"
+    mv "$1/stamp-it.tmp" "$1/stamp-it"
+  ])
+])dnl
 ])
 
+
 # deprecated macros
-AC_DEFUN([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL($@)])
+AU_ALIAS([AC_PROG_INTLTOOL], [IT_PROG_INTLTOOL])
+# A hint is needed for aclocal from Automake <= 1.9.4:
+# AC_DEFUN([AC_PROG_INTLTOOL], ...)
 
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
@@ -39,13 +39,14 @@ gnulocaledir = $(datadir)/locale
 gettextsrcdir = $(datadir)/glib-2.0/gettext/po
 subdir = po
 install_sh = @install_sh@
-mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+# Automake >= 1.8 provides @mkdir_p@.
+# Until it can be supposed, use the safe fallback:
+mkdir_p = $(install_sh) -d
 
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 
 CC = @CC@
-GENCAT = @GENCAT@
 GMSGFMT = @GMSGFMT@
 MSGFMT = @MSGFMT@
 XGETTEXT = @XGETTEXT@
@@ -73,7 +74,6 @@ POTFILES = \
 
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
-INSTOBJEXT = @INSTOBJEXT@
 
 .SUFFIXES:
 .SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
@@ -94,7 +94,7 @@ INSTOBJEXT = @INSTOBJEXT@
 
 .po.cat:
 	sed -f ../intl/po2msg.sed < $< > $*.msg \
-	  && rm -f $@ && $(GENCAT) $@ $*.msg
+	  && rm -f $@ && gencat $@ $*.msg
 
 
 all: all-@USE_NLS@
@@ -110,11 +110,7 @@ install-exec:
 install-data: install-data-@USE_NLS@
 install-data-no: all
 install-data-yes: all
-	if test -n "$(MKINSTALLDIRS)"; then \
-	  $(MKINSTALLDIRS) $(DESTDIR)$(datadir); \
-	else \
-	  $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(datadir); \
-	fi
+	$(mkdir_p) $(DESTDIR)$(datadir)
 	@catalogs='$(CATALOGS)'; \
 	for cat in $$catalogs; do \
 	  cat=`basename $$cat`; \
@@ -124,39 +120,31 @@ install-data-yes: all
 	  esac; \
 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
 	  dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
-	  if test -n "$(MKINSTALLDIRS)"; then \
-	    $(MKINSTALLDIRS) $$dir; \
-	  else \
-	    $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
-	  fi; \
+	  $(mkdir_p) $$dir; \
 	  if test -r $$cat; then \
-	    $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
-	    echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+	    $(INSTALL_DATA) $$cat $$dir/$(GETTEXT_PACKAGE).mo; \
+	    echo "installing $$cat as $$dir/$(GETTEXT_PACKAGE).mo"; \
 	  else \
-	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
+	    $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(GETTEXT_PACKAGE).mo; \
 	    echo "installing $(srcdir)/$$cat as" \
-		 "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT)"; \
+		 "$$dir/$(GETTEXT_PACKAGE).mo"; \
 	  fi; \
 	  if test -r $$cat.m; then \
-	    $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
-	    echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+	    $(INSTALL_DATA) $$cat.m $$dir/$(GETTEXT_PACKAGE).mo.m; \
+	    echo "installing $$cat.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \
 	  else \
 	    if test -r $(srcdir)/$$cat.m ; then \
 	      $(INSTALL_DATA) $(srcdir)/$$cat.m \
-		$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+		$$dir/$(GETTEXT_PACKAGE).mo.m; \
 	      echo "installing $(srcdir)/$$cat as" \
-		   "$$dir/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m"; \
+		   "$$dir/$(GETTEXT_PACKAGE).mo.m"; \
 	    else \
 	      true; \
 	    fi; \
 	  fi; \
 	done
 	if test "$(PACKAGE)" = "glib"; then \
-	  if test -n "$(MKINSTALLDIRS)"; then \
-	    $(MKINSTALLDIRS) $(DESTDIR)$(gettextsrcdir); \
-	  else \
-	    $(SHELL) $(top_srcdir)/mkinstalldirs $(DESTDIR)$(gettextsrcdir); \
-	  fi; \
+	  $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
 	  $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
 			  $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
 	else \
@@ -171,10 +159,10 @@ uninstall:
 	for cat in $$catalogs; do \
 	  cat=`basename $$cat`; \
 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
-	  rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
-	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
-	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
+	  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; \
 	done
 	if test "$(PACKAGE)" = "glib"; then \
 	  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
@@ -192,8 +180,8 @@ mostlyclean:
 clean: mostlyclean
 
 distclean: clean
-	rm -f Makefile Makefile.in POTFILES
-	rm -f *.mo *.msg *.cat *.cat.m $(GMOFILES)
+	rm -f Makefile Makefile.in POTFILES stamp-it
+	rm -f *.mo *.msg *.cat *.cat.m *.gmo
 
 maintainer-clean: distclean
 	@echo "This command is intended for maintainers to use;"
@@ -205,11 +193,12 @@ dist distdir: $(DISTFILES)
 	dists="$(DISTFILES)"; \
 	extra_dists="$(EXTRA_DISTFILES)"; \
 	for file in $$extra_dists; do \
-	  test -f $$file && dists="$$dists $$file"; \
+	  test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \
 	done; \
 	for file in $$dists; do \
-	  ln $(srcdir)/$$file $(distdir) 2> /dev/null \
-	    || cp -p $(srcdir)/$$file $(distdir); \
+	  test -f $$file || file="$(srcdir)/$$file"; \
+	  ln $$file $(distdir) 2> /dev/null \
+	    || cp -p $$file $(distdir); \
 	done
 
 update-po: Makefile
@@ -239,23 +228,15 @@ update-po: Makefile
 	  fi; \
 	done
 
-# POTFILES is created from POTFILES.in by stripping comments, empty lines
-# and Intltool tags (enclosed in square brackets), and appending a full
-# relative path to them
-POTFILES: POTFILES.in
-	( posrcprefix='$(top_srcdir)/'; \
-	  rm -f $@-t $@ \
-	    && (sed -e '/^#/d' 					\
-		    -e 's/^[[].*] *//' 				\
-		    -e '/^[ 	]*$$/d' 			\
-		    -e "s@^@	$$posrcprefix@" $(srcdir)/$@.in	\
-		| sed -e '$$!s/$$/ \\/') > $@-t \
-	    && chmod a-w $@-t \
-	    && mv $@-t $@ )
-
-Makefile: Makefile.in.in ../config.status POTFILES
+Makefile POTFILES: stamp-it
+	@if test ! -f $@; then \
+	  rm -f stamp-it; \
+	  $(MAKE) stamp-it; \
+	fi
+
+stamp-it: Makefile.in.in ../config.status POTFILES.in
 	cd .. \
-	  && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
+	  && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \
 	       $(SHELL) ./config.status
 
 # Tell versions [3.59,3.63) of GNU make not to export all variables.
diff --git a/po/POTFILES.in b/po/POTFILES.in
@@ -4,13 +4,6 @@ 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.soundlist.in
-src/egg-editable-toolbar.c
-src/egg-editable-toolbar.h
-src/egg-toolbar-editor.c
-src/egg-toolbar-editor.h
-src/egg-toolbars-model.c
-src/egg-toolbars-model.h
 src/eggtrayicon.c
 src/eggtrayicon.h
 src/mn-about-dialog.gob
@@ -22,6 +15,7 @@ src/mn-automation.gob
 src/mn-blinking-image.gob
 src/mn-client-session.c
 src/mn-client-session.h
+src/mn-compact-message-view.gob
 src/mn-conf.c
 src/mn-conf.h
 src/mn-custom-vfs-mailbox.gob
@@ -35,12 +29,12 @@ 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
 src/mn-mailboxes.gob
 src/mn-maildir-mailbox-backend.gob
-src/mn-main-window.gob
 src/mn-main.c
 src/mn-mbox-mailbox-backend.gob
 src/mn-md5.c
@@ -60,6 +54,7 @@ src/mn-sasl.h
 src/mn-shell.gob
 src/mn-ssl.c
 src/mn-ssl.h
+src/mn-standard-message-view.gob
 src/mn-stock.c
 src/mn-stock.h
 src/mn-sylpheed-mailbox-backend.gob
@@ -72,7 +67,6 @@ src/mn-vfs-mailbox-backend.gob
 src/mn-vfs-mailbox.gob
 src/mn-vfs.c
 src/mn-vfs.h
-ui/edit-toolbars-dialog.glade
 ui/mail-summary-popup.glade
 ui/mailbox-properties-dialog.glade
 ui/properties-dialog.glade
diff --git a/po/POTFILES.skip b/po/POTFILES.skip
@@ -0,0 +1,52 @@
+data/GNOME_MailNotification.server.in
+data/GNOME_MailNotification_Evolution.server.in
+src/GNOME_MailNotification-common.c
+src/GNOME_MailNotification-skels.c
+src/GNOME_MailNotification-stubs.c
+src/GNOME_MailNotification_Evolution-common.c
+src/GNOME_MailNotification_Evolution-skels.c
+src/GNOME_MailNotification_Evolution-stubs.c
+src/mn-about-dialog.c
+src/mn-auth-combo-box.c
+src/mn-authenticated-mailbox-properties.c
+src/mn-authenticated-mailbox.c
+src/mn-autodetect-mailbox-properties.c
+src/mn-automation.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
+src/mn-evolution-mailbox-properties.c
+src/mn-evolution-mailbox.c
+src/mn-gmail-mailbox-properties.c
+src/mn-gmail-mailbox.c
+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
+src/mn-mailboxes.c
+src/mn-maildir-mailbox-backend.c
+src/mn-mbox-mailbox-backend.c
+src/mn-message.c
+src/mn-mh-mailbox-backend.c
+src/mn-pi-mailbox-properties.c
+src/mn-pi-mailbox.c
+src/mn-pop3-mailbox-properties.c
+src/mn-pop3-mailbox.c
+src/mn-properties-dialog.c
+src/mn-reentrant-mailbox.c
+src/mn-shell.c
+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-text-table.c
+src/mn-tooltips.c
+src/mn-vfs-mailbox-backend.c
+src/mn-vfs-mailbox.c
diff --git a/po/bg.po b/po/bg.po
@@ -1,5 +1,5 @@
 # Bulgarian translations for mail-notification.
-# Copyright (C) 2003-2005 Jean-Yves Lefort.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
 #
 # This file is distributed under the same license as the
 # mail-notification package.
@@ -11,13 +11,13 @@ msgstr ""
 "Project-Id-Version: gnome in bulgarian 0.6.2\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2004-09-09 01:43+0200\n"
-"PO-Revision-Date: 2004-10-05 16:13+0200\n"
+"PO-Revision-Date: 2006-05-13 06:09+0200\n"
 "Last-Translator: Vladimir \"Kaladan\" Petkov <vpetkov@i-space.org>\n"
 "Language-Team: Bulgarian <bg@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;"
+"Plural-Forms: nplurals=2; plural=n != 1;"
 
 #: data/GNOME_MailNotification_Automation.server.in.in.h:1
 msgid "Mail Notification automation"
diff --git a/po/cs.po b/po/cs.po
@@ -0,0 +1,1923 @@
+# Czech translation for mail-notification.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Pav Lucistnik <pav@FreeBSD.org>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-08-13 19:16+0200\n"
+"PO-Revision-Date: 2006-02-26 05:21+0100\n"
+"Last-Translator: Pav Lucistnik <pav@FreeBSD.org>\n"
+"Language-Team: Pav Lucistnik <pav@FreeBSD.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Upozornění na poštu automation"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Upozornění na poštu automation factory"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:1
+msgid "Evolution folder tree control"
+msgstr "Strom složek Evolution control"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:2
+msgid "Evolution folder tree control factory"
+msgstr "Strom složek Evolution control factory"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:3
+msgid "Mail Notification / Evolution glue"
+msgstr "Upozornění na poštu / Evolution glue"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:4
+msgid "Mail Notification / Evolution glue factory"
+msgstr "Upozornění na poštu / Evolution glue factory"
+
+#: ../data/mail-notification-properties.desktop.in.h:1
+#: ../src/mn-main-window.gob:209
+msgid "Configure Mail Notification"
+msgstr "Nastavit upozornění na poštu"
+
+#: ../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
+msgid "Mail Notification"
+msgstr "Upozornění na poštu"
+
+#: ../data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Upozorňovat když přijde nová pošta"
+
+#: ../data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr "Automaticky zavírat vyskakovací souhrn pošty"
+
+#: ../data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Blikat při chybě"
+
+#: ../data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "Interval mezi kontrolami pošty (minuty)."
+
+#: ../data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "Interval mezi kontrolami pošty (sekundy)."
+
+#: ../data/mail-notification.schemas.in.h:5
+msgid "Display mail summary in tooltip"
+msgstr "Zobrazit souhrn pošty v tooltipu"
+
+#: ../data/mail-notification.schemas.in.h:6
+msgid "Do not show the immediate notification error dialog"
+msgstr "Nezobrazovat okamžitě chybový dialog"
+
+#: ../data/mail-notification.schemas.in.h:7
+msgid "Double-click action"
+msgstr "Akce při dvojitém kliknutí"
+
+#: ../data/mail-notification.schemas.in.h:8
+msgid "Enable mail summary popup"
+msgstr "Povolit vyskakovací souhrn pošty"
+
+#: ../data/mail-notification.schemas.in.h:9
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Obtisky důvěryhodných X509 certifikátů"
+
+#: ../data/mail-notification.schemas.in.h:10
+msgid "Height of edit toolbars dialog"
+msgstr "Výška dialogu pro úpravu lišty nástrojů"
+
+#: ../data/mail-notification.schemas.in.h:11
+msgid "Height of main window"
+msgstr "Výška hlavního okna"
+
+#: ../data/mail-notification.schemas.in.h:12
+msgid "Height of properties dialog"
+msgstr "Výška dialogu nastavení"
+
+#: ../data/mail-notification.schemas.in.h:13
+msgid "Mail read command"
+msgstr "Příkaz po přečtění pošty"
+
+#: ../data/mail-notification.schemas.in.h:14
+msgid "Mail reader command"
+msgstr "Příkaz pro spuštění poštovního programu"
+
+#: ../data/mail-notification.schemas.in.h:15
+msgid "Mail summary popup contents font"
+msgstr "Písmo vyskakovacího souhrnu pošty"
+
+#: ../data/mail-notification.schemas.in.h:16
+msgid "Mail summary popup fonts aspect source"
+msgstr "Zdroj vzhledu písma vyskakovacího souhrnu pošty"
+
+#: ../data/mail-notification.schemas.in.h:17
+msgid "Mail summary popup horizontal offset"
+msgstr "Vodorovné odsazení vyskakovacího souhrnu pošty"
+
+#: ../data/mail-notification.schemas.in.h:18
+msgid "Mail summary popup position"
+msgstr "Pozice vyskakovacího souhrnu pošty"
+
+#: ../data/mail-notification.schemas.in.h:19
+msgid "Mail summary popup title font"
+msgstr "Písmo titulku vyskakovacího souhrnu pošty"
+
+#: ../data/mail-notification.schemas.in.h:20
+msgid "Mail summary popup vertical offset"
+msgstr "Svislé odsazení vyskakovacího souhrnu pošty"
+
+#: ../data/mail-notification.schemas.in.h:21
+msgid "Minutes between mail checks"
+msgstr "Minuty mezi kontrolami pošty"
+
+#: ../data/mail-notification.schemas.in.h:22
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr "Minuty před zavřením vyskakovacího souhrnu pošty"
+
+#: ../data/mail-notification.schemas.in.h:23
+msgid "New mail command"
+msgstr "Příkaz při nové poště"
+
+#: ../data/mail-notification.schemas.in.h:24
+msgid "Only display recent mail in mail summary popup"
+msgstr "Zobrazit pouze nedávnou poštu ve vyskakovacím souhrnu pošty"
+
+#: ../data/mail-notification.schemas.in.h:25
+msgid "Run a command when all mail is read"
+msgstr "Spustit příkaz při přečtení veškeré pošty"
+
+#: ../data/mail-notification.schemas.in.h:26
+msgid "Run a command when new mail arrives"
+msgstr "Spustit příkaz při příchodu nové pošty"
+
+#: ../data/mail-notification.schemas.in.h:27
+msgid "Seconds between mail checks"
+msgstr "Sekundy mezi kontrolami pošty"
+
+#: ../data/mail-notification.schemas.in.h:28
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr "Sekundy před zavřením vyskakovacího souhrnu pošty"
+
+#: ../data/mail-notification.schemas.in.h:29
+msgid "Set a mail reader"
+msgstr "Nastavit poštovní program"
+
+#: ../data/mail-notification.schemas.in.h:30
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"main-window\", \"launch-mail-reader\" or \"update-mail-status\"."
+msgstr ""
+"Kterou akci vykonat při dvojitém kliknutí na ikonu. Musí být \"display-"
+"main-window\" (zobrazit hlavní okno), \"launch-mail-reader\" (spustit "
+"poštovní program) nebo \"update-mail-status\" (aktualizovat stav pošty)."
+
+#: ../data/mail-notification.schemas.in.h:31
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+"Jak dlouho čekat před zavřením vyskakovacího souhrnu pošty (minutová část)."
+
+#: ../data/mail-notification.schemas.in.h:32
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+"Jak dlouho čekat před zavřením vyskakovacího souhrnu pošty (sekundová část)."
+
+#: ../data/mail-notification.schemas.in.h:33
+msgid ""
+"The aspect source of the mail summary popup fonts. Must be \"theme\" or "
+"\"custom\"."
+msgstr ""
+"Zdroj nastavení písma vyskakovacího souhrnu pošty. Musí být \"theme\" "
+"(z tématu) nebo \"custom\" (vlastní)."
+
+#: ../data/mail-notification.schemas.in.h:34
+msgid "The command to run to launch the mail reader."
+msgstr "Příkaz pro spuštění poštovního programu."
+
+#: ../data/mail-notification.schemas.in.h:35
+msgid "The command to run when all mail is read."
+msgstr "Příkaz spouštěný po přečtení veškeré pošty."
+
+#: ../data/mail-notification.schemas.in.h:36
+msgid "The command to run when new mail arrives."
+msgstr "Příkaz spouštěný když dorazí nová pošta."
+
+#: ../data/mail-notification.schemas.in.h:37
+msgid "The custom font to use for the contents of the mail summary popup."
+msgstr "Vlastní písmo pro obsah vyskakovacího souhrnu pošty."
+
+#: ../data/mail-notification.schemas.in.h:38
+msgid "The custom font to use for the title of the mail summary popup."
+msgstr "Vlastní písmo pro titulek vyskakovacího souhrnu pošty."
+
+#: ../data/mail-notification.schemas.in.h:39
+msgid "The height of the edit toolbars dialog in pixels."
+msgstr "Výška dialogu pro úpravu lišty nástrojů v pixelech."
+
+#: ../data/mail-notification.schemas.in.h:40
+msgid "The height of the main window in pixels."
+msgstr "Výška hlavního okna v pixelech."
+
+#: ../data/mail-notification.schemas.in.h:41
+msgid "The height of the properties dialog in pixels."
+msgstr "Výška dialogu nastavení v pixelech."
+
+#: ../data/mail-notification.schemas.in.h:42
+msgid ""
+"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
+"certificate."
+msgstr ""
+"Seznam důvěryhodných SSL/TLS serverů (jméno počítače:port), kterým chybí "
+"X509 certifikát."
+
+#: ../data/mail-notification.schemas.in.h:43
+msgid ""
+"The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr ""
+"Seznam důvěryhodných X509 certifikátů, reprezentovaných jejími MD5 obtisky."
+
+#: ../data/mail-notification.schemas.in.h:44
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+"Počet pixelů vynechaných mezi levým nebo pravým okrajem obrazovky a "
+"vyskakovacím souhrnem pošty."
+
+#: ../data/mail-notification.schemas.in.h:45
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+"Počet pixelů vynechaných mezi horním nebo spodním okrajem obrazovky a "
+"vyskakovacím souhrnem pošty."
+
+#: ../data/mail-notification.schemas.in.h:46
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+"Umístění vyskakovacího souhrnu pošty. Musí být \"top-left\" (vlevo nahoře), "
+"\"top-right\" (vpravo nahoře), \"bottom-left\" (vlevo dole), \"bottom-right\" "
+"(vpravo dole)."
+
+#: ../data/mail-notification.schemas.in.h:47
+msgid ""
+"The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text\", "
+"\"both\" or \"both-horiz\"."
+msgstr ""
+"Vzhled lišty nástrojů. Musí být \"desktop-default\", \"icons\", \"text\", "
+"\"both\" nebo \"both=horiz\"."
+
+#: ../data/mail-notification.schemas.in.h:48
+msgid "The width of the edit toolbars dialog in pixels."
+msgstr "Šířka dialogu pro úpravu lišty nástrojů v pixelech."
+
+#: ../data/mail-notification.schemas.in.h:49
+msgid "The width of the main window in pixels."
+msgstr "Šířka hlavního okna v pixelech."
+
+#: ../data/mail-notification.schemas.in.h:50
+msgid "The width of the properties dialog in pixels."
+msgstr "Šířka dialogu nastavení v pixelech."
+
+#: ../data/mail-notification.schemas.in.h:51
+msgid "Toolbars style"
+msgstr "Vzhled lišty nástrojů"
+
+#: ../data/mail-notification.schemas.in.h:52
+msgid "Trusted servers list"
+msgstr "Seznam důvěryhodných serverů"
+
+#: ../data/mail-notification.schemas.in.h:53
+msgid "View statusbar"
+msgstr "Zobrazit statovou lištu"
+
+#: ../data/mail-notification.schemas.in.h:54
+msgid "View toolbars"
+msgstr "Zobrazit lišty nástrojů"
+
+#: ../data/mail-notification.schemas.in.h:55
+msgid "Whether the status icon should blink on errors or not."
+msgstr "Jestli má stavová ikona blikat při chybě nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:56
+msgid "Whether the statusbar should be visible or not."
+msgstr "Jestli má být statová lišta viditelná nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:57
+msgid "Whether the toolbars should be visible or not."
+msgstr "Jestli mají být lišty nástrojů viditelné nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:58
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Jestli automaticky zavírat vyskakovací souhrn pošty nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:59
+msgid "Whether to display the mail summary in the status icon tooltip or not."
+msgstr "Jestli zobrazit souhrn pošty v tooltipu statové ikony nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:60
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Jestli zobrazit vyskakovací souhrn pošty když dorazí nová pošta nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:61
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+"Jestli skrýt dříve zobrazenou poštu ve vyskakovacím souhrnu pošty nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:62
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+"Jestli zabránit chybovému dialogu v zobrazování nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:63
+msgid "Whether to run a command when all mail is read or not."
+msgstr "Jestli spouštět příkaz po přečtení veškeré pošty nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:64
+msgid "Whether to run a command when new mail arrives or not."
+msgstr "Jestli spouštět příkaz při doručení nové pošty nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:65
+msgid "Whether to set a mail reader or not."
+msgstr "Jestli nastavit poštovní program nebo ne."
+
+#: ../data/mail-notification.schemas.in.h:66
+msgid "Width of edit toolbars dialog"
+msgstr "Šířka dialogu pro úpravu lišt nástrojů"
+
+#: ../data/mail-notification.schemas.in.h:67
+msgid "Width of main window"
+msgstr "Šířka hlavního okna"
+
+#: ../data/mail-notification.schemas.in.h:68
+msgid "Width of properties dialog"
+msgstr "Šířka dialogu nastavení"
+
+#: ../data/mail-notification.soundlist.in.h:2
+msgid "New Mail"
+msgstr "Nová pošta"
+
+#: ../src/egg-editable-toolbar.c:534
+msgid "_Remove Toolbar"
+msgstr "_Odstranit lištu nástrojů"
+
+#: ../src/egg-toolbar-editor.c:555
+msgid "Separator"
+msgstr "Oddělovač"
+
+#: ../src/eggtrayicon.c:128
+msgid "Orientation"
+msgstr "Orientace"
+
+#: ../src/eggtrayicon.c:129
+msgid "The orientation of the tray."
+msgstr "Orientace oznamovací oblasti."
+
+#: ../src/mn-about-dialog.gob:48
+msgid "A Mail Notification Icon"
+msgstr "Ikona Upozornění na poštu"
+
+#.
+#. * translators: Your Name <your-email>
+#. * optionally followed by one or more: \nOther Contributor's Name <his-email>
+#.
+#: ../src/mn-about-dialog.gob:56
+msgid "translator-credits"
+msgstr "Pav Lučištník &lt;pav@FreeBSD.org&gt;"
+
+#: ../src/mn-about-dialog.gob:78
+msgid "Unable to open link"
+msgstr "Nemohu otevřít odkaz"
+
+#: ../src/mn-auth-combo-box.gob:103
+#: ../src/mn-autodetect-mailbox-properties.gob:92
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">autodetekovat</span>"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:46
+msgid "_Username:"
+msgstr "_Jméno uživatele:"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:50
+msgid "_Password:"
+msgstr "_Heslo:"
+
+#: ../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 ""
+"Upozornění na poštu se nemohlo přihlásit do %s schránky %s, pravděpodobně "
+"protože přihlašovací údaje, které jste zadal, nejsou platné.\n"
+"\n"
+"Prosím zadejte znovu přihlašovací údaje."
+
+#: ../src/mn-authenticated-mailbox.gob:153
+#, c-format
+msgid "Enter your credentials for %s mailbox %s."
+msgstr "Zadejte přihlašovací údaje pro %s schránku %s."
+
+#. keep the title in sync with gnome-authentication-manager
+#: ../src/mn-authenticated-mailbox.gob:195
+msgid "Authentication Required"
+msgstr "Vyžadována autentizace"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:93
+msgid "Location"
+msgstr "Umístění"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:103
+msgid "_Location:"
+msgstr "_Umístění:"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:110
+msgid "_Browse..."
+msgstr "_Procházet..."
+
+#: ../src/mn-autodetect-mailbox-properties.gob:149
+msgid "Select a File or Folder"
+msgstr "Zvolte soubor nebo složku"
+
+#: ../src/mn-client-session.c:248
+#, c-format
+msgid "resolving %s"
+msgstr "hledám %s"
+
+#: ../src/mn-client-session.c:264
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "nemohu nalézt %s: %s"
+
+#: ../src/mn-client-session.c:308
+#, c-format
+msgid "%s: unsupported address family"
+msgstr "%s: nepodporovaná adresní rodina"
+
+#: ../src/mn-client-session.c:315
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr "%s: nemohu vytvořit soket: %s"
+
+#: ../src/mn-client-session.c:319
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "připojování k %s (%s) port %i"
+
+#: ../src/mn-client-session.c:322
+#, c-format
+msgid "unable to connect: %s"
+msgstr "nemohu se připojit: %s"
+
+#: ../src/mn-client-session.c:327
+msgid "connected successfully"
+msgstr "úspěšně připojen"
+
+#. if reached, we couldn't find a working address
+#: ../src/mn-client-session.c:333
+#, c-format
+msgid "unable to connect to %s"
+msgstr "nemohu se připojit k %s"
+
+#: ../src/mn-client-session.c:360
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr "nemohu inicializovat knihovnu OpenSSL: %s"
+
+#: ../src/mn-client-session.c:368
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr "nemohu vytvořit SSL/TLS objekt: %s"
+
+#: ../src/mn-client-session.c:374
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr "nemohu nastavit SSL/TLS deskriptor souboru: %s"
+
+#: ../src/mn-client-session.c:380
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr "nemohu provést SSL/TLS handshake: %s"
+
+#: ../src/mn-client-session.c:386
+msgid "untrusted server"
+msgstr "nedůvěryhodný server"
+
+#: ../src/mn-client-session.c:390
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr "SSL/TLS vrstva je nyní aktivní (%s, %s %i bitů)"
+
+#: ../src/mn-client-session.c:437
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, obtisk: %s"
+
+#: ../src/mn-client-session.c:466
+msgid "missing certificate"
+msgstr "chybí certifikát"
+
+#: ../src/mn-client-session.c:492
+#, c-format
+msgid ""
+"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
+"someone is intercepting your communication to obtain your confidential "
+"information.\n"
+"\n"
+"You should only connect to the server if you are certain you are connected "
+"to \"%s\". If you choose to connect to the server, this message will not be "
+"shown again."
+msgstr ""
+"\"%s\" (%s) není důvěryhodný. Je možné, že někdo zachycuje komunikaci "
+"za účelem získání důvěrných údajů.\n"
+"\n"
+"Neměl byste se připojovat k serveru, pokud si nejste jistý, že jste připojen "
+" k \"%s\". Pokud zvolíte připojení k serveru, tato zpráva již nebude znovu "
+"zobrazena."
+
+#: ../src/mn-client-session.c:507
+msgid "Connect to untrusted server?"
+msgstr "Připojit k nedůvěryhodnému serveru?"
+
+#: ../src/mn-client-session.c:571
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "odezva \"%s\" není platná v aktuálním kontextu"
+
+#: ../src/mn-client-session.c:599
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "nemohu zpracovat odezvu \"%s\""
+
+#: ../src/mn-client-session.c:649 ../src/mn-client-session.c:656
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "nemohu číst ze serveru: %s"
+
+#: ../src/mn-client-session.c:654
+msgid "unable to read from server: EOF"
+msgstr "nemohu část ze serveru: EOF"
+
+#: ../src/mn-client-session.c:666
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "nemohu dešifrovat data pomoci SASL: %s"
+
+#: ../src/mn-client-session.c:811
+#, c-format
+msgid "unable to encode data using SASL: %s"
+msgstr "nemohu zašifrovat data pomoci SASL: %s"
+
+#: ../src/mn-client-session.c:842 ../src/mn-client-session.c:849
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "nemohu zapsat na server: %s"
+
+#: ../src/mn-client-session.c:847
+msgid "unable to write to server: EOF"
+msgstr "nemohu zapsat na server: EOF"
+
+#: ../src/mn-client-session.c:878 ../src/mn-pop3-mailbox.gob:468
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr "nemohu převést do Base64: %s"
+
+#: ../src/mn-client-session.c:1056
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr "nemohu inicializovat knihovnu SASL: %s"
+
+#: ../src/mn-client-session.c:1068
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr "nemohu získat místní adresu soketu: %s"
+
+#: ../src/mn-client-session.c:1074
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr "nemohu získat vzdálenou adresu soketu: %s"
+
+#: ../src/mn-client-session.c:1108
+#, c-format
+msgid "unable to set SASL security properties: %s"
+msgstr "nemohu nastavit zabezpečení SASL: %s"
+
+#: ../src/mn-client-session.c:1132
+msgid ""
+"unable to start SASL authentication: SASL asked for something we did not know"
+msgstr ""
+"nemohu zahájit ověření SASL: SASL se zeptal na něco, co neznáme"
+
+#: ../src/mn-client-session.c:1151
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr "nemohu zahájit ověření SASL: %s"
+
+#: ../src/mn-client-session.c:1155
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr "nemohu vytvořit SASL spojení: %s"
+
+#: ../src/mn-client-session.c:1202
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr "SASL se zeptal na něco, co neznáme, přerušuji ověření SASL"
+
+#: ../src/mn-client-session.c:1219
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr "%s, přerušuji ověření SASL"
+
+#. compliance error
+#: ../src/mn-client-session.c:1224
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr "nemohu zpracovat Base64 údaje od serveru: %s"
+
+#: ../src/mn-client-session.c:1260
+#, c-format
+msgid "a SASL security layer of strength factor %i is now active"
+msgstr "bezpečnostní vrstva SASL o bezpečnostním faktoru %i je nyní aktivní"
+
+#. a security layer is active but we can't retrieve maxoutbuf -> fatal
+#: ../src/mn-client-session.c:1265
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr "nelze získat vlastnost SASL_MAXOUTBUF: %s"
+
+#: ../src/mn-client-session.c:1271
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr "varování: nelze získat vlastnost SASL_SSF: %s"
+
+#: ../src/mn-conf.c:240
+msgid "A directory creation error has occurred"
+msgstr "Chyba při vytváření adresáře"
+
+#: ../src/mn-conf.c:241
+#, c-format
+msgid "Unable to create directory \"%s\": %s."
+msgstr "Nemohu vytvořit adresář \"%s\": %s."
+
+#: ../src/mn-conf.c:317
+#, c-format
+msgid "recursively unsetting %s"
+msgstr "rekurzivně odnastavuji %s"
+
+#: ../src/mn-conf.c:321
+msgid "syncing the GConf database"
+msgstr "synchronizuji GConf databázi"
+
+#: ../src/mn-conf.c:324
+msgid "completed"
+msgstr "dokončeno"
+
+#: ../src/mn-custom-vfs-mailbox.gob:76
+msgid "invalid location"
+msgstr "neplatné umístění"
+
+#: ../src/mn-evolution-folder-tree-control.c:86
+msgid "The currently selected URI"
+msgstr "Vybrané URI"
+
+#: ../src/mn-evolution-mailbox-properties.gob:67
+msgid "Folder"
+msgstr "Složka"
+
+#: ../src/mn-evolution-mailbox-properties.gob:169
+msgid ""
+"Mail Notification can not contact Evolution. Make sure that Evolution is "
+"running and that the Evolution Mail Notification plugin is loaded."
+msgstr ""
+"Nemohu se spojit s Evolution. Ujistěte se, že Evolution běží a že Evolution "
+"Mail Notification plugin je aktivní."
+
+#: ../src/mn-evolution-mailbox.gob:61
+msgid "folder not found"
+msgstr "složka nenalezena"
+
+#: ../src/mn-evolution-mailbox.gob:182
+msgid "unable to contact Evolution"
+msgstr "nemohu se spojit s Evolution"
+
+#: ../src/mn-evolution-plugin.c:130 ../src/mn-evolution-plugin.c:134
+msgid "Unable to activate the Mail Notification plugin"
+msgstr "Nemohu aktivovat Mail Notification plugin"
+
+#: ../src/mn-evolution-plugin.c:130
+#, c-format
+msgid ""
+"Bonobo could not locate the %s server. Please check your Mail Notification "
+"installation."
+msgstr ""
+"Bonobo nemohlo nalézt server %s. Prosím zkontrolujte instalaci Upozornění "
+"na poštu."
+
+#: ../src/mn-evolution-plugin.c:134 ../src/mn-main.c:427
+#, c-format
+msgid ""
+"Bonobo was unable to register the %s server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo nemohlo zaregistrovat server %s. Prosím zkontrolujte instalaci "
+"Upozornění na poštu."
+
+#: ../src/mn-gmail-mailbox.gob:111
+msgid "invalid feed location"
+msgstr "neplatné umístění zdroje"
+
+#: ../src/mn-gmail-mailbox.gob:125
+#, c-format
+msgid "retrieving feed from %s"
+msgstr "získávám zdroj z %s"
+
+#: ../src/mn-gmail-mailbox.gob:132
+#, c-format
+msgid "unable to retrieve feed: %s"
+msgstr "nemohu získat zdroj: %s"
+
+#: ../src/mn-gmail-mailbox.gob:147 ../src/mn-gmail-mailbox.gob:194
+msgid "unable to parse feed"
+msgstr "nemohu zpracovat zdroj"
+
+#: ../src/mn-gmime-stream-vfs.gob:50
+#: ../src/mn-sylpheed-mailbox-backend.gob:152
+#, c-format
+msgid "unable to read %s: %s"
+msgstr "nemohu číst %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:52
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr "nemohu zapsat do %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:54
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr "nemohu posouvat v %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:56
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "nemohu určit pozici v %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:58 ../src/mn-mh-mailbox-backend.gob:158
+#, c-format
+msgid "unable to close %s: %s"
+msgstr "nemohu zavřít %s: %s"
+
+#: ../src/mn-imap-mailbox-properties.gob:113
+msgid "Mailbox:"
+msgstr "Schránka:"
+
+#: ../src/mn-imap-mailbox-properties.gob:117
+msgid "in_box"
+msgstr "_inbox"
+
+#: ../src/mn-imap-mailbox-properties.gob:128
+msgid "oth_er:"
+msgstr "_jiná:"
+
+#: ../src/mn-imap-mailbox-properties.gob:139
+msgid "ne_ver"
+msgstr "_nikdy"
+
+#: ../src/mn-imap-mailbox-properties.gob:140
+msgid "au_todetect"
+msgstr "_autodetekovat"
+
+#: ../src/mn-imap-mailbox-properties.gob:141
+msgid "al_ways"
+msgstr "_vždy"
+
+#: ../src/mn-imap-mailbox-properties.gob:173
+msgid "Use the <span style=\"italic\">IDLE</span> extension:"
+msgstr "Použít rozšíření <span style=\"italic\">IDLE</span>:"
+
+#: ../src/mn-imap-mailbox.gob:390
+msgid "server did not send capabilities"
+msgstr "server neposlal capability"
+
+#: ../src/mn-imap-mailbox.gob:573
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr "server ohlásil LOGINDISABLED, nepoužívám LOGIN přihlášení"
+
+#: ../src/mn-imap-mailbox.gob:574
+msgid "unable to login"
+msgstr "nemohu se přihlásit"
+
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:714
+msgid "server did not send search results"
+msgstr "server neposlal výsledky hledání"
+
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:792
+msgid "server did not send all the messages we requested"
+msgstr "server neposlal všechny zprávy, které jsme vyžádali"
+
+#: ../src/mn-imap-mailbox.gob:859
+msgid "unable to fetch message"
+msgstr "nemohu stáhnout zprávu"
+
+#: ../src/mn-imap-mailbox.gob:875
+msgid ""
+"\"Use the IDLE extension\" set to \"never\" in the mailbox properties, "
+"logging out"
+msgstr ""
+"\"Použít rozšíření IDLE\" nastaveno na \"never\" ve vlastnostech schránky, "
+"odpojuji se"
+
+#: ../src/mn-imap-mailbox.gob:886
+#, c-format
+msgid "the remote server runs %s, not using the IDLE extension"
+msgstr "vzdálený server běží %s, nepoužívám rozšíření IDLE"
+
+#: ../src/mn-imap-mailbox.gob:891
+#, c-format
+msgid ""
+"the remote server runs %s, the IDLE extension might not function properly"
+msgstr ""
+"vzdálený server běží %s, rozšíření IDLE nemusí pracovat správně"
+
+#: ../src/mn-imap-mailbox.gob:900
+msgid "the remote server does not support the IDLE extension, logging out"
+msgstr "vzdálený server nepodporuje rozšíření IDLE, odpojuji se"
+
+#: ../src/mn-imap-mailbox.gob:1251 ../src/mn-pop3-mailbox.gob:1124
+msgid "unknown server error"
+msgstr "neznámá chyba serveru"
+
+#: ../src/mn-imap-mailbox.gob:1357 ../src/mn-pop3-mailbox.gob:311
+msgid "server does not support in-band SSL/TLS"
+msgstr "server nepodporuje in-band SSL/TLS"
+
+#: ../src/mn-imap-mailbox.gob:1381 ../src/mn-pop3-mailbox.gob:997
+msgid ""
+"a SASL authentication mechanism was selected but SASL support has not been "
+"compiled in"
+msgstr ""
+"přihlašovací mechanismus SASL byl vybrán, ale podpora SASL nebyla "
+"zkompilována "
+
+#: ../src/mn-imap-mailbox.gob:1391 ../src/mn-pop3-mailbox.gob:1017
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "neznámý přihlašovací mechanismus \"%s\""
+
+#: ../src/mn-imap-mailbox.gob:1423 ../src/mn-pop3-mailbox.gob:1053
+#, c-format
+msgid "disabling mechanism \"%s\" and retrying SASL authentication"
+msgstr "zakazuji mechanismus \"%s\" a zkouším znovu přihlášení SASL"
+
+#: ../src/mn-imap-mailbox.gob:1435
+msgid "falling back to IMAP LOGIN authentication"
+msgstr "zkouším přihlášení IMAP LOGIN"
+
+#: ../src/mn-imap-mailbox.gob:1447 ../src/mn-pop3-mailbox.gob:1082
+msgid "authentication failed"
+msgstr "přihlášení selhalo"
+
+#: ../src/mn-mail-icon.gob:91
+msgid "Main _Window"
+msgstr "_Hlavní okno"
+
+#: ../src/mn-mail-icon.gob:92 ../src/mn-main-window.gob:165
+msgid "_Mail Reader"
+msgstr "_Poštovní program"
+
+#: ../src/mn-mail-icon.gob:93 ../src/mn-main-window.gob:173
+msgid "_Update"
+msgstr "_Aktualizovat"
+
+#: ../src/mn-mail-icon.gob:99
+msgid "R_emove From Notification Area"
+msgstr "_Odstranit z oznamovací oblasti"
+
+#: ../src/mn-mailbox-properties-dialog.gob:88
+#, c-format
+msgid "%s Properties"
+msgstr "Vlastnosti %s"
+
+#: ../src/mn-mailbox-properties-dialog.gob:205
+msgid "Add a Mailbox"
+msgstr "Přidat schránku"
+
+#: ../src/mn-mailbox-view.gob:179
+msgid "A paste error has occurred"
+msgstr "Chyba při vložení"
+
+#: ../src/mn-mailbox-view.gob:320 ../src/mn-message-view.gob:313
+msgid "Mailbox"
+msgstr "Schránka"
+
+#: ../src/mn-mailbox-view.gob:523
+#, c-format
+msgid "unhandled %s mailbox (%s)"
+msgstr "nezpracovaná %s schránka (%s)"
+
+#: ../src/mn-mailbox-view.gob:528
+#, c-format
+msgid "%s mailbox"
+msgstr "%s schránka"
+
+#: ../src/mn-mailbox-view.gob:543
+msgid "detecting mailbox type..."
+msgstr "detekuji typ schránky..."
+
+#: ../src/mn-mailbox.gob:278
+msgid "\"type\" attribute missing"
+msgstr "atribut \"type\" chybí"
+
+#: ../src/mn-mailbox.gob:285
+#, c-format
+msgid "unknown mailbox type \"%s\""
+msgstr "neznámý typ schránky \"%s\""
+
+#: ../src/mn-mailbox.gob:305
+#, c-format
+msgid ""
+"property \"%s\": unable to transform string \"%s\" into a value of type \"%s"
+"\""
+msgstr ""
+"vlastnost \"%s\": nemohu převést řetězec \"%s\" do hodnoty typu \"%s\""
+
+#: ../src/mn-mailbox.gob:744
+#, c-format
+msgid "property \"%s\" has no value"
+msgstr "vlastnost \"%s\" nemá žádnou hodnotu"
+
+#: ../src/mn-mailboxes.gob:203
+msgid "An error has occurred while importing old mailboxes"
+msgstr "Při importování starých schránek nastala chyba"
+
+#: ../src/mn-mailboxes.gob:248
+msgid "Unable to load the mailboxes configuration"
+msgstr "Nemohu načíst nastavení schránek"
+
+#: ../src/mn-mailboxes.gob:294
+msgid "Unable to parse the XML document."
+msgstr "Nemohu zpracovat XML dokument."
+
+#: ../src/mn-mailboxes.gob:301
+msgid "The root element is missing."
+msgstr "Kořenový elemtn chybí."
+
+#: ../src/mn-mailboxes.gob:307
+#, c-format
+msgid "The root element \"%s\" is invalid."
+msgstr "Kořenový element \"%s\" je neplatný."
+
+#: ../src/mn-mailboxes.gob:330
+#, c-format
+msgid "On line %i: %s."
+msgstr "Na řádku %i: %s."
+
+#: ../src/mn-mailboxes.gob:335
+#, c-format
+msgid "On line %i: unknown element \"%s\"."
+msgstr "Na řádku %i: neznámý element \"%s\"."
+
+#: ../src/mn-mailboxes.gob:346
+msgid "An error has occurred while loading the mailboxes configuration"
+msgid_plural "Errors have occurred while loading the mailboxes configuration"
+msgstr[0] "Při načítání nastavení schránek nastala chyba"
+msgstr[1] "Při načítání nastavení schránek nastaly chyby"
+msgstr[2] "Při načítání nastavení schránek nastaly chyby"
+
+#: ../src/mn-mailboxes.gob:371
+msgid "Unable to save the mailboxes configuration"
+msgstr "Nemohu uložit nastavení schránek"
+
+#: ../src/mn-mailboxes.gob:417
+msgid "Unable to write the XML document."
+msgstr "Nemohu zapsat XML dokument."
+
+#. non fatal
+#: ../src/mn-mailboxes.gob:433
+#, c-format
+msgid "unable to delete %s: %s"
+msgstr "nemohu smazat %s: %s"
+
+#: ../src/mn-mailboxes.gob:457
+#, c-format
+msgid "%s has %i new message"
+msgid_plural "%s has %i new messages"
+msgstr[0] "%s má %i novou zprávu"
+msgstr[1] "%s má %i nové zprávy"
+msgstr[2] "%s má %i nových zpráv"
+
+#: ../src/mn-mailboxes.gob:483
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s hlásí chybu: %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:111
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "nemohu otevřít služku \"new\": %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:144
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "nemohu zavřít složku \"new\": %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:147
+#, c-format
+msgid "error while reading folder \"new\": %s"
+msgstr "chyba během čtení složky \"new\": %s"
+
+#: ../src/mn-main-window.gob:106
+msgid "Help messages"
+msgstr "Zprávy s nápovědou"
+
+#: ../src/mn-main-window.gob:107
+msgid "Count messages"
+msgstr "Zprávy o počtu"
+
+#. Toplevel
+#: ../src/mn-main-window.gob:156
+msgid "_Mail"
+msgstr "_Pošta"
+
+#: ../src/mn-main-window.gob:157
+msgid "_Edit"
+msgstr "_Upravit"
+
+#: ../src/mn-main-window.gob:158
+msgid "_View"
+msgstr "_Zobrazit"
+
+#: ../src/mn-main-window.gob:159
+msgid "_Help"
+msgstr "_Nápověda"
+
+#: ../src/mn-main-window.gob:167
+msgid "Launch the mail reader"
+msgstr "Spustit poštovní program"
+
+#. Reload
+#: ../src/mn-main-window.gob:175 ../src/mn-main.c:248
+msgid "Update the mail status"
+msgstr "Aktualizovat stav pošty"
+
+#: ../src/mn-main-window.gob:181
+msgid "_Close"
+msgstr "_Zavřít"
+
+#: ../src/mn-main-window.gob:183
+msgid "Close this window"
+msgstr "Zavřít toto okno"
+
+#: ../src/mn-main-window.gob:189
+msgid "_Quit"
+msgstr "_Ukončit"
+
+#: ../src/mn-main-window.gob:191 ../src/mn-main.c:266
+msgid "Quit Mail Notification"
+msgstr "Ukončit Upozornění na poštu"
+
+#: ../src/mn-main-window.gob:199 ../src/mn-main-window.gob:247
+msgid "_Toolbars"
+msgstr "_Lišty nástrojů"
+
+#: ../src/mn-main-window.gob:201
+msgid "Customize the toolbars"
+msgstr "Upravit lišty nástrojů"
+
+#: ../src/mn-main-window.gob:207
+msgid "_Preferences"
+msgstr "_Nastavení"
+
+#: ../src/mn-main-window.gob:217
+msgid "Toolbars Styl_e"
+msgstr "_Vzhled lišt nástrojů"
+
+#: ../src/mn-main-window.gob:219
+msgid "Customize the toolbars style"
+msgstr "Upravit vzhled lišt nástrojů"
+
+#: ../src/mn-main-window.gob:227
+msgid "_Contents"
+msgstr "_Obsah"
+
+#: ../src/mn-main-window.gob:229
+msgid "Display help"
+msgstr "Zobrazit nápovědu"
+
+#: ../src/mn-main-window.gob:235
+msgid "_About"
+msgstr "_O Upozornění na poštu"
+
+#: ../src/mn-main-window.gob:237
+msgid "Display credits"
+msgstr "Kredity"
+
+#: ../src/mn-main-window.gob:249
+msgid "Show or hide the toolbars"
+msgstr "Zobrazit nebo skrýt lišty nástrojů"
+
+#: ../src/mn-main-window.gob:256
+msgid "_Statusbar"
+msgstr "_Statová lišta"
+
+#: ../src/mn-main-window.gob:258
+msgid "Show or hide the statusbar"
+msgstr "Zobrazit nebo skrýt statovou lištu"
+
+#: ../src/mn-main-window.gob:269
+msgid "_Desktop Default"
+msgstr "_Výchozí nastavení"
+
+#: ../src/mn-main-window.gob:271
+msgid "Set the toolbars style to the desktop default setting"
+msgstr "Nastaví vzhled lišt nástrojů do výchozího nastavení prostřední GNOME"
+
+#: ../src/mn-main-window.gob:277
+msgid "I_cons Only"
+msgstr "Pouze _ikony"
+
+#: ../src/mn-main-window.gob:279
+msgid "Only display the toolbars icons"
+msgstr "Zobrazí pouze ikony v lištách nástrojů"
+
+#: ../src/mn-main-window.gob:285
+msgid "_Text Only"
+msgstr "Pouze _text"
+
+#: ../src/mn-main-window.gob:287
+msgid "Only display the toolbars text"
+msgstr "Zobrazit pouze textové popisy v lištách nástrojů"
+
+#: ../src/mn-main-window.gob:293
+msgid "Text Belo_w Icons"
+msgstr "T_ext pod ikonami"
+
+#: ../src/mn-main-window.gob:295
+msgid "Display the toolbars text below the icons"
+msgstr "Zobrazit lišty nástrojů s texty pod ikonami"
+
+#: ../src/mn-main-window.gob:301
+msgid "Text Be_side Icons"
+msgstr "Text _vedle ikon"
+
+#: ../src/mn-main-window.gob:303
+msgid "Display the toolbars text beside the icons"
+msgstr "Zobrazit lišty nástrojů s texty vedle ikon"
+
+#: ../src/mn-main-window.gob:345
+#, c-format
+msgid "unable to load menus.xml: %s"
+msgstr "nemohu načíst menus.xml: %s"
+
+#: ../src/mn-main-window.gob:388
+msgid "unable to load toolbars.xml"
+msgstr "nemohu načíst toolbars.xml"
+
+#: ../src/mn-main-window.gob:439
+#, c-format
+msgid "%i new message"
+msgid_plural "%i new messages"
+msgstr[0] "%i nová zpráva"
+msgstr[1] "%i nové zprávy"
+msgstr[2] "%i nových zpráv"
+
+#.
+#. * 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 "Podporované typy schránek v této kompilaci: "
+
+#: ../src/mn-main.c:124
+msgid "Compiled-in POP3 and IMAP features: "
+msgstr "Funkce POP3 a IMAP zahrnuté v této kompilaci: "
+
+#: ../src/mn-main.c:194
+msgid "Enable informational output"
+msgstr "Povolit informační výstup"
+
+#: ../src/mn-main.c:203
+msgid "List the compiled-in features"
+msgstr "Vypsat funkce zahrnuté v této kompilaci"
+
+#: ../src/mn-main.c:212
+msgid "Display the main window"
+msgstr "Zobrazit hlavní okno"
+
+#: ../src/mn-main.c:221
+msgid "Display the properties dialog"
+msgstr "Zobrazit dialog nastavení"
+
+#: ../src/mn-main.c:230
+msgid "Display the about dialog"
+msgstr "Zobrazit dialog O aplikaci"
+
+#: ../src/mn-main.c:239
+msgid "Close the mail summary popup"
+msgstr "Zavřít vyskakovací souhrn pošty"
+
+#: ../src/mn-main.c:257
+msgid "Unset obsolete GConf configuration"
+msgstr "Odnastavit zastaralé nastavení GConf"
+
+#.
+#. * We can't use mn_error_dialog() because gtk_init() has not been
+#. * called yet.
+#.
+#: ../src/mn-main.c:293
+msgid "multi-threading is not available"
+msgstr "vlákna nejsou k dispozici"
+
+#: ../src/mn-main.c:355
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo nemůže nalézt automation objekt. Prosím zkontrolujte instalaci "
+"Upozornění na poštu."
+
+#: ../src/mn-main.c:361
+msgid "quitting Mail Notification"
+msgstr "ukončuji Upozornění na poštu"
+
+#: ../src/mn-main.c:365
+msgid "Mail Notification is not running"
+msgstr "Upozornění na poštu neběží"
+
+#: ../src/mn-main.c:372
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "Nemohu inicializovat knihovnu GnomeVFS."
+
+#: ../src/mn-main.c:404
+msgid "updating the mail status"
+msgstr "aktualizuji stav pošty"
+
+#: ../src/mn-main.c:413
+msgid "Mail Notification is already running"
+msgstr "Upozornění na poštu již běží"
+
+#: ../src/mn-main.c:423
+#, c-format
+msgid ""
+"Bonobo could not locate the %s file. Please check your Mail Notification "
+"installation."
+msgstr ""
+"Bonobo nemohlo najít soubor %s. Prosím zkontrolujte instalaci Upozornění "
+"na poštu."
+
+#: ../src/mn-mbox-mailbox-backend.gob:209
+#, c-format
+msgid "unable to close file: %s"
+msgstr "nemohu zavřít soubor: %s"
+
+#: ../src/mn-mbox-mailbox-backend.gob:226
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "nemohu otevřít soubor: %s"
+
+#: ../src/mn-message-mime.c:104
+msgid "unable to parse MIME message"
+msgstr "nemohu zpracovat MIME zprávu"
+
+#: ../src/mn-message-view.gob:82
+msgid "You have no new mail."
+msgstr "Nemáte žádnou novou poštu."
+
+#: ../src/mn-message-view.gob:322
+msgid "Unreadable message"
+msgstr "Nečitelná zpráva"
+
+#: ../src/mn-message-view.gob:330
+msgid "From"
+msgstr "Od"
+
+#: ../src/mn-message-view.gob:338
+msgid "Subject"
+msgstr "Předmět"
+
+#: ../src/mn-message-view.gob:349
+msgid "Sent"
+msgstr "Odesláno"
+
+#: ../src/mn-message.gob:99
+msgid "Unknown"
+msgstr "Neznámý"
+
+#: ../src/mn-message.gob:124
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] "před %i sekundou"
+msgstr[1] "před %i sekundami"
+msgstr[2] "před %i sekundami"
+
+#: ../src/mn-message.gob:128
+#, c-format
+msgid "about %i minute ago"
+msgid_plural "about %i minutes ago"
+msgstr[0] "před %i minutou"
+msgstr[1] "před %i minutami"
+msgstr[2] "před %i minutami"
+
+#: ../src/mn-message.gob:133
+#, c-format
+msgid "about %i hour ago"
+msgid_plural "about %i hours ago"
+msgstr[0] "před %i hodinou"
+msgstr[1] "před %i hodinami"
+msgstr[2] "před %i hodinami"
+
+#: ../src/mn-message.gob:138
+#, c-format
+msgid "about %i day ago"
+msgid_plural "about %i days ago"
+msgstr[0] "před %i dnem"
+msgstr[1] "před %i dny"
+msgstr[2] "před %i dny"
+
+#: ../src/mn-message.gob:143
+#, c-format
+msgid "about %i week ago"
+msgid_plural "about %i weeks ago"
+msgstr[0] "před %i týdnem"
+msgstr[1] "před %i týdny"
+msgstr[2] "před %i týdny"
+
+#. translators: "none" is used like "Mailbox: none"
+#: ../src/mn-message.gob:163
+msgid "none"
+msgstr "žádná"
+
+#: ../src/mn-mh-mailbox-backend.gob:161
+#, c-format
+msgid "error while reading %s: %s"
+msgstr "chyba při čtení %s: %s"
+
+#: ../src/mn-mh-mailbox-backend.gob:174
+#, c-format
+msgid "unable to open %s: %s"
+msgstr "nemohu otevřít %s: %s"
+
+#: ../src/mn-pi-mailbox-properties.gob:67
+msgid "sta_ndard"
+msgstr "_běžný"
+
+#: ../src/mn-pi-mailbox-properties.gob:68
+msgid "_in-band SSL/TLS"
+msgstr "_SSL/TLS"
+
+#: ../src/mn-pi-mailbox-properties.gob:69
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLS _na samostatném portu"
+
+#: ../src/mn-pi-mailbox-properties.gob:73
+msgid "_Hostname:"
+msgstr "_Jméno počítače:"
+
+#: ../src/mn-pi-mailbox-properties.gob:93
+msgid "_Details"
+msgstr "_Detaily"
+
+#: ../src/mn-pi-mailbox-properties.gob:148
+msgid "Connection type:"
+msgstr "_Typ spojení:"
+
+#: ../src/mn-pi-mailbox-properties.gob:155
+msgid "Port:"
+msgstr "Port:"
+
+#: ../src/mn-pi-mailbox-properties.gob:178
+msgid "_Authentication mechanism:"
+msgstr "_Přihlašovací mechanismus:"
+
+#: ../src/mn-pi-mailbox.gob:113
+msgid "SSL/TLS support has not been compiled in"
+msgstr "Podpora SSL/TLS není zahrnuta v této kompilaci"
+
+#: ../src/mn-pop3-mailbox.gob:359
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr "nesmyslné hodnoty pro LOGIN-DELAY capabilitu"
+
+#.
+#. * 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:519
+msgid ""
+"SASL authentication with initial client response failed, retrying without "
+"initial client response"
+msgstr ""
+"Přihlášení SASL s úvodní odezvou klienta selhalo, zkouším bez úvodní odezvy "
+" klienta"
+
+#: ../src/mn-pop3-mailbox.gob:733
+msgid "unknown error"
+msgstr "neznámá chyba"
+
+#: ../src/mn-pop3-mailbox.gob:828
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
+msgstr[0] "respektuji LOGIN-DELAY, čekám %i sekundu"
+msgstr[1] "respektuji LOGIN-DELAY, čekám %i sekundy"
+msgstr[2] "respektuji LOGIN-DELAY, čekám %i sekund"
+
+#: ../src/mn-pop3-mailbox.gob:1009
+msgid "server does not support APOP authentication"
+msgstr "server nepodporuje přihlášení APOP"
+
+#: ../src/mn-pop3-mailbox.gob:1065
+msgid "falling back to APOP authentication"
+msgstr "zkouším přihlášení APOP"
+
+#: ../src/mn-pop3-mailbox.gob:1070
+msgid "falling back to USER/PASS authentication"
+msgstr "zkouším přihlášení USER/PASS"
+
+#: ../src/mn-properties-dialog.gob:170 ../ui/properties-dialog.glade.h:10
+msgid "Mail Notification Properties"
+msgstr "Vlastnosti Upozornění na poštu"
+
+#: ../src/mn-properties-dialog.gob:207
+msgid "top left"
+msgstr "vlevo nahoře"
+
+#: ../src/mn-properties-dialog.gob:208
+msgid "top right"
+msgstr "vpravo nahoře"
+
+#: ../src/mn-properties-dialog.gob:209
+msgid "bottom left"
+msgstr "vlevo dole"
+
+#: ../src/mn-properties-dialog.gob:210
+msgid "bottom right"
+msgstr "vpravo dole"
+
+#: ../src/mn-properties-dialog.gob:329
+msgid "No mailbox selected."
+msgstr "Není vybrána žádná schránka."
+
+#: ../src/mn-properties-dialog.gob:334
+#, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] "Vybrána %i schránka."
+msgstr[1] "Vybrány %i schránky."
+msgstr[2] "Vybráno %i schránek."
+
+#: ../src/mn-properties-dialog.gob:465
+#, c-format
+msgid "Test message #%i"
+msgstr "Ukázková zpráva #%i"
+
+#: ../src/mn-properties-dialog.gob:470
+msgid "Mail Notification Properties Dialog"
+msgstr "Dialog nastavení Upozornění na poštu"
+
+#: ../src/mn-shell.gob:109
+msgid "You have new mail."
+msgstr "Máte novou poštu."
+
+#: ../src/mn-shell.gob:374
+msgid "Mailboxes Having New Mail"
+msgstr "Schránky s novou poštou"
+
+#: ../src/mn-shell.gob:393
+msgid "Errors"
+msgstr "Chyby"
+
+#: ../src/mn-shell.gob:408
+msgid "Mail Summary"
+msgstr "Souhrn pošty"
+
+#: ../src/mn-ssl.c:76
+msgid "unknown SSL/TLS error"
+msgstr "neznámá SSL/TLS chyba"
+
+#: ../src/mn-stock.c:28
+msgid "Select _All"
+msgstr "Vybrat _vše"
+
+#: ../src/mn-stock.c:29
+msgid "Leave Fullscreen"
+msgstr "Opustit celoobrazovkové zobrazení"
+
+#: ../src/mn-stock.c:30
+msgid "Co_nnect"
+msgstr "_Připojit"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:170
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "nemohu otevřít složku: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:209
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "nemohu zavřít složku: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:212
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "chyba při čtení složky: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:256
+msgid "unexpected end of file"
+msgstr "neočekávaný konec souboru"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:270
+#, c-format
+msgid "incompatible file version \"%i\""
+msgstr "nekompatibilní verze souboru \"%i\""
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:273
+msgid "file version missing"
+msgstr "chybí verze souboru"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:39
+#: ../src/mn-system-vfs-mailbox-properties.gob:47
+#: ../src/mn-system-vfs-mailbox.gob:45
+msgid "System mailbox"
+msgstr "Systémová schránka"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:68
+#, c-format
+msgid "Your system mailbox is <span weight=\"bold\">%s</span>."
+msgstr "Vaše systémová schránka je <span weight=\"bold\">%s</span>."
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:75
+msgid ""
+"The location of your system mailbox could not be detected. Check the MAIL "
+"environment variable."
+msgstr ""
+"Umístění systémovés chránky nemohlo být určeno. Zkontrolujte proměnnou "
+"prostředí MAIL."
+
+#: ../src/mn-system-vfs-mailbox.gob:72
+msgid "MAIL environment variable not defined"
+msgstr "Proměnná prostředí MAIL není definována"
+
+#: ../src/mn-util.c:281
+#, c-format
+msgid "error loading image: %s"
+msgstr "nemohu načíst obrázek: %s"
+
+#: ../src/mn-util.c:298
+#, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "widget \"%s\" nebyl nalezen v rozhraní \"%s\""
+
+#: ../src/mn-util.c:398
+#, c-format
+msgid "unable to open self as a module: %s"
+msgstr "nemohu otevřít sebe jako modul: %s"
+
+#: ../src/mn-util.c:403
+#, c-format
+msgid "signal handler \"%s\" not found"
+msgstr "signal handler \"%s\" nebyl nalezen"
+
+#: ../src/mn-util.c:556 ../src/mn-util.c:579 ../src/mn-util.c:601
+#: ../src/mn-util.c:623
+msgid "A drag and drop error has occurred"
+msgstr "Nastala chyba přetažení"
+
+#: ../src/mn-util.c:557
+msgid "An invalid location list has been received."
+msgstr "Obdržen neplatný seznam umístění."
+
+#: ../src/mn-util.c:602
+msgid "An invalid Mozilla location has been received."
+msgstr "Obdrženo neplatné umístění programu Mozilla."
+
+#: ../src/mn-util.c:678
+msgid "Unable to display help"
+msgstr "Nemohu zobrazit nápovědu"
+
+#: ../src/mn-util.c:692
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "Nemohu vytvořit vlákno: %s."
+
+#: ../src/mn-util.c:782
+msgid "_Do not show this message again"
+msgstr "_Příště nezobrazit tuto zprávu"
+
+#: ../src/mn-util.c:892
+#, c-format
+msgid ""
+"The following location is invalid:\n"
+"\n"
+"%s"
+msgid_plural ""
+"The following locations are invalid:\n"
+"\n"
+"%s"
+msgstr[0] ""
+"Následující umístění je neplatné:\n"
+"\n"
+"%s"
+msgstr[1] ""
+"Následující umístění jsou neplatná:\n"
+"\n"
+"%s"
+msgstr[2] ""
+"Následující umístění jsou neplatná:\n"
+"\n"
+"%s"
+
+#: ../src/mn-util.c:912
+msgid "A fatal error has occurred in Mail Notification"
+msgstr "Nastala fatální chyba"
+
+#: ../src/mn-util.c:951
+#, c-format
+msgid "unable to get current time: %s"
+msgstr "nemohu získat aktuální čas: %s"
+
+#: ../src/mn-util.c:1013
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr "neplatná specifikace signálu \"%s\""
+
+#: ../src/mn-util.c:1052
+msgid "A command error has occurred in Mail Notification"
+msgstr "Nastala chyba při spouštění příkazu"
+
+#: ../src/mn-util.c:1053
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "Nemohu spustit \"%s\": %s."
+
+#: ../src/mn-util.c:1311
+#, c-format
+msgid "unable to rename %s to %s: %s"
+msgstr "nemohu přejmenovat %s na %s: %s"
+
+#: ../src/mn-vfs-mailbox-backend.gob:117
+#, c-format
+msgid "unable to monitor mailbox contents (%s), poll mode activated"
+msgstr "nemohu sledovat obsah schránky (%s), poll režim aktivován"
+
+#: ../src/mn-vfs-mailbox.gob:238
+#, c-format
+msgid "unable to monitor mailbox type (%s), poll mode activated"
+msgstr "nemohu sledovat typ schránky (%s), poll režim aktivován"
+
+#: ../src/mn-vfs-mailbox.gob:307
+msgid "unknown mailbox format"
+msgstr "neznámý formát schránky"
+
+#: ../src/mn-vfs-mailbox.gob:307
+msgid "does not exist"
+msgstr "neexistuje"
+
+#: ../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] ""
+"Kontrola proběhne každou %i sekundu (tento interval je nastavitelný "
+"v dialogu Nastavení)."
+msgstr[1] ""
+"Kontrola proběhne každé %i sekundy (tento interval je nastavitelný "
+"v dialogu Nastavení)."
+msgstr[2] ""
+"Kontrola proběhne každých %i sekund (tento interval je nastavitelný "
+"v dialogu Nastavení)."
+
+#: ../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] ""
+"Kontrola proběhne každou %i minutu (tento interval je nastavitelný "
+"v dialogu Nastavení)."
+msgstr[1] ""
+"Kontrola proběhne každé %i minuty (tento interval je nastavitelný "
+"v dialogu Nastavení)."
+msgstr[2] ""
+"Kontrola proběhne každých %i minut (tento interval je nastavitelný "
+"v dialogu Nastavení)."
+
+#: ../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] ""
+"Kontrola proběhne přibližně každou %i minutu (tento interval je nastavitelný "
+"v dialogu Nastavení)."
+msgstr[1] ""
+"Kontrola proběhne přibližně každé %i minuty (tento interval je nastavitelný "
+"v dialogu Nastavení)."
+msgstr[2] ""
+"Kontrola proběhne přibližně každých %i minut (tento interval je nastavitelný "
+"v dialogu Nastavení)."
+
+#: ../src/mn-vfs-mailbox.gob:415
+msgid "A monitoring error has occurred"
+msgstr "Nastala chyba sledování"
+
+#: ../src/mn-vfs-mailbox.gob:416
+#, c-format
+msgid ""
+"Mail Notification was unable to enable immediate notification for one or "
+"more mailboxes. %s"
+msgstr ""
+"Nemohu zapnout okamžité upozorňování pro jednu nebo více schránek. %s"
+
+#: ../ui/edit-toolbars-dialog.glade.h:1
+msgid "Edit Toolbars"
+msgstr "Upravit lišty nástrojů"
+
+#: ../ui/edit-toolbars-dialog.glade.h:2
+msgid "_Add a New Toolbar"
+msgstr "_Přidat novou lištu nástrojů"
+
+#: ../ui/edit-toolbars-dialog.glade.h:3
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "_Use Default"
+msgstr "_Použít výchozí"
+
+#: ../ui/mail-summary-popup.glade.h:1
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span size=\"larger\" weight=\"bold\">Souhrn pošty</span>"
+
+#: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:4
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Všeobecné</span>"
+
+#: ../ui/mailbox-properties-dialog.glade.h:2
+msgid "Mailbox _name:"
+msgstr "_Jméno schránky:"
+
+#: ../ui/mailbox-properties-dialog.glade.h:3
+msgid "Mailbox _type:"
+msgstr "_Typ schránky:"
+
+#: ../ui/properties-dialog.glade.h:1
+msgid "<span weight=\"bold\">Commands</span>"
+msgstr "<span weight=\"bold\">Příkazy</span>"
+
+#: ../ui/properties-dialog.glade.h:2
+msgid "<span weight=\"bold\">Double-click Action</span>"
+msgstr "<span weight=\"bold\">Dvojité kliknutí</span>"
+
+#: ../ui/properties-dialog.glade.h:3
+msgid "<span weight=\"bold\">Fonts</span>"
+msgstr "<span weight=\"bold\">Písma</span>"
+
+#: ../ui/properties-dialog.glade.h:5
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Seznam schránek</span>"
+
+#: ../ui/properties-dialog.glade.h:6
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Umístění</span>"
+
+#: ../ui/properties-dialog.glade.h:7
+msgid "Co_ntents:"
+msgstr "_Obsah:"
+
+#: ../ui/properties-dialog.glade.h:8
+msgid "Dis_play mail summary in tooltip"
+msgstr "Z_obrazovat souhrn pošty v tooltipu"
+
+#: ../ui/properties-dialog.glade.h:9
+msgid "General"
+msgstr "Všeobecné"
+
+#: ../ui/properties-dialog.glade.h:11
+msgid "Mail Summary Popup"
+msgstr "Vyskakovací souhrn pošty"
+
+#: ../ui/properties-dialog.glade.h:12
+msgid "Mailboxes"
+msgstr "Schránky"
+
+#: ../ui/properties-dialog.glade.h:13
+msgid "Only display _recent mail"
+msgstr "Zobrazovat _pouze nedávnou poštu"
+
+#: ../ui/properties-dialog.glade.h:14
+msgid "Use these _fonts:"
+msgstr "Použít _tato písma:"
+
+#: ../ui/properties-dialog.glade.h:15
+msgid "When _all mail has been read:"
+msgstr "Když _je veškerá pošta přečtena:"
+
+#: ../ui/properties-dialog.glade.h:16
+msgid "When _new mail arrives:"
+msgstr "Když _dorazí nová pošta:"
+
+#: ../ui/properties-dialog.glade.h:17
+msgid "_Automatically close after:"
+msgstr "_Automaticky zavřít po:"
+
+#: ../ui/properties-dialog.glade.h:18
+msgid "_Blink on errors"
+msgstr "_Blikat při chybě"
+
+#: ../ui/properties-dialog.glade.h:19
+msgid "_Delay between mail checks:"
+msgstr "_Interval mezi kontrolami pošty:"
+
+#: ../ui/properties-dialog.glade.h:20
+msgid "_Display a Test Popup"
+msgstr "Zo_brazit ukázku"
+
+#: ../ui/properties-dialog.glade.h:21
+msgid "_Display the main window"
+msgstr "Zobrazit _hlavní okno"
+
+#: ../ui/properties-dialog.glade.h:22
+msgid "_Enable mail summary popup"
+msgstr "Zapnout vyskakovací _souhrn pošty"
+
+#: ../ui/properties-dialog.glade.h:23
+msgid "_Horizontal offset:"
+msgstr "_Horizontální odsazení:"
+
+#: ../ui/properties-dialog.glade.h:24
+msgid "_Launch the mail reader"
+msgstr "Sp_ustit poštovní program"
+
+#: ../ui/properties-dialog.glade.h:25
+msgid "_Mail reader:"
+msgstr "_Poštovní program:"
+
+#: ../ui/properties-dialog.glade.h:26
+msgid "_Position:"
+msgstr "_Umístění:"
+
+#: ../ui/properties-dialog.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "_Spustit Upozornění na poštu při spuštění GNOME"
+
+#: ../ui/properties-dialog.glade.h:28
+msgid "_Title:"
+msgstr "_Titulek:"
+
+#: ../ui/properties-dialog.glade.h:29
+msgid "_Update the mail status"
+msgstr "_Aktualizovat stav pošty"
+
+#: ../ui/properties-dialog.glade.h:30
+msgid "_Use fonts from theme"
+msgstr "P_oužít písma z tématu"
+
+#: ../ui/properties-dialog.glade.h:31
+msgid "_Vertical offset:"
+msgstr "_Vertikální odsazení:"
+
+#: ../ui/properties-dialog.glade.h:32
+msgid "minutes"
+msgstr "minut"
+
+#: ../ui/properties-dialog.glade.h:33
+msgid "pixels"
+msgstr "pixelů"
+
+#: ../ui/properties-dialog.glade.h:34
+msgid "seconds"
+msgstr "sekund"
diff --git a/po/de.po b/po/de.po
@@ -1,5 +1,5 @@
 # German translations for mail-notification.
-# Copyright (C) 2003-2005 Jean-Yves Lefort.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
 #
 # This file is distributed under the same license as the
 # mail-notification package.
diff --git a/po/fr.po b/po/fr.po
@@ -1,5 +1,5 @@
 # French translations for mail-notification.
-# Copyright (C) 2003-2005 Jean-Yves Lefort.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
 #
 # This file is distributed under the same license as the
 # mail-notification package.
@@ -8,10 +8,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: mail-notification 2.0\n"
+"Project-Id-Version: mail-notification 3.0-rc1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2005-08-09 18:03+0200\n"
-"PO-Revision-Date: 2005-08-09 21:21+0200\n"
+"POT-Creation-Date: 2006-05-16 02:11+0200\n"
+"PO-Revision-Date: 2006-05-16 02:12+0200\n"
 "Last-Translator: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "Language-Team: Jean-Yves Lefort <jylefort@brutele.be>\n"
 "MIME-Version: 1.0\n"
@@ -21,11 +21,11 @@ msgstr ""
 
 #: ../data/GNOME_MailNotification.server.in.in.h:1
 msgid "Mail Notification automation"
-msgstr "automation Notification de Courrier"
+msgstr "automation de l'avertisseur de courrier"
 
 #: ../data/GNOME_MailNotification.server.in.in.h:2
 msgid "Mail Notification automation factory"
-msgstr "usine d'automation Notification de Courrier"
+msgstr "usine d'automation de l'avertisseur de courrier"
 
 #: ../data/GNOME_MailNotification_Evolution.server.in.h:1
 msgid "Evolution folder tree control"
@@ -37,157 +37,121 @@ msgstr "usine de contrôle Evolution \"hiérarchie de dossiers\""
 
 #: ../data/GNOME_MailNotification_Evolution.server.in.h:3
 msgid "Mail Notification / Evolution glue"
-msgstr "colle Notification de Courrier / Evolution"
+msgstr "colle avertisseur de courrier / Evolution"
 
 #: ../data/GNOME_MailNotification_Evolution.server.in.h:4
 msgid "Mail Notification / Evolution glue factory"
-msgstr "usine de colle Notification de Courrier / Evolution"
+msgstr "usine de colle avertisseur de courrier / Evolution"
 
 #: ../data/mail-notification-properties.desktop.in.h:1
-#: ../src/mn-main-window.gob:209
 msgid "Configure Mail Notification"
-msgstr "Configurer la Notification de Courrier"
+msgstr "Configurer l'avertisseur de courrier"
 
 #: ../data/mail-notification-properties.desktop.in.h:2
-#: ../data/mail-notification.desktop.in.h:2
-#: ../data/mail-notification.soundlist.in.h:1 ../src/mn-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 "Notification de Courrier"
+msgstr "Avertisseur de courrier"
 
 #: ../data/mail-notification.desktop.in.h:1
 msgid "Get notified when new mail arrives"
-msgstr "Etre notifié lorsque du nouveau courrier arrive"
+msgstr "Etre averti lorsque du nouveau courrier arrive"
 
 #: ../data/mail-notification.schemas.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:2
+#: ../data/mail-notification.schemas.in.h:3
 msgid "Blink on errors"
 msgstr "Clignoter lors d'erreurs"
 
-#: ../data/mail-notification.schemas.in.h:3
-msgid "Delay between mail checks (minutes part)."
-msgstr "Délai entre les vérifications de courrier (partie minutes)."
-
 #: ../data/mail-notification.schemas.in.h:4
-msgid "Delay between mail checks (seconds part)."
-msgstr "Délai entre les vérifications de courrier (partie secondes)."
+msgid "Click action"
+msgstr "Action du click"
 
 #: ../data/mail-notification.schemas.in.h:5
-msgid "Display mail summary in tooltip"
-msgstr "Afficher l'aperçu du courrier dans le tooltip"
+msgid "Display seen mail"
+msgstr "Afficher le courrier vu"
 
 #: ../data/mail-notification.schemas.in.h:6
-msgid "Do not show the immediate notification error dialog"
-msgstr ""
-"Ne pas afficher la boîte de dialogue contenant l'erreur de notification "
-"immédiate"
-
-#: ../data/mail-notification.schemas.in.h:7
-msgid "Double-click action"
-msgstr "Action du Double-click"
-
-#: ../data/mail-notification.schemas.in.h:8
 msgid "Enable mail summary popup"
 msgstr "Activer le popup d'aperçu du courrier"
 
-#: ../data/mail-notification.schemas.in.h:9
+#: ../data/mail-notification.schemas.in.h:7
 msgid "Fingerprints of trusted X509 certificates"
 msgstr "Empreintes digitales des certificats X509 de confiance"
 
-#: ../data/mail-notification.schemas.in.h:10
-msgid "Height of edit toolbars dialog"
-msgstr "Hauteur de la boîte de dialogue contenant l'éditeur de barres d'outils"
-
-#: ../data/mail-notification.schemas.in.h:11
-msgid "Height of main window"
-msgstr "Hauteur de la fenêtre principale"
-
-#: ../data/mail-notification.schemas.in.h:12
+#: ../data/mail-notification.schemas.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:13
+#: ../data/mail-notification.schemas.in.h:9
 msgid "Mail read command"
 msgstr "Commande de courrier lu"
 
-#: ../data/mail-notification.schemas.in.h:14
-msgid "Mail reader command"
-msgstr "Commande de lecteur de courrier"
-
-#: ../data/mail-notification.schemas.in.h:15
+#: ../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:16
+#: ../data/mail-notification.schemas.in.h:11
 msgid "Mail summary popup fonts aspect source"
 msgstr ""
 "Source d'aspect des polices de caractères du popup d'aperçu du courrier"
 
-#: ../data/mail-notification.schemas.in.h:17
+#: ../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.h:18
+#: ../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.h:19
+#: ../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.h:20
+#: ../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.h:21
-msgid "Minutes between mail checks"
-msgstr "Minutes entre les vérifications de courrier"
-
-#: ../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 "Minutes à attendre avant de fermer le popup d'aperçu du courrier"
 
-#: ../data/mail-notification.schemas.in.h:23
+#: ../data/mail-notification.schemas.in.h:17
 msgid "New mail command"
 msgstr "Commande de nouveau message"
 
-#: ../data/mail-notification.schemas.in.h:24
+#: ../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:25
+#: ../data/mail-notification.schemas.in.h:19
 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:26
+#: ../data/mail-notification.schemas.in.h:20
 msgid "Run a command when new mail arrives"
 msgstr "Exécuter une commande lorsque du nouveau courrier arrive"
 
-#: ../data/mail-notification.schemas.in.h:27
-msgid "Seconds between mail checks"
-msgstr "Secondes entre les vérifications de courrier"
-
-#: ../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 "Secondes à attendre avant de fermer le popup d'aperçu du courrier"
 
-#: ../data/mail-notification.schemas.in.h:29
-msgid "Set a mail reader"
-msgstr "Spécifier un lecteur de courrier"
-
-#: ../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\"."
+"The action to perform when the icon is clicked. Must be \"display-properties-"
+"dialog\", \"launch-mail-reader\" or \"update-mail-status\"."
 msgstr ""
-"L'action à effectuer lorsque l'icône est double-clickée. Doit être \"display-"
-"main-window\", \"launch-mail-reader\" ou \"update-mail-status\"."
+"L'action à effectuer lorsque l'icône est clickée. Doit être \"display-"
+"properties-dialog\", \"launch-mail-reader\" ou \"update-mail-status\"."
 
-#: ../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)."
@@ -195,7 +159,7 @@ msgstr ""
 "La quantité de temps à attendre avant de fermer le popup d'aperçu du "
 "courrier (partie minutes)."
 
-#: ../data/mail-notification.schemas.in.h:32
+#: ../data/mail-notification.schemas.in.h:24
 msgid ""
 "The amount of time to wait before closing the mail summary popup (seconds "
 "part)."
@@ -203,7 +167,7 @@ msgstr ""
 "La quantité de temps à attendre avant de fermer le popup d'aperçu du "
 "courrier (partie secondes)."
 
-#: ../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\"."
@@ -211,45 +175,31 @@ 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:34
-msgid "The command to run to launch the mail reader."
-msgstr "La commande à exécuter pour démarrer le lecteur de courrier."
-
-#: ../data/mail-notification.schemas.in.h:35
+#: ../data/mail-notification.schemas.in.h:26
 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:36
+#: ../data/mail-notification.schemas.in.h:27
 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:37
+#: ../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:38
+#: ../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.h:39
-msgid "The height of the edit toolbars dialog in pixels."
-msgstr ""
-"La hauteur de la boîte de dialogue contenant l'éditeur de barres d'outils en "
-"pixels."
-
-#: ../data/mail-notification.schemas.in.h:40
-msgid "The height of the main window in pixels."
-msgstr "La hauteur de la fenêtre principale en pixels."
-
-#: ../data/mail-notification.schemas.in.h:41
+#: ../data/mail-notification.schemas.in.h:30
 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:42
+#: ../data/mail-notification.schemas.in.h:31
 msgid ""
 "The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
 "certificate."
@@ -257,14 +207,14 @@ msgstr ""
 "La liste des serveurs SSL/TLS (hôte:port) de confiance auxquels il manque un "
 "certificat X509."
 
-#: ../data/mail-notification.schemas.in.h:43
+#: ../data/mail-notification.schemas.in.h:32
 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: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."
@@ -272,7 +222,7 @@ msgstr ""
 "Le nombre de pixels à laisser entre la gauche ou la droite de l'écran et le "
 "popup d'aperçu du courrier."
 
-#: ../data/mail-notification.schemas.in.h: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."
@@ -280,7 +230,7 @@ msgstr ""
 "Le nombre de pixels à laisser entre le haut ou le bas de l'écran et le popup "
 "d'aperçu du courrier."
 
-#: ../data/mail-notification.schemas.in.h: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\"."
@@ -288,282 +238,218 @@ 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: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 ""
-"Le style des barres d'outils. Doit être \"desktop-default\", \"icons\", "
-"\"text\", \"both\" ou \"both-horiz\"."
-
-#: ../data/mail-notification.schemas.in.h:48
-msgid "The width of the edit toolbars dialog in pixels."
+"The type of mail summary to display in the icon's tooltip. Must be \"standard"
+"\", \"compact\" or \"none\"."
 msgstr ""
-"La largeur de la boîte de dialogue contenant l'éditeur de barres d'outils en "
-"pixels."
-
-#: ../data/mail-notification.schemas.in.h:49
-msgid "The width of the main window in pixels."
-msgstr "La largeur de la fenêtre principale en pixels."
+"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:50
+#: ../data/mail-notification.schemas.in.h:37
 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:51
-msgid "Toolbars style"
-msgstr "Style des barres d'outils"
+#: ../data/mail-notification.schemas.in.h:38
+msgid "Tooltip mail summary"
+msgstr "Aperçu du courrier dans le ballon d'aide"
 
-#: ../data/mail-notification.schemas.in.h:52
+#: ../data/mail-notification.schemas.in.h:39
 msgid "Trusted servers list"
 msgstr "Liste des serveurs de confiance"
 
-#: ../data/mail-notification.schemas.in.h:53
-msgid "View statusbar"
-msgstr "Afficher la barre d'état"
-
-#: ../data/mail-notification.schemas.in.h:54
-msgid "View toolbars"
-msgstr "Afficher les barres d'outils"
-
-#: ../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 "Si l'icône de statut doit clignoter lors d'erreurs ou pas."
 
-#: ../data/mail-notification.schemas.in.h:56
-msgid "Whether the statusbar should be visible or not."
-msgstr "Si la barre d'état doit être visible ou pas."
-
-#: ../data/mail-notification.schemas.in.h:57
-msgid "Whether the toolbars should be visible or not."
-msgstr "Si les barres d'outils doivent être visibles ou pas."
-
-#: ../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 ""
 "Si le popup d'aperçu du courrier doit être automatiquement fermé ou pas."
 
-#: ../data/mail-notification.schemas.in.h:59
-msgid "Whether to display the mail summary in the status icon tooltip or not."
+#: ../data/mail-notification.schemas.in.h:42
+msgid "Whether to display an icon when there is no new mail or not."
 msgstr ""
-"Si l'aperçu du courrier doit être affiché dans le tooltip de l'icône de "
-"statut ou pas."
+"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
+msgid "Whether to display seen mail or not."
+msgstr "Si le courrier vu doit être affiché ou pas."
 
-#: ../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 ""
 "Si le popup d'aperçu du courrier doit être affiché lorsque du nouveau "
 "courrier arrive ou pas."
 
-#: ../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 ""
 "Si le courrier précédemment affiché dans le popup d'aperçu du courrier doit "
 "être caché ou pas."
 
-#: ../data/mail-notification.schemas.in.h:62
-msgid ""
-"Whether to prevent the immediate notification error dialog from being "
-"displayed or not."
-msgstr ""
-"Si il faut empêcher la boîte de dialogue contenant l'erreur de notification "
-"immédiate de s'afficher ou pas."
-
-#: ../data/mail-notification.schemas.in.h:63
+#: ../data/mail-notification.schemas.in.h:46
 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:64
+#: ../data/mail-notification.schemas.in.h:47
 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:65
-msgid "Whether to set a mail reader or not."
-msgstr "Si un lecteur de courrier est spécifié ou pas."
-
-#: ../data/mail-notification.schemas.in.h:66
-msgid "Width of edit toolbars dialog"
-msgstr "Largeur de la boîte de dialogue contenant l'éditeur de barres d'outils"
-
-#: ../data/mail-notification.schemas.in.h:67
-msgid "Width of main window"
-msgstr "Largeur de la fenêtre principale"
-
-#: ../data/mail-notification.schemas.in.h:68
+#: ../data/mail-notification.schemas.in.h:48
 msgid "Width of properties dialog"
 msgstr "Largeur de la boîte de dialogue contenant les propriétés"
 
-#: ../data/mail-notification.soundlist.in.h:2
-msgid "New Mail"
-msgstr "Nouveau courrier"
-
-#: ../src/egg-editable-toolbar.c:534
-msgid "_Remove Toolbar"
-msgstr "_Enlever la barre d'outils"
-
-#: ../src/egg-toolbar-editor.c:555
-msgid "Separator"
-msgstr "Séparateur"
-
-#: ../src/eggtrayicon.c:128
+#: ../src/eggtrayicon.c:132
 msgid "Orientation"
 msgstr "Orientation"
 
-#: ../src/eggtrayicon.c:129
+#: ../src/eggtrayicon.c:133
 msgid "The orientation of the tray."
 msgstr "L'orientation du plateau."
 
-#: ../src/mn-about-dialog.gob:48
+#. translators: header capitalization
+#: ../src/mn-about-dialog.gob:49
 msgid "A Mail Notification Icon"
-msgstr "Une icône de notification de courrier"
+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:56
+#: ../src/mn-about-dialog.gob:57
 msgid "translator-credits"
 msgstr "Jean-Yves Lefort <jylefort@brutele.be>"
 
-#: ../src/mn-about-dialog.gob:78
+#: ../src/mn-about-dialog.gob:79
 msgid "Unable to open link"
 msgstr "Impossible d'ouvrir le lien"
 
 #: ../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\">autodétecter</span>"
 
 #: ../src/mn-authenticated-mailbox-properties.gob:46
 msgid "_Username:"
-msgstr "_Nom d'utilisateur:"
+msgstr "Nom d'_utilisateur :"
 
 #: ../src/mn-authenticated-mailbox-properties.gob:50
 msgid "_Password:"
-msgstr "_Mot de passe:"
+msgstr "Mot de _passe :"
 
-#: ../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 ""
-"La Notification de Courrier n'a pas été en mesure d'ouvrir une session dans "
-"la boîte aux lettres %s %s, peut-être parce que les données "
-"d'authentification que vous avez saisies sont invalides.\n"
-"\n"
-"Veuillez à nouveau saisir vos données d'authentification."
-
-#: ../src/mn-authenticated-mailbox.gob:153
-#, 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
-#: ../src/mn-authenticated-mailbox.gob:195
-msgid "Authentication Required"
-msgstr "Authentification requise"
-
-#: ../src/mn-autodetect-mailbox-properties.gob:93
+#: ../src/mn-autodetect-mailbox-properties.gob:110
 msgid "Location"
 msgstr "Emplacement"
 
-#: ../src/mn-autodetect-mailbox-properties.gob:103
+#: ../src/mn-autodetect-mailbox-properties.gob:122
 msgid "_Location:"
-msgstr "_Emplacement:"
+msgstr "_Emplacement :"
 
-#: ../src/mn-autodetect-mailbox-properties.gob:110
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:130
 msgid "_Browse..."
 msgstr "_Parcourir..."
 
-#: ../src/mn-autodetect-mailbox-properties.gob:149
+#. translators: header capitalization
+#: ../src/mn-autodetect-mailbox-properties.gob:172
 msgid "Select a File or Folder"
 msgstr "Sélectionnez un fichier ou dossier"
 
-#: ../src/mn-client-session.c:248
+#: ../src/mn-client-session.c:247
 #, c-format
 msgid "resolving %s"
 msgstr "résolution de %s en cours"
 
-#: ../src/mn-client-session.c:264
+#: ../src/mn-client-session.c:263
 #, c-format
 msgid "unable to resolve %s: %s"
-msgstr "impossible de résoudre %s: %s"
+msgstr "impossible de résoudre %s : %s"
+
+#: ../src/mn-client-session.c:304
+#, c-format
+msgid "network address #%i"
+msgstr "adresse réseau %i"
 
-#: ../src/mn-client-session.c:308
+#: ../src/mn-client-session.c:307
+#, 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
 #, c-format
 msgid "%s: unsupported address family"
-msgstr "%s: famille d'adresse non prise en charge"
+msgstr "%s : famille d'adresse non prise en charge"
 
-#: ../src/mn-client-session.c:315
+#: ../src/mn-client-session.c:325
 #, c-format
 msgid "%s: unable to create socket: %s"
-msgstr "%s: impossible de créer un socket: %s"
+msgstr "%s : impossible de créer un socket : %s"
 
-#: ../src/mn-client-session.c:319
+#: ../src/mn-client-session.c:329
 #, c-format
 msgid "connecting to %s (%s) port %i"
-msgstr "connection à %s (%s) port %i en cours"
+msgstr "connexion à %s (%s) port %i en cours"
 
-#: ../src/mn-client-session.c:322
+#: ../src/mn-client-session.c:332
 #, c-format
 msgid "unable to connect: %s"
-msgstr "impossible de se connecter: %s"
+msgstr "impossible de se connecter : %s"
 
-#: ../src/mn-client-session.c:327
+#: ../src/mn-client-session.c:337
 msgid "connected successfully"
 msgstr "connecté avec succès"
 
 #. 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 "impossible de se connecter à %s"
 
-#: ../src/mn-client-session.c:360
+#: ../src/mn-client-session.c:378
 #, c-format
 msgid "unable to initialize the OpenSSL library: %s"
-msgstr "impossible d'initialiser la bibliothèque OpenSSL: %s"
+msgstr "impossible d'initialiser la bibliothèque 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 "impossible de créer un objet SSL/TLS: %s"
+msgstr "impossible de créer un objet 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 "impossible de spécifier le descripteur de fichier SSL/TLS: %s"
+msgstr "impossible de spécifier le descripteur de fichier 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 "impossible d'accomplir la négociation SSL/TLS: %s"
+msgstr "impossible d'accomplir la négociation SSL/TLS : %s"
 
-#: ../src/mn-client-session.c:386
+#: ../src/mn-client-session.c:404
 msgid "untrusted server"
 msgstr "serveur non fiable"
 
-#: ../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 "une couche SSL/TLS est maintenant active (%s, %s %i-bit)"
 
-#: ../src/mn-client-session.c:437
+#: ../src/mn-client-session.c:455
 #, c-format
 msgid "%s, fingerprint: %s"
-msgstr "%s, empreinte digitale: %s"
+msgstr "%s, empreinte digitale : %s"
 
-#: ../src/mn-client-session.c:466
+#: ../src/mn-client-session.c:484
 msgid "missing certificate"
 msgstr "certificat manquant"
 
-#: ../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 "
@@ -574,7 +460,7 @@ msgid ""
 "to \"%s\". If you choose to connect to the server, this message will not be "
 "shown again."
 msgstr ""
-"La Notification de Courrier n'a pas été en mesure de faire confiance à \"%s"
+"L'avertisseur de courrier n'a pas été en mesure de faire confiance à \"%s"
 "\" (%s). Il est possible que quelqu'un soit en train d'intercepter votre "
 "communication afin d'obtenir vos informations confidentielles.\n"
 "\n"
@@ -582,298 +468,324 @@ msgstr ""
 "vous êtes connecté à \"%s\". Si vous choisissez de vous connecter au "
 "serveur, ce message ne sera plus affiché."
 
-#: ../src/mn-client-session.c:507
+#: ../src/mn-client-session.c:525
 msgid "Connect to untrusted server?"
-msgstr "Se connecter au serveur non fiable?"
+msgstr "Se connecter au serveur non fiable ?"
 
-#: ../src/mn-client-session.c:571
+#: ../src/mn-client-session.c:590
 #, 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:599
+#: ../src/mn-client-session.c:619
 #, c-format
 msgid "unable to parse response \"%s\""
 msgstr "impossible d'interpréter la réponse \"%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 "impossible de lire depuis le serveur: %s"
+msgstr "impossible de lire depuis le serveur : %s"
 
-#: ../src/mn-client-session.c:654
+#: ../src/mn-client-session.c:674
 msgid "unable to read from server: EOF"
-msgstr "impossible de lire depuis le serveur: EOF"
+msgstr "impossible de lire depuis le serveur : EOF"
 
-#: ../src/mn-client-session.c:666
+#: ../src/mn-client-session.c:686
 #, c-format
 msgid "unable to decode data using SASL: %s"
-msgstr "impossible de décoder les données en utilisant SASL: %s"
+msgstr "impossible de décoder les données en utilisant 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 "impossible d'encoder les données en utilisant SASL: %s"
+msgstr "impossible d'encoder les données en utilisant 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 "impossible d'écrire vers le serveur: %s"
+msgstr "impossible d'écrire vers le serveur : %s"
 
-#: ../src/mn-client-session.c:847
+#: ../src/mn-client-session.c:867
 msgid "unable to write to server: EOF"
-msgstr "impossible d'écrire vers le serveur: EOF"
+msgstr "impossible d'écrire vers le serveur : 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 "impossible d'encoder en 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 "impossible d'initialiser la bibliothèque SASL: %s"
+msgstr "impossible d'initialiser la bibliothèque 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 "impossible d'obtenir l'adresse locale du socket: %s"
+msgstr "impossible d'obtenir l'adresse locale du socket : %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 "impossible d'obtenir l'adresse distante du socket: %s"
+msgstr "impossible d'obtenir l'adresse distante du socket : %s"
 
-#: ../src/mn-client-session.c:1108
+#: ../src/mn-client-session.c:1127
 #, c-format
 msgid "unable to set SASL security properties: %s"
-msgstr "impossible de spécifier les propriétés de sécurité SASL: %s"
+msgstr "impossible de spécifier les propriétés de sécurité 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 ""
-"impossible de démarrer l'authentification SASL: SASL a demandé quelque chose "
-"que nous ne connaissions pas"
+"impossible de démarrer l'authentification SASL : SASL a demandé quelque "
+"chose que nous ne connaissions pas"
 
-#: ../src/mn-client-session.c:1151
+#: ../src/mn-client-session.c:1170
 #, c-format
 msgid "unable to start SASL authentication: %s"
-msgstr "impossible de démarrer l'authentification SASL: %s"
+msgstr "impossible de démarrer l'authentification 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 "impossible de créer une connection SASL: %s"
+msgstr "impossible de créer une connexion 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 a demandé quelque chose que nous ne connaissions pas, annulation de "
 "l'authentification SASL"
 
-#: ../src/mn-client-session.c:1219
+#: ../src/mn-client-session.c:1238
 #, c-format
 msgid "%s, aborting SASL authentication"
 msgstr "%s, annulation de l'authentification 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 "impossible de décoder l'entrée Base64 du serveur: %s"
+msgstr "impossible de décoder l'entrée Base64 du serveur : %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 ""
 "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:1265
+#: ../src/mn-client-session.c:1284
 #, c-format
 msgid "unable to get SASL_MAXOUTBUF property: %s"
-msgstr "impossible d'obtenir la propriété SASL_MAXOUTBUF: %s"
+msgstr "impossible d'obtenir la propriété 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 "avertissement: impossible d'obtenir la propriété SASL_SSF: %s"
+msgstr "avertissement : impossible d'obtenir la propriété SASL_SSF : %s"
+
+#: ../src/mn-client-session.c:1449
+msgid "unknown server error"
+msgstr "erreur serveur inconnue"
+
+#: ../src/mn-compact-message-view.gob:45
+msgid "Mailbox"
+msgstr "Boîte aux lettres"
+
+#: ../src/mn-compact-message-view.gob:46
+msgid "From"
+msgstr "De"
+
+#: ../src/mn-compact-message-view.gob:47
+msgid "Subject"
+msgstr "Sujet"
+
+#: ../src/mn-compact-message-view.gob:48
+msgid "Sent"
+msgstr "Envoyé"
 
-#: ../src/mn-conf.c:240
+#: ../src/mn-conf.c:262
 msgid "A directory creation error has occurred"
 msgstr "Une erreur de création de répertoire s'est produite"
 
-#: ../src/mn-conf.c:241
+#: ../src/mn-conf.c:263
 #, c-format
 msgid "Unable to create directory \"%s\": %s."
 msgstr "Impossible de créer le répertoire \"%s\": %s."
 
-#: ../src/mn-conf.c:317
+#: ../src/mn-conf.c:402
 #, c-format
 msgid "recursively unsetting %s"
 msgstr "en train de supprimer récursivement %s"
 
-#: ../src/mn-conf.c:321
+#: ../src/mn-conf.c:406
 msgid "syncing the GConf database"
 msgstr "en train de synchroniser la base de données GConf"
 
-#: ../src/mn-conf.c:324
+#: ../src/mn-conf.c:409
 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
 msgid "invalid location"
 msgstr "emplacement invalide"
 
-#: ../src/mn-evolution-folder-tree-control.c:86
+#: ../src/mn-evolution-folder-tree-control.c:91
 msgid "The currently selected URI"
 msgstr "L'URI actuellement sélectionnée"
 
-#: ../src/mn-evolution-mailbox-properties.gob:67
+#. translators: header capitalization
+#: ../src/mn-evolution-mailbox-properties.gob:68
 msgid "Folder"
 msgstr "Dossier"
 
-#: ../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 ""
-"La Notification de Courrier ne peut contacter Evolution. Assurez-vous "
+"L'avertisseur de courrier ne peut contacter Evolution. Assurez-vous "
 "qu'Evolution est en cours de fonctionnement et que l'extension Evolution "
-"Notification de Courrier est chargée."
+"\"Avertisseur de courrier\" est chargée."
 
-#: ../src/mn-evolution-mailbox.gob:61
+#: ../src/mn-evolution-mailbox.gob:75
 msgid "folder not found"
 msgstr "dossier non trouvé"
 
-#: ../src/mn-evolution-mailbox.gob:182
+#: ../src/mn-evolution-mailbox.gob:216
 msgid "unable to contact Evolution"
 msgstr "impossible de contacter Evolution"
 
-#: ../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 "Impossible d'activer l'extension Notification de Courrier"
+msgstr "Impossible d'activer l'extension \"Avertisseur de courrier\""
 
-#: ../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 n'a pu localiser le serveur %s. Veuillez vérifier votre installation "
-"de la Notification de Courrier."
+"de l'avertisseur de courrier."
 
-#: ../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 n'a pu inscrire le serveur %s. Veuillez vérifier votre installation "
-"de la Notification de Courrier."
+"de l'avertisseur de courrier."
 
-#: ../src/mn-gmail-mailbox.gob:111
+#: ../src/mn-gmail-mailbox.gob:103
 msgid "invalid feed location"
 msgstr "emplacement d'alimentation non valide"
 
-#: ../src/mn-gmail-mailbox.gob:125
+#: ../src/mn-gmail-mailbox.gob:117
 #, c-format
 msgid "retrieving feed from %s"
 msgstr "obtention de l'alimentation depuis %s en cours"
 
-#: ../src/mn-gmail-mailbox.gob:132
+#: ../src/mn-gmail-mailbox.gob:124
 #, c-format
 msgid "unable to retrieve feed: %s"
-msgstr "impossible d'obtenir l'alimentation: %s"
+msgstr "impossible d'obtenir l'alimentation : %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 "impossible d'interpréter l'alimentation"
 
 #: ../src/mn-gmime-stream-vfs.gob:50
-#: ../src/mn-sylpheed-mailbox-backend.gob:152
+#: ../src/mn-sylpheed-mailbox-backend.gob:205
 #, c-format
 msgid "unable to read %s: %s"
-msgstr "impossible de lire %s: %s"
+msgstr "impossible de lire %s : %s"
 
 #: ../src/mn-gmime-stream-vfs.gob:52
 #, c-format
 msgid "unable to write to %s: %s"
-msgstr "impossible d'écrire vers %s: %s"
+msgstr "impossible d'écrire vers %s : %s"
 
 #: ../src/mn-gmime-stream-vfs.gob:54
 #, c-format
 msgid "unable to seek in %s: %s"
-msgstr "impossible de chercher dans %s: %s"
+msgstr "impossible de chercher dans %s : %s"
 
 #: ../src/mn-gmime-stream-vfs.gob:56
 #, c-format
 msgid "unable to tell position of %s: %s"
-msgstr "impossible de dire la position de %s: %s"
+msgstr "impossible de dire la position de %s : %s"
 
-#: ../src/mn-gmime-stream-vfs.gob:58 ../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 "impossible de fermer %s: %s"
+msgstr "impossible de fermer %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 "Boîte aux lettres:"
+msgstr "Boîte aux lettres :"
 
-#: ../src/mn-imap-mailbox-properties.gob:117
+#: ../src/mn-imap-mailbox-properties.gob:118
 msgid "in_box"
 msgstr "_boîte de réception"
 
-#: ../src/mn-imap-mailbox-properties.gob:128
+#: ../src/mn-imap-mailbox-properties.gob:129
 msgid "oth_er:"
-msgstr "autr_e:"
+msgstr "autr_e :"
 
-#: ../src/mn-imap-mailbox-properties.gob:139
+#: ../src/mn-imap-mailbox-properties.gob:140
 msgid "ne_ver"
 msgstr "_jamais"
 
-#: ../src/mn-imap-mailbox-properties.gob:140
+#: ../src/mn-imap-mailbox-properties.gob:141
 msgid "au_todetect"
-msgstr "au_todétecter"
+msgstr "autodéte_cter"
 
-#: ../src/mn-imap-mailbox-properties.gob:141
+#: ../src/mn-imap-mailbox-properties.gob:142
 msgid "al_ways"
 msgstr "t_oujours"
 
-#: ../src/mn-imap-mailbox-properties.gob:173
+#: ../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.gob:390
+#: ../src/mn-imap-mailbox.gob:384
 msgid "server did not send capabilities"
 msgstr "le serveur n'a pas envoyé ses possibilités"
 
-#: ../src/mn-imap-mailbox.gob:573
+#: ../src/mn-imap-mailbox.gob:551
 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:574
+#: ../src/mn-imap-mailbox.gob:552
 msgid "unable to login"
 msgstr "impossible d'ouvrir la session"
 
 #. compliance error
-#: ../src/mn-imap-mailbox.gob:714
-msgid "server did not send search results"
-msgstr "le serveur n'a pas envoyé les résultats de la recherche"
-
-#. compliance error
-#: ../src/mn-imap-mailbox.gob:792
+#: ../src/mn-imap-mailbox.gob:752
 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:859
+#: ../src/mn-imap-mailbox.gob:822
 msgid "unable to fetch message"
 msgstr "impossible d'obtenir le message"
 
-#: ../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"
@@ -881,12 +793,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:886
+#: ../src/mn-imap-mailbox.gob:858
 #, 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:891
+#: ../src/mn-imap-mailbox.gob:863
 #, c-format
 msgid ""
 "the remote server runs %s, the IDLE extension might not function properly"
@@ -894,20 +806,16 @@ msgstr ""
 "le serveur distant utilise %s, il se peut que l'extension IDLE ne fonctionne "
 "pas correctement"
 
-#: ../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 ""
 "le serveur distant ne supporte pas l'extension IDLE, fermeture de session"
 
-#: ../src/mn-imap-mailbox.gob:1251 ../src/mn-pop3-mailbox.gob:1124
-msgid "unknown server error"
-msgstr "erreur serveur inconnue"
-
-#: ../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 "le serveur ne supporte pas le mode SSL/TLS interne"
 
-#: ../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"
@@ -915,130 +823,143 @@ 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: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 "mécanisme d'authentification inconnu \"%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 ""
 "désactivation du mécanisme \"%s\" et nouvelle tentative d'authentification "
 "SASL"
 
-#: ../src/mn-imap-mailbox.gob:1435
+#: ../src/mn-imap-mailbox.gob:1455
 msgid "falling back to IMAP LOGIN authentication"
 msgstr "rétrogradation vers l'authentification 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 "l'authentification a échoué"
 
-#: ../src/mn-mail-icon.gob:91
-msgid "Main _Window"
-msgstr "_Fenêtre principale"
+#. success; caller must switch state itself
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:1528
+msgid "server did not send search results"
+msgstr "le serveur n'a pas envoyé les résultats de la recherche"
 
-#: ../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 "_Lecteur de courrier"
 
-#: ../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 "_Mettre à jour"
 
-#: ../src/mn-mail-icon.gob:99
+#. translators: header capitalization
+#: ../src/mn-mail-icon.gob:98
 msgid "R_emove From Notification Area"
-msgstr "_Enlever de l'aire de notification"
+msgstr "_Enlever de la zone d'avertissement"
 
-#: ../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 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
 #, c-format
 msgid "%s Properties"
 msgstr "Propriétés de %s"
 
-#: ../src/mn-mailbox-properties-dialog.gob:205
+#. translators: header capitalization
+#: ../src/mn-mailbox-properties-dialog.gob:232
 msgid "Add a Mailbox"
 msgstr "Ajouter une boîte aux lettres"
 
-#: ../src/mn-mailbox-view.gob:179
+#: ../src/mn-mailbox-view.gob:248
 msgid "A paste error has occurred"
 msgstr "Une erreur de collage s'est produite"
 
-#: ../src/mn-mailbox-view.gob:320 ../src/mn-message-view.gob:313
-msgid "Mailbox"
-msgstr "Boîte aux lettres"
-
-#: ../src/mn-mailbox-view.gob:523
+#: ../src/mn-mailbox-view.gob:557
 #, c-format
 msgid "unhandled %s mailbox (%s)"
 msgstr "boîte aux lettres %s non prise en charge (%s)"
 
-#: ../src/mn-mailbox-view.gob:528
+#: ../src/mn-mailbox-view.gob:562
 #, c-format
 msgid "%s mailbox"
 msgstr "boîte aux lettres %s"
 
-#: ../src/mn-mailbox-view.gob:543
+#: ../src/mn-mailbox-view.gob:577
 msgid "detecting mailbox type..."
 msgstr "détection du type de boîte aux lettres en cours..."
 
-#: ../src/mn-mailbox.gob:278
+#: ../src/mn-mailbox.gob:472
 msgid "\"type\" attribute missing"
 msgstr "attribut \"type\" manquant"
 
-#: ../src/mn-mailbox.gob:285
+#: ../src/mn-mailbox.gob:479
 #, c-format
 msgid "unknown mailbox type \"%s\""
 msgstr "type de boîte aux lettres \"%s\" inconnu"
 
-#: ../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 ""
-"propriété \"%s\": impossible de transformer la chaîne de caractères \"%s\" "
+"propriété \"%s\" : impossible de transformer la chaîne de caractères \"%s\" "
 "en une valeur de type \"%s\""
 
-#: ../src/mn-mailbox.gob:744
+#: ../src/mn-mailbox.gob:948
 #, c-format
 msgid "property \"%s\" has no value"
 msgstr "la propriété \"%s\" n'a pas de valeur"
 
-#: ../src/mn-mailboxes.gob:203
+#: ../src/mn-mailboxes.gob:239
 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:248
+#: ../src/mn-mailboxes.gob:265
 msgid "Unable to load the mailboxes configuration"
 msgstr "Impossible de charger la configuration des boîtes aux lettres"
 
-#: ../src/mn-mailboxes.gob:294
+#: ../src/mn-mailboxes.gob:311
 msgid "Unable to parse the XML document."
 msgstr "Impossible d'interpréter le document XML."
 
-#: ../src/mn-mailboxes.gob:301
+#: ../src/mn-mailboxes.gob:318
 msgid "The root element is missing."
 msgstr "L'élément racine est manquant."
 
-#: ../src/mn-mailboxes.gob:307
+#: ../src/mn-mailboxes.gob:324
 #, c-format
 msgid "The root element \"%s\" is invalid."
 msgstr "L'élément racine \"%s\" est invalide."
 
-#: ../src/mn-mailboxes.gob:330
+#: ../src/mn-mailboxes.gob:347
 #, c-format
 msgid "On line %i: %s."
-msgstr "A la ligne %i: %s."
+msgstr "A la ligne %i : %s."
 
-#: ../src/mn-mailboxes.gob:335
+#: ../src/mn-mailboxes.gob:352
 #, c-format
 msgid "On line %i: unknown element \"%s\"."
-msgstr "A la ligne %i: élément \"%s\" inconnu."
+msgstr "A la ligne %i : élément \"%s\" inconnu."
 
-#: ../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] ""
@@ -1048,412 +969,275 @@ msgstr[1] ""
 "Des erreurs se sont produites lors du chargement de la configuration des "
 "boîtes aux lettres"
 
-#: ../src/mn-mailboxes.gob:371
+#: ../src/mn-mailboxes.gob:386
 msgid "Unable to save the mailboxes configuration"
 msgstr "Impossible de sauvegarder la configuration des boîtes aux lettres"
 
-#: ../src/mn-mailboxes.gob:417
+#: ../src/mn-mailboxes.gob:428
+#, c-format
+msgid "Unable to remove %s: %s."
+msgstr "Impossible d'enlever %s : %s."
+
+#: ../src/mn-mailboxes.gob:436
+#, c-format
+msgid "Unable to create %s: %s."
+msgstr "Impossible de créer %s : %s."
+
+#: ../src/mn-mailboxes.gob:443
+#, c-format
+msgid "Unable to open %s for writing: %s."
+msgstr "Impossible d'ouvrir %s en mode écriture : %s."
+
+#: ../src/mn-mailboxes.gob:450
 msgid "Unable to write the XML document."
 msgstr "Impossible d'écrire le document XML."
 
+#: ../src/mn-mailboxes.gob:456
+#, c-format
+msgid "Unable to close %s: %s."
+msgstr "Impossible de fermer %s : %s."
+
+#: ../src/mn-mailboxes.gob:466 ../src/mn-mailboxes.gob:473
+#, c-format
+msgid "Unable to rename %s to %s: %s."
+msgstr "Impossible de renommer %s en %s : %s."
+
 #. non fatal
-#: ../src/mn-mailboxes.gob:433
+#: ../src/mn-mailboxes.gob:479
 #, c-format
 msgid "unable to delete %s: %s"
-msgstr "impossible de supprimer %s: %s"
+msgstr "impossible de supprimer %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"
 msgstr[0] "%s a %i nouveau message"
 msgstr[1] "%s a %i nouveaux messages"
 
-#: ../src/mn-mailboxes.gob:483
+#: ../src/mn-mailboxes.gob:535
 #, c-format
 msgid "%s reported an error: %s"
-msgstr "%s a indiqué une erreur: %s"
+msgstr "%s a indiqué une erreur : %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 "impossible d'ouvrir le dossier \"new\": %s"
+msgid "unable to open folder \"%s\": %s"
+msgstr "impossible d'ouvrir le dossier \"%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 "impossible de fermer le dossier \"new\": %s"
+msgid "unable to close folder \"%s\": %s"
+msgstr "impossible de fermer le dossier \"%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 "erreur lors de la lecture du dossier \"new\": %s"
-
-#: ../src/mn-main-window.gob:106
-msgid "Help messages"
-msgstr "Messages d'aide"
-
-#: ../src/mn-main-window.gob:107
-msgid "Count messages"
-msgstr "Messages de comptes"
-
-#. Toplevel
-#: ../src/mn-main-window.gob:156
-msgid "_Mail"
-msgstr "_Courrier"
-
-#: ../src/mn-main-window.gob:157
-msgid "_Edit"
-msgstr "_Edition"
-
-#: ../src/mn-main-window.gob:158
-msgid "_View"
-msgstr "Afficha_ge"
-
-#: ../src/mn-main-window.gob:159
-msgid "_Help"
-msgstr "_Aide"
-
-#: ../src/mn-main-window.gob:167
-msgid "Launch the mail reader"
-msgstr "Exécuter le lecteur de courrier"
-
-#. Reload
-#: ../src/mn-main-window.gob:175 ../src/mn-main.c:248
-msgid "Update the mail status"
-msgstr "Mettre à jour le statut du courrier"
-
-#: ../src/mn-main-window.gob:181
-msgid "_Close"
-msgstr "_Fermer"
-
-#: ../src/mn-main-window.gob:183
-msgid "Close this window"
-msgstr "Fermer cette fenêtre"
-
-#: ../src/mn-main-window.gob:189
-msgid "_Quit"
-msgstr "_Quitter"
-
-#: ../src/mn-main-window.gob:191 ../src/mn-main.c:266
-msgid "Quit Mail Notification"
-msgstr "Quitter la Notification de Courrier"
-
-#: ../src/mn-main-window.gob:199 ../src/mn-main-window.gob:247
-msgid "_Toolbars"
-msgstr "_Barres d'outils"
-
-#: ../src/mn-main-window.gob:201
-msgid "Customize the toolbars"
-msgstr "Personnaliser les barres d'outils"
-
-#: ../src/mn-main-window.gob:207
-msgid "_Preferences"
-msgstr "_Préférences"
-
-#: ../src/mn-main-window.gob:217
-msgid "Toolbars Styl_e"
-msgstr "Styl_e des barres d'outils"
-
-#: ../src/mn-main-window.gob:219
-msgid "Customize the toolbars style"
-msgstr "Personnaliser le style des barres d'outils"
-
-#: ../src/mn-main-window.gob:227
-msgid "_Contents"
-msgstr "_Contenu"
-
-#: ../src/mn-main-window.gob:229
-msgid "Display help"
-msgstr "Afficher l'aide"
-
-#: ../src/mn-main-window.gob:235
-msgid "_About"
-msgstr "_A propos"
-
-#: ../src/mn-main-window.gob:237
-msgid "Display credits"
-msgstr "Afficher les crédits"
-
-#: ../src/mn-main-window.gob:249
-msgid "Show or hide the toolbars"
-msgstr "Afficher ou cacher les barres d'outils"
+msgid "error while reading folder \"%s\": %s"
+msgstr "erreur lors de la lecture du dossier \"%s\": %s"
 
-#: ../src/mn-main-window.gob:256
-msgid "_Statusbar"
-msgstr "Barre d'_état"
+#: ../src/mn-main.c:100
+msgid "yes"
+msgstr "oui"
 
-#: ../src/mn-main-window.gob:258
-msgid "Show or hide the statusbar"
-msgstr "Afficher ou cacher la barre d'état"
+#: ../src/mn-main.c:100
+msgid "no"
+msgstr "non"
 
-#: ../src/mn-main-window.gob:269
-msgid "_Desktop Default"
-msgstr "Valeur par défaut du _bureau"
-
-#: ../src/mn-main-window.gob:271
-msgid "Set the toolbars style to the desktop default setting"
-msgstr ""
-"Utiliser la valeur par défaut du bureau pour le style des barres d'outils"
-
-#: ../src/mn-main-window.gob:277
-msgid "I_cons Only"
-msgstr "Seulement _icônes"
-
-#: ../src/mn-main-window.gob:279
-msgid "Only display the toolbars icons"
-msgstr "Afficher uniquement les icônes des barres d'outils"
-
-#: ../src/mn-main-window.gob:285
-msgid "_Text Only"
-msgstr "Seulement _texte"
-
-#: ../src/mn-main-window.gob:287
-msgid "Only display the toolbars text"
-msgstr "Afficher uniquement le texte des barres d'outils"
-
-#: ../src/mn-main-window.gob:293
-msgid "Text Belo_w Icons"
-msgstr "Texte en _dessous des icônes"
-
-#: ../src/mn-main-window.gob:295
-msgid "Display the toolbars text below the icons"
-msgstr "Afficher le texte des barres d'outils en dessous des icônes"
-
-#: ../src/mn-main-window.gob:301
-msgid "Text Be_side Icons"
-msgstr "Texte à _côté des icônes"
+#: ../src/mn-main.c:132
+#, c-format
+msgid "%s version %s\n"
+msgstr "%s version %s\n"
 
-#: ../src/mn-main-window.gob:303
-msgid "Display the toolbars text beside the icons"
-msgstr "Afficher le texte des barres d'outils à côté des icônes"
+#: ../src/mn-main.c:137
+msgid "Mailbox backends:\n"
+msgstr "Prises en charge de boîtes aux lettres :\n"
 
-#: ../src/mn-main-window.gob:345
-#, c-format
-msgid "unable to load menus.xml: %s"
-msgstr "impossible de charger menus.xml: %s"
+#: ../src/mn-main.c:142
+msgid "POP3 and IMAP features:\n"
+msgstr "Fonctionnalités POP3 et IMAP :\n"
 
-#: ../src/mn-main-window.gob:388
-msgid "unable to load toolbars.xml"
-msgstr "impossible de charger toolbars.xml"
+#: ../src/mn-main.c:147
+msgid "Sylpheed features:\n"
+msgstr "Fonctionnalités 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 nouveau message"
-msgstr[1] "%i nouveaux messages"
+msgid "A Bonobo exception (%s) has occurred in %s()."
+msgstr "Une exception Bonobo (%s) s'est produite dans %s()."
 
-#.
-#. * 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 "Prises en charge de boîtes aux lettres disponibles: "
-
-#: ../src/mn-main.c:124
-msgid "Compiled-in POP3 and IMAP features: "
-msgstr "Fonctionnalités POP3 and IMAP disponibles: "
+#: ../src/mn-main.c:220
+msgid "Show version information"
+msgstr "Afficher les informations de version"
 
-#: ../src/mn-main.c:194
+#: ../src/mn-main.c:229
 msgid "Enable informational output"
 msgstr "Activer la sortie informationnelle"
 
-#: ../src/mn-main.c:203
-msgid "List the compiled-in features"
-msgstr "Afficher les fonctionnalités disponibles"
-
-#: ../src/mn-main.c:212
-msgid "Display the main window"
-msgstr "Afficher la fenêtre principale"
-
-#: ../src/mn-main.c:221
+#: ../src/mn-main.c:238
 msgid "Display the properties dialog"
 msgstr "Afficher la boîte de dialogue contenant les propriétés"
 
-#: ../src/mn-main.c:230
+#: ../src/mn-main.c:247
 msgid "Display the about dialog"
 msgstr "Afficher la boîte de dialogue \"à propos\""
 
-#: ../src/mn-main.c:239
+#: ../src/mn-main.c:256
 msgid "Close the mail summary popup"
 msgstr "Fermer le popup d'aperçu du courrier"
 
-#: ../src/mn-main.c:257
+#: ../src/mn-main.c:265
+msgid "Update the mail status"
+msgstr "Mettre à jour le statut du courrier"
+
+#: ../src/mn-main.c:274
 msgid "Unset obsolete GConf configuration"
 msgstr "Supprimer la configuration GConf obsolète"
 
+#: ../src/mn-main.c:283
+msgid "Quit Mail Notification"
+msgstr "Quitter l'avertisseur de courrier"
+
 #.
-#. * We can't use mn_error_dialog() because gtk_init() has not been
-#. * called yet.
+#. * We cannot use mn_fatal_error_dialog() because gtk_init() has
+#. * not been called yet.
 #.
-#: ../src/mn-main.c:293
+#: ../src/mn-main.c:310
 msgid "multi-threading is not available"
 msgstr "le multi-threading n'est pas disponible"
 
-#: ../src/mn-main.c:355
+#: ../src/mn-main.c:365
 msgid ""
 "Bonobo could not locate the automation object. Please check your Mail "
 "Notification installation."
 msgstr ""
 "Bonobo n'a pu localiser l'objet automation. Veuillez vérifier votre "
-"installation de la Notification de Courrier."
+"installation de l'avertisseur de courrier."
 
-#: ../src/mn-main.c:361
+#: ../src/mn-main.c:371
 msgid "quitting Mail Notification"
-msgstr "en train de quitter la Notification de Courrier"
+msgstr "en train de quitter l'avertisseur de courrier"
 
-#: ../src/mn-main.c:365
+#: ../src/mn-main.c:375
 msgid "Mail Notification is not running"
-msgstr "La Notification de Courrier n'est pas en cours d'exécution"
+msgstr "L'avertisseur de courrier n'est pas en cours d'exécution"
 
-#: ../src/mn-main.c:372
+#: ../src/mn-main.c:390
 msgid "Unable to initialize the GnomeVFS library."
 msgstr "Impossible d'initialiser la bibliothèque GnomeVFS."
 
-#: ../src/mn-main.c:404
+#: ../src/mn-main.c:438
 msgid "updating the mail status"
 msgstr "mise à jour du statut du courrier"
 
-#: ../src/mn-main.c:413
+#: ../src/mn-main.c:446
 msgid "Mail Notification is already running"
-msgstr "La Notification de Courrier est déjà en cours d'exécution"
+msgstr "L'avertisseur de courrier est déjà en cours d'exécution"
 
-#: ../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 n'a pu localiser le fichier %s. Veuillez vérifier votre installation "
-"de la Notification de Courrier."
+"de l'avertisseur de courrier."
 
-#: ../src/mn-mbox-mailbox-backend.gob:209
+#: ../src/mn-mbox-mailbox-backend.gob:281
 #, c-format
 msgid "unable to close file: %s"
-msgstr "impossible de fermer le fichier: %s"
+msgstr "impossible de fermer le fichier : %s"
 
-#: ../src/mn-mbox-mailbox-backend.gob:226
+#: ../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"
+msgstr "impossible d'ouvrir la boîte aux lettres : %s"
 
-#: ../src/mn-message-mime.c:104
+#: ../src/mn-message-mime.c:121
 msgid "unable to parse MIME message"
 msgstr "impossible d'interpréter le message MIME"
 
-#: ../src/mn-message-view.gob:82
-msgid "You have no new mail."
-msgstr "Vous n'avez pas de nouveau courrier."
-
-#: ../src/mn-message-view.gob:322
-msgid "Unreadable message"
-msgstr "Message non lisible"
-
-#: ../src/mn-message-view.gob:330
-msgid "From"
-msgstr "De"
-
-#: ../src/mn-message-view.gob:338
-msgid "Subject"
-msgstr "Sujet"
-
-#: ../src/mn-message-view.gob:349
-msgid "Sent"
-msgstr "Envoyé"
-
-#: ../src/mn-message.gob:99
+#: ../src/mn-message.gob:111
 msgid "Unknown"
 msgstr "Inconnu"
 
-#: ../src/mn-message.gob:124
-#, c-format
-msgid "%i second ago"
-msgid_plural "%i seconds ago"
-msgstr[0] "il y a %i seconde"
-msgstr[1] "il y a %i secondes"
-
-#: ../src/mn-message.gob:128
-#, 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-message.gob:133
-#, 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-message.gob:138
-#, 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-message.gob:143
-#, 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"
-
 #. translators: "none" is used like "Mailbox: none"
-#: ../src/mn-message.gob:163
+#: ../src/mn-message.gob:130
 msgid "none"
 msgstr "aucune"
 
-#: ../src/mn-mh-mailbox-backend.gob:161
+#: ../src/mn-mh-mailbox-backend.gob:167
 #, c-format
 msgid "error while reading %s: %s"
-msgstr "erreur lors de la lecture de %s: %s"
+msgstr "erreur lors de la lecture de %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 "impossible d'ouvrir %s: %s"
+msgstr "impossible d'ouvrir %s : %s"
 
 #: ../src/mn-pi-mailbox-properties.gob:67
 msgid "sta_ndard"
-msgstr "sta_ndard"
+msgstr "_standard"
 
 #: ../src/mn-pi-mailbox-properties.gob:68
-msgid "_in-band SSL/TLS"
-msgstr "SSL/TLS _interne"
+msgid "in-band SS_L/TLS"
+msgstr "SS_L/TLS interne"
 
 #: ../src/mn-pi-mailbox-properties.gob:69
 msgid "SSL/TLS on sepa_rate port"
 msgstr "SSL/TLS sur port sépa_ré"
 
 #: ../src/mn-pi-mailbox-properties.gob:73
-msgid "_Hostname:"
-msgstr "Nom d'_hôte:"
+msgid "Ho_stname:"
+msgstr "Nom d'_hôte :"
 
-#: ../src/mn-pi-mailbox-properties.gob:93
+#. translators: header capitalization
+#: ../src/mn-pi-mailbox-properties.gob:94
 msgid "_Details"
 msgstr "_Détails"
 
-#: ../src/mn-pi-mailbox-properties.gob:148
+#: ../src/mn-pi-mailbox-properties.gob:149
 msgid "Connection type:"
-msgstr "Type de connection:"
+msgstr "Type de connexion :"
 
-#: ../src/mn-pi-mailbox-properties.gob:155
+#: ../src/mn-pi-mailbox-properties.gob:156
 msgid "Port:"
-msgstr "Port:"
+msgstr "Port :"
 
-#: ../src/mn-pi-mailbox-properties.gob:178
-msgid "_Authentication mechanism:"
-msgstr "Mécanisme d'_authentification:"
+#: ../src/mn-pi-mailbox-properties.gob:179
+msgid "Authent_ication mechanism:"
+msgstr "Mécanisme d'authenti_fication :"
 
-#: ../src/mn-pi-mailbox.gob:113
+#: ../src/mn-pi-mailbox.gob:151
 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-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 ""
+"L'avertisseur de courrier n'a pas été en mesure d'ouvrir une session dans la "
+"boîte aux lettres %s %s, peut-être parce que les données d'authentification "
+"que vous avez saisies sont invalides.\n"
+"\n"
+"Veuillez à nouveau saisir vos données d'authentification."
+
+#: ../src/mn-pi-mailbox.gob:318
+#, 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
+msgid "Authentication Required"
+msgstr "Authentification requise"
+
+#: ../src/mn-pop3-mailbox.gob:344
 msgid "invalid arguments for the LOGIN-DELAY capability"
 msgstr "arguments invalides pour la possibilité LOGIN-DELAY"
 
@@ -1463,7 +1247,7 @@ msgstr "arguments invalides pour la possibilité 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"
@@ -1471,32 +1255,33 @@ 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:733
+#: ../src/mn-pop3-mailbox.gob:696
 msgid "unknown error"
 msgstr "erreur inconnue"
 
-#: ../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"
 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:1009
+#: ../src/mn-pop3-mailbox.gob:959
 msgid "server does not support APOP authentication"
 msgstr "le serveur ne supporte pas l'authentification APOP"
 
-#: ../src/mn-pop3-mailbox.gob:1065
+#: ../src/mn-pop3-mailbox.gob:1015
 msgid "falling back to APOP authentication"
 msgstr "rétrogradation vers l'authentification APOP"
 
-#: ../src/mn-pop3-mailbox.gob:1070
+#: ../src/mn-pop3-mailbox.gob:1020
 msgid "falling back to USER/PASS authentication"
 msgstr "rétrogradation vers l'authentification USER/PASS"
 
-#: ../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 "Propriétés de la Notification de Courrier"
+msgstr "Propriétés de l'avertisseur de courrier"
 
 #: ../src/mn-properties-dialog.gob:207
 msgid "top left"
@@ -1514,99 +1299,118 @@ msgstr "en bas à gauche"
 msgid "bottom right"
 msgstr "en bas à droite"
 
-#: ../src/mn-properties-dialog.gob:329
+#: ../src/mn-properties-dialog.gob:332
 msgid "No mailbox selected."
 msgstr "Pas de boîte aux lettres sélectionnée."
 
-#: ../src/mn-properties-dialog.gob:334
+#: ../src/mn-properties-dialog.gob:337
 #, 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:465
+#: ../src/mn-properties-dialog.gob:456
 #, c-format
 msgid "Test message #%i"
 msgstr "Message test %i"
 
-#: ../src/mn-properties-dialog.gob:470
+#. translators: header capitalization
+#: ../src/mn-properties-dialog.gob:462
 msgid "Mail Notification Properties Dialog"
 msgstr ""
-"Boîte de dialogue contenant les propriétés de la Notification de Courrier"
-
-#: ../src/mn-shell.gob:109
-msgid "You have new mail."
-msgstr "Vous avez du nouveau courrier."
+"Boîte de dialogue contenant les propriétés de l'avertisseur de courrier"
 
-#: ../src/mn-shell.gob:374
+#. translators: header capitalization
+#: ../src/mn-shell.gob:381
 msgid "Mailboxes Having New Mail"
 msgstr "Boîtes aux lettres ayant du nouveau courrier"
 
-#: ../src/mn-shell.gob:393
+#. translators: header capitalization
+#: ../src/mn-shell.gob:400
 msgid "Errors"
 msgstr "Erreurs"
 
-#: ../src/mn-shell.gob:408
+#. translators: header capitalization
+#: ../src/mn-shell.gob:416
 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
 msgid "unknown SSL/TLS error"
 msgstr "erreur SSL/TLS inconnue"
 
-#: ../src/mn-stock.c:28
-msgid "Select _All"
-msgstr "Sélectionner _tout"
+#: ../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
+msgid "Sent:"
+msgstr "Envoyé:"
+
+#. translators: header capitalization
 #: ../src/mn-stock.c:29
-msgid "Leave Fullscreen"
-msgstr "Quitter le mode plein écran"
+msgid "Select _All"
+msgstr "Sélectionner _tout"
 
-#: ../src/mn-stock.c:30
+#. translators: header capitalization
+#. translators: header capitalization
+#: ../src/mn-stock.c:32
 msgid "Co_nnect"
 msgstr "Se co_nnecter"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:170
+#: ../src/mn-sylpheed-mailbox-backend.gob:223
 #, c-format
 msgid "unable to open folder: %s"
-msgstr "impossible d'ouvrir le dossier: %s"
+msgstr "impossible d'ouvrir le dossier : %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:209
+#: ../src/mn-sylpheed-mailbox-backend.gob:276
 #, c-format
 msgid "unable to close folder: %s"
-msgstr "impossible de fermer le dossier: %s"
+msgstr "impossible de fermer le dossier : %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:212
+#: ../src/mn-sylpheed-mailbox-backend.gob:279
 #, c-format
 msgid "error while reading folder: %s"
-msgstr "erreur lors de la lecture du dossier: %s"
+msgstr "erreur lors de la lecture du dossier : %s"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:256
+#: ../src/mn-sylpheed-mailbox-backend.gob:420
 msgid "unexpected end of file"
 msgstr "fin de fichier inattendue"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:270
+#: ../src/mn-sylpheed-mailbox-backend.gob:438
 #, c-format
 msgid "incompatible file version \"%i\""
 msgstr "version de fichier \"%i\" incompatible"
 
-#: ../src/mn-sylpheed-mailbox-backend.gob:273
+#: ../src/mn-sylpheed-mailbox-backend.gob:441
 msgid "file version missing"
 msgstr "version de fichier manquante"
 
-#: ../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 "Boîte aux lettres système"
 
-#: ../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 "Votre boîte aux lettres système est <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."
@@ -1615,56 +1419,69 @@ msgstr ""
 "Vérifiez la variable d'environnement MAIL."
 
 #: ../src/mn-system-vfs-mailbox.gob:72
-msgid "MAIL environment variable not defined"
-msgstr "variable d'environnement MAIL non définie"
+msgid "system mailbox not found"
+msgstr "boîte aux lettres système non trouvée"
 
-#: ../src/mn-util.c:281
+#: ../src/mn-util.c:349
 #, c-format
 msgid "error loading image: %s"
-msgstr "erreur de chargement d'image: %s"
+msgstr "erreur de chargement d'image : %s"
+
+#: ../src/mn-util.c:365
+#, c-format
+msgid ""
+"Unable to load interface \"%s\". Please check your Mail Notification "
+"installation."
+msgstr ""
+"Impossible de charger l'interface \"%s\". Veuillez vérifier votre "
+"installation de l'avertisseur de courrier."
 
-#: ../src/mn-util.c:298
+#: ../src/mn-util.c:380
 #, c-format
-msgid "widget \"%s\" not found in interface \"%s\""
-msgstr "élément \"%s\" non trouvé dans interface \"%s\""
+msgid ""
+"Widget \"%s\" not found in interface \"%s\". Please check your Mail "
+"Notification installation."
+msgstr ""
+"Elément \"%s\" non trouvé dans l'interface \"%s\". Veuillez vérifier votre "
+"installation de l'avertisseur de courrier."
 
-#: ../src/mn-util.c:398
+#: ../src/mn-util.c:449
 #, c-format
-msgid "unable to open self as a module: %s"
-msgstr "impossible de s'auto-ouvrir en tant que module: %s"
+msgid "Unable to open self as a module (%s)."
+msgstr "Impossible de s'auto-ouvrir en tant que module (%s)."
 
-#: ../src/mn-util.c:403
+#: ../src/mn-util.c:454
 #, c-format
-msgid "signal handler \"%s\" not found"
-msgstr "gestionnaire de signal \"%s\" non trouvé"
+msgid ""
+"Signal handler \"%s\" not found. Please check your Mail Notification "
+"installation."
+msgstr ""
+"Gestionnaire de signal \"%s\" non trouvé. Veuillez vérifier votre "
+"installation de l'avertisseur de courrier."
 
-#: ../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 "Une erreur de glisser-déposer s'est produite"
 
-#: ../src/mn-util.c:557
+#: ../src/mn-util.c:606
 msgid "An invalid location list has been received."
 msgstr "Une liste d'emplacements non valide a été reçue."
 
-#: ../src/mn-util.c:602
+#: ../src/mn-util.c:649
 msgid "An invalid Mozilla location has been received."
 msgstr "Un emplacement Mozilla non valide a été reçu."
 
-#: ../src/mn-util.c:678
+#: ../src/mn-util.c:725
 msgid "Unable to display help"
 msgstr "Impossible d'afficher l'aide"
 
-#: ../src/mn-util.c:692
+#: ../src/mn-util.c:739
 #, c-format
 msgid "Unable to create a thread: %s."
-msgstr "Impossible de créer un thread: %s."
+msgstr "Impossible de créer un thread : %s."
 
-#: ../src/mn-util.c:782
-msgid "_Do not show this message again"
-msgstr "_Ne plus afficher ce message"
-
-#: ../src/mn-util.c:892
+#: ../src/mn-util.c:899
 #, c-format
 msgid ""
 "The following location is invalid:\n"
@@ -1675,276 +1492,259 @@ msgid_plural ""
 "\n"
 "%s"
 msgstr[0] ""
-"L'emplacement suivant est invalide:\n"
+"L'emplacement suivant est invalide :\n"
 "\n"
 "%s"
 msgstr[1] ""
-"Les emplacements suivants sont invalides:\n"
+"Les emplacements suivants sont invalides :\n"
 "\n"
 "%s"
 
-#: ../src/mn-util.c:912
+#: ../src/mn-util.c:919
 msgid "A fatal error has occurred in Mail Notification"
-msgstr "Une erreur fatale s'est produite dans la Notification de Courrier"
+msgstr "Une erreur fatale s'est produite dans l'avertisseur de courrier"
 
-#: ../src/mn-util.c:951
+#: ../src/mn-util.c:958
 #, c-format
 msgid "unable to get current time: %s"
-msgstr "impossible d'obtenir l'heure courante: %s"
+msgstr "impossible d'obtenir l'heure courante : %s"
 
-#: ../src/mn-util.c:1013
+#: ../src/mn-util.c:1250
 #, c-format
-msgid "invalid signal specification \"%s\""
-msgstr "spécification de signal \"%s\" invalide"
+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:1052
-msgid "A command error has occurred in Mail Notification"
-msgstr "Une erreur de commande s'est produite dans la Notification de Courrier"
+#: ../src/mn-util.c:1254
+#, 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:1053
+#: ../src/mn-util.c:1259
 #, c-format
-msgid "Unable to execute \"%s\": %s."
-msgstr "Impossible d'exécuter \"%s\": %s"
+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:1311
+#: ../src/mn-util.c:1264
 #, c-format
-msgid "unable to rename %s to %s: %s"
-msgstr "impossible de renommer %s en %s: %s"
+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-vfs-mailbox-backend.gob:117
+#: ../src/mn-util.c:1269
 #, c-format
-msgid "unable to monitor mailbox contents (%s), poll mode activated"
-msgstr ""
-"impossible de surveiller le contenu de la boîte aux lettres (%s), "
-"vérification explicite activée"
+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-vfs-mailbox.gob:238
+#: ../src/mn-util.c:1282
+msgid "unknown date"
+msgstr "date inconnue"
+
+#: ../src/mn-vfs-mailbox.gob:221
 #, c-format
-msgid "unable to monitor mailbox type (%s), poll mode activated"
-msgstr ""
-"impossible de surveiller le type de la boîte aux lettres (%s), vérification "
-"explicite activée"
+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:307
+#: ../src/mn-vfs-mailbox.gob:385
 msgid "unknown mailbox format"
 msgstr "format de boîte aux lettres inconnu"
 
-#: ../src/mn-vfs-mailbox.gob:307
+#: ../src/mn-vfs-mailbox.gob:385
 msgid "does not exist"
 msgstr "n'existe pas"
 
-#: ../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] ""
-"Comme solution de secours, elles seront vérifiées toutes les %i seconde (ce "
-"délai est configurable depuis les Propriétés)."
-msgstr[1] ""
-"Comme solution de secours, elles seront vérifiées toutes les %i secondes (ce "
-"délai est configurable depuis les Propriétés)."
-
-#: ../src/mn-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] ""
-"Comme solution de secours, elles seront vérifiées toutes les %i minutes (ce "
-"délai est configurable depuis les Propriétés)."
-msgstr[1] ""
-"Comme solution de secours, elles seront vérifiées toutes les %i minutes (ce "
-"délai est configurable depuis les Propriétés)."
-
-#: ../src/mn-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] ""
-"Comme solution de secours, elles seront vérifiées approximativement toutes "
-"les %i minute (ce délai est configurable depuis les Propriétés)."
-msgstr[1] ""
-"Comme solution de secours, elles seront vérifiées approximativement toutes "
-"les %i minutes (ce délai est configurable depuis les Propriétés)."
+#. 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\">Général</span>"
 
-#: ../src/mn-vfs-mailbox.gob:415
-msgid "A monitoring error has occurred"
-msgstr "Une erreur de surveillance s'est produite"
+#: ../ui/mailbox-properties-dialog.glade.h:3
+msgid "Delay between mail chec_ks:"
+msgstr "Délai entre les _vérifications de courrier :"
 
-#: ../src/mn-vfs-mailbox.gob:416
-#, c-format
-msgid ""
-"Mail Notification was unable to enable immediate notification for one or "
-"more mailboxes. %s"
-msgstr ""
-"La Notification de Courrier n'a pas été en mesure d'activer la notification "
-"immédiate pour une ou plusieures boîtes aux lettres. %s"
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "Mailbox _name:"
+msgstr "No_m de la boîte aux lettres :"
 
-#: ../ui/edit-toolbars-dialog.glade.h:1
-msgid "Edit Toolbars"
-msgstr "Editer les barres d'outils"
+#. translators: header capitalization
+#: ../ui/mailbox-properties-dialog.glade.h:6
+msgid "Use De_fault"
+msgstr "Par dé_faut"
 
-#: ../ui/edit-toolbars-dialog.glade.h:2
-msgid "_Add a New Toolbar"
-msgstr "_Ajouter une nouvelle barre d'outils"
+#: ../ui/mailbox-properties-dialog.glade.h:7
+msgid "_Mailbox type:"
+msgstr "_Type de boîte aux lettres :"
 
-#: ../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 "_Par défaut"
 
-#: ../ui/mail-summary-popup.glade.h:1
-msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
-msgstr "<span size=\"larger\" weight=\"bold\">Aperçu du courrier</span>"
-
-#: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
-msgstr "<span weight=\"bold\">Général</span>"
+#: ../ui/mailbox-properties-dialog.glade.h:10
+#: ../ui/properties-dialog.glade.h:48
+msgid "minutes"
+msgstr "minutes"
 
-#: ../ui/mailbox-properties-dialog.glade.h:2
-msgid "Mailbox _name:"
-msgstr "_Nom de la boîte aux lettres:"
+#: ../ui/mailbox-properties-dialog.glade.h:11
+#: ../ui/properties-dialog.glade.h:52
+msgid "seconds"
+msgstr "secondes"
 
-#: ../ui/mailbox-properties-dialog.glade.h:3
-msgid "Mailbox _type:"
-msgstr "_Type de boîte aux lettres:"
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:2
+msgid "<span weight=\"bold\">Click Action</span>"
+msgstr "<span weight=\"bold\">Action du click</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\">Commandes</span>"
 
-#: ../ui/properties-dialog.glade.h:2
-msgid "<span weight=\"bold\">Double-click Action</span>"
-msgstr "<span weight=\"bold\">Action du double-click</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\">Polices de Caractères</span>"
+msgstr "<span weight=\"bold\">Polices de caractères</span>"
+
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:10
+msgid "<span weight=\"bold\">Layout</span>"
+msgstr "<span weight=\"bold\">Présentation</span>"
 
-#: ../ui/properties-dialog.glade.h:5
+#. 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>"
 
-#: ../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\">Position</span>"
 
-#: ../ui/properties-dialog.glade.h:7
-msgid "Co_ntents:"
-msgstr "Co_ntenu:"
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:16
+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:8
-msgid "Dis_play mail summary in tooltip"
-msgstr "Afficher l'a_perçu du courrier dans le tooltip"
+#: ../ui/properties-dialog.glade.h:17
+msgid "Co_ntents:"
+msgstr "Co_ntenu :"
 
-#: ../ui/properties-dialog.glade.h:9
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:19
 msgid "General"
 msgstr "Général"
 
-#: ../ui/properties-dialog.glade.h:11
+#: ../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 :"
+
+#. 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:12
-msgid "Mailboxes"
-msgstr "Boîtes aux lettres"
-
-#: ../ui/properties-dialog.glade.h:13
-msgid "Only display _recent mail"
-msgstr "Afficher uniquement le courrier _récent"
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:27
+msgid "Status Icon"
+msgstr "Icône de statut"
 
-#: ../ui/properties-dialog.glade.h:14
+#: ../ui/properties-dialog.glade.h:28
 msgid "Use these _fonts:"
-msgstr "Utiliser ces _polices de caractères:"
-
-#: ../ui/properties-dialog.glade.h:15
-msgid "When _all mail has been read:"
-msgstr "Quand _tout le courrier a été lu:"
+msgstr "Utiliser c_es polices de caractères :"
 
-#: ../ui/properties-dialog.glade.h:16
+#: ../ui/properties-dialog.glade.h:29
 msgid "When _new mail arrives:"
-msgstr "Quand du _nouveau courrier arrive:"
+msgstr "Quand du _nouveau courrier arrive :"
 
-#: ../ui/properties-dialog.glade.h:17
+#: ../ui/properties-dialog.glade.h:30
+msgid "When all mail has _been read:"
+msgstr "Quand _tout le courrier a été lu :"
+
+#: ../ui/properties-dialog.glade.h:31
+msgid "_Always display"
+msgstr "_Toujours afficher"
+
+#: ../ui/properties-dialog.glade.h:32
 msgid "_Automatically close after:"
-msgstr "_Fermer automatiquement après:"
+msgstr "Fe_rmer automatiquement après :"
 
-#: ../ui/properties-dialog.glade.h:18
+#: ../ui/properties-dialog.glade.h:33
 msgid "_Blink on errors"
 msgstr "_Clignoter lors d'erreurs"
 
-#: ../ui/properties-dialog.glade.h:19
-msgid "_Delay between mail checks:"
-msgstr "_Délai entre les vérifications de courrier:"
-
-#: ../ui/properties-dialog.glade.h:20
+#. translators: header capitalization
+#: ../ui/properties-dialog.glade.h:35
 msgid "_Display a Test Popup"
-msgstr "_Afficher un popup de test"
+msgstr "Afficher un popup de _test"
 
-#: ../ui/properties-dialog.glade.h:21
-msgid "_Display the main window"
-msgstr "_Afficher la fenêtre principale"
+#: ../ui/properties-dialog.glade.h:36
+msgid "_Display seen mail"
+msgstr "Afficher le courrier _vu"
 
-#: ../ui/properties-dialog.glade.h:22
-msgid "_Enable mail summary popup"
-msgstr "_Activer le popup d'aperçu du courrier"
+#: ../ui/properties-dialog.glade.h:37
+msgid "_Display this dialog"
+msgstr "Afficher cette _boîte de dialogue"
 
-#: ../ui/properties-dialog.glade.h:23
-msgid "_Horizontal offset:"
-msgstr "Décalage _horizontal:"
+#: ../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:24
+#: ../ui/properties-dialog.glade.h:39
 msgid "_Launch the mail reader"
 msgstr "_Exécuter le lecteur de courrier"
 
-#: ../ui/properties-dialog.glade.h:25
-msgid "_Mail reader:"
-msgstr "_Lecteur de courrier:"
+#: ../ui/properties-dialog.glade.h:40
+msgid "_None"
+msgstr "Aucu_n"
 
-#: ../ui/properties-dialog.glade.h:26
+#: ../ui/properties-dialog.glade.h:41
 msgid "_Position:"
-msgstr "_Position:"
-
-#: ../ui/properties-dialog.glade.h:27
-msgid "_Start Mail Notification on GNOME login"
-msgstr ""
-"_Démarrer la Notification de Courrier lors de l'ouverture de session GNOME"
+msgstr "_Position :"
 
-#: ../ui/properties-dialog.glade.h:28
+#: ../ui/properties-dialog.glade.h:42
 msgid "_Title:"
-msgstr "_Titre:"
+msgstr "_Titre :"
 
-#: ../ui/properties-dialog.glade.h:29
+#: ../ui/properties-dialog.glade.h:43
 msgid "_Update the mail status"
-msgstr "_Mettre à jour le statut du courrier"
+msgstr "Mett_re à jour le statut du courrier"
 
-#: ../ui/properties-dialog.glade.h:30
+#: ../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:31
+#: ../ui/properties-dialog.glade.h:45
 msgid "_Vertical offset:"
-msgstr "Décalage _vertical:"
+msgstr "Décalage _vertical :"
 
-#: ../ui/properties-dialog.glade.h:32
-msgid "minutes"
-msgstr "minutes"
+#: ../ui/properties-dialog.glade.h:46
+msgid "icon tooltip's mail summary layout|Co_mpact"
+msgstr "Co_mpact"
 
-#: ../ui/properties-dialog.glade.h:33
+#: ../ui/properties-dialog.glade.h:47
+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:34
-msgid "seconds"
-msgstr "secondes"
+#: ../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/ja.po b/po/ja.po
@@ -0,0 +1,1868 @@
+# Japanese translations for mail-notification.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Hiroshi Hasebe <hhasebe@DVOI.COM>, 2006.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-04-29 11:50+0900\n"
+"PO-Revision-Date: 2006-05-03 08:06+0200\n"
+"Last-Translator: Hiroshi Hasebe <hhasebe@DVOI.COM>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "新着メールの自動チェック・通知"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Mail Notification自動化ファクトリ"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:1
+msgid "Evolution folder tree control"
+msgstr "Evolutionフォルダツリーコントロール"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:2
+msgid "Evolution folder tree control factory"
+msgstr "Evolutionフォルダツリーコントロールファクトリ"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:3
+msgid "Mail Notification / Evolution glue"
+msgstr "Mail Notification通知 / Evolution glue"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:4
+msgid "Mail Notification / Evolution glue factory"
+msgstr "メール着信通知 / Evolution glueファクトリ"
+
+#: ../data/mail-notification-properties.desktop.in.h:1
+#: ../src/mn-main-window.gob:209
+msgid "Configure Mail Notification"
+msgstr "Mail Notifcationの設定"
+
+#: ../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
+msgid "Mail Notification"
+msgstr "Mail Notification"
+
+#: ../data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "新着メールの着信通知を表示します"
+
+#: ../data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr "新着メール一覧を自動的に閉じる"
+
+#: ../data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "エラー発生時に点滅"
+
+#: ../data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "メール着信チェックの間隔 (分単位で指定)."
+
+#: ../data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "メール着信チェックの間隔 (秒単位で指定)."
+
+#: ../data/mail-notification.schemas.in.h:5
+msgid "Display mail summary in tooltip"
+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
+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
+msgid "Height of properties dialog"
+msgstr "プロパティダイアログの高さ"
+
+#: ../data/mail-notification.schemas.in.h:13
+msgid "Mail read command"
+msgstr "メールリーダを起動するコマンド"
+
+#: ../data/mail-notification.schemas.in.h:14
+msgid "Mail reader command"
+msgstr "メールリーダーを起動するコマンド"
+
+#: ../data/mail-notification.schemas.in.h:15
+msgid "Mail summary popup contents font"
+msgstr "メール一覧ポップアップの本文フォント"
+
+#: ../data/mail-notification.schemas.in.h:16
+msgid "Mail summary popup fonts aspect source"
+msgstr "メール一覧ポップアップで使うフォントの選択基準"
+
+#: ../data/mail-notification.schemas.in.h:17
+msgid "Mail summary popup horizontal offset"
+msgstr "メール一覧ポップアップの水平オフセット"
+
+#: ../data/mail-notification.schemas.in.h:18
+msgid "Mail summary popup position"
+msgstr "メール一覧ポップアップの表示位置"
+
+#: ../data/mail-notification.schemas.in.h:19
+msgid "Mail summary popup title font"
+msgstr "メール一覧ポップアップのタイトルフォント"
+
+#: ../data/mail-notification.schemas.in.h:20
+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
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr "メール一覧ポップアップの表示時間"
+
+#: ../data/mail-notification.schemas.in.h:23
+msgid "New mail command"
+msgstr "新しいメールコマンド"
+
+#: ../data/mail-notification.schemas.in.h:24
+msgid "Only display recent mail in mail summary popup"
+msgstr "メール一覧ポップアップで最近のメールのみ表示"
+
+#: ../data/mail-notification.schemas.in.h:25
+msgid "Run a command when all mail is read"
+msgstr "未読メールを無くしたときにコマンドを実行"
+
+#: ../data/mail-notification.schemas.in.h:26
+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
+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
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"main-window\", \"launch-mail-reader\" or \"update-mail-status\"."
+msgstr ""
+"アイコンがダブルクリックされたときの動作. "
+"\"display-main-window\", \"launch-mail-reader\" or \"update-mail-status\" "
+"のいずれかを指定."
+
+#: ../data/mail-notification.schemas.in.h:31
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+"メール一覧ポップアップの表示時間 (分で指定)"
+""
+
+#: ../data/mail-notification.schemas.in.h:32
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+"メール一覧ポップアップの表示時間 (秒で指定)"
+""
+
+#: ../data/mail-notification.schemas.in.h:33
+msgid ""
+"The aspect source of the mail summary popup fonts. Must be \"theme\" or "
+"\"custom\"."
+msgstr ""
+"メール一覧ポップアップで使うフォントの選択基準. \"theme\" もしくは "
+"\"custom\" を指定."
+
+#: ../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
+msgid "The command to run when all mail is read."
+msgstr "未読メールを無くしたときに実行するコマンド."
+
+#: ../data/mail-notification.schemas.in.h:36
+msgid "The command to run when new mail arrives."
+msgstr "メール着信時に実行するコマンド."
+
+#: ../data/mail-notification.schemas.in.h:37
+msgid "The custom font to use for the contents of the mail summary popup."
+msgstr ""
+"メール一覧ポップアップの本文表示に使用するカスタムフォント."
+
+#: ../data/mail-notification.schemas.in.h:38
+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
+msgid "The height of the properties dialog in pixels."
+msgstr "プロパティダイアログの高さ (ピクセルで指定)."
+
+#: ../data/mail-notification.schemas.in.h:42
+msgid ""
+"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
+"certificate."
+msgstr ""
+"信頼性の確認されたサーバー (ホスト名:ポート番号) の一覧 "
+"(ホスト名:ポート番号)."
+
+#: ../data/mail-notification.schemas.in.h:43
+msgid ""
+"The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr ""
+"信頼性の確認されたX509証明書の一覧. (MD5電子指紋で表示)"
+
+#: ../data/mail-notification.schemas.in.h:44
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+"画面の左端・右端から, メール一覧ポップアップを表示する位置までの距離を"
+"ピクセルで指定."
+
+#: ../data/mail-notification.schemas.in.h:45
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+"画面の上端・下端から, メール一覧ポップアップを表示する位置までの"
+"距離をピクセルで指定."
+
+#: ../data/mail-notification.schemas.in.h:46
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+"メール一覧ポップアップの表示位置. \"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\" のいずれかを指定."
+
+#: ../data/mail-notification.schemas.in.h:47
+msgid ""
+"The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text\", "
+"\"both\" or \"both-horiz\"."
+msgstr ""
+"ツールバーのスタイル. \"desktop-default\", \"icons\", \"text\", \"both\", \"both-horiz\" のいずれかを指定."
+
+#: ../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 "メインウィンドウの幅 (ピクセルで指定)."
+
+#: ../data/mail-notification.schemas.in.h:50
+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:52
+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
+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
+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:60
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr ""
+"メール着信時, メール一覧ポップアップを表示するかどうか."
+
+#: ../data/mail-notification.schemas.in.h:61
+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
+msgid "Whether to run a command when all mail is read or not."
+msgstr ""
+"未読メールを無くしたときのコマンド実行の有無."
+
+#: ../data/mail-notification.schemas.in.h:64
+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
+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 "ツールバーを表示しない(_R)"
+
+#: ../src/egg-toolbar-editor.c:555
+msgid "Separator"
+msgstr "セパレータ"
+
+#: ../src/eggtrayicon.c:128
+msgid "Orientation"
+msgstr "向き"
+
+#: ../src/eggtrayicon.c:129
+msgid "The orientation of the tray."
+msgstr "トレイの向き"
+
+#: ../src/mn-about-dialog.gob:48
+msgid "A Mail Notification Icon"
+msgstr ""
+"アイコンから新着メールを通知"
+
+#.
+#. * translators: Your Name <your-email>
+#. * optionally followed by one or more: \nOther Contributor's Name <his-email>
+#.
+#: ../src/mn-about-dialog.gob:56
+msgid "translator-credits"
+msgstr "Hiroshi Hasebe <hhasebe@DVOI.COM>"
+
+#: ../src/mn-about-dialog.gob:78
+msgid "Unable to open link"
+msgstr "リンクを開くことができません"
+
+#: ../src/mn-auth-combo-box.gob:103
+#: ../src/mn-autodetect-mailbox-properties.gob:92
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">自動検出</span>"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:46
+msgid "_Username:"
+msgstr "ユーザー名 (_U):"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:50
+msgid "_Password:"
+msgstr "パスワード(_P):"
+
+#: ../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 mailbox %s にログインできませんでした. 誤った認証情報が入力された"
+"ためと思われます."
+"\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
+msgid "Location"
+msgstr "メールボックスの所在"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:103
+msgid "_Location:"
+msgstr "所在(_L):"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:110
+msgid "_Browse..."
+msgstr "ブラウズ(_B)..."
+
+#: ../src/mn-autodetect-mailbox-properties.gob:149
+msgid "Select a File or Folder"
+msgstr "ファイルもしくはフォルダを選択"
+
+#: ../src/mn-client-session.c:248
+#, c-format
+msgid "resolving %s"
+msgstr "%s を解決中"
+
+#: ../src/mn-client-session.c:264
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "%s の解決に失敗: %s"
+
+#: ../src/mn-client-session.c:308
+#, c-format
+msgid "%s: unsupported address family"
+msgstr "%s: そのアドレス形式はサポートされていません"
+
+#: ../src/mn-client-session.c:315
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr "%s: ソケットの作成に失敗: %s"
+
+#: ../src/mn-client-session.c:319
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "%s (%s) のポート %i に接続中"
+
+#: ../src/mn-client-session.c:322
+#, c-format
+msgid "unable to connect: %s"
+msgstr "接続に失敗: %s"
+
+#: ../src/mn-client-session.c:327
+msgid "connected successfully"
+msgstr "接続に成功"
+
+#. if reached, we couldn't find a working address
+#: ../src/mn-client-session.c:333
+#, c-format
+msgid "unable to connect to %s"
+msgstr "%s への接続に失敗"
+
+#: ../src/mn-client-session.c:360
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr "OpenSSLライブラリの初期化に失敗: %s"
+
+#: ../src/mn-client-session.c:368
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr "SSL/TLSオブジェクトの作成に失敗: %s"
+
+#: ../src/mn-client-session.c:374
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr "SSL/TLSファイルディスクリプタの設定に失敗: %s"
+
+#: ../src/mn-client-session.c:380
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr "SSL/TLSのハンドシェイクに失敗: %s"
+
+#: ../src/mn-client-session.c:386
+msgid "untrusted server"
+msgstr "信頼性が不明なサーバー"
+
+#: ../src/mn-client-session.c:390
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr "SSL/TLSレイヤが有効になりました (%s, %s %i-Bit)"
+
+#: ../src/mn-client-session.c:437
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, 電子指紋 %s"
+
+#: ../src/mn-client-session.c:466
+msgid "missing certificate"
+msgstr "証明書が欠落"
+
+#: ../src/mn-client-session.c:492
+#, c-format
+msgid ""
+"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
+"someone is intercepting your communication to obtain your confidential "
+"information.\n"
+"\n"
+"You should only connect to the server if you are certain you are connected "
+"to \"%s\". If you choose to connect to the server, this message will not be "
+"shown again."
+msgstr ""
+"\"%s\" (%s) の信頼性を確認できませんでした. 通信内容が第三者によって傍受"
+"されるおそれがあります.\n"
+"\n"
+"\"%s\"へ確実に接続している場合にのみ, サーバーへ接続されることを"
+"おすすめします. サーバーへ接続すると, このメッセージは表示されなくなります."
+
+#: ../src/mn-client-session.c:507
+msgid "Connect to untrusted server?"
+msgstr "信頼性が確認されていないサーバーに接続しますか?"
+
+#: ../src/mn-client-session.c:571
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "このコンテキストでの応答 \"%s\" は無効です"
+
+#: ../src/mn-client-session.c:599
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "応答 \"%s\" の解析に失敗"
+
+#: ../src/mn-client-session.c:649 ../src/mn-client-session.c:656
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "サーバーからの読み出しに失敗: %s"
+
+#: ../src/mn-client-session.c:654
+msgid "unable to read from server: EOF"
+msgstr "サーバーからの読み出しに失敗: EOF"
+
+#: ../src/mn-client-session.c:666
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "SALS使用時, データのデコードに失敗: %s"
+
+#: ../src/mn-client-session.c:811
+#, 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
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "サーバーへの書き込みに失敗: %s"
+
+#: ../src/mn-client-session.c:847
+msgid "unable to write to server: EOF"
+msgstr "サーバーへの書き込みに失敗: EOF"
+
+#: ../src/mn-client-session.c:878 ../src/mn-pop3-mailbox.gob:468
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr "Base64エンコードに失敗: %s"
+
+#: ../src/mn-client-session.c:1056
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr "SASLライブラリの初期化に失敗: %s"
+
+#: ../src/mn-client-session.c:1068
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr "ソケットのローカルアドレスの取得に失敗: %s"
+
+#: ../src/mn-client-session.c:1074
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr ""
+"ソケットのリモードアドレスの取得に失敗: %s"
+
+#: ../src/mn-client-session.c:1108
+#, c-format
+msgid "unable to set SASL security properties: %s"
+msgstr "SASLのセキュリティ・プロパティの設定に失敗: %s"
+
+#: ../src/mn-client-session.c:1132
+msgid ""
+"unable to start SASL authentication: SASL asked for something we did not know"
+msgstr ""
+"SASL認証を開始できません. 未知の要求を検出しました"
+""
+
+#: ../src/mn-client-session.c:1151
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr "SASL認証を開始できません: %s"
+
+#: ../src/mn-client-session.c:1155
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr "SASLコネクションの確立に失敗: %s"
+
+#: ../src/mn-client-session.c:1202
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr ""
+"SASLから未知の要求が発生. SASL認証を中止します"
+
+#: ../src/mn-client-session.c:1219
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr "%s, SASL認証を中止"
+
+#. compliance error
+#: ../src/mn-client-session.c:1224
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr "サーバから取得したメッセージのBase64デコードに失敗: %s"
+
+#: ../src/mn-client-session.c:1260
+#, 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
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr "SASL_MAXOUTBUF プロパティの取得に失敗: %s"
+
+#: ../src/mn-client-session.c:1271
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr "SASL_SSF プロパティの取得に失敗: %s"
+
+#: ../src/mn-conf.c:240
+msgid "A directory creation error has occurred"
+msgstr "ディレクトリ作成時にエラーが発生"
+
+#: ../src/mn-conf.c:241
+#, c-format
+msgid "Unable to create directory \"%s\": %s."
+msgstr "\"%s\" ディレクトリの作成に失敗: %s."
+
+#: ../src/mn-conf.c:317
+#, c-format
+msgid "recursively unsetting %s"
+msgstr "%s の設定を再帰的に解除中"
+
+#: ../src/mn-conf.c:321
+msgid "syncing the GConf database"
+msgstr "GConfデータベースを同期中"
+
+#: ../src/mn-conf.c:324
+msgid "completed"
+msgstr "完了"
+
+#: ../src/mn-custom-vfs-mailbox.gob:76
+msgid "invalid location"
+msgstr "不正な位置指定"
+
+#: ../src/mn-evolution-folder-tree-control.c:86
+msgid "The currently selected URI"
+msgstr "現在選択されているURI"
+
+#: ../src/mn-evolution-mailbox-properties.gob:67
+msgid "Folder"
+msgstr "フォルダ"
+
+#: ../src/mn-evolution-mailbox-properties.gob:169
+msgid ""
+"Mail Notification can not contact Evolution. Make sure that Evolution is "
+"running and that the Evolution Mail Notification plugin is loaded."
+msgstr "Evolutionに接続できません. Evolutionが稼働しており, "
+"Mail NotificationのEvolutionプラグインが読み込まれていることを"
+"ご確認ください."
+
+#: ../src/mn-evolution-mailbox.gob:61
+msgid "folder not found"
+msgstr "フォルダが見つかりません"
+
+#: ../src/mn-evolution-mailbox.gob:182
+msgid "unable to contact Evolution"
+msgstr "Evolutionに接続できません"
+
+#: ../src/mn-evolution-plugin.c:130 ../src/mn-evolution-plugin.c:134
+msgid "Unable to activate the Mail Notification plugin"
+msgstr "Mail Notificationのプラグインが動作しません"
+
+#: ../src/mn-evolution-plugin.c:130
+#, c-format
+msgid ""
+"Bonobo could not locate the %s server. Please check your Mail Notification "
+"installation."
+msgstr ""
+"Bonoboが %s サーバーを検出できませんでした. Mail Notificationが"
+"正しくインストールされているかどうかをご確認ください."
+
+#: ../src/mn-evolution-plugin.c:134 ../src/mn-main.c:427
+#, c-format
+msgid ""
+"Bonobo was unable to register the %s server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonoboが %s サーバーを登録できませんでした. Mail Notificationが"
+"正しくインストールされているかどうかをご確認ください."
+
+#: ../src/mn-gmail-mailbox.gob:111
+msgid "invalid feed location"
+msgstr "フィードの指定"
+
+#: ../src/mn-gmail-mailbox.gob:125
+#, c-format
+msgid "retrieving feed from %s"
+msgstr "%s のフィードを取得中"
+
+#: ../src/mn-gmail-mailbox.gob:132
+#, c-format
+msgid "unable to retrieve feed: %s"
+msgstr "フィードを取得できませんでした: %s"
+
+#: ../src/mn-gmail-mailbox.gob:147 ../src/mn-gmail-mailbox.gob:194
+msgid "unable to parse feed"
+msgstr "フィードされた内容を解析できません"
+
+#: ../src/mn-gmime-stream-vfs.gob:49
+#: ../src/mn-sylpheed-mailbox-backend.gob:152
+#, c-format
+msgid "unable to read %s: %s"
+msgstr "%s の読み取りに失敗: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:51
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr "%s への書き込みに失敗: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:53
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr "%s のシークに失敗: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:55
+#, 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
+#, c-format
+msgid "unable to close %s: %s"
+msgstr "%s のクローズに失敗: %s"
+
+#: ../src/mn-imap-mailbox-properties.gob:113
+msgid "Mailbox:"
+msgstr "メールボックス:"
+
+#: ../src/mn-imap-mailbox-properties.gob:117
+msgid "in_box"
+msgstr "In_box"
+
+#: ../src/mn-imap-mailbox-properties.gob:128
+msgid "oth_er:"
+msgstr "他(_E):"
+
+#: ../src/mn-imap-mailbox-properties.gob:139
+msgid "ne_ver"
+msgstr "しない(_V)"
+
+#: ../src/mn-imap-mailbox-properties.gob:140
+msgid "au_todetect"
+msgstr "自動検出(_T)"
+
+#: ../src/mn-imap-mailbox-properties.gob:141
+msgid "al_ways"
+msgstr "常に(_W)"
+
+#: ../src/mn-imap-mailbox-properties.gob:173
+msgid "Use the <span style=\"italic\">IDLE</span> extension:"
+msgstr "拡張機能 <span style=\"italic\">IDLE</span> を使用します:"
+
+#: ../src/mn-imap-mailbox.gob:390
+msgid "server did not send capabilities"
+msgstr "サーバーからの仕様取得に失敗"
+
+#: ../src/mn-imap-mailbox.gob:573
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr ""
+"サーバーから LOGINDISABLED の通知あり. LOGIN認証の使用を取り止めます"
+
+#: ../src/mn-imap-mailbox.gob:574
+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
+msgid "server did not send all the messages we requested"
+msgstr "メッセージの要求に対し, サーバーが完全に応答しませんでした"
+
+#: ../src/mn-imap-mailbox.gob:859
+msgid "unable to fetch message"
+msgstr "メッセージの取得に失敗"
+
+#: ../src/mn-imap-mailbox.gob:875
+msgid ""
+"\"Use the IDLE extension\" set to \"never\" in the mailbox properties, "
+"logging out"
+msgstr "メールボックスの設定で \"Use the IDLE extension\" が \"never\" "
+"になっています. ログアウトします"
+
+#: ../src/mn-imap-mailbox.gob:886
+#, c-format
+msgid "the remote server runs %s, not using the IDLE extension"
+msgstr "サーバーで %s が稼働しています. 拡張機能 IDLE は使用されてません"
+
+#: ../src/mn-imap-mailbox.gob:891
+#, c-format
+msgid ""
+"the remote server runs %s, the IDLE extension might not function properly"
+msgstr "サーバーで %s が稼働しています. 拡張機能 IDLE が正常に"
+"機能しないおそれがあります"
+
+#: ../src/mn-imap-mailbox.gob:900
+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
+msgid "server does not support in-band SSL/TLS"
+msgstr "サーバーがin-band SSL/TLSをサポートしていません"
+
+#: ../src/mn-imap-mailbox.gob:1381 ../src/mn-pop3-mailbox.gob:997
+msgid ""
+"a SASL authentication mechanism was selected but SASL support has not been "
+"compiled in"
+msgstr ""
+"SASL認証が選択されてますが, コンパイル時にSASLの使用が指定されて"
+"いません"
+
+#: ../src/mn-imap-mailbox.gob:1391 ../src/mn-pop3-mailbox.gob:1017
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "\"%s\" は未知の認証方式です"
+
+#: ../src/mn-imap-mailbox.gob:1423 ../src/mn-pop3-mailbox.gob:1053
+#, c-format
+msgid "disabling mechanism \"%s\" and retrying SASL authentication"
+msgstr "\"%s\" を無効にし, SASL認証を再試行します"
+
+#: ../src/mn-imap-mailbox.gob:1435
+msgid "falling back to IMAP LOGIN authentication"
+msgstr "代替機能として, IMAP LOGIN認証へ切り替えます"
+
+#: ../src/mn-imap-mailbox.gob:1447 ../src/mn-pop3-mailbox.gob:1082
+msgid "authentication failed"
+msgstr "認証に失敗しました"
+
+#: ../src/mn-mail-icon.gob:91
+msgid "Main _Window"
+msgstr "メインウィンドウ(_W)"
+
+#: ../src/mn-mail-icon.gob:92 ../src/mn-main-window.gob:165
+msgid "_Mail Reader"
+msgstr "メールリーダー(_M)"
+
+#: ../src/mn-mail-icon.gob:93 ../src/mn-main-window.gob:173
+msgid "_Update"
+msgstr "手動チェック(_U)"
+
+#: ../src/mn-mail-icon.gob:99
+msgid "R_emove From Notification Area"
+msgstr "通知エリアから外す(_E)"
+
+#: ../src/mn-mailbox-properties-dialog.gob:88
+#, c-format
+msgid "%s Properties"
+msgstr "%s のプロパティ"
+
+#: ../src/mn-mailbox-properties-dialog.gob:205
+msgid "Add a Mailbox"
+msgstr "メールボックスを追加"
+
+#: ../src/mn-mailbox-view.gob:179
+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
+#, c-format
+msgid "unhandled %s mailbox (%s)"
+msgstr "未処理のメールボックス %s (%s)"
+
+#: ../src/mn-mailbox-view.gob:528
+#, c-format
+msgid "%s mailbox"
+msgstr "%s メールボックス"
+
+#: ../src/mn-mailbox-view.gob:543
+msgid "detecting mailbox type..."
+msgstr "メールボックスの種別を判別しています..."
+
+#: ../src/mn-mailbox.gob:278
+msgid "\"type\" attribute missing"
+msgstr "\"type\" 属性が欠落"
+
+#: ../src/mn-mailbox.gob:285
+#, c-format
+msgid "unknown mailbox type \"%s\""
+msgstr "メールボックスの種別が不明: \"%s\""
+
+#: ../src/mn-mailbox.gob:305
+#, 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
+#, c-format
+msgid "property \"%s\" has no value"
+msgstr "プロパティ \"%s\" の値がありません"
+
+#: ../src/mn-mailboxes.gob:203
+msgid "An error has occurred while importing old mailboxes"
+msgstr "古いメールボックスのインポート時にエラーが発生"
+
+#: ../src/mn-mailboxes.gob:248
+msgid "Unable to load the mailboxes configuration"
+msgstr "メールボックスの設定読み込みに失敗"
+
+#: ../src/mn-mailboxes.gob:294
+msgid "Unable to parse the XML document."
+msgstr "XMLドキュメントが解析できません."
+
+#: ../src/mn-mailboxes.gob:301
+msgid "The root element is missing."
+msgstr "ルートエレメントが欠落."
+
+#: ../src/mn-mailboxes.gob:307
+#, c-format
+msgid "The root element \"%s\" is invalid."
+msgstr "ルートエレメント \"%s\" が不正."
+
+#: ../src/mn-mailboxes.gob:330
+#, c-format
+msgid "On line %i: %s."
+msgstr "オンライン %i: %s"
+
+#: ../src/mn-mailboxes.gob:335
+#, c-format
+msgid "On line %i: unknown element \"%s\"."
+msgstr "オンライン %i: 未知の要素 \"%s\"."
+
+#: ../src/mn-mailboxes.gob:346
+msgid "An error has occurred while loading the mailboxes configuration"
+msgstr "メールボックスの設定読み込み時にエラーが発生"
+
+#: ../src/mn-mailboxes.gob:371
+msgid "Unable to save the mailboxes configuration"
+msgstr "メールボックスの設定を保存できません"
+
+#: ../src/mn-mailboxes.gob:417
+msgid "Unable to write the XML document."
+msgstr "XMLドキュメントの作成に失敗."
+
+#. non fatal
+#: ../src/mn-mailboxes.gob:433
+#, c-format
+msgid "unable to delete %s: %s"
+msgstr "%s の削除に失敗: %s"
+
+#: ../src/mn-mailboxes.gob:457
+#, c-format
+msgid "%s has %i new message"
+msgstr "%s に新着メールが %i 件"
+
+#: ../src/mn-mailboxes.gob:483
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s がエラーを検出: %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:111
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "\"new\" フォルダのオープンに失敗: %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:144
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "\"new\" フォルダのクローズに失敗: %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:147
+#, 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 "メール(_M)"
+
+#: ../src/mn-main-window.gob:157
+msgid "_Edit"
+msgstr "編集(_E)"
+
+#: ../src/mn-main-window.gob:158
+msgid "_View"
+msgstr "表示(_V)"
+
+#: ../src/mn-main-window.gob:159
+msgid "_Help"
+msgstr "ヘルプ(_H)"
+
+#: ../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 "閉じる(_C)"
+
+#: ../src/mn-main-window.gob:183
+msgid "Close this window"
+msgstr "ウィンドウを閉じる"
+
+#: ../src/mn-main-window.gob:189
+msgid "_Quit"
+msgstr "終了(_Q)"
+
+#: ../src/mn-main-window.gob:191 ../src/mn-main.c:266
+msgid "Quit Mail Notification"
+msgstr "Mail Notificationを終了"
+
+#: ../src/mn-main-window.gob:199 ../src/mn-main-window.gob:247
+msgid "_Toolbars"
+msgstr "ツールバー(_T)"
+
+#: ../src/mn-main-window.gob:201
+msgid "Customize the toolbars"
+msgstr "ツールバーをカスタマイズ"
+
+#: ../src/mn-main-window.gob:207
+msgid "_Preferences"
+msgstr "プロパティ(_E)"
+
+#: ../src/mn-main-window.gob:217
+msgid "Toolbars Styl_e"
+msgstr "ツールバーのスタイル(_E)"
+
+#: ../src/mn-main-window.gob:219
+msgid "Customize the toolbars style"
+msgstr "ツールバーのスタイルをカスタマイズ"
+
+#: ../src/mn-main-window.gob:227
+msgid "_Contents"
+msgstr "マニュアル(_C)"
+
+#: ../src/mn-main-window.gob:229
+msgid "Display help"
+msgstr "ヘルプを表示"
+
+#: ../src/mn-main-window.gob:235
+msgid "_About"
+msgstr "情報(_A)"
+
+#: ../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 "ステータスバー(_S)"
+
+#: ../src/mn-main-window.gob:258
+msgid "Show or hide the statusbar"
+msgstr "ステータスバーを表示/隠す"
+
+#: ../src/mn-main-window.gob:269
+msgid "_Desktop Default"
+msgstr "デスクトップ環境のデフォルト(_D)"
+
+#: ../src/mn-main-window.gob:271
+msgid "Set the toolbars style to the desktop default setting"
+msgstr "ツールバーの形式をデスクトップ環境のデフォルト設定と同様に"
+
+#: ../src/mn-main-window.gob:277
+msgid "I_cons Only"
+msgstr "アイコンのみ(_C)"
+
+#: ../src/mn-main-window.gob:279
+msgid "Only display the toolbars icons"
+msgstr "ツールバーのアイコンのみ表示"
+
+#: ../src/mn-main-window.gob:285
+msgid "_Text Only"
+msgstr "テキストのみ(_T)"
+
+#: ../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 "アイコンの下にテキストを表示(_W)"
+
+#: ../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 "アイコンの脇にテキストを表示(_S)"
+
+#: ../src/mn-main-window.gob:303
+msgid "Display the toolbars text beside the icons"
+msgstr "ツールバーでアイコンの脇にテキストを表示"
+
+#: ../src/mn-main-window.gob:345
+#, c-format
+msgid "unable to load menus.xml: %s"
+msgstr "menus.xml の読み込みに失敗: %s"
+
+#: ../src/mn-main-window.gob:388
+msgid "unable to load toolbars.xml"
+msgstr "toolbars.xml を読み込みに失敗"
+
+#: ../src/mn-main-window.gob:439
+#, c-format
+msgid "%i new message"
+msgstr "%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 "内蔵のメールボックスバックエンド: "
+
+#: ../src/mn-main.c:124
+msgid "Compiled-in POP3 and IMAP features: "
+msgstr "内蔵のPOP3/IMAP機能: "
+
+#: ../src/mn-main.c:194
+msgid "Enable informational output"
+msgstr "Ausgabe von Informationen aktivieren"
+
+#: ../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
+msgid "Display the properties dialog"
+msgstr "プロパティダイアログを表示"
+
+#: ../src/mn-main.c:230
+msgid "Display the about dialog"
+msgstr "プログラムの情報ダイアログを表示"
+
+#: ../src/mn-main.c:239
+msgid "Close the mail summary popup"
+msgstr "メール一覧ポップアップを閉じる"
+
+#: ../src/mn-main.c:257
+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
+msgid "multi-threading is not available"
+msgstr "マルチスレッド使用不可"
+
+#: ../src/mn-main.c:355
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonoboが自動化オブジェクトの検出に失敗. Mail Notificationプログラムが"
+"正しくインストールされているかどうかをご確認ください."
+
+#: ../src/mn-main.c:361
+msgid "quitting Mail Notification"
+msgstr "Mail Notificationを終了..."
+
+#: ../src/mn-main.c:365
+msgid "Mail Notification is not running"
+msgstr "Mail Notificationが稼働していません"
+
+#: ../src/mn-main.c:372
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "Die GnomeVFS-Bibliothek konnte nicht initializiert werden."
+
+#: ../src/mn-main.c:404
+msgid "updating the mail status"
+msgstr "着信状況をチェック中"
+
+#: ../src/mn-main.c:413
+msgid "Mail Notification is already running"
+msgstr "Mail Notificationは既に稼働しています"
+
+#: ../src/mn-main.c:423
+#, c-format
+msgid ""
+"Bonobo could not locate the %s file. Please check your Mail Notification "
+"installation."
+msgstr ""
+"Bonoboが %s ファイルの検出に失敗しました. Mail Notificationが"
+"正しくインストールされているかどうかをご確認ください."
+
+#: ../src/mn-mbox-mailbox-backend.gob:209
+#, c-format
+msgid "unable to close file: %s"
+msgstr "ファイルのクローズに失敗: %s"
+
+#: ../src/mn-mbox-mailbox-backend.gob:222
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "メールボックスのオープンに失敗: %s"
+
+#: ../src/mn-message-mime.c:104
+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
+msgid "Unknown"
+msgstr "不明"
+
+#: ../src/mn-message.gob:124
+#, c-format
+msgid "%i second ago"
+msgstr "%i 秒前"
+
+#: ../src/mn-message.gob:128
+#, c-format
+msgid "about %i minute ago"
+msgstr "約 %i 分前"
+
+#: ../src/mn-message.gob:133
+#, c-format
+msgid "about %i hour ago"
+msgstr "約 %i 時間前"
+
+#: ../src/mn-message.gob:138
+#, c-format
+msgid "about %i day ago"
+msgstr "約 %i 日前"
+
+#: ../src/mn-message.gob:143
+#, c-format
+msgid "about %i week ago"
+msgstr "約 %i 週前"
+
+#. translators: "none" is used like "Mailbox: none"
+#: ../src/mn-message.gob:163
+msgid "none"
+msgstr "無し"
+
+#: ../src/mn-mh-mailbox-backend.gob:161
+#, c-format
+msgid "error while reading %s: %s"
+msgstr "%s の読み取り中にエラー: %s"
+
+#: ../src/mn-mh-mailbox-backend.gob:174
+#, c-format
+msgid "unable to open %s: %s"
+msgstr "%s のオープンに失敗: %s"
+
+#: ../src/mn-pi-mailbox-properties.gob:67
+msgid "sta_ndard"
+msgstr "標準(_N)"
+
+#: ../src/mn-pi-mailbox-properties.gob:68
+msgid "_in-band SSL/TLS"
+msgstr "_in-band SSL/TLS"
+
+#: ../src/mn-pi-mailbox-properties.gob:69
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLSポートの番号を指定(_X)"
+
+#: ../src/mn-pi-mailbox-properties.gob:73
+msgid "_Hostname:"
+msgstr "サーバー(_H):"
+
+#: ../src/mn-pi-mailbox-properties.gob:93
+msgid "_Details"
+msgstr "詳細(_D)"
+
+#: ../src/mn-pi-mailbox-properties.gob:148
+msgid "Connection type:"
+msgstr "接続方式:"
+
+#: ../src/mn-pi-mailbox-properties.gob:155
+msgid "Port:"
+msgstr "ポート:"
+
+#: ../src/mn-pi-mailbox-properties.gob:178
+msgid "_Authentication mechanism:"
+msgstr "認証方式(_A):"
+
+#: ../src/mn-pi-mailbox.gob:113
+msgid "SSL/TLS support has not been compiled in"
+msgstr ""
+"SSL/TLSを使用するための機能がコンパイル時に指定されていません"
+
+#: ../src/mn-pop3-mailbox.gob:359
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr "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:519
+msgid ""
+"SASL authentication with initial client response failed, retrying without "
+"initial client response"
+msgstr "SASL認証でクライアントの初期応答に失敗. 初期応答なしで再試行します"
+
+#: ../src/mn-pop3-mailbox.gob:733
+msgid "unknown error"
+msgstr "未知のエラー"
+
+#: ../src/mn-pop3-mailbox.gob:828
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgstr "LOGIN-DELAY を尊重し, %i 秒待ちます"
+
+#: ../src/mn-pop3-mailbox.gob:1009
+msgid "server does not support APOP authentication"
+msgstr "サーバーがAPOP認証をサポートしていません"
+
+#: ../src/mn-pop3-mailbox.gob:1065
+msgid "falling back to APOP authentication"
+msgstr "代替機能としてAPOP認証に切り替えます."
+
+#: ../src/mn-pop3-mailbox.gob:1070
+msgid "falling back to USER/PASS authentication"
+msgstr "代替機能としてUSER/PASS認証に切り替えます."
+
+#: ../src/mn-properties-dialog.gob:170 ../ui/properties-dialog.glade.h:10
+msgid "Mail Notification Properties"
+msgstr "Mail Notificationのプロパティ"
+
+#: ../src/mn-properties-dialog.gob:207
+msgid "top left"
+msgstr "左上"
+
+#: ../src/mn-properties-dialog.gob:208
+msgid "top right"
+msgstr "右上"
+
+#: ../src/mn-properties-dialog.gob:209
+msgid "bottom left"
+msgstr "左下"
+
+#: ../src/mn-properties-dialog.gob:210
+msgid "bottom right"
+msgstr "右下"
+
+#: ../src/mn-properties-dialog.gob:329
+msgid "No mailbox selected."
+msgstr "メールボックスが指定されていません."
+
+#: ../src/mn-properties-dialog.gob:334
+#, c-format
+msgid "%i mailbox selected."
+msgstr "%i 箇所のメールボックスを選択."
+
+#: ../src/mn-properties-dialog.gob:465
+#, c-format
+msgid "Test message #%i"
+msgstr "テストメッセージ No. %i"
+
+#: ../src/mn-properties-dialog.gob:470
+msgid "Mail Notification Properties Dialog"
+msgstr "プロパティダイアログ"
+
+#: ../src/mn-shell.gob:109
+msgid "You have new mail."
+msgstr "新しいメールがあります."
+
+#: ../src/mn-shell.gob:374
+msgid "Mailboxes Having New Mail"
+msgstr "メールボックスごとの着信状況"
+
+#: ../src/mn-shell.gob:393
+msgid "Errors"
+msgstr "エラー"
+
+#: ../src/mn-shell.gob:408
+msgid "Mail Summary"
+msgstr "新着メール一覧"
+
+#: ../src/mn-ssl.c:76
+msgid "unknown SSL/TLS error"
+msgstr "未知のSSL/TLSエラー"
+
+#: ../src/mn-stock.c:28
+msgid "Select _All"
+msgstr "すべてを選択(_A)"
+
+#: ../src/mn-stock.c:29
+msgid "Leave Fullscreen"
+msgstr "フルスクリーンをやめる"
+
+#: ../src/mn-stock.c:30
+msgid "Co_nnect"
+msgstr "接続(_N)"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:170
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "フォルダのオープンに失敗: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:209
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "フォルダのクローズに失敗: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:212
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "フォルダのリードに失敗: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:255
+msgid "unexpected end of file"
+msgstr "予想外のEOF"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:269
+#, c-format
+msgid "incompatible file version \"%i\""
+msgstr "バージョン \"%i\" のファイルとは互換性がありません"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:272
+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.gob:45
+msgid "System mailbox"
+msgstr "ローカルシステムのメールボックス"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:68
+#, 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
+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 が設定されていません"
+
+#: ../src/mn-util.c:281
+#, c-format
+msgid "error loading image: %s"
+msgstr "画像の読み込みに失敗: %s"
+
+#: ../src/mn-util.c:298
+#, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "ウィジェット \"%s\" がインタフェース内で見つかりません"
+
+#: ../src/mn-util.c:398
+#, c-format
+msgid "unable to open self as a module: %s"
+msgstr "自分自身をモジュールとしてオープンできません: %s"
+
+#: ../src/mn-util.c:403
+#, c-format
+msgid "signal handler \"%s\" not found"
+msgstr "シグナルハンドラ \"%s\" が見つかりません"
+
+#: ../src/mn-util.c:556 ../src/mn-util.c:579 ../src/mn-util.c:601
+#: ../src/mn-util.c:623
+msgid "A drag and drop error has occurred"
+msgstr "ドラッグ&ドロップエラーが発生"
+
+#: ../src/mn-util.c:557
+msgid "An invalid location list has been received."
+msgstr "不正なアドレスを取得しました."
+
+#: ../src/mn-util.c:602
+msgid "An invalid Mozilla location has been received."
+msgstr "Mozilla用のアドレス指定が不正."
+
+#: ../src/mn-util.c:678
+msgid "Unable to display help"
+msgstr "ヘルプを表示できません"
+
+#: ../src/mn-util.c:692
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "スレッドの生成に失敗: %s."
+
+#: ../src/mn-util.c:782
+msgid "_Do not show this message again"
+msgstr "このメッセージを次回から表示しない(_D)"
+
+#: ../src/mn-util.c:892
+#, c-format
+msgid ""
+"The following location is invalid:\n"
+"\n"
+"%s"
+msgstr ""
+"以下のアドレスが不正です:\n"
+"\n"
+"%s"
+
+#: ../src/mn-util.c:912
+msgid "A fatal error has occurred in Mail Notification"
+msgstr ""
+"Mail Notification内部で致命的なエラーが発生"
+
+#: ../src/mn-util.c:951
+#, c-format
+msgid "unable to get current time: %s"
+msgstr "現在の時刻の取得に失敗: %s"
+
+#: ../src/mn-util.c:1013
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr "シグナルの指定が不正です: \"%s\""
+
+#: ../src/mn-util.c:1052
+msgid "A command error has occurred in Mail Notification"
+msgstr ""
+"Mail Notificationの内部でコマンドエラーが発生"
+
+#: ../src/mn-util.c:1053
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "\"%s\" の実行に失敗: %s."
+
+#: ../src/mn-util.c:1311
+#, c-format
+msgid "unable to rename %s to %s: %s"
+msgstr "%s から %s への名称変更に失敗: %s"
+
+#: ../src/mn-vfs-mailbox-backend.gob:117
+#, c-format
+msgid "unable to monitor mailbox contents (%s), poll mode activated"
+msgstr "メールボックスの内容 (%s) を監視できません. "
+"pollモードに切り替えます"
+
+#: ../src/mn-vfs-mailbox.gob:238
+#, c-format
+msgid "unable to monitor mailbox type (%s), poll mode activated"
+msgstr "この種のメールボックス (%s) は監視できません. "
+"pollモードに切り替えます"
+
+#: ../src/mn-vfs-mailbox.gob:307
+msgid "unknown mailbox format"
+msgstr "unbekanntes Postfachformat"
+
+#: ../src/mn-vfs-mailbox.gob:307
+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)."
+msgstr ""
+"とりあえずの設定として, %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)."
+msgstr ""
+"とりあえずの設定として, %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)."
+msgstr ""
+"とりあえずの設定として, 約 %i 分間隔でチェックします. (設定はプロパティ"
+"ダイアログで変更できます.)"
+
+#: ../src/mn-vfs-mailbox.gob:415
+msgid "A monitoring error has occurred"
+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/edit-toolbars-dialog.glade.h:1
+msgid "Edit Toolbars"
+msgstr "ツールバーを編集"
+
+#: ../ui/edit-toolbars-dialog.glade.h:2
+msgid "_Add a New Toolbar"
+msgstr "新規ツールバー(_A)"
+
+#: ../ui/edit-toolbars-dialog.glade.h:3
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "_Use Default"
+msgstr "デフォルトの設定に(_U)"
+
+#: ../ui/mail-summary-popup.glade.h:1
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span size=\"larger\" 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:2
+msgid "Mailbox _name:"
+msgstr "メールボックスの名称:"
+
+#: ../ui/mailbox-properties-dialog.glade.h:3
+msgid "Mailbox _type:"
+msgstr "メールボックスの種別(_T):"
+
+#: ../ui/properties-dialog.glade.h:1
+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
+msgid "<span weight=\"bold\">Fonts</span>"
+msgstr "<span weight=\"bold\">フォント</span>"
+
+#: ../ui/properties-dialog.glade.h:5
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">メールボックス一覧</span>"
+
+#: ../ui/properties-dialog.glade.h:6
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">表示位置</span>"
+
+#: ../ui/properties-dialog.glade.h:7
+msgid "Co_ntents:"
+msgstr "内容(_N):"
+
+#: ../ui/properties-dialog.glade.h:8
+msgid "Dis_play mail summary in tooltip"
+msgstr "メール一覧をバルーンで表示(_P)"
+
+#: ../ui/properties-dialog.glade.h:9
+msgid "General"
+msgstr "全般"
+
+#: ../ui/properties-dialog.glade.h:11
+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 "最近のメールのみ表示"
+
+#: ../ui/properties-dialog.glade.h:14
+msgid "Use these _fonts:"
+msgstr "フォントを指定(_F):"
+
+#: ../ui/properties-dialog.glade.h:15
+msgid "When _all mail has been read:"
+msgstr "未読メールを無くしたとき(_A):"
+
+#: ../ui/properties-dialog.glade.h:16
+msgid "When _new mail arrives:"
+msgstr "メール着信時(_N):"
+
+#: ../ui/properties-dialog.glade.h:17
+msgid "_Automatically close after:"
+msgstr "この時間が経過したら自動的に閉じる(_A):"
+
+#: ../ui/properties-dialog.glade.h:18
+msgid "_Blink on errors"
+msgstr "エラー発生時にアイコンを点滅(_B)"
+
+#: ../ui/properties-dialog.glade.h:19
+msgid "_Delay between mail checks:"
+msgstr "自動メールチェックの間隔:"
+
+#: ../ui/properties-dialog.glade.h:20
+msgid "_Display a Test Popup"
+msgstr "ポップアップの動作テスト(_D)"
+
+#: ../ui/properties-dialog.glade.h:21
+msgid "_Display the main window"
+msgstr "メインウィンドウを表示(_D)"
+
+#: ../ui/properties-dialog.glade.h:22
+msgid "_Enable mail summary popup"
+msgstr "メール一覧ポップアップを有効に(_E)"
+
+#: ../ui/properties-dialog.glade.h:23
+msgid "_Horizontal offset:"
+msgstr "水平オフセット(_H):"
+
+#: ../ui/properties-dialog.glade.h:24
+msgid "_Launch the mail reader"
+msgstr "メールリーダーを起動(_L)"
+
+#: ../ui/properties-dialog.glade.h:25
+msgid "_Mail reader:"
+msgstr "メールリーダー(_M):"
+
+#: ../ui/properties-dialog.glade.h:26
+msgid "_Position:"
+msgstr "位置(_P):"
+
+#: ../ui/properties-dialog.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "GNOME起動時にMail Notificationを起動(_S)"
+
+#: ../ui/properties-dialog.glade.h:28
+msgid "_Title:"
+msgstr "タイトル(_T):"
+
+#: ../ui/properties-dialog.glade.h:29
+msgid "_Update the mail status"
+msgstr "着信状況を手動チェック(_U)"
+
+#: ../ui/properties-dialog.glade.h:30
+msgid "_Use fonts from theme"
+msgstr "テーマと同じフォントを使用(_U)"
+
+#: ../ui/properties-dialog.glade.h:31
+msgid "_Vertical offset:"
+msgstr "垂直オフセット(_V):"
+
+#: ../ui/properties-dialog.glade.h:32
+msgid "minutes"
+msgstr "分"
+
+#: ../ui/properties-dialog.glade.h:33
+msgid "pixels"
+msgstr "ピクセル"
+
+#: ../ui/properties-dialog.glade.h:34
+msgid "seconds"
+msgstr "秒"
+
diff --git a/po/nl.po b/po/nl.po
@@ -0,0 +1,1911 @@
+# Dutch translations for mail-notification.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Marcel J. Zwiebel <mj.zwiebel@nonux.nl>, 2006.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-01-04 14:00+0100\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Marcel J. Zwiebel <mj.zwiebel@nonux.nl>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n>1;"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Automatische E-Mail notificatie"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Automatische E-Mail notificatie fabriek"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:1
+msgid "Evolution folder tree control"
+msgstr "Evolution mappen boomweergave bedieningselement"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:2
+msgid "Evolution folder tree control factory"
+msgstr "Evolution mappen boomweergave bedieningselement fabriek"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:3
+msgid "Mail Notification / Evolution glue"
+msgstr "E-mail notificatie / Evolution verbinding"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:4
+msgid "Mail Notification / Evolution glue factory"
+msgstr "E-mail notificatie / Evolution verbinding fabriek"
+
+#: ../data/mail-notification-properties.desktop.in.h:1
+#: ../src/mn-main-window.gob:209
+msgid "Configure Mail Notification"
+msgstr "De e-mail notificatie instellen"
+
+#: ../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
+msgid "Mail Notification"
+msgstr "E-mail notificatie"
+
+#: ../data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Informeer mij wanneer nieuwe e-mail berichten binnenkomen"
+
+#: ../data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr "Het e-mail overzichtsvenster automatisch sluiten"
+
+#: ../data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Bij fouten knipperen"
+
+#: ../data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "Wachttijd tussen het controleren van e-mail (minutengedeelte)."
+
+#: ../data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "Wachttijd tussen het controleren van e-mail (secondengedeelte)."
+
+#: ../data/mail-notification.schemas.in.h:5
+msgid "Display mail summary in tooltip"
+msgstr "Overzicht nieuwe e-mail in mini-weergave (tooltip)"
+
+#: ../data/mail-notification.schemas.in.h:6
+msgid "Do not show the immediate notification error dialog"
+msgstr "Laat de directe notificatie foutmelding niet zien"
+
+#: ../data/mail-notification.schemas.in.h:7
+msgid "Double-click action"
+msgstr "Dubbelklik actie"
+
+#: ../data/mail-notification.schemas.in.h:8
+msgid "Enable mail summary popup"
+msgstr "Mini-overzicht (popup) nieuwe e-mail activeren"
+
+#: ../data/mail-notification.schemas.in.h:9
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Vingerafdrukken van betrouwbare X509 certificaten"
+
+#: ../data/mail-notification.schemas.in.h:10
+msgid "Height of edit toolbars dialog"
+msgstr "Hoogte van de invoer werkbalken dialoogvenster"
+
+#: ../data/mail-notification.schemas.in.h:11
+msgid "Height of main window"
+msgstr "Hoogte van het hoofdvenster"
+
+#: ../data/mail-notification.schemas.in.h:12
+msgid "Height of properties dialog"
+msgstr "Hoogte van het instellingen dialoogvenster"
+
+#: ../data/mail-notification.schemas.in.h:13
+msgid "Mail read command"
+msgstr "Opdracht bij het lezen van e-mail"
+
+#: ../data/mail-notification.schemas.in.h:14
+msgid "Mail reader command"
+msgstr "Opdracht voor het starten van het e-mail programma"
+
+#: ../data/mail-notification.schemas.in.h:15
+msgid "Mail summary popup contents font"
+msgstr "Lettertype in het e-mail overzichtsvenster"
+
+#: ../data/mail-notification.schemas.in.h:16
+msgid "Mail summary popup fonts aspect source"
+msgstr "Locatie lettertypes voor het e-mail overzichtsvenster"
+
+#: ../data/mail-notification.schemas.in.h:17
+msgid "Mail summary popup horizontal offset"
+msgstr "Horizontale plaatsing van het e-mail overzichtsvenster"
+
+#: ../data/mail-notification.schemas.in.h:18
+msgid "Mail summary popup position"
+msgstr "Positie van het e-mail overzichtsvenster"
+
+#: ../data/mail-notification.schemas.in.h:19
+msgid "Mail summary popup title font"
+msgstr "Lettertype voor de titel van het e-mail overzichtsvenster"
+
+#: ../data/mail-notification.schemas.in.h:20
+msgid "Mail summary popup vertical offset"
+msgstr "Horizontale plaatsing van het e-mail overzichtsvenster"
+
+#: ../data/mail-notification.schemas.in.h:21
+msgid "Minutes between mail checks"
+msgstr "Wachttijd in minuten tussen de controles van nieuwe e-mail"
+
+#: ../data/mail-notification.schemas.in.h:22
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr "Wachttijd in minuten voordat het e-mail overzichtsvenster gesloten wordt"
+
+#: ../data/mail-notification.schemas.in.h:23
+msgid "New mail command"
+msgstr "Opdracht bij ontvangst van nieuwe e-mail"
+
+#: ../data/mail-notification.schemas.in.h:24
+msgid "Only display recent mail in mail summary popup"
+msgstr "Laat alleen meest recente e-mail zien in overzichtsvenster"
+
+#: ../data/mail-notification.schemas.in.h:25
+msgid "Run a command when all mail is read"
+msgstr "Opdracht na het lezen van alle nieuwe e-mail"
+
+#: ../data/mail-notification.schemas.in.h:26
+msgid "Run a command when new mail arrives"
+msgstr "Voer een opdracht uit als nieuwe e-mail arriveert"
+
+#: ../data/mail-notification.schemas.in.h:27
+msgid "Seconds between mail checks"
+msgstr "Wachttijd in seconden tussen het controleren van e-mail"
+
+#: ../data/mail-notification.schemas.in.h:28
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr "Wachttijd in seconden voordat het e-mail overzichtsvenster gesloten wordt"
+
+#: ../data/mail-notification.schemas.in.h:29
+msgid "Set a mail reader"
+msgstr "Instelling keuze e-mail programma opslaan"
+
+#: ../data/mail-notification.schemas.in.h:30
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"main-window\", \"launch-mail-reader\" or \"update-mail-status\"."
+msgstr ""
+"De opdracht die uitgevoerd moet worden bij een dubbelklik op het icoon. Heeft "
+"ofwel de waarde »display-mail-window«, »launch-mail-reader« of  »update-"
+"mail-status«."
+
+#: ../data/mail-notification.schemas.in.h:31
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+"Wachttijd voordat het e-mail overzichtsvenster gesloten wordt (minutendeel)."
+
+#: ../data/mail-notification.schemas.in.h:32
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+"Wachttijd voordat het e-mail overzichtsvenster gesloten wordt (secondendeel)."
+
+#: ../data/mail-notification.schemas.in.h:33
+msgid ""
+"The aspect source of the mail summary popup fonts. Must be \"theme\" or "
+"\"custom\"."
+msgstr ""
+"Het aspect gedeelte van de lettertypes voor de overzichtsweergave (popup). "
+"De waarde moet »theme« of »custom« zijn."
+
+#: ../data/mail-notification.schemas.in.h:34
+msgid "The command to run to launch the mail reader."
+msgstr "De opdracht om het e-mail programma te starten"
+
+#: ../data/mail-notification.schemas.in.h:35
+msgid "The command to run when all mail is read."
+msgstr "Opdracht die uitgevoerd moet worden wanneer alle e-mail gelezen is"
+
+#: ../data/mail-notification.schemas.in.h:36
+msgid "The command to run when new mail arrives."
+msgstr "Opdracht die uitgevoerd moet worden wanneer nieuwe e-mail arriveert."
+
+#: ../data/mail-notification.schemas.in.h:37
+msgid "The custom font to use for the contents of the mail summary popup."
+msgstr ""
+"Het eigen lettertype voor het e-mail overzichtsvenster."
+
+#: ../data/mail-notification.schemas.in.h:38
+msgid "The custom font to use for the title of the mail summary popup."
+msgstr "Het eigen lettertype voor de titel van het e-mail overzichtsvenster."
+
+#: ../data/mail-notification.schemas.in.h:39
+msgid "The height of the edit toolbars dialog in pixels."
+msgstr "Hoogte van de invoer werkbalken dialoogvenster in pixels."
+
+#: ../data/mail-notification.schemas.in.h:40
+msgid "The height of the main window in pixels."
+msgstr "Hoogte van het hoofdvenster in pixels."
+
+#: ../data/mail-notification.schemas.in.h:41
+msgid "The height of the properties dialog in pixels."
+msgstr "Hoogte van het instellingen dialoogvenster in pixels"
+
+#: ../data/mail-notification.schemas.in.h:42
+msgid ""
+"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
+"certificate."
+msgstr ""
+"De list met betrouwbare SSL/TLS-servers (hostname:port) zonder X509-"
+"certificaat."
+
+#: ../data/mail-notification.schemas.in.h:43
+msgid ""
+"The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr ""
+"De lijst met betrouwbare X509-certificaten, gerepresenteerd door hun MD5"
+"vingerafdruk."
+
+#: ../data/mail-notification.schemas.in.h:44
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+"Het aantal pixels ruimte links en rechts tussen de rand ven het beeldscherm "
+"en het e-mail overzichtsvenster."
+
+#: ../data/mail-notification.schemas.in.h:45
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+"Het aantal pixels ruimte boven en onder tussen de rand ven het beeldscherm "
+"en het e-mail overzichtsvenster."
+
+#: ../data/mail-notification.schemas.in.h:46
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+"De positie van e-mail overzichtsvenster. De waarden moeten zijn »boven-links«, "
+"»boven-rechts«, »onder-links« oder »onder-rechts«."
+
+#: ../data/mail-notification.schemas.in.h:47
+msgid ""
+"The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text\", "
+"\"both\" or \"both-horiz\"."
+msgstr ""
+"De stijl voor de werkbalken. Dit moet zijn »desktop-default«, »icons«, »text«, "
+"»both« of »both-horiz«."
+
+#: ../data/mail-notification.schemas.in.h:48
+msgid "The width of the edit toolbars dialog in pixels."
+msgstr "Hoogte van de invoer werkbalken dialoogvenster in pixels."
+
+#: ../data/mail-notification.schemas.in.h:49
+msgid "The width of the main window in pixels."
+msgstr "Hoogte van het hoofdvenster in pixels."
+
+#: ../data/mail-notification.schemas.in.h:50
+msgid "The width of the properties dialog in pixels."
+msgstr "Hoogte van het instellingen dialoogvenster in pixels."
+
+#: ../data/mail-notification.schemas.in.h:51
+msgid "Toolbars style"
+msgstr "Stijl werkbalken"
+
+#: ../data/mail-notification.schemas.in.h:52
+msgid "Trusted servers list"
+msgstr "Lijst trusted servers"
+
+#: ../data/mail-notification.schemas.in.h:53
+msgid "View statusbar"
+msgstr "Statusbalk zichtbaar"
+
+#: ../data/mail-notification.schemas.in.h:54
+msgid "View toolbars"
+msgstr "Werkbalken zichtbaar"
+
+#: ../data/mail-notification.schemas.in.h:55
+msgid "Whether the status icon should blink on errors or not."
+msgstr ""
+"Moet het e-mail icoon bij het optreden van fouten knipperen"
+
+#: ../data/mail-notification.schemas.in.h:56
+msgid "Whether the statusbar should be visible or not."
+msgstr "Moet de statusbalk zichtbaar zijn."
+
+#: ../data/mail-notification.schemas.in.h:57
+msgid "Whether the toolbars should be visible or not."
+msgstr "Moeten de werkbalken zichtbaar zijn."
+
+#: ../data/mail-notification.schemas.in.h:58
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr ""
+"Moet het e-mail overzichtsvenster (popup) automatisch gesloten worden."
+
+#: ../data/mail-notification.schemas.in.h:59
+msgid "Whether to display the mail summary in the status icon tooltip or not."
+msgstr ""
+"Moet het e-mail overzicht in het statusbericht van het icoon (tooltip) worden getoond."
+
+#: ../data/mail-notification.schemas.in.h:60
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr ""
+"Moet het e-mail overzichtsvenster getoond worden bij het arriveren van e-mail."
+
+#: ../data/mail-notification.schemas.in.h:61
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+"Moet reeds getoonde e-mail in het overzichtsvenster verborgen worden."
+
+#: ../data/mail-notification.schemas.in.h:62
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+"Moet het direct tonen van een foutbericht worden voorkomen."
+
+#: ../data/mail-notification.schemas.in.h:63
+msgid "Whether to run a command when all mail is read or not."
+msgstr ""
+"Moet een opdracht uitgevoerd worden als alle e-mail gelezen is."
+
+#: ../data/mail-notification.schemas.in.h:64
+msgid "Whether to run a command when new mail arrives or not."
+msgstr ""
+"Moet een opdracht uitgevoerd worden als een nieuwe e-mail arriveert."
+
+#: ../data/mail-notification.schemas.in.h:65
+msgid "Whether to set a mail reader or not."
+msgstr "Moet een e-mail programma gekozen worden."
+
+#: ../data/mail-notification.schemas.in.h:66
+msgid "Width of edit toolbars dialog"
+msgstr "Breedte van het invoer werkbalken venster."
+
+#: ../data/mail-notification.schemas.in.h:67
+msgid "Width of main window"
+msgstr "Breedte van het hoofdvenster."
+
+#: ../data/mail-notification.schemas.in.h:68
+msgid "Width of properties dialog"
+msgstr "Breedte van het instellingenvenster"
+
+#: ../data/mail-notification.soundlist.in.h:2
+msgid "New Mail"
+msgstr "Nieuwe e-mail"
+
+#: ../src/egg-editable-toolbar.c:534
+msgid "_Remove Toolbar"
+msgstr "W_erkbalken verwijderen"
+
+#: ../src/egg-toolbar-editor.c:555
+msgid "Separator"
+msgstr "Scheidingslijn"
+
+#: ../src/eggtrayicon.c:128
+msgid "Orientation"
+msgstr "Orientatie"
+
+#: ../src/eggtrayicon.c:129
+msgid "The orientation of the tray."
+msgstr "De orientatie van het mededelingengebied."
+
+#: ../src/mn-about-dialog.gob:48
+msgid "A Mail Notification Icon"
+msgstr ""
+"Een e-mail icoon dat verschijnt als er nieuwe e-mail berichten in uw postbus "
+"zijn gearriveerd."
+
+#.
+#. * translators: Your Name <your-email>
+#. * optionally followed by one or more: \nOther Contributor's Name <his-email>
+#.
+#: ../src/mn-about-dialog.gob:56
+msgid "translator-credits"
+msgstr "Marcel J. Zwiebel <mj.zwiebel@nonux.nl>"
+
+#: ../src/mn-about-dialog.gob:78
+msgid "Unable to open link"
+msgstr "De verwijzing kan niet geopend worden"
+
+#: ../src/mn-auth-combo-box.gob:103
+#: ../src/mn-autodetect-mailbox-properties.gob:92
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">automatische detectie</span>"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:46
+msgid "_Username:"
+msgstr "Gebr_uikersnaam:"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:50
+msgid "_Password:"
+msgstr "_Wachtwoord:"
+
+#: ../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 ""
+"De e-mail notificatie kon zich niet aanmelden bij postbus %s »%s« "
+"Een mogelijke verklaring kan zijn dat de opgegeven combinatie "
+"gebruikersnaam/wachtwoord onjuist is. \n"
+"\n"
+"Geef u aub opnieuw uw gebruikersnaam/wachtwoord."
+
+#: ../src/mn-authenticated-mailbox.gob:153
+#, c-format
+msgid "Enter your credentials for %s mailbox %s."
+msgstr "Geef aub uw gebruikersnaam/wachtwoord voor postbus %s »%s« ."
+
+#. keep the title in sync with gnome-authentication-manager
+#: ../src/mn-authenticated-mailbox.gob:195
+msgid "Authentication Required"
+msgstr "Aanmelding is verplicht"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:93
+msgid "Location"
+msgstr "Locatie"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:103
+msgid "_Location:"
+msgstr "_Locatie:"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:110
+msgid "_Browse..."
+msgstr "_Doorzoeken..."
+
+#: ../src/mn-autodetect-mailbox-properties.gob:149
+msgid "Select a File or Folder"
+msgstr "Selecteer een bestand of map"
+
+#: ../src/mn-client-session.c:248
+#, c-format
+msgid "resolving %s"
+msgstr "connectie maken met %s"
+
+#: ../src/mn-client-session.c:264
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "er kon geen connectie worden gemaakt met %s: %s"
+
+#: ../src/mn-client-session.c:308
+#, c-format
+msgid "%s: unsupported address family"
+msgstr "%s: adresfamilie wordt niet ondersteund "
+
+#: ../src/mn-client-session.c:315
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr "%s: Socket kon niet aangemaakt worden: %s"
+
+#: ../src/mn-client-session.c:319
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "connectie maken met %s (%s) via poort %i"
+
+#: ../src/mn-client-session.c:322
+#, c-format
+msgid "unable to connect: %s"
+msgstr "er kan geen verbinding worden gemaakt: %s"
+
+#: ../src/mn-client-session.c:327
+msgid "connected successfully"
+msgstr "verbinding geslaagd"
+
+#. if reached, we couldn't find a working address
+#: ../src/mn-client-session.c:333
+#, c-format
+msgid "unable to connect to %s"
+msgstr "er kan geen verbinding gemaakt worden met %s"
+
+#: ../src/mn-client-session.c:360
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr "de OpenSSL bibliotheek kan niet geinitialiseerd worden: %s"
+
+#: ../src/mn-client-session.c:368
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr "een SSL/TLS object kan niet aangemaakt worden: %s"
+
+#: ../src/mn-client-session.c:374
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr "een SSL/TLS descriptor kan niet gezet worden: %s"
+
+#: ../src/mn-client-session.c:380
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr "een SSL/TLS handshake kan niet uitgevoerd worden: %s"
+
+#: ../src/mn-client-session.c:386
+msgid "untrusted server"
+msgstr "niet-betrouwbare server"
+
+#: ../src/mn-client-session.c:390
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr "een SSL/TLS layer is nu actief (%s, %s %i-Bit)"
+
+#: ../src/mn-client-session.c:437
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, vingerafdruk %s"
+
+#: ../src/mn-client-session.c:466
+msgid "missing certificate"
+msgstr "missend certificaat"
+
+#: ../src/mn-client-session.c:492
+#, 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 ""
+"E-mail notificatie kan »%s« niet vertrouwen (%s). Het is mogelijk dat iemand uw communicatie "
+"ondesrchept om vertrouwelijke informatie te verkrijgen.\n"
+"\n"
+"U moet alleen verbinding maken met de server als u er zeker van bent dat u verbinding "
+"heeft met »%s«. Als u er toch voor kiest om verbinding met de server te maken, dan zal "
+"deze boodschap niet meer getoond worden."
+
+#: ../src/mn-client-session.c:507
+msgid "Connect to untrusted server?"
+msgstr "Wilt u verbinding maken met een niet-betrouwbare server?"
+
+#: ../src/mn-client-session.c:571
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "het antwoord »%s« is niet geldig binnen de huidige context"
+
+#: ../src/mn-client-session.c:599
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "het antwoord »%s« kan niet geanalyseerd worden"
+
+#: ../src/mn-client-session.c:649 ../src/mn-client-session.c:656
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "lezen van de server is niet mogelijk: %s"
+
+#: ../src/mn-client-session.c:654
+msgid "unable to read from server: EOF"
+msgstr "lezen van de server is niet mogelijk: EOF"
+
+#: ../src/mn-client-session.c:666
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "de gegevens kunnen niet met behulp van SASL gedecodeerd worden: %s"
+
+#: ../src/mn-client-session.c:811
+#, c-format
+msgid "unable to encode data using SASL: %s"
+msgstr "de gegevens kunnen niet met behulp van SASL gecodeerd worden: %s"
+
+#: ../src/mn-client-session.c:842 ../src/mn-client-session.c:849
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "schrijven op de server is niet mogelijk: %s"
+
+#: ../src/mn-client-session.c:847
+msgid "unable to write to server: EOF"
+msgstr "schrijven op de server is niet mogelijk: EOF"
+
+#: ../src/mn-client-session.c:878 ../src/mn-pop3-mailbox.gob:468
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr "de gegevens kunnen niet met behulp van Base64 gecodeerd worden: %s"
+
+#: ../src/mn-client-session.c:1056
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr "Dee SASL-bibliotheek kan niet geinitialiseerd worden: %s"
+
+#: ../src/mn-client-session.c:1068
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr "het locale adres van socket kan niet opgevraagd worden: %s"
+
+#: ../src/mn-client-session.c:1074
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr ""
+"het externe adres van socket kan niet opgevraagd worden:: %s"
+
+#: ../src/mn-client-session.c:1108
+#, c-format
+msgid "unable to set SASL security properties: %s"
+msgstr "de SASL-veiligheidseigenschappen kunnen  niet gezet worden: %s"
+
+#: ../src/mn-client-session.c:1132
+msgid ""
+"unable to start SASL authentication: SASL asked for something we did not know"
+msgstr ""
+"de SASL-authenticatie kan niet gestart worden: SASL vroeg naar iets waar we geen verstand van hebben"
+
+#: ../src/mn-client-session.c:1151
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr "de SASL-authenticatie kan niet gestart worden: %s"
+
+#: ../src/mn-client-session.c:1155
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr "Er kan geen SASL-verbinding worden gemaakt: %s"
+
+#: ../src/mn-client-session.c:1202
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr ""
+"SASL vroeg naar iets waar we geen verstand van hebben, SASL-authenticatie "
+"wordt afgebroken"
+
+#: ../src/mn-client-session.c:1219
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr "%s, SASL-authenticatie wordt afgebroken"
+
+#. compliance error
+#: ../src/mn-client-session.c:1224
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr "de Base64-invoer van de server kan niet gedecodeerd worden: %s"
+
+#: ../src/mn-client-session.c:1260
+#, c-format
+msgid "a SASL security layer of strength factor %i is now active"
+msgstr "de SASL-veiligheidslaag met sterkte niveau %i is nu geactiveerd"
+
+#. a security layer is active but we can't retrieve maxoutbuf -> fatal
+#: ../src/mn-client-session.c:1265
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr "de waarde SASL_MAXOUTBUF kan niet worden gevonden: %s"
+
+#: ../src/mn-client-session.c:1271
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr "waarschuwing: de waarde SASL_SSF kan niet worden gevonden: %s"
+
+#: ../src/mn-conf.c:240
+msgid "A directory creation error has occurred"
+msgstr "Bij het aanmaken van een map is een fout opgetreden"
+
+#: ../src/mn-conf.c:241
+#, c-format
+msgid "Unable to create directory \"%s\": %s."
+msgstr "de map »%s« kan niet aangemaakt worden: %s."
+
+#: ../src/mn-conf.c:317
+#, c-format
+msgid "recursively unsetting %s"
+msgstr "%s recursief terugzetten"
+
+#: ../src/mn-conf.c:321
+msgid "syncing the GConf database"
+msgstr "synchroniseren met de GConf-database"
+
+#: ../src/mn-conf.c:324
+msgid "completed"
+msgstr "voltooid"
+
+#: ../src/mn-custom-vfs-mailbox.gob:76
+msgid "invalid location"
+msgstr "ongeldige locatie"
+
+#: ../src/mn-evolution-folder-tree-control.c:86
+msgid "The currently selected URI"
+msgstr "De huidige geselecteerde URI"
+
+#: ../src/mn-evolution-mailbox-properties.gob:67
+msgid "Folder"
+msgstr "Map"
+
+#: ../src/mn-evolution-mailbox-properties.gob:169
+msgid ""
+"Mail Notification can not contact Evolution. Make sure that Evolution is "
+"running and that the Evolution Mail Notification plugin is loaded."
+msgstr "E-mail notificatie kan geen verbinding maken met Evolution. "
+"Controleer of Evolution gestart is en dat de Mail Notification plugin "
+"geactiveerd is."
+
+#: ../src/mn-evolution-mailbox.gob:61
+msgid "folder not found"
+msgstr "map niet gevonden"
+
+#: ../src/mn-evolution-mailbox.gob:182
+msgid "unable to contact Evolution"
+msgstr "er kan geen verbinding met Evolution gemaakt worden"
+
+#: ../src/mn-evolution-plugin.c:130 ../src/mn-evolution-plugin.c:134
+msgid "Unable to activate the Mail Notification plugin"
+msgstr "De Evolution-plugin Mail Notification kan niet geactiveerd worden"
+
+#: ../src/mn-evolution-plugin.c:130
+#, c-format
+msgid ""
+"Bonobo could not locate the %s server. Please check your Mail Notification "
+"installation."
+msgstr ""
+"Bonobo kan de %s server niet vinden. Controleer aub "
+"de installatie van E-mail notificatie."
+
+#: ../src/mn-evolution-plugin.c:134 ../src/mn-main.c:427
+#, c-format
+msgid ""
+"Bonobo was unable to register the %s server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo kan niet aanmelden bij de %s server. Controleer aub "
+"de installatie van E-mail notificatie."
+
+#: ../src/mn-gmail-mailbox.gob:111
+msgid "invalid feed location"
+msgstr "ongeldig feed-adres"
+
+#: ../src/mn-gmail-mailbox.gob:125
+#, c-format
+msgid "retrieving feed from %s"
+msgstr "feed wordt bij %s opgevraagd"
+
+#: ../src/mn-gmail-mailbox.gob:132
+#, c-format
+msgid "unable to retrieve feed: %s"
+msgstr "de feed kan niet opgevraagd worden: %s"
+
+#: ../src/mn-gmail-mailbox.gob:147 ../src/mn-gmail-mailbox.gob:194
+msgid "unable to parse feed"
+msgstr "de feed kan niet geanalyseerd worden"
+
+#: ../src/mn-gmime-stream-vfs.gob:49
+#: ../src/mn-sylpheed-mailbox-backend.gob:152
+#, c-format
+msgid "unable to read %s: %s"
+msgstr "%s kan niet gelezen worden: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:51
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr "er kan niet naar %s geschreven worden: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:53
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr "er kan niet gezocht worden in in %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:55
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "onmogleijk om de positie van %s vast te stellen: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:57 ../src/mn-mh-mailbox-backend.gob:158
+#, c-format
+msgid "unable to close %s: %s"
+msgstr "%s kan niet gesloten worden: %s"
+
+#: ../src/mn-imap-mailbox-properties.gob:113
+msgid "Mailbox:"
+msgstr "Posbus:"
+
+#: ../src/mn-imap-mailbox-properties.gob:117
+msgid "in_box"
+msgstr "In_box"
+
+#: ../src/mn-imap-mailbox-properties.gob:128
+msgid "oth_er:"
+msgstr "_Ander:"
+
+#: ../src/mn-imap-mailbox-properties.gob:139
+msgid "ne_ver"
+msgstr "n_ooit"
+
+#: ../src/mn-imap-mailbox-properties.gob:140
+msgid "au_todetect"
+msgstr "au_tomatische detectie"
+
+#: ../src/mn-imap-mailbox-properties.gob:141
+msgid "al_ways"
+msgstr "al_tijd"
+
+#: ../src/mn-imap-mailbox-properties.gob:173
+msgid "Use the <span style=\"italic\">IDLE</span> extension:"
+msgstr "Gebruik de <span style=\"italic\">IDLE</span> extensie:"
+
+#: ../src/mn-imap-mailbox.gob:390
+msgid "server did not send capabilities"
+msgstr "geen ontvangst van de server-capaciteiten"
+
+#: ../src/mn-imap-mailbox.gob:573
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr ""
+"de server heeft geroepen LOGINDISABLED, LOGIN-authorisatie wordt niet "
+"gebruikt"
+
+#: ../src/mn-imap-mailbox.gob:574
+msgid "unable to login"
+msgstr "aanmelding mislukt"
+
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:714
+msgid "server did not send search results"
+msgstr "de server heeft geen zoekresultaten verzonden"
+
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:792
+msgid "server did not send all the messages we requested"
+msgstr "de server heeft niet alle opgegeven berichten verzonden"
+
+#: ../src/mn-imap-mailbox.gob:859
+msgid "unable to fetch message"
+msgstr "berichten konden niet opgehaald worden"
+
+#: ../src/mn-imap-mailbox.gob:875
+msgid ""
+"\"Use the IDLE extension\" set to \"never\" in the mailbox properties, "
+"logging out"
+msgstr "»Gebruik de IDLE-extensie« wordt gezet op »nooit« in de postbus-eigenschap, "
+"afmelden"
+
+#: ../src/mn-imap-mailbox.gob:886
+#, c-format
+msgid "the remote server runs %s, not using the IDLE extension"
+msgstr "de externe server gebruikt %s, de IDLE-extensie wordt niet gebruikt"
+
+#: ../src/mn-imap-mailbox.gob:891
+#, c-format
+msgid ""
+"the remote server runs %s, the IDLE extension might not function properly"
+msgstr "de externe server gebruikt %s, de IDLE-extensie zou misschien niet goed kunnen werken"
+
+#: ../src/mn-imap-mailbox.gob:900
+msgid "the remote server does not support the IDLE extension, logging out"
+msgstr "de externe server ondersteund de IDLE-extensie niet, er wordt afgemeld"
+
+#: ../src/mn-imap-mailbox.gob:1251 ../src/mn-pop3-mailbox.gob:1124
+msgid "unknown server error"
+msgstr "onbekende server-fout :-("
+
+#: ../src/mn-imap-mailbox.gob:1357 ../src/mn-pop3-mailbox.gob:311
+msgid "server does not support in-band SSL/TLS"
+msgstr "de server ondersteund geen in-band SSL/TLS"
+
+#: ../src/mn-imap-mailbox.gob:1381 ../src/mn-pop3-mailbox.gob:997
+msgid ""
+"a SASL authentication mechanism was selected but SASL support has not been "
+"compiled in"
+msgstr ""
+"u heeft authenticatie met behulp van SASL gekozen, echter "
+"SASL-ondersteuning is bij de aanmaak van het programma niet ingesteld"
+
+#: ../src/mn-imap-mailbox.gob:1391 ../src/mn-pop3-mailbox.gob:1017
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "onbekend authenticatie-mechanisme »%s«"
+
+#: ../src/mn-imap-mailbox.gob:1423 ../src/mn-pop3-mailbox.gob:1053
+#, c-format
+msgid "disabling mechanism \"%s\" and retrying SASL authentication"
+msgstr "het mechanisme %s wordt uitgeschakeld en een nieuwe poging wordt gewaagd met behulp van SASL-authenticatie"
+
+#: ../src/mn-imap-mailbox.gob:1435
+msgid "falling back to IMAP LOGIN authentication"
+msgstr "er wordt teruggevallen op authenticatie via IMAP LOGIN"
+
+#: ../src/mn-imap-mailbox.gob:1447 ../src/mn-pop3-mailbox.gob:1082
+msgid "authentication failed"
+msgstr "authenticatie mislukt"
+
+#: ../src/mn-mail-icon.gob:91
+msgid "Main _Window"
+msgstr "_Hoofdvenster"
+
+#: ../src/mn-mail-icon.gob:92 ../src/mn-main-window.gob:165
+msgid "_Mail Reader"
+msgstr "_E-mail programma"
+
+#: ../src/mn-mail-icon.gob:93 ../src/mn-main-window.gob:173
+msgid "_Update"
+msgstr "_Bijwerken"
+
+#: ../src/mn-mail-icon.gob:99
+msgid "R_emove From Notification Area"
+msgstr "V_erwijderen van medelingengebied"
+
+#: ../src/mn-mailbox-properties-dialog.gob:88
+#, c-format
+msgid "%s Properties"
+msgstr "%s Eigenschappen"
+
+#: ../src/mn-mailbox-properties-dialog.gob:205
+msgid "Add a Mailbox"
+msgstr "Een postbus toevoegen"
+
+#: ../src/mn-mailbox-view.gob:179
+msgid "A paste error has occurred"
+msgstr "Een invoegfout is opgetreden"
+
+#: ../src/mn-mailbox-view.gob:320 ../src/mn-message-view.gob:313
+msgid "Mailbox"
+msgstr "Postbus"
+
+#: ../src/mn-mailbox-view.gob:523
+#, c-format
+msgid "unhandled %s mailbox (%s)"
+msgstr "onbehandelde %s-postbus (%s)"
+
+#: ../src/mn-mailbox-view.gob:528
+#, c-format
+msgid "%s mailbox"
+msgstr "%s-postbus"
+
+#: ../src/mn-mailbox-view.gob:543
+msgid "detecting mailbox type..."
+msgstr "detecteren postbustype..."
+
+#: ../src/mn-mailbox.gob:278
+msgid "\"type\" attribute missing"
+msgstr "eigenschap »type« werd niet gevonden"
+
+#: ../src/mn-mailbox.gob:285
+#, c-format
+msgid "unknown mailbox type \"%s\""
+msgstr "onbekend type postbus »%s«"
+
+#: ../src/mn-mailbox.gob:305
+#, c-format
+msgid ""
+"property \"%s\": unable to transform string \"%s\" into a value of type \"%s"
+"\""
+msgstr "eigenschap »%s«: het is niet mogelijk de tekenreeks »%s« in een waarde van "
+"type »%s« om te zetten"
+
+#: ../src/mn-mailbox.gob:744
+#, c-format
+msgid "property \"%s\" has no value"
+msgstr "eigenschap »%s« heeft geen waarde"
+
+#: ../src/mn-mailboxes.gob:203
+msgid "An error has occurred while importing old mailboxes"
+msgstr "Bij het importeren van oude postbussen is een fout opgetreden"
+
+#: ../src/mn-mailboxes.gob:248
+msgid "Unable to load the mailboxes configuration"
+msgstr "Het is niet mogelijk de postbus-configuratie te laden"
+
+#: ../src/mn-mailboxes.gob:294
+msgid "Unable to parse the XML document."
+msgstr "Het XML-document kan niet geanalyseerd worden."
+
+#: ../src/mn-mailboxes.gob:301
+msgid "The root element is missing."
+msgstr "Het basiselement (root) is niet aanwezig."
+
+#: ../src/mn-mailboxes.gob:307
+#, c-format
+msgid "The root element \"%s\" is invalid."
+msgstr "Het basiselement (root) »%s« is niet geldig."
+
+#: ../src/mn-mailboxes.gob:330
+#, c-format
+msgid "On line %i: %s."
+msgstr "Op regel %i: %s"
+
+#: ../src/mn-mailboxes.gob:335
+#, c-format
+msgid "On line %i: unknown element \"%s\"."
+msgstr "Op regel %i: onbekend element »%s«."
+
+#: ../src/mn-mailboxes.gob:346
+msgid "An error has occurred while loading the mailboxes configuration"
+msgid_plural "Errors have occurred while loading the mailboxes configuration"
+msgstr[0] "Bij het laden van de postbusinstellingen is een fout opgetreden."
+msgstr[1] "Bij het laden van de postbusinstellingen zijn meerdere fouten opgetreden."
+
+#: ../src/mn-mailboxes.gob:371
+msgid "Unable to save the mailboxes configuration"
+msgstr "De postbusinstellingen kunnen niet opgeslagen worden"
+
+#: ../src/mn-mailboxes.gob:417
+msgid "Unable to write the XML document."
+msgstr "Het XML-document kan niet geschreven worden."
+
+#. non fatal
+#: ../src/mn-mailboxes.gob:433
+#, c-format
+msgid "unable to delete %s: %s"
+msgstr "%s kan niet verwijderd worden: %s"
+
+#: ../src/mn-mailboxes.gob:457
+#, c-format
+msgid "%s has %i new message"
+msgid_plural "%s has %i new messages"
+msgstr[0] "%s heeft %i nieuw bericht"
+msgstr[1] "%s heeft %i nieuwe berichten"
+
+#: ../src/mn-mailboxes.gob:483
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s heeft een fout gemeld: %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:111
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "de map »new« kan niet geopend worden: %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:144
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "de map »new« kan niet gesloten worden: %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:147
+#, c-format
+msgid "error while reading folder \"new\": %s"
+msgstr "fout bij het lezen van map »new«: %s"
+
+#: ../src/mn-main-window.gob:106
+msgid "Help messages"
+msgstr "Helpteksten"
+
+#: ../src/mn-main-window.gob:107
+msgid "Count messages"
+msgstr "Tel berichten"
+
+#. Toplevel
+#: ../src/mn-main-window.gob:156
+msgid "_Mail"
+msgstr "_E-mail"
+
+#: ../src/mn-main-window.gob:157
+msgid "_Edit"
+msgstr "Be_werken"
+
+#: ../src/mn-main-window.gob:158
+msgid "_View"
+msgstr "Beel_d"
+
+#: ../src/mn-main-window.gob:159
+msgid "_Help"
+msgstr "_Hulp"
+
+#: ../src/mn-main-window.gob:167
+msgid "Launch the mail reader"
+msgstr "Start het e-mail programma"
+
+#. Reload
+#: ../src/mn-main-window.gob:175 ../src/mn-main.c:248
+msgid "Update the mail status"
+msgstr "Kijk of er nieuwe berichten zijn"
+
+#: ../src/mn-main-window.gob:181
+msgid "_Close"
+msgstr "_Sluiten"
+
+#: ../src/mn-main-window.gob:183
+msgid "Close this window"
+msgstr "Sluit dit venster"
+
+#: ../src/mn-main-window.gob:189
+msgid "_Quit"
+msgstr "_Afsluiten"
+
+#: ../src/mn-main-window.gob:191 ../src/mn-main.c:266
+msgid "Quit Mail Notification"
+msgstr "E-mail notificatie afsluiten"
+
+#: ../src/mn-main-window.gob:199 ../src/mn-main-window.gob:247
+msgid "_Toolbars"
+msgstr "_Werkbalken"
+
+#: ../src/mn-main-window.gob:201
+msgid "Customize the toolbars"
+msgstr "Werkbalken aanpassen"
+
+#: ../src/mn-main-window.gob:207
+msgid "_Preferences"
+msgstr "_Voorkeuren"
+
+#: ../src/mn-main-window.gob:217
+msgid "Toolbars Styl_e"
+msgstr "Werkbalkstijl_en"
+
+#: ../src/mn-main-window.gob:219
+msgid "Customize the toolbars style"
+msgstr "Werkbalkstijl aanpassen"
+
+#: ../src/mn-main-window.gob:227
+msgid "_Contents"
+msgstr "I_nhoud"
+
+#: ../src/mn-main-window.gob:229
+msgid "Display help"
+msgstr "Toon help"
+
+#: ../src/mn-main-window.gob:235
+msgid "_About"
+msgstr "_Info"
+
+#: ../src/mn-main-window.gob:237
+msgid "Display credits"
+msgstr "Toon meewerkenden"
+
+#: ../src/mn-main-window.gob:249
+msgid "Show or hide the toolbars"
+msgstr "Toon of verberg werkbalken"
+
+#: ../src/mn-main-window.gob:256
+msgid "_Statusbar"
+msgstr "_Statusbalk"
+
+#: ../src/mn-main-window.gob:258
+msgid "Show or hide the statusbar"
+msgstr "Toon of verberg de statusbalk"
+
+#: ../src/mn-main-window.gob:269
+msgid "_Desktop Default"
+msgstr "_Standaard bureaublad"
+
+#: ../src/mn-main-window.gob:271
+msgid "Set the toolbars style to the desktop default setting"
+msgstr "Stel de werkbalkstylen in naar de standaard van het bureaublad"
+
+#: ../src/mn-main-window.gob:277
+msgid "I_cons Only"
+msgstr "Alleen i_conen"
+
+#: ../src/mn-main-window.gob:279
+msgid "Only display the toolbars icons"
+msgstr "Toon alleen werkbalkiconen"
+
+#: ../src/mn-main-window.gob:285
+msgid "_Text Only"
+msgstr "Alleen _tekst"
+
+#: ../src/mn-main-window.gob:287
+msgid "Only display the toolbars text"
+msgstr "Toon alleen werkbalkteksten"
+
+#: ../src/mn-main-window.gob:293
+msgid "Text Belo_w Icons"
+msgstr "Tekst _onder de iconen"
+
+#: ../src/mn-main-window.gob:295
+msgid "Display the toolbars text below the icons"
+msgstr "Toon de werkbalkteksten onder de iconen"
+
+#: ../src/mn-main-window.gob:301
+msgid "Text Be_side Icons"
+msgstr "Tekst _naast de iconen"
+
+#: ../src/mn-main-window.gob:303
+msgid "Display the toolbars text beside the icons"
+msgstr "Toon de werkbalkteksten naast de iconen"
+
+#: ../src/mn-main-window.gob:345
+#, c-format
+msgid "unable to load menus.xml: %s"
+msgstr "menus.xml kunnen niet geladen worden: %s"
+
+#: ../src/mn-main-window.gob:388
+msgid "unable to load toolbars.xml"
+msgstr "toolbars.xml kunnen niet geladen worden"
+
+#: ../src/mn-main-window.gob:439
+#, c-format
+msgid "%i new message"
+msgid_plural "%i new messages"
+msgstr[0] "%i nieuw bericht"
+msgstr[1] "%i nieuwe berichten"
+
+#.
+#. * 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 "Ingebouwde postbustypen: "
+
+#: ../src/mn-main.c:124
+msgid "Compiled-in POP3 and IMAP features: "
+msgstr "Ingebouwde POP3- und IMAP-mogelijkheden: "
+
+#: ../src/mn-main.c:194
+msgid "Enable informational output"
+msgstr "Uitvoer informatie activeren"
+
+#: ../src/mn-main.c:203
+msgid "List the compiled-in features"
+msgstr "Ingebouwde mogelijkheden tonen"
+
+#: ../src/mn-main.c:212
+msgid "Display the main window"
+msgstr "Toon het hoofdvenster"
+
+#: ../src/mn-main.c:221
+msgid "Display the properties dialog"
+msgstr "Toon het eigenschappenvenster"
+
+#: ../src/mn-main.c:230
+msgid "Display the about dialog"
+msgstr "Toon het informatievenster"
+
+#: ../src/mn-main.c:239
+msgid "Close the mail summary popup"
+msgstr "Sluit het e-mail overzichtsvenster"
+
+#: ../src/mn-main.c:257
+msgid "Unset obsolete GConf configuration"
+msgstr "Geef overbodige GConf-configuratie vrij"
+
+#.
+#. * We can't use mn_error_dialog() because gtk_init() has not been
+#. * called yet.
+#.
+#: ../src/mn-main.c:293
+msgid "multi-threading is not available"
+msgstr "multi-threading wordt niet ondersteund"
+
+#: ../src/mn-main.c:355
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo kan het automation object niet vinden. Controleer aub "
+"de installatie van e-mail notificatie."
+
+#: ../src/mn-main.c:361
+msgid "quitting Mail Notification"
+msgstr "E-mail notificatie wordt afgesloten"
+
+#: ../src/mn-main.c:365
+msgid "Mail Notification is not running"
+msgstr "E-mail notificatie is niet actief"
+
+#: ../src/mn-main.c:372
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "De GnomeVFS-bibliotheek kan niet geinitialiseerd worden."
+
+#: ../src/mn-main.c:404
+msgid "updating the mail status"
+msgstr "bijwerken e-mail status"
+
+#: ../src/mn-main.c:413
+msgid "Mail Notification is already running"
+msgstr "De e-mail notificatie is reeds actief"
+
+#: ../src/mn-main.c:423
+#, c-format
+msgid ""
+"Bonobo could not locate the %s file. Please check your Mail Notification "
+"installation."
+msgstr ""
+"Bonobo kan het %s-bestand vinden. Controleer aub "
+"de installatie van e-mail notificatie."
+
+#: ../src/mn-mbox-mailbox-backend.gob:209
+#, c-format
+msgid "unable to close file: %s"
+msgstr "bestand kan niet gesloten worden: %s"
+
+#: ../src/mn-mbox-mailbox-backend.gob:222
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "postbus kan niet geopend worden: %s"
+
+#: ../src/mn-message-mime.c:104
+msgid "unable to parse MIME message"
+msgstr "het MIME-bericht kan niet verwerkt worden"
+
+#: ../src/mn-message-view.gob:82
+msgid "You have no new mail."
+msgstr "U heeft geen nieuwe e-mail berichten."
+
+#: ../src/mn-message-view.gob:322
+msgid "Unreadable message"
+msgstr "onleesbaar bericht"
+
+#: ../src/mn-message-view.gob:330
+msgid "From"
+msgstr "Van"
+
+#: ../src/mn-message-view.gob:338
+msgid "Subject"
+msgstr "Onderwerp"
+
+#: ../src/mn-message-view.gob:349
+msgid "Sent"
+msgstr "Verzonden"
+
+#: ../src/mn-message.gob:99
+msgid "Unknown"
+msgstr "Onbekend"
+
+#: ../src/mn-message.gob:124
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] "%i seconden geleden"
+
+#: ../src/mn-message.gob:128
+#, c-format
+msgid "about %i minute ago"
+msgid_plural "about %i minutes ago"
+msgstr[0] "ongeveer %i minuut geleden"
+msgstr[1] "ongeveer %i minuten geleden"
+
+#: ../src/mn-message.gob:133
+#, c-format
+msgid "about %i hour ago"
+msgid_plural "about %i hours ago"
+msgstr[0] "ongeveer %i uur geleden"
+msgstr[1] "ongeveer %i uren geleden"
+
+#: ../src/mn-message.gob:138
+#, c-format
+msgid "about %i day ago"
+msgid_plural "about %i days ago"
+msgstr[0] "ongeveer %i dag geleden"
+msgstr[1] "ongeveer %i dagen geleden"
+
+#: ../src/mn-message.gob:143
+#, c-format
+msgid "about %i week ago"
+msgid_plural "about %i weeks ago"
+msgstr[0] "ongeveer %i week geleden"
+msgstr[1] "ongeveer %i weken geleden"
+
+#. translators: "none" is used like "Mailbox: none"
+#: ../src/mn-message.gob:163
+msgid "none"
+msgstr "geen"
+
+#: ../src/mn-mh-mailbox-backend.gob:161
+#, c-format
+msgid "error while reading %s: %s"
+msgstr "fout bij het lezen van %s: %s"
+
+#: ../src/mn-mh-mailbox-backend.gob:174
+#, c-format
+msgid "unable to open %s: %s"
+msgstr "%s kan niet geopend worden: %s"
+
+#: ../src/mn-pi-mailbox-properties.gob:67
+msgid "sta_ndard"
+msgstr "sta_ndaard"
+
+#: ../src/mn-pi-mailbox-properties.gob:68
+msgid "_in-band SSL/TLS"
+msgstr "_in-band SSL/TLS"
+
+#: ../src/mn-pi-mailbox-properties.gob:69
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLS over een apa_rte poort"
+
+#: ../src/mn-pi-mailbox-properties.gob:73
+msgid "_Hostname:"
+msgstr "_Server:"
+
+#: ../src/mn-pi-mailbox-properties.gob:93
+msgid "_Details"
+msgstr "_Details"
+
+#: ../src/mn-pi-mailbox-properties.gob:148
+msgid "Connection type:"
+msgstr "Connectietype:"
+
+#: ../src/mn-pi-mailbox-properties.gob:155
+msgid "Port:"
+msgstr "Poort:"
+
+#: ../src/mn-pi-mailbox-properties.gob:178
+msgid "_Authentication mechanism:"
+msgstr "_Authenticatiemechanisme:"
+
+#: ../src/mn-pi-mailbox.gob:113
+msgid "SSL/TLS support has not been compiled in"
+msgstr ""
+"ondersteuning voor SSL/TLS is niet in het "
+"programma ingebouwd"
+
+#: ../src/mn-pop3-mailbox.gob:359
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr "ongeldige argumenten voor de LOGIN-DELAY functie"
+
+#.
+#. * 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:519
+msgid ""
+"SASL authentication with initial client response failed, retrying without "
+"initial client response"
+msgstr "De SASL-authenticate met initieel client-antwoord is mislukt, er "
+"wordt een nieuwe poging zonder client-antwoord onedernomen"
+
+#: ../src/mn-pop3-mailbox.gob:733
+msgid "unknown error"
+msgstr "onbekende fout"
+
+#: ../src/mn-pop3-mailbox.gob:828
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
+msgstr[0] "LOGIN-DELAY wordt gehonoreerd, er wordt %i seconde gewacht"
+msgstr[1] "LOGIN-DELAY wordt gehonoreerd, er wordt %i seconden gewacht"
+
+#: ../src/mn-pop3-mailbox.gob:1009
+msgid "server does not support APOP authentication"
+msgstr "de server ondersteund geen APOP-authenticatie."
+
+#: ../src/mn-pop3-mailbox.gob:1065
+msgid "falling back to APOP authentication"
+msgstr "er wordt teruggevallen op APOP-authenticaties"
+
+#: ../src/mn-pop3-mailbox.gob:1070
+msgid "falling back to USER/PASS authentication"
+msgstr "er wordt teruggevallen op USER/PASS-authenticatie"
+
+#: ../src/mn-properties-dialog.gob:170 ../ui/properties-dialog.glade.h:10
+msgid "Mail Notification Properties"
+msgstr "Instellingen e-mail notificatie"
+
+#: ../src/mn-properties-dialog.gob:207
+msgid "top left"
+msgstr "links boven"
+
+#: ../src/mn-properties-dialog.gob:208
+msgid "top right"
+msgstr "rechts boven"
+
+#: ../src/mn-properties-dialog.gob:209
+msgid "bottom left"
+msgstr "links onder"
+
+#: ../src/mn-properties-dialog.gob:210
+msgid "bottom right"
+msgstr "rechts onder"
+
+#: ../src/mn-properties-dialog.gob:329
+msgid "No mailbox selected."
+msgstr "Geen postbus geselecteerd."
+
+#: ../src/mn-properties-dialog.gob:334
+#, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] "%i postbus geselecteerd."
+msgstr[1] "%i postbussen geselecteerd."
+
+#: ../src/mn-properties-dialog.gob:465
+#, c-format
+msgid "Test message #%i"
+msgstr "Testbericht nr. %i"
+
+#: ../src/mn-properties-dialog.gob:470
+msgid "Mail Notification Properties Dialog"
+msgstr "Instellingenvenster e-mail notificatie"
+
+#: ../src/mn-shell.gob:109
+msgid "You have new mail."
+msgstr "U heeft nieuwe e-mail berichten."
+
+#: ../src/mn-shell.gob:374
+msgid "Mailboxes Having New Mail"
+msgstr "Postbussen met nieuwe e-mail berichten"
+
+#: ../src/mn-shell.gob:393
+msgid "Errors"
+msgstr "Fouten"
+
+#: ../src/mn-shell.gob:408
+msgid "Mail Summary"
+msgstr "Overzicht e-mail berichten"
+
+#: ../src/mn-ssl.c:76
+msgid "unknown SSL/TLS error"
+msgstr "onbekende SSL/TLS-fout"
+
+#: ../src/mn-stock.c:28
+msgid "Select _All"
+msgstr "_Alles selecteren"
+
+#: ../src/mn-stock.c:29
+msgid "Leave Fullscreen"
+msgstr "Volledig scherm verlaten"
+
+#: ../src/mn-stock.c:30
+msgid "Co_nnect"
+msgstr "_Verbinden"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:170
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "map kan niet geopend worden: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:209
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "map kan niet gesloten worden: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:212
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "fout bij het lezen van map: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:255
+msgid "unexpected end of file"
+msgstr "unverwacht einde van bestand"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:269
+#, c-format
+msgid "incompatible file version \"%i\""
+msgstr "bestandsverie is niet compatibel »%i«"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:272
+msgid "file version missing"
+msgstr "bestandsversie niet aanwezig"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:39
+#: ../src/mn-system-vfs-mailbox-properties.gob:47
+#: ../src/mn-system-vfs-mailbox.gob:45
+msgid "System mailbox"
+msgstr "Systeempostbus"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:68
+#, c-format
+msgid "Your system mailbox is <span weight=\"bold\">%s</span>."
+msgstr ""
+"Uw postbus is <span weight=\"bold\">%s</span>."
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:75
+msgid ""
+"The location of your system mailbox could not be detected. Check the MAIL "
+"environment variable."
+msgstr ""
+"De locatie van de systeempostbus is onvindbaar. Contorleer aub de "
+"omgevingsvariabele »MAIL«."
+
+#: ../src/mn-system-vfs-mailbox.gob:72
+msgid "MAIL environment variable not defined"
+msgstr "De omgevingsvariable »MAIL« is niet gezet"
+
+#: ../src/mn-util.c:281
+#, c-format
+msgid "error loading image: %s"
+msgstr "fout bij laden afbeelding: %s"
+
+#: ../src/mn-util.c:298
+#, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "Widget »%s« kan niet in interface »%s« worden gevonden"
+
+#: ../src/mn-util.c:398
+#, c-format
+msgid "unable to open self as a module: %s"
+msgstr "kan niet zelf als een module openen: %s"
+
+#: ../src/mn-util.c:403
+#, c-format
+msgid "signal handler \"%s\" not found"
+msgstr "kan signaalfilter »%s« niet vinden"
+
+#: ../src/mn-util.c:556 ../src/mn-util.c:579 ../src/mn-util.c:601
+#: ../src/mn-util.c:623
+msgid "A drag and drop error has occurred"
+msgstr "Een drag'n'drop-fout is opgetreden"
+
+#: ../src/mn-util.c:557
+msgid "An invalid location list has been received."
+msgstr "Ontvangst van een ongeldige adreslijst."
+
+#: ../src/mn-util.c:602
+msgid "An invalid Mozilla location has been received."
+msgstr "Ontvangst van een ongeldig Mozilla-adres."
+
+#: ../src/mn-util.c:678
+msgid "Unable to display help"
+msgstr "Kan geen helpinformatie tonen"
+
+#: ../src/mn-util.c:692
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "Kan geen thread aanmaken: %s."
+
+#: ../src/mn-util.c:782
+msgid "_Do not show this message again"
+msgstr "_Laat deze melding niet opnieuw zien"
+
+#: ../src/mn-util.c:892
+#, c-format
+msgid ""
+"The following location is invalid:\n"
+"\n"
+"%s"
+"The following locations are invalid:\n"
+"\n"
+"%s"
+msgstr ""
+"De volgende locatie is ongeldig:\n"
+"\n"
+"%s"
+"De volgende locaties zijn ongeldig:\n"
+"\n"
+"%s"
+
+#: ../src/mn-util.c:912
+msgid "A fatal error has occurred in Mail Notification"
+msgstr ""
+"Een fatale fout is opgetreden in e-mail notificatie "
+
+#: ../src/mn-util.c:951
+#, c-format
+msgid "unable to get current time: %s"
+msgstr "kan de huidige tijd niet bepalen: %s"
+
+#: ../src/mn-util.c:1013
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr "ongeldige signaalspecificatie »%s«"
+
+#: ../src/mn-util.c:1052
+msgid "A command error has occurred in Mail Notification"
+msgstr ""
+"Een fout is opgtreden in e-mail notificatie tijdens het"
+"uitvoeren van een opdracht."
+
+#: ../src/mn-util.c:1053
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "»%s« kan niet uitgevoerd worden: %s."
+
+#: ../src/mn-util.c:1311
+#, c-format
+msgid "unable to rename %s to %s: %s"
+msgstr "%s kan niet worden hernoemd naar %s: %s"
+
+#: ../src/mn-vfs-mailbox-backend.gob:117
+#, c-format
+msgid "unable to monitor mailbox contents (%s), poll mode activated"
+msgstr "de postbusinhoud (%s) kan niet in de gaten worden gehouden, poll modus wordt geactiveerd"
+
+#: ../src/mn-vfs-mailbox.gob:238
+#, c-format
+msgid "unable to monitor mailbox type (%s), poll mode activated"
+msgstr "het postbustype (%s) kan niet in de gaten worden gehouden, poll modus wordt geactiveerd"
+
+#: ../src/mn-vfs-mailbox.gob:307
+msgid "unknown mailbox format"
+msgstr "onbekend postbusformaat"
+
+#: ../src/mn-vfs-mailbox.gob:307
+msgid "does not exist"
+msgstr "bestaat niet"
+
+#: ../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)."
+"As a fallback, they will be checked every %i seconds (this delay is "
+"configurable from the Properties Dialog)."
+msgstr ""
+"Als alternatief worden deze elke %i seconde gecontroleerd (deze waarde kan "
+"aangepast worden in het instellingenvenster)."
+"Als alternatief worden deze elke %i seconden gecontroleerd (deze waarde kan "
+"aangepast worden in het instellingenvenster)."
+
+#: ../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)."
+"As a fallback, they will be checked every %i minutes (this delay is "
+"configurable from the Properties Dialog)."
+msgstr ""
+"Als alternatief worden deze elke %i minuut gecontroleerd (deze waarde kan "
+"aangepast worden in het instellingenvenster)."
+"Als alternatief worden deze elke %i minuten gecontroleerd (deze waarde kan "
+"aangepast worden in het instellingenvenster)."
+
+#: ../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)."
+"As a fallback, they will be checked approximately every %i minutes (this "
+"delay is configurable from the Properties Dialog)."
+msgstr ""
+"Als alternatief worden deze elke %i minuut gecontroleerd (deze waarde kan "
+"aangepast worden in het instellingenvenster)."
+"Als alternatief worden deze elke %i minuten gecontroleerd (deze waarde kan "
+"aangepast worden in het instellingenvenster)."
+
+#: ../src/mn-vfs-mailbox.gob:415
+msgid "A monitoring error has occurred"
+msgstr "Bij het in de gaten houden is een fout opgetreden"
+
+#: ../src/mn-vfs-mailbox.gob:416
+#, c-format
+msgid ""
+"Mail Notification was unable to enable immediate notification for one or "
+"more mailboxes. %s"
+msgstr ""
+"De e-mail notificatie was niet in staat onmiddeijk notificatie te geven "
+"voor 1 of meer postbussen: %s"
+
+#: ../ui/edit-toolbars-dialog.glade.h:1
+msgid "Edit Toolbars"
+msgstr "Werkbalken aanpassen"
+
+#: ../ui/edit-toolbars-dialog.glade.h:2
+msgid "_Add a New Toolbar"
+msgstr "Een nieuwe werkb_alk toevoegen"
+
+#: ../ui/edit-toolbars-dialog.glade.h:3
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "_Use Default"
+msgstr "Gebr_uik standaardwaarde"
+
+#: ../ui/mail-summary-popup.glade.h:1
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span size=\"larger\" weight=\"bold\">Overzicht e-mail berichten</span>"
+
+#: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:4
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Algemeen</span>"
+
+#: ../ui/mailbox-properties-dialog.glade.h:2
+msgid "Mailbox _name:"
+msgstr "Postbus_naam:"
+
+#: ../ui/mailbox-properties-dialog.glade.h:3
+msgid "Mailbox _type:"
+msgstr "Postbus_type:"
+
+#: ../ui/properties-dialog.glade.h:1
+msgid "<span weight=\"bold\">Commands</span>"
+msgstr "<span weight=\"bold\">Opdrachten</span>"
+
+#: ../ui/properties-dialog.glade.h:2
+msgid "<span weight=\"bold\">Double-click Action</span>"
+msgstr "<span weight=\"bold\">Actie bij dubbelklikken</span>"
+
+#: ../ui/properties-dialog.glade.h:3
+msgid "<span weight=\"bold\">Fonts</span>"
+msgstr "<span weight=\"bold\">Letterypen</span>"
+
+#: ../ui/properties-dialog.glade.h:5
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Postbuslijst</span>"
+
+#: ../ui/properties-dialog.glade.h:6
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Positie</span>"
+
+#: ../ui/properties-dialog.glade.h:7
+msgid "Co_ntents:"
+msgstr "I_nhoud:"
+
+#: ../ui/properties-dialog.glade.h:8
+msgid "Dis_play mail summary in tooltip"
+msgstr "_Laat overzicht e-mail in tooltip zien"
+
+#: ../ui/properties-dialog.glade.h:9
+msgid "General"
+msgstr "Algemeen"
+
+#: ../ui/properties-dialog.glade.h:11
+msgid "Mail Summary Popup"
+msgstr "Popup overzicht e-mail"
+
+#: ../ui/properties-dialog.glade.h:12
+msgid "Mailboxes"
+msgstr "Postbussen"
+
+#: ../ui/properties-dialog.glade.h:13
+msgid "Only display _recent mail"
+msgstr "Laat alleen _recente e-mail berichten zien"
+
+#: ../ui/properties-dialog.glade.h:14
+msgid "Use these _fonts:"
+msgstr "Gebruik volgende _lettertypen:"
+
+#: ../ui/properties-dialog.glade.h:15
+msgid "When _all mail has been read:"
+msgstr "Als _alle e-mail is gelezen:"
+
+#: ../ui/properties-dialog.glade.h:16
+msgid "When _new mail arrives:"
+msgstr "Wanneer nieuwe e-mail arriveert:"
+
+#: ../ui/properties-dialog.glade.h:17
+msgid "_Automatically close after:"
+msgstr "_Automatisch sluiten na:"
+
+#: ../ui/properties-dialog.glade.h:18
+msgid "_Blink on errors"
+msgstr "Knipperen _bij fouten"
+
+#: ../ui/properties-dialog.glade.h:19
+msgid "_Delay between mail checks:"
+msgstr "_Wachttijd tussen controleren e-mail:"
+
+#: ../ui/properties-dialog.glade.h:20
+msgid "_Display a Test Popup"
+msgstr "_Toon een test-popupvenster"
+
+#: ../ui/properties-dialog.glade.h:21
+msgid "_Display the main window"
+msgstr "_Toon het hoofdvenster"
+
+#: ../ui/properties-dialog.glade.h:22
+msgid "_Enable mail summary popup"
+msgstr "_Activeer popupvenster e-mail overzicht"
+
+#: ../ui/properties-dialog.glade.h:23
+msgid "_Horizontal offset:"
+msgstr "_Horizontale afstand:"
+
+#: ../ui/properties-dialog.glade.h:24
+msgid "_Launch the mail reader"
+msgstr "_Start het e-mail programma"
+
+#: ../ui/properties-dialog.glade.h:25
+msgid "_Mail reader:"
+msgstr "_E-mail programma:"
+
+#: ../ui/properties-dialog.glade.h:26
+msgid "_Position:"
+msgstr "_Positie:"
+
+#: ../ui/properties-dialog.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "_Start e-mail notificatie als GNOME start"
+
+#: ../ui/properties-dialog.glade.h:28
+msgid "_Title:"
+msgstr "_Titel:"
+
+#: ../ui/properties-dialog.glade.h:29
+msgid "_Update the mail status"
+msgstr "_Controleer op nieuwe e-mail berichten"
+
+#: ../ui/properties-dialog.glade.h:30
+msgid "_Use fonts from theme"
+msgstr "Lettertypen van het _thema gebruiken"
+
+#: ../ui/properties-dialog.glade.h:31
+msgid "_Vertical offset:"
+msgstr "_Verticale afstand:"
+
+#: ../ui/properties-dialog.glade.h:32
+msgid "minutes"
+msgstr "minuten"
+
+#: ../ui/properties-dialog.glade.h:33
+msgid "pixels"
+msgstr "pixels"
+
+#: ../ui/properties-dialog.glade.h:34
+msgid "seconds"
+msgstr "seconden"
+
diff --git a/po/pl.po b/po/pl.po
@@ -1,5 +1,5 @@
 # Polish translations for mail-notification.
-# Copyright (C) 2003-2005 Jean-Yves Lefort.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
 #
 # This file is distributed under the same license as the
 # mail-notification package.
diff --git a/po/pt.po b/po/pt.po
@@ -1,5 +1,5 @@
 # Portuguese translations for mail-notification.
-# Copyright (C) 2003-2005 Jean-Yves Lefort.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
 #
 # This file is distributed under the same license as the
 # mail-notification package.
diff --git a/po/pt_BR.po b/po/pt_BR.po
@@ -0,0 +1,1877 @@
+# Brazilian Portuguese translations for mail-notification.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Claudio André <claudio.andre@correios.net.br>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 2.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2005-11-14 18:03-0300\n"
+"PO-Revision-Date: 2006-02-26 05:17+0100\n"
+"Last-Translator: Claudio André <claudio.andre@correios.net.br>\n"
+"Language-Team: Claudio André <claudio.andre@correios.net.br>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=n>1;"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Automação de Notificação de Correio"
+
+#: ../data/GNOME_MailNotification.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Fábrica da Automação de Notificação de Correio"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:1
+msgid "Evolution folder tree control"
+msgstr "Controle Evolution \"hierarquia de pastas\""
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:2
+msgid "Evolution folder tree control factory"
+msgstr "Fábrica de controle Evolution \"hierarquia de pastas\""
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:3
+msgid "Mail Notification / Evolution glue"
+msgstr "Ligação Notificação de Correio / Evolution"
+
+#: ../data/GNOME_MailNotification_Evolution.server.in.h:4
+msgid "Mail Notification / Evolution glue factory"
+msgstr "Fábrica de ligação Notificação de Correio / Evolution"
+
+#: ../data/mail-notification-properties.desktop.in.h:1
+#: ../src/mn-main-window.gob:209
+msgid "Configure Mail Notification"
+msgstr "Configurar Notificação de Correio"
+
+#: ../data/mail-notification-properties.desktop.in.h:2
+#: ../data/mail-notification.desktop.in.h:2
+#: ../data/mail-notification.soundlist.in.h:1 ../src/mn-mail-icon.gob:223
+#: ../src/mn-main.c:285 ../src/mn-main.c:301
+msgid "Mail Notification"
+msgstr "Notificação de Correio"
+
+#: ../data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Notificar quando novas mensagens chegarem"
+
+#: ../data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr "Fechar automaticamente janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Se ocorrerem erros, piscar ícone de status"
+
+#: ../data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "Intervalo entre verificações de correio (minutos)."
+
+#: ../data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "Intervalo entre verificações de correio (segundos)."
+
+#: ../data/mail-notification.schemas.in.h:5
+msgid "Display mail summary in tooltip"
+msgstr "Mostrar o resumo do correio numa dica"
+
+#: ../data/mail-notification.schemas.in.h:6
+msgid "Do not show the immediate notification error dialog"
+msgstr "Não mostrar o diálogo de erro de notificação imediata"
+
+#: ../data/mail-notification.schemas.in.h:7
+msgid "Double-click action"
+msgstr "Ação no duplo clique"
+
+#: ../data/mail-notification.schemas.in.h:8
+msgid "Enable mail summary popup"
+msgstr "Ativar janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:9
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Assinaturas de certificados x509 de confiança"
+
+#: ../data/mail-notification.schemas.in.h:10
+msgid "Height of edit toolbars dialog"
+msgstr "Altura do diálogo de edição da barra de ferramenta"
+
+#: ../data/mail-notification.schemas.in.h:11
+msgid "Height of main window"
+msgstr "Altura da janela principal"
+
+#: ../data/mail-notification.schemas.in.h:12
+msgid "Height of properties dialog"
+msgstr "Altura do diálogo de propriedades"
+
+#: ../data/mail-notification.schemas.in.h:13
+msgid "Mail read command"
+msgstr "Comando de leitura do correio"
+
+#: ../data/mail-notification.schemas.in.h:14
+msgid "Mail reader command"
+msgstr "Comando do leitor de correio"
+
+#: ../data/mail-notification.schemas.in.h:15
+msgid "Mail summary popup contents font"
+msgstr "Fonte usado na janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:16
+msgid "Mail summary popup fonts aspect source"
+msgstr "Tipo de fonte usado na janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:17
+msgid "Mail summary popup horizontal offset"
+msgstr "Distância horizontal da janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:18
+msgid "Mail summary popup position"
+msgstr "Posição da janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:19
+msgid "Mail summary popup title font"
+msgstr "Fonte do título da janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:20
+msgid "Mail summary popup vertical offset"
+msgstr "Distância vertical da janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:21
+msgid "Minutes between mail checks"
+msgstr "Minutos entre as verificações de correio"
+
+#: ../data/mail-notification.schemas.in.h:22
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr "Minutos a aguardar antes de fechar a janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:23
+msgid "New mail command"
+msgstr "Comando de nova mensagem"
+
+#: ../data/mail-notification.schemas.in.h:24
+msgid "Only display recent mail in mail summary popup"
+msgstr "Apenas mostrar mensagens recentes no resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:25
+msgid "Run a command when all mail is read"
+msgstr "Executar um comando quando todas mensagens forem lidas"
+
+#: ../data/mail-notification.schemas.in.h:26
+msgid "Run a command when new mail arrives"
+msgstr "Executar um comando quando nova mensagem chega"
+
+#: ../data/mail-notification.schemas.in.h:27
+msgid "Seconds between mail checks"
+msgstr "Segundos entre as verificações de correio"
+
+#: ../data/mail-notification.schemas.in.h:28
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr "Segundos a aguardar antes de fechar a janela de resumo do correio"
+
+#: ../data/mail-notification.schemas.in.h:29
+msgid "Set a mail reader"
+msgstr "Definir um leitor de correio"
+
+#: ../data/mail-notification.schemas.in.h:30
+msgid ""
+"The action to perform when the icon is double-clicked. Must be \"display-"
+"main-window\", \"launch-mail-reader\" or \"update-mail-status\"."
+msgstr ""
+"A ação a executar quando o ícone recebe duplo-clique deve ser: \"display-"
+"main-window\", \"launch-mail-reader\" ou \"update-mail-status\"."
+
+#: ../data/mail-notification.schemas.in.h:31
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+"Tempo a aguardar antes de fechar a janela de resumo do correio (minutos)."
+
+#: ../data/mail-notification.schemas.in.h:32
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+"Tempo a aguardar antes de fechar a janela de resumo do correio (segundos)."
+
+#: ../data/mail-notification.schemas.in.h:33
+msgid ""
+"The aspect source of the mail summary popup fonts. Must be \"theme\" or "
+"\"custom\"."
+msgstr ""
+"O tipo de fonte da janela de resumo do correio deve ser: \"theme\""
+" ou \"custom\"."
+
+#: ../data/mail-notification.schemas.in.h:34
+msgid "The command to run to launch the mail reader."
+msgstr "O comando para abrir o leitor de correio."
+
+#: ../data/mail-notification.schemas.in.h:35
+msgid "The command to run when all mail is read."
+msgstr "O comando a executar quando todas mensagens forem lidas."
+
+#: ../data/mail-notification.schemas.in.h:36
+msgid "The command to run when new mail arrives."
+msgstr "O comando a executar quando novas mensagens chegam."
+
+#: ../data/mail-notification.schemas.in.h:37
+msgid "The custom font to use for the contents of the mail summary popup."
+msgstr "Fonte selecionado para uso na janela de resumo do correio."
+
+#: ../data/mail-notification.schemas.in.h:38
+msgid "The custom font to use for the title of the mail summary popup."
+msgstr "Fonte selecionado para uso no título da janela de resumo do correio."
+
+#: ../data/mail-notification.schemas.in.h:39
+msgid "The height of the edit toolbars dialog in pixels."
+msgstr "Altura do diálogo de edição da barra de ferramenta em pixels."
+
+#: ../data/mail-notification.schemas.in.h:40
+msgid "The height of the main window in pixels."
+msgstr "Altura da janela principal em pixels."
+
+#: ../data/mail-notification.schemas.in.h:41
+msgid "The height of the properties dialog in pixels."
+msgstr "Altura do diálogo de propriedades em pixels."
+
+#: ../data/mail-notification.schemas.in.h:42
+msgid ""
+"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
+"certificate."
+msgstr ""
+"Lista de servidores SSL/TLS de confiança (hostname:port) que não possuem "
+"um certificado X509."
+
+#: ../data/mail-notification.schemas.in.h:43
+msgid ""
+"The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr ""
+"Lista de certificados X509 de confiança, representados por suas assinaturas MD5."
+
+#: ../data/mail-notification.schemas.in.h:44
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+"Número de pixels entre o canto esquerdo ou direito da tela e "
+"a janela de resumo do correio."
+
+#: ../data/mail-notification.schemas.in.h:45
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+"Número de pixels entre o canto superior ou inferior da tela e "
+"a janela de resumo do correio."
+
+#: ../data/mail-notification.schemas.in.h:46
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+"A posição da janela de resumo do correio deve ser: \"top-left\", \"top-"
+"right\", \"bottom-left\" ou \"bottom-right\"."
+
+#: ../data/mail-notification.schemas.in.h:47
+msgid ""
+"The style of the toolbars. Must be \"desktop-default\", \"icons\", \"text\", "
+"\"both\" or \"both-horiz\"."
+msgstr ""
+"O estilo da barra de ferramentas deve ser: \"desktop-default\", \"icons\", "
+"\"text\", \"both\" ou \"both-horiz\"."
+
+#: ../data/mail-notification.schemas.in.h:48
+msgid "The width of the edit toolbars dialog in pixels."
+msgstr "A largura do diálogo de edição da barra de ferramenta em pixels."
+
+#: ../data/mail-notification.schemas.in.h:49
+msgid "The width of the main window in pixels."
+msgstr "A largura da janela principal em pixels."
+
+#: ../data/mail-notification.schemas.in.h:50
+msgid "The width of the properties dialog in pixels."
+msgstr "A largura do diálogo de propriedades em pixels."
+
+#: ../data/mail-notification.schemas.in.h:51
+msgid "Toolbars style"
+msgstr "Estilo da barra de ferramentas"
+
+#: ../data/mail-notification.schemas.in.h:52
+msgid "Trusted servers list"
+msgstr "Lista dos servidores de confiança"
+
+#: ../data/mail-notification.schemas.in.h:53
+msgid "View statusbar"
+msgstr "Mostrar barra de status"
+
+#: ../data/mail-notification.schemas.in.h:54
+msgid "View toolbars"
+msgstr "Mostrar barra de ferramentas"
+
+#: ../data/mail-notification.schemas.in.h:55
+msgid "Whether the status icon should blink on errors or not."
+msgstr "Se o ícone de status deve piscar ou não em caso de erro."
+
+#: ../data/mail-notification.schemas.in.h:56
+msgid "Whether the statusbar should be visible or not."
+msgstr "Se a barra de status deve estar visível ou não."
+
+#: ../data/mail-notification.schemas.in.h:57
+msgid "Whether the toolbars should be visible or not."
+msgstr "Se a barra de ferramentas deve estar visível ou não."
+
+#: ../data/mail-notification.schemas.in.h:58
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Se deve fechar automaticamente ou não o resumo do correio."
+
+#: ../data/mail-notification.schemas.in.h:59
+msgid "Whether to display the mail summary in the status icon tooltip or not."
+msgstr "Se deve mostrar ou não o resumo do correio em uma dica no ícone de status."
+
+#: ../data/mail-notification.schemas.in.h:60
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Se deve mostrar ou não o resumo do correio quando novas mensagens chegam."
+
+#: ../data/mail-notification.schemas.in.h:61
+msgid ""
+"Whether to hide previously displayed mail in the mail summary popup or not."
+msgstr ""
+"Se deve esconder ou não as mensagens previamente apresentados no resumo do correio."
+
+#: ../data/mail-notification.schemas.in.h:62
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+"Se deve impedir ou não que a janela de notificação imediata de erro seja apresentada."
+
+#: ../data/mail-notification.schemas.in.h:63
+msgid "Whether to run a command when all mail is read or not."
+msgstr "Se executa ou não um comando quando todas as mensagens forem lidas."
+
+#: ../data/mail-notification.schemas.in.h:64
+msgid "Whether to run a command when new mail arrives or not."
+msgstr "Se executa ou não um comando quando novas mensagens chegam."
+
+#: ../data/mail-notification.schemas.in.h:65
+msgid "Whether to set a mail reader or not."
+msgstr "Se indica ou não um leitor de correio."
+
+#: ../data/mail-notification.schemas.in.h:66
+msgid "Width of edit toolbars dialog"
+msgstr "Largura do diálogo de edição da barra de ferramentas"
+
+#: ../data/mail-notification.schemas.in.h:67
+msgid "Width of main window"
+msgstr "Largura da janela principal"
+
+#: ../data/mail-notification.schemas.in.h:68
+msgid "Width of properties dialog"
+msgstr "Largura do diálogo de propriedades"
+
+#: ../data/mail-notification.soundlist.in.h:2
+msgid "New Mail"
+msgstr "Nova Mensagem"
+
+#: ../src/egg-editable-toolbar.c:534
+msgid "_Remove Toolbar"
+msgstr "_Remover barra de ferramentas"
+
+#: ../src/egg-toolbar-editor.c:555
+msgid "Separator"
+msgstr "Separador"
+
+#: ../src/eggtrayicon.c:128
+msgid "Orientation"
+msgstr "Orientação"
+
+#: ../src/eggtrayicon.c:129
+msgid "The orientation of the tray."
+msgstr "Orientação da barra."
+
+#: ../src/mn-about-dialog.gob:48
+msgid "A Mail Notification Icon"
+msgstr "Ícone da Notificação de Correio"
+
+#.
+#. * translators: Your Name <your-email>
+#. * optionally followed by one or more: \nOther Contributor's Name <his-email>
+#.
+#: ../src/mn-about-dialog.gob:56
+msgid "translator-credits"
+msgstr "Claudio André <claudio.andre@correios.net.br>"
+
+#: ../src/mn-about-dialog.gob:78
+msgid "Unable to open link"
+msgstr "Impossível abrir o link"
+
+#: ../src/mn-auth-combo-box.gob:103
+#: ../src/mn-autodetect-mailbox-properties.gob:92
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">auto detectar</span>"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:46
+msgid "_Username:"
+msgstr "No_me do usuário:"
+
+#: ../src/mn-authenticated-mailbox-properties.gob:50
+msgid "_Password:"
+msgstr "_Senha:"
+
+#: ../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 ""
+"Notificação de Correio não foi capaz de autenticar %s conta %s, possivelmente "
+"suas credenciais não são válidas.\n"
+"\n"
+"Por favor, verifique seus dados de autenticação."
+
+#: ../src/mn-authenticated-mailbox.gob:153
+#, c-format
+msgid "Enter your credentials for %s mailbox %s."
+msgstr "Informe seus dados de autenticação para %s conta %s."
+
+#. keep the title in sync with gnome-authentication-manager
+#: ../src/mn-authenticated-mailbox.gob:195
+msgid "Authentication Required"
+msgstr "Autenticação requerida"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:93
+msgid "Location"
+msgstr "Endereço"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:103
+msgid "_Location:"
+msgstr "_Localização:"
+
+#: ../src/mn-autodetect-mailbox-properties.gob:110
+msgid "_Browse..."
+msgstr "_Navegar..."
+
+#: ../src/mn-autodetect-mailbox-properties.gob:149
+msgid "Select a File or Folder"
+msgstr "Selecione um arquivo ou pasta"
+
+#: ../src/mn-client-session.c:248
+#, c-format
+msgid "resolving %s"
+msgstr "resolvendo %s"
+
+#: ../src/mn-client-session.c:264
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "impossível resolver %s: %s"
+
+#: ../src/mn-client-session.c:308
+#, c-format
+msgid "%s: unsupported address family"
+msgstr "%s: família de endereços não suportada"
+
+#: ../src/mn-client-session.c:315
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr "%s: impossível criar socket: %s"
+
+#: ../src/mn-client-session.c:319
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "conectando a %s (%s) porta %i"
+
+#: ../src/mn-client-session.c:322
+#, c-format
+msgid "unable to connect: %s"
+msgstr "impossível se conectar: %s"
+
+#: ../src/mn-client-session.c:327
+msgid "connected successfully"
+msgstr "conectado com sucesso"
+
+#. if reached, we couldn't find a working address
+#: ../src/mn-client-session.c:333
+#, c-format
+msgid "unable to connect to %s"
+msgstr "impossível se conectar a %s"
+
+#: ../src/mn-client-session.c:360
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr "impossível inicializar a biblioteca OpenSSL: %s"
+
+#: ../src/mn-client-session.c:368
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr "impossível criar um objeto SSL/TLS: %s"
+
+#: ../src/mn-client-session.c:374
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr "impossível especificar um descritor de arquivo SSL/TLS: %s"
+
+#: ../src/mn-client-session.c:380
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr "impossível concluir negociação de conexão SSL/TLS: %s"
+
+#: ../src/mn-client-session.c:386
+msgid "untrusted server"
+msgstr "servidor não confiável"
+
+#: ../src/mn-client-session.c:390
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr "uma camada SSL/TLS está ativa agora (%s, %s %i-bit)"
+
+#: ../src/mn-client-session.c:437
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, assinatura digital: %s"
+
+#: ../src/mn-client-session.c:466
+msgid "missing certificate"
+msgstr "certificado não encontrado"
+
+#: ../src/mn-client-session.c:492
+#, 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 ""
+"Notificação de Correio não foi capaz de determinar a autenticidade de \"%s\" (%s). "
+"É possível que alguém esteja monitorando sua comunicação para "
+"obter seus dados confidenciais.\n"
+"\n"
+"Você deve apenas conectar-se ao servidor se tiver certeza que está conectado "
+"a \"%s\". Se você escolher se conectar ao servidor, esta mensagem não será "
+"mostrada novamente."
+
+#: ../src/mn-client-session.c:507
+msgid "Connect to untrusted server?"
+msgstr "Conectar a um servidor não confiável ?"
+
+#: ../src/mn-client-session.c:571
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "resposta \"%s\" não é válida no atual contexto"
+
+#: ../src/mn-client-session.c:599
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "impossível interpretar a resposta \"%s\""
+
+#: ../src/mn-client-session.c:649 ../src/mn-client-session.c:656
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "impossível ler do servidor: %s"
+
+#: ../src/mn-client-session.c:654
+msgid "unable to read from server: EOF"
+msgstr "impossível ler do servidor: EOF"
+
+#: ../src/mn-client-session.c:666
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "impossível decodificar os dados usando SASL: %s"
+
+#: ../src/mn-client-session.c:811
+#, c-format
+msgid "unable to encode data using SASL: %s"
+msgstr "impossível codificar os dados usando SASL: %s"
+
+#: ../src/mn-client-session.c:842 ../src/mn-client-session.c:849
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "impossível gravar dados no servidor: %s"
+
+#: ../src/mn-client-session.c:847
+msgid "unable to write to server: EOF"
+msgstr "impossível gravar dados no servidor: EOF"
+
+#: ../src/mn-client-session.c:878 ../src/mn-pop3-mailbox.gob:468
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr "impossível codificar em Base64: %s"
+
+#: ../src/mn-client-session.c:1056
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr "impossível inicializar a biblioteca SASL: %s"
+
+#: ../src/mn-client-session.c:1068
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr "impossível obter endereço local de um socket: %s"
+
+#: ../src/mn-client-session.c:1074
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr "impossível obter endereço remoto de um socket: %s"
+
+#: ../src/mn-client-session.c:1108
+#, c-format
+msgid "unable to set SASL security properties: %s"
+msgstr "impossível especificar as propriedades de segurança SASL: %s"
+
+#: ../src/mn-client-session.c:1132
+msgid ""
+"unable to start SASL authentication: SASL asked for something we did not know"
+msgstr ""
+"impossível iniciar autenticação SASL: SASL solicitou algo desconhecido"
+
+#: ../src/mn-client-session.c:1151
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr "impossível iniciar autenticação SASL: %s"
+
+#: ../src/mn-client-session.c:1155
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr "impossível criar uma conexão SASL: %s"
+
+#: ../src/mn-client-session.c:1202
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr "SASL solicitou algo desconhecido, abortando autenticação SASL"
+
+#: ../src/mn-client-session.c:1219
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr "%s, abortando autenticação SASL"
+
+#. compliance error
+#: ../src/mn-client-session.c:1224
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr "impossível decodificar entrada Base64 do servidor: %s"
+
+#: ../src/mn-client-session.c:1260
+#, c-format
+msgid "a SASL security layer of strength factor %i is now active"
+msgstr "uma camada SASL com fator de força %i está ativa agora"
+
+#. a security layer is active but we can't retrieve maxoutbuf -> fatal
+#: ../src/mn-client-session.c:1265
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr "impossível obter a propriedade SASL_MAXOUTBUF: %s"
+
+#: ../src/mn-client-session.c:1271
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr "aviso: impossível obter a propriedade SASL_SSF: %s"
+
+#: ../src/mn-conf.c:240
+msgid "A directory creation error has occurred"
+msgstr "Um erro de criação de diretório ocorreu"
+
+#: ../src/mn-conf.c:241
+#, c-format
+msgid "Unable to create directory \"%s\": %s."
+msgstr "Impossível criar o diretório \"%s\": %s."
+
+#: ../src/mn-conf.c:317
+#, c-format
+msgid "recursively unsetting %s"
+msgstr "suprimindo recursivamente %s"
+
+#: ../src/mn-conf.c:321
+msgid "syncing the GConf database"
+msgstr "sincronizando banco de dados do GConf"
+
+#: ../src/mn-conf.c:324
+msgid "completed"
+msgstr "concluído"
+
+#: ../src/mn-custom-vfs-mailbox.gob:76
+msgid "invalid location"
+msgstr "localização inválida"
+
+#: ../src/mn-evolution-folder-tree-control.c:86
+msgid "The currently selected URI"
+msgstr "A URI atualmente selecionada"
+
+#: ../src/mn-evolution-mailbox-properties.gob:67
+msgid "Folder"
+msgstr "Pasta"
+
+#: ../src/mn-evolution-mailbox-properties.gob:169
+msgid ""
+"Mail Notification can not contact Evolution. Make sure that Evolution is "
+"running and that the Evolution Mail Notification plugin is loaded."
+msgstr ""
+"Notificação de Correio não pode contactar Evolution. Certifique-se que "
+"Evolution está executando e que o plugin Notifficação de Correio Evolution "
+"está carregado."
+
+#: ../src/mn-evolution-mailbox.gob:61
+msgid "folder not found"
+msgstr "pasta não encontrada"
+
+#: ../src/mn-evolution-mailbox.gob:182
+msgid "unable to contact Evolution"
+msgstr "impossível contactar Evolution"
+
+#: ../src/mn-evolution-plugin.c:130 ../src/mn-evolution-plugin.c:134
+msgid "Unable to activate the Mail Notification plugin"
+msgstr "Impossível ativar o plugin Notificação de Correio"
+
+#: ../src/mn-evolution-plugin.c:130
+#, c-format
+msgid ""
+"Bonobo could not locate the %s server. Please check your Mail Notification "
+"installation."
+msgstr ""
+"Bonobo não pôde localizar o servidor %s. Por favor, verifique sua instalação "
+"de Notificação de Correio."
+
+#: ../src/mn-evolution-plugin.c:134 ../src/mn-main.c:427
+#, c-format
+msgid ""
+"Bonobo was unable to register the %s server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo·não·pôde·registrar o·servidor·%s.·Por·favor,·verifique·sua·instalação·"
+"de·Notificação·de·Correio."
+
+#: ../src/mn-gmail-mailbox.gob:111
+msgid "invalid feed location"
+msgstr "localização de alimentação inválida"
+
+#: ../src/mn-gmail-mailbox.gob:125
+#, c-format
+msgid "retrieving feed from %s"
+msgstr "recebendo alimentação de %s"
+
+#: ../src/mn-gmail-mailbox.gob:132
+#, c-format
+msgid "unable to retrieve feed: %s"
+msgstr "impossível obter a alimentação: %s"
+
+#: ../src/mn-gmail-mailbox.gob:147 ../src/mn-gmail-mailbox.gob:194
+msgid "unable to parse feed"
+msgstr "impossível interpretar a alimentação"
+
+#: ../src/mn-gmime-stream-vfs.gob:50
+#: ../src/mn-sylpheed-mailbox-backend.gob:152
+#, c-format
+msgid "unable to read %s: %s"
+msgstr "impossível ler %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:52
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr "impossível escrever para %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:54
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr "impossível pesquisar em %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:56
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "impossível determinar a posição de %s: %s"
+
+#: ../src/mn-gmime-stream-vfs.gob:58 ../src/mn-mh-mailbox-backend.gob:158
+#, c-format
+msgid "unable to close %s: %s"
+msgstr "impossível fechar %s: %s"
+
+#: ../src/mn-imap-mailbox-properties.gob:113
+msgid "Mailbox:"
+msgstr "Conta de correio:"
+
+#: ../src/mn-imap-mailbox-properties.gob:117
+msgid "in_box"
+msgstr "_Caixa de entrada"
+
+#: ../src/mn-imap-mailbox-properties.gob:128
+msgid "oth_er:"
+msgstr "Out_ro:"
+
+#: ../src/mn-imap-mailbox-properties.gob:139
+msgid "ne_ver"
+msgstr "_Nunca"
+
+#: ../src/mn-imap-mailbox-properties.gob:140
+msgid "au_todetect"
+msgstr "Au_to detectar"
+
+#: ../src/mn-imap-mailbox-properties.gob:141
+msgid "al_ways"
+msgstr "S_empre"
+
+#: ../src/mn-imap-mailbox-properties.gob:173
+msgid "Use the <span style=\"italic\">IDLE</span> extension:"
+msgstr "Usar a extensão <span style=\"italic\">IDLE</span>:"
+
+#: ../src/mn-imap-mailbox.gob:390
+msgid "server did not send capabilities"
+msgstr "servidor não enviou suas capacidades"
+
+#: ../src/mn-imap-mailbox.gob:573
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr "servidor anunciou LOGINDISABLED, não usando a autenticação LOGIN"
+
+#: ../src/mn-imap-mailbox.gob:574
+msgid "unable to login"
+msgstr "impossível iniciar uma sessão"
+
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:714
+msgid "server did not send search results"
+msgstr "servidor não enviou os resultados da busca"
+
+#. compliance error
+#: ../src/mn-imap-mailbox.gob:792
+msgid "server did not send all the messages we requested"
+msgstr "servidor não enviou todas as mensagens solicitadas"
+
+#: ../src/mn-imap-mailbox.gob:859
+msgid "unable to fetch message"
+msgstr "impossível obter a mensagem"
+
+#: ../src/mn-imap-mailbox.gob:875
+msgid ""
+"\"Use the IDLE extension\" set to \"never\" in the mailbox properties, "
+"logging out"
+msgstr ""
+"Nas propriedades da conta, ajuste \"Usar a extensão IDLE\" para o valor "
+"\"nunca\". Fechando a sessão."
+
+#: ../src/mn-imap-mailbox.gob:886
+#, c-format
+msgid "the remote server runs %s, not using the IDLE extension"
+msgstr "o servidor remoto utiliza %s, não utilizando a extensão IDLE"
+
+#: ../src/mn-imap-mailbox.gob:891
+#, c-format
+msgid ""
+"the remote server runs %s, the IDLE extension might not function properly"
+msgstr ""
+"o servidor remoto utiliza %s, a extensão IDLE pode não funcionar corretamente"
+
+#: ../src/mn-imap-mailbox.gob:900
+msgid "the remote server does not support the IDLE extension, logging out"
+msgstr "o servidor remoto não suporta a extensão IDLE, fechando a sessão"
+
+#: ../src/mn-imap-mailbox.gob:1251 ../src/mn-pop3-mailbox.gob:1124
+msgid "unknown server error"
+msgstr "erro de servidor desconhecido"
+
+#: ../src/mn-imap-mailbox.gob:1357 ../src/mn-pop3-mailbox.gob:311
+msgid "server does not support in-band SSL/TLS"
+msgstr "servidor não suporta o modo SSL/TLS interno"
+
+#: ../src/mn-imap-mailbox.gob:1381 ../src/mn-pop3-mailbox.gob:997
+msgid ""
+"a SASL authentication mechanism was selected but SASL support has not been "
+"compiled in"
+msgstr ""
+"o mecanismo de autenticação SASL foi selecionado, mas o suporte a SASL"
+"não foi compilado"
+
+#: ../src/mn-imap-mailbox.gob:1391 ../src/mn-pop3-mailbox.gob:1017
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "mecanismo de autenticação desconhecido \"%s\""
+
+#: ../src/mn-imap-mailbox.gob:1423 ../src/mn-pop3-mailbox.gob:1053
+#, c-format
+msgid "disabling mechanism \"%s\" and retrying SASL authentication"
+msgstr "desativando mecanismo \"%s\" e retornando a autenticação SASL"
+
+#: ../src/mn-imap-mailbox.gob:1435
+msgid "falling back to IMAP LOGIN authentication"
+msgstr "retornando para autenticação IMAP LOGIN"
+
+#: ../src/mn-imap-mailbox.gob:1447 ../src/mn-pop3-mailbox.gob:1082
+msgid "authentication failed"
+msgstr "autenticação falhou"
+
+#: ../src/mn-mail-icon.gob:91
+msgid "Main _Window"
+msgstr "_Janela Principal"
+
+#: ../src/mn-mail-icon.gob:92 ../src/mn-main-window.gob:165
+msgid "_Mail Reader"
+msgstr "_Leitor de Correio"
+
+#: ../src/mn-mail-icon.gob:93 ../src/mn-main-window.gob:173
+msgid "_Update"
+msgstr "_Atualizar"
+
+#: ../src/mn-mail-icon.gob:99
+msgid "R_emove From Notification Area"
+msgstr "R_emover da área de notificação"
+
+#: ../src/mn-mailbox-properties-dialog.gob:88
+#, c-format
+msgid "%s Properties"
+msgstr "Propriedades de %s"
+
+#: ../src/mn-mailbox-properties-dialog.gob:205
+msgid "Add a Mailbox"
+msgstr "Adicionar uma Conta de Correio"
+
+#: ../src/mn-mailbox-view.gob:179
+msgid "A paste error has occurred"
+msgstr "Ocorreu um erro ao colar"
+
+#: ../src/mn-mailbox-view.gob:320 ../src/mn-message-view.gob:313
+msgid "Mailbox"
+msgstr "Conta de Correio"
+
+#: ../src/mn-mailbox-view.gob:523
+#, c-format
+msgid "unhandled %s mailbox (%s)"
+msgstr "não tratado %s conta de correio (%s)"
+
+#: ../src/mn-mailbox-view.gob:528
+#, c-format
+msgid "%s mailbox"
+msgstr "Conta %s"
+
+#: ../src/mn-mailbox-view.gob:543
+msgid "detecting mailbox type..."
+msgstr "detectando o tipo da conta de correio..."
+
+#: ../src/mn-mailbox.gob:278
+msgid "\"type\" attribute missing"
+msgstr "atributo \"type\" inexistente"
+
+#: ../src/mn-mailbox.gob:285
+#, c-format
+msgid "unknown mailbox type \"%s\""
+msgstr "tipo de conta de correio desconhecido \"%s\""
+
+#: ../src/mn-mailbox.gob:305
+#, c-format
+msgid ""
+"property \"%s\": unable to transform string \"%s\" into a value of type \"%s"
+"\""
+msgstr ""
+"propriedade \"%s\": impossível converter texto \"%s\" em um valor do tipo \"%s\""
+
+#: ../src/mn-mailbox.gob:744
+#, c-format
+msgid "property \"%s\" has no value"
+msgstr "propriedade \"%s\" não possui um valor"
+
+#: ../src/mn-mailboxes.gob:203
+msgid "An error has occurred while importing old mailboxes"
+msgstr "Ocorreu um erro ao importar as contas de correio antigas"
+
+#: ../src/mn-mailboxes.gob:248
+msgid "Unable to load the mailboxes configuration"
+msgstr "Impossível carregar a configuração das contas de correio"
+
+#: ../src/mn-mailboxes.gob:294
+msgid "Unable to parse the XML document."
+msgstr "Impossível interpretar o documento XML."
+
+#: ../src/mn-mailboxes.gob:301
+msgid "The root element is missing."
+msgstr "O elemento raiz está faltando."
+
+#: ../src/mn-mailboxes.gob:307
+#, c-format
+msgid "The root element \"%s\" is invalid."
+msgstr "O elemento raiz \"%s\" é inválido."
+
+#: ../src/mn-mailboxes.gob:330
+#, c-format
+msgid "On line %i: %s."
+msgstr "Na linha %i: %s."
+
+#: ../src/mn-mailboxes.gob:335
+#, c-format
+msgid "On line %i: unknown element \"%s\"."
+msgstr "Na linha %i: elemento desconhecido \"%s\"."
+
+#: ../src/mn-mailboxes.gob:346
+msgid "An error has occurred while loading the mailboxes configuration"
+msgid_plural "Errors have occurred while loading the mailboxes configuration"
+msgstr[0] "Um erro ocorreu ao carregar a configuração das contas de correio"
+msgstr[1] "Erros ocorreram ao carregar a configuração das contas de correio"
+
+#: ../src/mn-mailboxes.gob:371
+msgid "Unable to save the mailboxes configuration"
+msgstr "Impossível salvar configuração das contas de correio"
+
+#: ../src/mn-mailboxes.gob:417
+msgid "Unable to write the XML document."
+msgstr "Impossível salvar o documento XML."
+
+#. non fatal
+#: ../src/mn-mailboxes.gob:433
+#, c-format
+msgid "unable to delete %s: %s"
+msgstr "impossível excluir %s: %s"
+
+#: ../src/mn-mailboxes.gob:457
+#, c-format
+msgid "%s has %i new message"
+msgid_plural "%s has %i new messages"
+msgstr[0] "%s tem %i nova mensagem"
+msgstr[1] "%s tem %i novas mensagens"
+
+#: ../src/mn-mailboxes.gob:483
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s reportou um erro: %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:111
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "impossível abrir a pasta \"new\": %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:144
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "impossível fechar a pasta \"new\": %s"
+
+#: ../src/mn-maildir-mailbox-backend.gob:147
+#, c-format
+msgid "error while reading folder \"new\": %s"
+msgstr "erro ao ler pasta \"new\": %s"
+
+#: ../src/mn-main-window.gob:106
+msgid "Help messages"
+msgstr "Mensagens de ajuda"
+
+#: ../src/mn-main-window.gob:107
+msgid "Count messages"
+msgstr "Contar mensagens"
+
+#. Toplevel
+#: ../src/mn-main-window.gob:156
+msgid "_Mail"
+msgstr "_Correio"
+
+#: ../src/mn-main-window.gob:157
+msgid "_Edit"
+msgstr "_Editar"
+
+#: ../src/mn-main-window.gob:158
+msgid "_View"
+msgstr "_Ver"
+
+#: ../src/mn-main-window.gob:159
+msgid "_Help"
+msgstr "Aj_uda"
+
+#: ../src/mn-main-window.gob:167
+msgid "Launch the mail reader"
+msgstr "Abrir o leitor de correio"
+
+#. Reload
+#: ../src/mn-main-window.gob:175 ../src/mn-main.c:248
+msgid "Update the mail status"
+msgstr "Atualizar status do correio"
+
+#: ../src/mn-main-window.gob:181
+msgid "_Close"
+msgstr "_Fechar"
+
+#: ../src/mn-main-window.gob:183
+msgid "Close this window"
+msgstr "Fechar esta janela"
+
+#: ../src/mn-main-window.gob:189
+msgid "_Quit"
+msgstr "_Sair"
+
+#: ../src/mn-main-window.gob:191 ../src/mn-main.c:266
+msgid "Quit Mail Notification"
+msgstr "Sair de Notificação de Correio"
+
+#: ../src/mn-main-window.gob:199 ../src/mn-main-window.gob:247
+msgid "_Toolbars"
+msgstr "_Barra de ferramentas"
+
+#: ../src/mn-main-window.gob:201
+msgid "Customize the toolbars"
+msgstr "Personalizar a barra de ferramentas"
+
+#: ../src/mn-main-window.gob:207
+msgid "_Preferences"
+msgstr "_Preferências"
+
+#: ../src/mn-main-window.gob:217
+msgid "Toolbars Styl_e"
+msgstr "_Estilo da barra de ferramentas"
+
+#: ../src/mn-main-window.gob:219
+msgid "Customize the toolbars style"
+msgstr "Personalizar o estilo da barra de ferramentas"
+
+#: ../src/mn-main-window.gob:227
+msgid "_Contents"
+msgstr "_Conteúdo"
+
+#: ../src/mn-main-window.gob:229
+msgid "Display help"
+msgstr "Mostrar ajuda"
+
+#: ../src/mn-main-window.gob:235
+msgid "_About"
+msgstr "_Sobre"
+
+#: ../src/mn-main-window.gob:237
+msgid "Display credits"
+msgstr "Mostrar créditos"
+
+#: ../src/mn-main-window.gob:249
+msgid "Show or hide the toolbars"
+msgstr "Mostrar ou esconder a barra de ferramentas"
+
+#: ../src/mn-main-window.gob:256
+msgid "_Statusbar"
+msgstr "Barra de _status"
+
+#: ../src/mn-main-window.gob:258
+msgid "Show or hide the statusbar"
+msgstr "Mostrar ou esconder a barra de status"
+
+#: ../src/mn-main-window.gob:269
+msgid "_Desktop Default"
+msgstr "Padrão do _sistema"
+
+#: ../src/mn-main-window.gob:271
+msgid "Set the toolbars style to the desktop default setting"
+msgstr "Utilizar o padrão do sistema para o estilo da barra de ferramentas"
+
+#: ../src/mn-main-window.gob:277
+msgid "I_cons Only"
+msgstr "Apenas _ícones"
+
+#: ../src/mn-main-window.gob:279
+msgid "Only display the toolbars icons"
+msgstr "Mostrar apenas os ícones da barra de ferramentas"
+
+#: ../src/mn-main-window.gob:285
+msgid "_Text Only"
+msgstr "Apenas _texto"
+
+#: ../src/mn-main-window.gob:287
+msgid "Only display the toolbars text"
+msgstr "Mostrar apenas o texto da barra de ferramentas"
+
+#: ../src/mn-main-window.gob:293
+msgid "Text Belo_w Icons"
+msgstr "Texto _sob ícones"
+
+#: ../src/mn-main-window.gob:295
+msgid "Display the toolbars text below the icons"
+msgstr "Mostrar o texto da barra de ferramentas abaixo dos ícones"
+
+#: ../src/mn-main-window.gob:301
+msgid "Text Be_side Icons"
+msgstr "Texto ao _lado dos ícones"
+
+#: ../src/mn-main-window.gob:303
+msgid "Display the toolbars text beside the icons"
+msgstr "Mostrar o texto da barra de ferramentas ao lado dos ícones"
+
+#: ../src/mn-main-window.gob:345
+#, c-format
+msgid "unable to load menus.xml: %s"
+msgstr "impossível carregar menus.xml: %s"
+
+#: ../src/mn-main-window.gob:388
+msgid "unable to load toolbars.xml"
+msgstr "impossível carregar toolbars.xml"
+
+#: ../src/mn-main-window.gob:439
+#, c-format
+msgid "%i new message"
+msgid_plural "%i new messages"
+msgstr[0] "%i nova mensagem"
+msgstr[1] "%i novas mensagens"
+
+#.
+#. * 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 "Suporte compilado na conta de correio: "
+
+#: ../src/mn-main.c:124
+msgid "Compiled-in POP3 and IMAP features: "
+msgstr "Funcionalidades POP3 e IMAP disponíveis: "
+
+#: ../src/mn-main.c:194
+msgid "Enable informational output"
+msgstr "Ativar informações"
+
+#: ../src/mn-main.c:203
+msgid "List the compiled-in features"
+msgstr "Lista de funcionalidades compiladas"
+
+#: ../src/mn-main.c:212
+msgid "Display the main window"
+msgstr "Mostrar a janela principal"
+
+#: ../src/mn-main.c:221
+msgid "Display the properties dialog"
+msgstr "Mostrar o diálogo de propriedades"
+
+#: ../src/mn-main.c:230
+msgid "Display the about dialog"
+msgstr "Mostrar o diálogo sobre"
+
+#: ../src/mn-main.c:239
+msgid "Close the mail summary popup"
+msgstr "Fechar a janela de resumo de correio"
+
+#: ../src/mn-main.c:257
+msgid "Unset obsolete GConf configuration"
+msgstr "Suprimir configuração GConf obsoleta"
+
+#.
+#. * We can't use mn_error_dialog() because gtk_init() has not been
+#. * called yet.
+#.
+#: ../src/mn-main.c:293
+msgid "multi-threading is not available"
+msgstr "multi-threading não está disponível"
+
+#: ../src/mn-main.c:355
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo não pôde localizar o objeto de automação. Por·favor,·verifique·sua·instalação·"
+"de·Notificação·de·Correio."
+
+#: ../src/mn-main.c:361
+msgid "quitting Mail Notification"
+msgstr "saindo de Notificação de Correio"
+
+#: ../src/mn-main.c:365
+msgid "Mail Notification is not running"
+msgstr "Notificação de Correio não está executando"
+
+#: ../src/mn-main.c:372
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "Impossível inicializar a biblioteca GnomeVFS."
+
+#: ../src/mn-main.c:404
+msgid "updating the mail status"
+msgstr "atualizando status do correio"
+
+#: ../src/mn-main.c:413
+msgid "Mail Notification is already running"
+msgstr "Notificação de Correio já está executando"
+
+#: ../src/mn-main.c:423
+#, c-format
+msgid ""
+"Bonobo could not locate the %s file. Please check your Mail Notification "
+"installation."
+msgstr ""
+"Bonobo·não·pôde·localizar o arquivo %s.·Por·favor,·verifique·sua·instalação·"
+"de·Notificação·de·Correio."
+
+#: ../src/mn-mbox-mailbox-backend.gob:209
+#, c-format
+msgid "unable to close file: %s"
+msgstr "impossível fechar o arquivo: %s"
+
+#: ../src/mn-mbox-mailbox-backend.gob:226
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "impossível abrir caixa de correio: %s"
+
+#: ../src/mn-message-mime.c:104
+msgid "unable to parse MIME message"
+msgstr "impossível interpretar mensagem MIME"
+
+#: ../src/mn-message-view.gob:82
+msgid "You have no new mail."
+msgstr "Você não tem novas mensagens."
+
+#: ../src/mn-message-view.gob:322
+msgid "Unreadable message"
+msgstr "Mensagem ilegível"
+
+#: ../src/mn-message-view.gob:330
+msgid "From"
+msgstr "De"
+
+#: ../src/mn-message-view.gob:338
+msgid "Subject"
+msgstr "Assunto"
+
+#: ../src/mn-message-view.gob:349
+msgid "Sent"
+msgstr "Enviado"
+
+#: ../src/mn-message.gob:99
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: ../src/mn-message.gob:124
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] "%i segundo atrás"
+msgstr[1] "%i segundos atrás"
+
+#: ../src/mn-message.gob:128
+#, c-format
+msgid "about %i minute ago"
+msgid_plural "about %i minutes ago"
+msgstr[0] "aproximadamente %i minuto atrás"
+msgstr[1] "aproximadamente %i minutos atrás"
+
+#: ../src/mn-message.gob:133
+#, c-format
+msgid "about %i hour ago"
+msgid_plural "about %i hours ago"
+msgstr[0] "aproximadamente %i hora atrás"
+msgstr[1] "aproximadamente %i horas atrás"
+
+#: ../src/mn-message.gob:138
+#, c-format
+msgid "about %i day ago"
+msgid_plural "about %i days ago"
+msgstr[0] "aproximadamente %i dia atrás"
+msgstr[1] "aproximadamente %i dias atrás"
+
+#: ../src/mn-message.gob:143
+#, c-format
+msgid "about %i week ago"
+msgid_plural "about %i weeks ago"
+msgstr[0] "aproximadamente %i semana atrás"
+msgstr[1] "aproximadamente %i semanas atrás"
+
+#. translators: "none" is used like "Mailbox: none"
+#: ../src/mn-message.gob:163
+msgid "none"
+msgstr "nenhum"
+
+#: ../src/mn-mh-mailbox-backend.gob:161
+#, c-format
+msgid "error while reading %s: %s"
+msgstr "erro durante a leitura %s: %s"
+
+#: ../src/mn-mh-mailbox-backend.gob:174
+#, c-format
+msgid "unable to open %s: %s"
+msgstr "impossível abrir %s: %s"
+
+#: ../src/mn-pi-mailbox-properties.gob:67
+msgid "sta_ndard"
+msgstr "Pad_rão"
+
+#: ../src/mn-pi-mailbox-properties.gob:68
+msgid "_in-band SSL/TLS"
+msgstr "SSL/TLS _interno"
+
+#: ../src/mn-pi-mailbox-properties.gob:69
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SS_L/TLS em porta separada"
+
+#: ../src/mn-pi-mailbox-properties.gob:73
+msgid "_Hostname:"
+msgstr "S_ervidor:"
+
+#: ../src/mn-pi-mailbox-properties.gob:93
+msgid "_Details"
+msgstr "_Detalhes"
+
+#: ../src/mn-pi-mailbox-properties.gob:148
+msgid "Connection type:"
+msgstr "Tipo de conexão:"
+
+#: ../src/mn-pi-mailbox-properties.gob:155
+msgid "Port:"
+msgstr "Porta:"
+
+#: ../src/mn-pi-mailbox-properties.gob:178
+msgid "_Authentication mechanism:"
+msgstr "Mecanismo de _autenticação:"
+
+#: ../src/mn-pi-mailbox.gob:113
+msgid "SSL/TLS support has not been compiled in"
+msgstr "o suporte a SSL/TLS não foi compilado"
+
+#: ../src/mn-pop3-mailbox.gob:359
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr "argumentos inválidos para a funcionalidade 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:519
+msgid ""
+"SASL authentication with initial client response failed, retrying without "
+"initial client response"
+msgstr ""
+"Autenticação SASL com cliente inicial retornou erro, tentando novamente "
+"sem resposta inicial do cliente"
+
+#: ../src/mn-pop3-mailbox.gob:733
+msgid "unknown error"
+msgstr "erro desconhecido"
+
+#: ../src/mn-pop3-mailbox.gob:828
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
+msgstr[0] "atendendo ao LOGIN-DELAY, aguardando por %i segundo"
+msgstr[1] "atendendo ao LOGIN-DELAY, aguardando por %i segundos"
+
+#: ../src/mn-pop3-mailbox.gob:1009
+msgid "server does not support APOP authentication"
+msgstr "servidor não suporta autenticação APOP"
+
+#: ../src/mn-pop3-mailbox.gob:1065
+msgid "falling back to APOP authentication"
+msgstr "retornando para autenticação APOP"
+
+#: ../src/mn-pop3-mailbox.gob:1070
+msgid "falling back to USER/PASS authentication"
+msgstr "retornando para autenticação USER/PASS"
+
+#: ../src/mn-properties-dialog.gob:170 ../ui/properties-dialog.glade.h:10
+msgid "Mail Notification Properties"
+msgstr "Propriedades de Notificação de Correio"
+
+#: ../src/mn-properties-dialog.gob:207
+msgid "top left"
+msgstr "superior esquerdo"
+
+#: ../src/mn-properties-dialog.gob:208
+msgid "top right"
+msgstr "superior direito"
+
+#: ../src/mn-properties-dialog.gob:209
+msgid "bottom left"
+msgstr "inferior esquerdo"
+
+#: ../src/mn-properties-dialog.gob:210
+msgid "bottom right"
+msgstr "inferior direito"
+
+#: ../src/mn-properties-dialog.gob:329
+msgid "No mailbox selected."
+msgstr "Nenhuma conta de correio selecionada."
+
+#: ../src/mn-properties-dialog.gob:334
+#, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] "%i conta de correio selecionada."
+msgstr[1] "%i contas de correio selecionadas."
+
+#: ../src/mn-properties-dialog.gob:465
+#, c-format
+msgid "Test message #%i"
+msgstr "Mensagem teste %i"
+
+#: ../src/mn-properties-dialog.gob:470
+msgid "Mail Notification Properties Dialog"
+msgstr "Diálogo de propriedades de Notificação de Correio"
+
+#: ../src/mn-shell.gob:109
+msgid "You have new mail."
+msgstr "Chegou mensagem para você."
+
+#: ../src/mn-shell.gob:374
+msgid "Mailboxes Having New Mail"
+msgstr "Contas de Correios que possuem novas mensagens"
+
+#: ../src/mn-shell.gob:393
+msgid "Errors"
+msgstr "Erros"
+
+#: ../src/mn-shell.gob:408
+msgid "Mail Summary"
+msgstr "Resumo do Correio"
+
+#: ../src/mn-ssl.c:76
+msgid "unknown SSL/TLS error"
+msgstr "erro SSL/TLS desconhecido"
+
+#: ../src/mn-stock.c:28
+msgid "Select _All"
+msgstr "Selecionar _Todos"
+
+#: ../src/mn-stock.c:29
+msgid "Leave Fullscreen"
+msgstr "Sair do modo tela cheia"
+
+#: ../src/mn-stock.c:30
+msgid "Co_nnect"
+msgstr "Co_nectar"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:170
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "impossível abrir pasta: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:209
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "impossível fechar pasta: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:212
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "erro ao ler pasta: %s"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:256
+msgid "unexpected end of file"
+msgstr "fim de arquivo inesperado"
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:270
+#, c-format
+msgid "incompatible file version \"%i\""
+msgstr "versão do arquivo incompatível \"%i\" "
+
+#: ../src/mn-sylpheed-mailbox-backend.gob:273
+msgid "file version missing"
+msgstr "versão do arquivo inexistente"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:39
+#: ../src/mn-system-vfs-mailbox-properties.gob:47
+#: ../src/mn-system-vfs-mailbox.gob:45
+msgid "System mailbox"
+msgstr "Conta de correio de sistema"
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:68
+#, c-format
+msgid "Your system mailbox is <span weight=\"bold\">%s</span>."
+msgstr "Sua conta de correio de sistema é <span weight=\"bold\">%s</span>."
+
+#: ../src/mn-system-vfs-mailbox-properties.gob:75
+msgid ""
+"The location of your system mailbox could not be detected. Check the MAIL "
+"environment variable."
+msgstr ""
+"A localização de sua caixa de correio de sistema não pode ser detectada. "
+"Verificar a variável de ambiente MAIL."
+
+#: ../src/mn-system-vfs-mailbox.gob:72
+msgid "MAIL environment variable not defined"
+msgstr "variável de ambiente MAIL não definida"
+
+#: ../src/mn-util.c:281
+#, c-format
+msgid "error loading image: %s"
+msgstr "erro ao carregar imagem: %s"
+
+#: ../src/mn-util.c:298
+#, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "elemento \"%s\" não encontrado na interface \"%s\""
+
+#: ../src/mn-util.c:398
+#, c-format
+msgid "unable to open self as a module: %s"
+msgstr "impossível abrir a si mesmo como um modulo: %s"
+
+#: ../src/mn-util.c:403
+#, c-format
+msgid "signal handler \"%s\" not found"
+msgstr "manipulador de sinal \"%s\" não encontrado"
+
+#: ../src/mn-util.c:556 ../src/mn-util.c:579 ../src/mn-util.c:601
+#: ../src/mn-util.c:623
+msgid "A drag and drop error has occurred"
+msgstr "Ocorreu um erro ao arrastar e colar"
+
+#: ../src/mn-util.c:557
+msgid "An invalid location list has been received."
+msgstr "Uma lista inválida de endereços foi recebida."
+
+#: ../src/mn-util.c:602
+msgid "An invalid Mozilla location has been received."
+msgstr "Um endereço Mozilla não válido foi recebido."
+
+#: ../src/mn-util.c:678
+msgid "Unable to display help"
+msgstr "Impossível mostrar a ajuda"
+
+#: ../src/mn-util.c:692
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "Impossível criar uma thread: %s."
+
+#: ../src/mn-util.c:782
+msgid "_Do not show this message again"
+msgstr "_Não mostrar esta mensagem novamente"
+
+#: ../src/mn-util.c:892
+#, c-format
+msgid ""
+"The following location is invalid:\n"
+"\n"
+"%s"
+"The following locations are invalid:\n"
+"\n"
+"%s"
+msgstr ""
+"O endereço abaixo é inválido:\n"
+"\n"
+"%s"
+"Os endereços abaixo são inválidos:\n"
+"\n"
+"%s"
+
+#: ../src/mn-util.c:912
+msgid "A fatal error has occurred in Mail Notification"
+msgstr "Um erro fatal ocorreu em Notificação de Correio"
+
+#: ../src/mn-util.c:951
+#, c-format
+msgid "unable to get current time: %s"
+msgstr "impossível obter a hora corrente: %s"
+
+#: ../src/mn-util.c:1013
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr "inválida especificação de sinal \"%s\""
+
+#: ../src/mn-util.c:1052
+msgid "A command error has occurred in Mail Notification"
+msgstr "Um erro de comando ocorreu em Notificação de Correio"
+
+#: ../src/mn-util.c:1053
+#, c-format
+msgid "Unable to execute \"%s\": %s."
+msgstr "Impossível executar \"%s\": %s"
+
+#: ../src/mn-util.c:1311
+#, c-format
+msgid "unable to rename %s to %s: %s"
+msgstr "impossível renomear %s para %s: %s"
+
+#: ../src/mn-vfs-mailbox-backend.gob:117
+#, c-format
+msgid "unable to monitor mailbox contents (%s), poll mode activated"
+msgstr "impossível monitorar conteúdo da conta de correio (%s), verificação explícita ativada"
+
+#: ../src/mn-vfs-mailbox.gob:238
+#, c-format
+msgid "unable to monitor mailbox type (%s), poll mode activated"
+msgstr "impossível monitorar conta de correio tipo (%s), verificação explícita ativada"
+
+#: ../src/mn-vfs-mailbox.gob:307
+msgid "unknown mailbox format"
+msgstr "formato de conta de correio não conhecido"
+
+#: ../src/mn-vfs-mailbox.gob:307
+msgid "does not exist"
+msgstr "não existe"
+
+#: ../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] "Como solução, eles serão verificados a cada %i segundo (este intervalo é configurável através da janela de propriedades)."
+msgstr[1] "Como solução, eles serão verificados a cada %i segundos (este intervalo é configurável através da janela de propriedades)."
+
+#: ../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] "Como solução, eles serão verificados a cada %i minuto (este intervalo é configurável através da janela de propriedades)."
+msgstr[1] "Como solução, eles serão verificados a cada %i minutos (este intervalo é configurável através da janela de propriedades)."
+
+#: ../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] "Como solução, eles serão verificados aproximadamente a cada %i minuto (este intervalo é configurável através da janela de propriedades)."
+msgstr[1] "Como solução, eles serão verificados aproximadamente a cada %i minutos (este intervalo é configurável através da janela de propriedades)."
+
+#: ../src/mn-vfs-mailbox.gob:415
+msgid "A monitoring error has occurred"
+msgstr "Um erro de monitoração ocorreu"
+
+#: ../src/mn-vfs-mailbox.gob:416
+#, c-format
+msgid ""
+"Mail Notification was unable to enable immediate notification for one or "
+"more mailboxes. %s"
+msgstr ""
+"Notificação de Correio não foi capaz de habilitar a notificação imediata "
+"para uma ou mais contas de correio. %s"
+
+#: ../ui/edit-toolbars-dialog.glade.h:1
+msgid "Edit Toolbars"
+msgstr "Editar Barra de Ferramentas"
+
+#: ../ui/edit-toolbars-dialog.glade.h:2
+msgid "_Add a New Toolbar"
+msgstr "_Adicionar Nova Barra"
+
+#: ../ui/edit-toolbars-dialog.glade.h:3
+#: ../ui/mailbox-properties-dialog.glade.h:4
+msgid "_Use Default"
+msgstr "Usar Padrão"
+
+#: ../ui/mail-summary-popup.glade.h:1
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span size=\"larger\" weight=\"bold\">Resumo do Correio</span>"
+
+#: ../ui/mailbox-properties-dialog.glade.h:1 ../ui/properties-dialog.glade.h:4
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Geral</span>"
+
+#: ../ui/mailbox-properties-dialog.glade.h:2
+msgid "Mailbox _name:"
+msgstr "N_ome da conta de correio:"
+
+#: ../ui/mailbox-properties-dialog.glade.h:3
+msgid "Mailbox _type:"
+msgstr "_Tipo de conta de correio:"
+
+#: ../ui/properties-dialog.glade.h:1
+msgid "<span weight=\"bold\">Commands</span>"
+msgstr "<span weight=\"bold\">Comandos</span>"
+
+#: ../ui/properties-dialog.glade.h:2
+msgid "<span weight=\"bold\">Double-click Action</span>"
+msgstr "<span weight=\"bold\">Ação no duplo clique</span>"
+
+#: ../ui/properties-dialog.glade.h:3
+msgid "<span weight=\"bold\">Fonts</span>"
+msgstr "<span weight=\"bold\">Fontes</span>"
+
+#: ../ui/properties-dialog.glade.h:5
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Contas de Correio</span>"
+
+#: ../ui/properties-dialog.glade.h:6
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Posição</span>"
+
+#: ../ui/properties-dialog.glade.h:7
+msgid "Co_ntents:"
+msgstr "_Conteúdo:"
+
+#: ../ui/properties-dialog.glade.h:8
+msgid "Dis_play mail summary in tooltip"
+msgstr "Mostrar o _resumo do correio em uma dica"
+
+#: ../ui/properties-dialog.glade.h:9
+msgid "General"
+msgstr "Geral"
+
+#: ../ui/properties-dialog.glade.h:11
+msgid "Mail Summary Popup"
+msgstr "Resumo de Correio"
+
+#: ../ui/properties-dialog.glade.h:12
+msgid "Mailboxes"
+msgstr "Contas de Correio"
+
+#: ../ui/properties-dialog.glade.h:13
+msgid "Only display _recent mail"
+msgstr "Mostrar apenas mensagens _novas"
+
+#: ../ui/properties-dialog.glade.h:14
+msgid "Use these _fonts:"
+msgstr "Utilizar e_ste fonte:"
+
+#: ../ui/properties-dialog.glade.h:15
+msgid "When _all mail has been read:"
+msgstr "Quando _todas mensagens forem lidas:"
+
+#: ../ui/properties-dialog.glade.h:16
+msgid "When _new mail arrives:"
+msgstr "Quando _nova mensagem chegar:"
+
+#: ../ui/properties-dialog.glade.h:17
+msgid "_Automatically close after:"
+msgstr "F_echar automaticamente após:"
+
+#: ../ui/properties-dialog.glade.h:18
+msgid "_Blink on errors"
+msgstr "_Se ocorrerem erros, piscar ícone de status"
+
+#: ../ui/properties-dialog.glade.h:19
+msgid "_Delay between mail checks:"
+msgstr "_Intervalo entre verificações no correio:"
+
+#: ../ui/properties-dialog.glade.h:20
+msgid "_Display a Test Popup"
+msgstr "Testar janela de _resumo"
+
+#: ../ui/properties-dialog.glade.h:21
+msgid "_Display the main window"
+msgstr "_Mostrar a janela principal"
+
+#: ../ui/properties-dialog.glade.h:22
+msgid "_Enable mail summary popup"
+msgstr "_Ativar a janela de resumo de correio"
+
+#: ../ui/properties-dialog.glade.h:23
+msgid "_Horizontal offset:"
+msgstr "Distância _horizontal:"
+
+#: ../ui/properties-dialog.glade.h:24
+msgid "_Launch the mail reader"
+msgstr "Abrir o leitor de _correio"
+
+#: ../ui/properties-dialog.glade.h:25
+msgid "_Mail reader:"
+msgstr "_Leitor de correio:"
+
+#: ../ui/properties-dialog.glade.h:26
+msgid "_Position:"
+msgstr "_Posição:"
+
+#: ../ui/properties-dialog.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "_Iniciar Notificação de Correio no login do GNOME"
+
+#: ../ui/properties-dialog.glade.h:28
+msgid "_Title:"
+msgstr "_Título:"
+
+#: ../ui/properties-dialog.glade.h:29
+msgid "_Update the mail status"
+msgstr "_Atualizar status do correio"
+
+#: ../ui/properties-dialog.glade.h:30
+msgid "_Use fonts from theme"
+msgstr "_Utilizar fonte padrão do sistema"
+
+#: ../ui/properties-dialog.glade.h:31
+msgid "_Vertical offset:"
+msgstr "Distância _vertical:"
+
+#: ../ui/properties-dialog.glade.h:32
+msgid "minutes"
+msgstr "minutos"
+
+#: ../ui/properties-dialog.glade.h:33
+msgid "pixels"
+msgstr "pixels"
+
+#: ../ui/properties-dialog.glade.h:34
+msgid "seconds"
+msgstr "segundos"
+
+
diff --git a/po/ru.po b/po/ru.po
@@ -1,5 +1,5 @@
 # Russian translations for mail-notification.
-# Copyright (C) 2003-2005 Jean-Yves Lefort.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
 #
 # This file is distributed under the same license as the
 # mail-notification package.
diff --git a/po/sr.po b/po/sr.po
@@ -1,5 +1,5 @@
 # Serbian translations for mail-notification.
-# Copyright (C) 2003-2005 Jean-Yves Lefort.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
 #
 # This file is distributed under the same license as the
 # mail-notification package.
diff --git a/po/sr@Latn.po b/po/sr@Latn.po
@@ -1,5 +1,5 @@
 # Serbian translations for mail-notification.
-# Copyright (C) 2003-2005 Jean-Yves Lefort.
+# Copyright (C) 2003-2006 Jean-Yves Lefort.
 #
 # This file is distributed under the same license as the
 # mail-notification package.
diff --git a/src/GNOME_MailNotification.idl b/src/GNOME_MailNotification.idl
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -24,8 +24,8 @@ module GNOME
   {
     interface Automation : Bonobo::Unknown 
     {
+      boolean hasMailboxes ();
       void update ();
-      void displayMainWindow ();
       void displayProperties ();
       void displayAbout ();
       void closePopup ();
diff --git a/src/GNOME_MailNotification_Evolution.idl b/src/GNOME_MailNotification_Evolution.idl
@@ -26,9 +26,10 @@ module GNOME
     {
       typedef unsigned long time_t;
 
-      struct Message 
+      struct Message
       {
 	time_t	sent_time;
+	time_t	received_time;
 	string	id;
 	string	from;
 	string	subject;
diff --git a/src/Makefile.am b/src/Makefile.am
@@ -1,399 +1,335 @@
+# Generated from automake.xml using Jean-Yves Lefort's aml.
+include $(top_srcdir)/aml/aml.make
 bin_PROGRAMS = mail-notification
-
+mail_notification_CPPFLAGS = $(WARN_CFLAGS)
+mail_notification_CPPFLAGS += -I$(top_srcdir)
+mail_notification_CPPFLAGS += -DG_LOG_DOMAIN="\"$(PACKAGE)\""
+mail_notification_CPPFLAGS += -DPREFIX="\"$(prefix)\""
+mail_notification_CPPFLAGS += -DSYSCONFDIR="\"$(sysconfdir)\""
+mail_notification_CPPFLAGS += -DDATADIR="\"$(datadir)\""
+mail_notification_CPPFLAGS += -DLIBDIR="\"$(libdir)\""
+mail_notification_CPPFLAGS += -DGNOMELOCALEDIR="\"$(datadir)/locale\""
+mail_notification_CPPFLAGS += -DGNOMEPIXMAPSDIR="\"$(datadir)/pixmaps\""
+mail_notification_CPPFLAGS += -DUIDIR="\"$(pkgdatadir)/ui\""
+mail_notification_LDFLAGS = -export-dynamic
+mail_notification_LDFLAGS += $(INTLLIBS)
+mail_notification_CPPFLAGS += $(GNOME_CFLAGS)
+mail_notification_LDFLAGS += $(GNOME_LIBS)
+mail_notification_SOURCES = mn-main.c
+mail_notification_SOURCES += eggtrayicon.c
+mail_notification_SOURCES += eggtrayicon.h
+mail_notification_SOURCES += mn-conf.c
+mail_notification_SOURCES += mn-conf.h
+mail_notification_SOURCES += mn-locked-callback.c
+mail_notification_SOURCES += mn-locked-callback.h
+mail_notification_SOURCES += mn-stock.c
+mail_notification_SOURCES += mn-stock.h
+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 += 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
+mail_notification_SOURCES += mn-about-dialog-private.h mn-about-dialog.c mn-about-dialog.h
+BUILT_SOURCES = mn-about-dialog.gob.stamp
+MAINTAINERCLEANFILES = mn-about-dialog.gob.stamp
+MAINTAINERCLEANFILES += mn-about-dialog-private.h mn-about-dialog.c mn-about-dialog.h
+mail_notification_SOURCES += mn-autodetect-mailbox-properties.gob mn-autodetect-mailbox-properties.gob.stamp
+mail_notification_SOURCES += mn-autodetect-mailbox-properties-private.h mn-autodetect-mailbox-properties.c mn-autodetect-mailbox-properties.h
+BUILT_SOURCES += mn-autodetect-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-autodetect-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-autodetect-mailbox-properties-private.h mn-autodetect-mailbox-properties.c mn-autodetect-mailbox-properties.h
+mail_notification_SOURCES += mn-automation.gob mn-automation.gob.stamp
+mail_notification_SOURCES += mn-automation-private.h mn-automation.c mn-automation.h
+BUILT_SOURCES += mn-automation.gob.stamp
+MAINTAINERCLEANFILES += mn-automation.gob.stamp
+MAINTAINERCLEANFILES += mn-automation-private.h mn-automation.c mn-automation.h
+mail_notification_SOURCES += mn-blinking-image.gob mn-blinking-image.gob.stamp
+mail_notification_SOURCES += mn-blinking-image-private.h mn-blinking-image.c mn-blinking-image.h
+BUILT_SOURCES += mn-blinking-image.gob.stamp
+MAINTAINERCLEANFILES += mn-blinking-image.gob.stamp
+MAINTAINERCLEANFILES += mn-blinking-image-private.h mn-blinking-image.c mn-blinking-image.h
+mail_notification_SOURCES += mn-compact-message-view.gob mn-compact-message-view.gob.stamp
+mail_notification_SOURCES += mn-compact-message-view-private.h mn-compact-message-view.c mn-compact-message-view.h
+BUILT_SOURCES += mn-compact-message-view.gob.stamp
+MAINTAINERCLEANFILES += mn-compact-message-view.gob.stamp
+MAINTAINERCLEANFILES += mn-compact-message-view-private.h mn-compact-message-view.c mn-compact-message-view.h
+mail_notification_SOURCES += mn-dialog.gob mn-dialog.gob.stamp
+mail_notification_SOURCES += mn-dialog-private.h mn-dialog.c mn-dialog.h
+BUILT_SOURCES += mn-dialog.gob.stamp
+MAINTAINERCLEANFILES += mn-dialog.gob.stamp
+MAINTAINERCLEANFILES += mn-dialog-private.h mn-dialog.c mn-dialog.h
+mail_notification_SOURCES += mn-mail-icon.gob mn-mail-icon.gob.stamp
+mail_notification_SOURCES += mn-mail-icon-private.h mn-mail-icon.c mn-mail-icon.h
+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
+MAINTAINERCLEANFILES += mn-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-mailbox-private.h mn-mailbox.c mn-mailbox.h
+mail_notification_SOURCES += mn-mailbox-properties.gob mn-mailbox-properties.gob.stamp
+mail_notification_SOURCES += mn-mailbox-properties-private.h mn-mailbox-properties.c mn-mailbox-properties.h
+BUILT_SOURCES += mn-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-mailbox-properties-private.h mn-mailbox-properties.c mn-mailbox-properties.h
+mail_notification_SOURCES += mn-mailbox-properties-dialog.gob mn-mailbox-properties-dialog.gob.stamp
+mail_notification_SOURCES += mn-mailbox-properties-dialog-private.h mn-mailbox-properties-dialog.c mn-mailbox-properties-dialog.h
+BUILT_SOURCES += mn-mailbox-properties-dialog.gob.stamp
+MAINTAINERCLEANFILES += mn-mailbox-properties-dialog.gob.stamp
+MAINTAINERCLEANFILES += mn-mailbox-properties-dialog-private.h mn-mailbox-properties-dialog.c mn-mailbox-properties-dialog.h
+mail_notification_SOURCES += mn-mailbox-view.gob mn-mailbox-view.gob.stamp
+mail_notification_SOURCES += mn-mailbox-view-private.h mn-mailbox-view.c mn-mailbox-view.h
+BUILT_SOURCES += mn-mailbox-view.gob.stamp
+MAINTAINERCLEANFILES += mn-mailbox-view.gob.stamp
+MAINTAINERCLEANFILES += mn-mailbox-view-private.h mn-mailbox-view.c mn-mailbox-view.h
+mail_notification_SOURCES += mn-mailboxes.gob mn-mailboxes.gob.stamp
+mail_notification_SOURCES += mn-mailboxes-private.h mn-mailboxes.c mn-mailboxes.h
+BUILT_SOURCES += mn-mailboxes.gob.stamp
+MAINTAINERCLEANFILES += mn-mailboxes.gob.stamp
+MAINTAINERCLEANFILES += mn-mailboxes-private.h mn-mailboxes.c mn-mailboxes.h
+mail_notification_SOURCES += mn-message.gob mn-message.gob.stamp
+mail_notification_SOURCES += mn-message-private.h mn-message.c mn-message.h
+BUILT_SOURCES += mn-message.gob.stamp
+MAINTAINERCLEANFILES += mn-message.gob.stamp
+MAINTAINERCLEANFILES += mn-message-private.h mn-message.c mn-message.h
+mail_notification_SOURCES += mn-message-view.gob mn-message-view.gob.stamp
+mail_notification_SOURCES += mn-message-view-private.h mn-message-view.c mn-message-view.h
+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-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
+MAINTAINERCLEANFILES += mn-properties-dialog.gob.stamp
+MAINTAINERCLEANFILES += mn-properties-dialog-private.h mn-properties-dialog.c mn-properties-dialog.h
+mail_notification_SOURCES += mn-shell.gob mn-shell.gob.stamp
+mail_notification_SOURCES += mn-shell-private.h mn-shell.c mn-shell.h
+BUILT_SOURCES += mn-shell.gob.stamp
+MAINTAINERCLEANFILES += mn-shell.gob.stamp
+MAINTAINERCLEANFILES += mn-shell-private.h mn-shell.c mn-shell.h
+mail_notification_SOURCES += mn-standard-message-view.gob mn-standard-message-view.gob.stamp
+mail_notification_SOURCES += mn-standard-message-view-private.h mn-standard-message-view.c mn-standard-message-view.h
+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-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
+MAINTAINERCLEANFILES += mn-text-table.gob.stamp
+MAINTAINERCLEANFILES += mn-text-table-private.h mn-text-table.c mn-text-table.h
+mail_notification_SOURCES += mn-tooltips.gob mn-tooltips.gob.stamp
+mail_notification_SOURCES += mn-tooltips-private.h mn-tooltips.c mn-tooltips.h
+BUILT_SOURCES += mn-tooltips.gob.stamp
+MAINTAINERCLEANFILES += mn-tooltips.gob.stamp
+MAINTAINERCLEANFILES += mn-tooltips-private.h mn-tooltips.c mn-tooltips.h
+mail_notification_SOURCES += GNOME_MailNotification.idl
+nodist_mail_notification_SOURCES = GNOME_MailNotification-common.c GNOME_MailNotification-skels.c GNOME_MailNotification-stubs.c GNOME_MailNotification.h
+BUILT_SOURCES += GNOME_MailNotification-common.c GNOME_MailNotification-skels.c GNOME_MailNotification-stubs.c GNOME_MailNotification.h
+CLEANFILES = GNOME_MailNotification-common.c GNOME_MailNotification-skels.c GNOME_MailNotification-stubs.c GNOME_MailNotification.h
 if WITH_MBOX
-mbox_gob_sources = mn-mbox-mailbox-backend.gob
-mbox_gob_built_sources = \
-	mn-mbox-mailbox-backend-private.h	\
-	mn-mbox-mailbox-backend.c		\
-	mn-mbox-mailbox-backend.h
+mail_notification_SOURCES += mn-mbox-mailbox-backend.gob mn-mbox-mailbox-backend.gob.stamp
+mail_notification_SOURCES += mn-mbox-mailbox-backend-private.h mn-mbox-mailbox-backend.c mn-mbox-mailbox-backend.h
+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_MH
-mh_gob_sources = mn-mh-mailbox-backend.gob
-mh_gob_built_sources = \
-	mn-mh-mailbox-backend-private.h		\
-	mn-mh-mailbox-backend.c			\
-	mn-mh-mailbox-backend.h
+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
+BUILT_SOURCES += mn-mh-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-mh-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-mh-mailbox-backend-private.h mn-mh-mailbox-backend.c mn-mh-mailbox-backend.h
 endif
-
 if WITH_MAILDIR
-maildir_gob_sources = mn-maildir-mailbox-backend.gob
-maildir_gob_built_sources = \
-	mn-maildir-mailbox-backend-private.h	\
-	mn-maildir-mailbox-backend.c		\
-	mn-maildir-mailbox-backend.h
+mail_notification_SOURCES += mn-maildir-mailbox-backend.gob mn-maildir-mailbox-backend.gob.stamp
+mail_notification_SOURCES += mn-maildir-mailbox-backend-private.h mn-maildir-mailbox-backend.c mn-maildir-mailbox-backend.h
+BUILT_SOURCES += mn-maildir-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-maildir-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-maildir-mailbox-backend-private.h mn-maildir-mailbox-backend.c mn-maildir-mailbox-backend.h
 endif
-
 if WITH_POP3
-pop3_gob_sources = \
-	mn-pop3-mailbox-properties.gob	\
-	mn-pop3-mailbox.gob
-pop3_gob_built_sources = \
-	mn-pop3-mailbox-properties-private.h	\
-	mn-pop3-mailbox-properties.c		\
-	mn-pop3-mailbox-properties.h		\
-	mn-pop3-mailbox-private.h		\
-	mn-pop3-mailbox.c			\
-	mn-pop3-mailbox.h
-md5_sources = mn-md5.c mn-md5.h
+mail_notification_SOURCES += mn-md5.c
+mail_notification_SOURCES += mn-md5.h
+mail_notification_SOURCES += mn-pop3-mailbox.gob mn-pop3-mailbox.gob.stamp
+mail_notification_SOURCES += mn-pop3-mailbox-private.h mn-pop3-mailbox.c mn-pop3-mailbox.h
+BUILT_SOURCES += mn-pop3-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-pop3-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-pop3-mailbox-private.h mn-pop3-mailbox.c mn-pop3-mailbox.h
+mail_notification_SOURCES += mn-pop3-mailbox-properties.gob mn-pop3-mailbox-properties.gob.stamp
+mail_notification_SOURCES += mn-pop3-mailbox-properties-private.h mn-pop3-mailbox-properties.c mn-pop3-mailbox-properties.h
+BUILT_SOURCES += mn-pop3-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-pop3-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-pop3-mailbox-properties-private.h mn-pop3-mailbox-properties.c mn-pop3-mailbox-properties.h
 endif
-
 if WITH_IMAP
-imap_gob_sources = \
-	mn-imap-mailbox-properties.gob	\
-	mn-imap-mailbox.gob
-imap_gob_built_sources = \
-	mn-imap-mailbox-properties-private.h	\
-	mn-imap-mailbox-properties.c		\
-	mn-imap-mailbox-properties.h		\
-	mn-imap-mailbox-private.h		\
-	mn-imap-mailbox.c			\
-	mn-imap-mailbox.h
+mail_notification_SOURCES += mn-imap-mailbox.gob mn-imap-mailbox.gob.stamp
+mail_notification_SOURCES += mn-imap-mailbox-private.h mn-imap-mailbox.c mn-imap-mailbox.h
+BUILT_SOURCES += mn-imap-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-imap-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-imap-mailbox-private.h mn-imap-mailbox.c mn-imap-mailbox.h
+mail_notification_SOURCES += mn-imap-mailbox-properties.gob mn-imap-mailbox-properties.gob.stamp
+mail_notification_SOURCES += mn-imap-mailbox-properties-private.h mn-imap-mailbox-properties.c mn-imap-mailbox-properties.h
+BUILT_SOURCES += mn-imap-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-imap-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-imap-mailbox-properties-private.h mn-imap-mailbox-properties.c mn-imap-mailbox-properties.h
 endif
-
 if WITH_POP3_OR_IMAP
-client_session_sources = mn-client-session.c mn-client-session.h
-pi_gob_sources = \
-	mn-auth-combo-box.gob			\
-	mn-pi-mailbox-properties.gob		\
-	mn-pi-mailbox.gob
-pi_gob_built_sources = \
-	mn-auth-combo-box-private.h			\
-	mn-auth-combo-box.c				\
-	mn-auth-combo-box.h				\
-	mn-pi-mailbox-properties-private.h		\
-	mn-pi-mailbox-properties.c			\
-	mn-pi-mailbox-properties.h			\
-	mn-pi-mailbox-private.h				\
-	mn-pi-mailbox.c					\
-	mn-pi-mailbox.h
+mail_notification_SOURCES += mn-client-session.c
+mail_notification_SOURCES += mn-client-session.h
+mail_notification_SOURCES += mn-auth-combo-box.gob mn-auth-combo-box.gob.stamp
+mail_notification_SOURCES += mn-auth-combo-box-private.h mn-auth-combo-box.c mn-auth-combo-box.h
+BUILT_SOURCES += mn-auth-combo-box.gob.stamp
+MAINTAINERCLEANFILES += mn-auth-combo-box.gob.stamp
+MAINTAINERCLEANFILES += mn-auth-combo-box-private.h mn-auth-combo-box.c mn-auth-combo-box.h
+mail_notification_SOURCES += mn-pi-mailbox.gob mn-pi-mailbox.gob.stamp
+mail_notification_SOURCES += mn-pi-mailbox-private.h mn-pi-mailbox.c mn-pi-mailbox.h
+BUILT_SOURCES += mn-pi-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-pi-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-pi-mailbox-private.h mn-pi-mailbox.c mn-pi-mailbox.h
+mail_notification_SOURCES += mn-pi-mailbox-properties.gob mn-pi-mailbox-properties.gob.stamp
+mail_notification_SOURCES += mn-pi-mailbox-properties-private.h mn-pi-mailbox-properties.c mn-pi-mailbox-properties.h
+BUILT_SOURCES += mn-pi-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-pi-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-pi-mailbox-properties-private.h mn-pi-mailbox-properties.c mn-pi-mailbox-properties.h
 endif
-
 if WITH_POP3_OR_IMAP_OR_GMAIL
-authenticated_mailbox_gob_sources = \
-	mn-authenticated-mailbox-properties.gob	\
-	mn-authenticated-mailbox.gob
-authenticated_mailbox_gob_built_sources = \
-	mn-authenticated-mailbox-properties-private.h	\
-	mn-authenticated-mailbox-properties.c		\
-	mn-authenticated-mailbox-properties.h		\
-	mn-authenticated-mailbox-private.h		\
-	mn-authenticated-mailbox.c			\
-	mn-authenticated-mailbox.h
+mail_notification_SOURCES += mn-authenticated-mailbox.gob mn-authenticated-mailbox.gob.stamp
+mail_notification_SOURCES += mn-authenticated-mailbox-private.h mn-authenticated-mailbox.c mn-authenticated-mailbox.h
+BUILT_SOURCES += mn-authenticated-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-authenticated-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-authenticated-mailbox-private.h mn-authenticated-mailbox.c mn-authenticated-mailbox.h
+mail_notification_SOURCES += mn-authenticated-mailbox-properties.gob mn-authenticated-mailbox-properties.gob.stamp
+mail_notification_SOURCES += mn-authenticated-mailbox-properties-private.h mn-authenticated-mailbox-properties.c mn-authenticated-mailbox-properties.h
+BUILT_SOURCES += mn-authenticated-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-authenticated-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-authenticated-mailbox-properties-private.h mn-authenticated-mailbox-properties.c mn-authenticated-mailbox-properties.h
 endif
-
 if WITH_SYLPHEED
-sylpheed_gob_sources = mn-sylpheed-mailbox-backend.gob
-sylpheed_gob_built_sources = \
-	mn-sylpheed-mailbox-backend-private.h	\
-	mn-sylpheed-mailbox-backend.c		\
-	mn-sylpheed-mailbox-backend.h
+mail_notification_SOURCES += mn-sylpheed-mailbox-backend.gob mn-sylpheed-mailbox-backend.gob.stamp
+mail_notification_SOURCES += mn-sylpheed-mailbox-backend-private.h mn-sylpheed-mailbox-backend.c mn-sylpheed-mailbox-backend.h
+BUILT_SOURCES += mn-sylpheed-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-sylpheed-mailbox-backend.gob.stamp
+MAINTAINERCLEANFILES += mn-sylpheed-mailbox-backend-private.h mn-sylpheed-mailbox-backend.c mn-sylpheed-mailbox-backend.h
 endif
-
 if WITH_GMAIL
-gmail_gob_sources = \
-	mn-gmail-mailbox-properties.gob	\
-	mn-gmail-mailbox.gob
-gmail_gob_built_sources = \
-	mn-gmail-mailbox-properties-private.h	\
-	mn-gmail-mailbox-properties.c		\
-	mn-gmail-mailbox-properties.h		\
-	mn-gmail-mailbox-private.h		\
-	mn-gmail-mailbox.c			\
-	mn-gmail-mailbox.h
+mail_notification_SOURCES += mn-gmail-mailbox.gob mn-gmail-mailbox.gob.stamp
+mail_notification_SOURCES += mn-gmail-mailbox-private.h mn-gmail-mailbox.c mn-gmail-mailbox.h
+BUILT_SOURCES += mn-gmail-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-gmail-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-gmail-mailbox-private.h mn-gmail-mailbox.c mn-gmail-mailbox.h
+mail_notification_SOURCES += mn-gmail-mailbox-properties.gob mn-gmail-mailbox-properties.gob.stamp
+mail_notification_SOURCES += mn-gmail-mailbox-properties-private.h mn-gmail-mailbox-properties.c mn-gmail-mailbox-properties.h
+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
-vfs_mailbox_gob_sources = \
-	mn-custom-vfs-mailbox.gob		\
-	mn-system-vfs-mailbox-properties.gob	\
-	mn-system-vfs-mailbox.gob		\
-	mn-vfs-mailbox-backend.gob 		\
-	mn-vfs-mailbox.gob
-vfs_mailbox_gob_built_sources = \
-	mn-custom-vfs-mailbox-private.h			\
-	mn-custom-vfs-mailbox.c				\
-	mn-custom-vfs-mailbox.h				\
-	mn-system-vfs-mailbox-properties-private.h	\
-	mn-system-vfs-mailbox-properties.c		\
-	mn-system-vfs-mailbox-properties.h		\
-	mn-system-vfs-mailbox-private.h			\
-	mn-system-vfs-mailbox.c				\
-	mn-system-vfs-mailbox.h				\
-	mn-vfs-mailbox-backend-private.h		\
-	mn-vfs-mailbox-backend.c			\
-	mn-vfs-mailbox-backend.h			\
-	mn-vfs-mailbox-private.h			\
-	mn-vfs-mailbox.c				\
-	mn-vfs-mailbox.h
+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
+MAINTAINERCLEANFILES += mn-custom-vfs-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-custom-vfs-mailbox-private.h mn-custom-vfs-mailbox.c mn-custom-vfs-mailbox.h
+mail_notification_SOURCES += mn-system-vfs-mailbox.gob mn-system-vfs-mailbox.gob.stamp
+mail_notification_SOURCES += mn-system-vfs-mailbox-private.h mn-system-vfs-mailbox.c mn-system-vfs-mailbox.h
+BUILT_SOURCES += mn-system-vfs-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-system-vfs-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-system-vfs-mailbox-private.h mn-system-vfs-mailbox.c mn-system-vfs-mailbox.h
+mail_notification_SOURCES += mn-system-vfs-mailbox-properties.gob mn-system-vfs-mailbox-properties.gob.stamp
+mail_notification_SOURCES += mn-system-vfs-mailbox-properties-private.h mn-system-vfs-mailbox-properties.c mn-system-vfs-mailbox-properties.h
+BUILT_SOURCES += mn-system-vfs-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-system-vfs-mailbox-properties.gob.stamp
+MAINTAINERCLEANFILES += mn-system-vfs-mailbox-properties-private.h mn-system-vfs-mailbox-properties.c mn-system-vfs-mailbox-properties.h
+mail_notification_SOURCES += mn-vfs-mailbox.gob mn-vfs-mailbox.gob.stamp
+mail_notification_SOURCES += mn-vfs-mailbox-private.h mn-vfs-mailbox.c mn-vfs-mailbox.h
+BUILT_SOURCES += mn-vfs-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-vfs-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-vfs-mailbox-private.h mn-vfs-mailbox.c mn-vfs-mailbox.h
+mail_notification_SOURCES += mn-vfs-mailbox-backend.gob mn-vfs-mailbox-backend.gob.stamp
+mail_notification_SOURCES += mn-vfs-mailbox-backend-private.h mn-vfs-mailbox-backend.c mn-vfs-mailbox-backend.h
+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
 endif
-
 if WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION
-reentrant_mailbox_gob_sources = mn-reentrant-mailbox.gob
-reentrant_mailbox_gob_built_sources = \
-	mn-reentrant-mailbox-private.h	\
-	mn-reentrant-mailbox.c		\
-	mn-reentrant-mailbox.h
+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
+MAINTAINERCLEANFILES += mn-reentrant-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-reentrant-mailbox-private.h mn-reentrant-mailbox.c mn-reentrant-mailbox.h
 endif
-
 if WITH_MIME
-mime_gob_sources = \
-	mn-gmime-stream-vfs.gob
-mime_gob_built_sources = \
-	mn-gmime-stream-vfs-private.h	\
-	mn-gmime-stream-vfs.c		\
-	mn-gmime-stream-vfs.h
-mime_sources = \
-	mn-message-mime.c	\
-	mn-message-mime.h
+mail_notification_CPPFLAGS += $(GMIME_CFLAGS)
+mail_notification_LDFLAGS += $(GMIME_LIBS)
+mail_notification_SOURCES += mn-message-mime.c
+mail_notification_SOURCES += mn-message-mime.h
+mail_notification_SOURCES += mn-gmime-stream-vfs.gob mn-gmime-stream-vfs.gob.stamp
+mail_notification_SOURCES += mn-gmime-stream-vfs-private.h mn-gmime-stream-vfs.c mn-gmime-stream-vfs.h
+BUILT_SOURCES += mn-gmime-stream-vfs.gob.stamp
+MAINTAINERCLEANFILES += mn-gmime-stream-vfs.gob.stamp
+MAINTAINERCLEANFILES += mn-gmime-stream-vfs-private.h mn-gmime-stream-vfs.c mn-gmime-stream-vfs.h
 endif
-
 if WITH_SSL
-ssl_sources = mn-ssl.c mn-ssl.h
+mail_notification_CPPFLAGS += $(OPENSSL_CFLAGS)
+mail_notification_LDFLAGS += $(OPENSSL_LIBS)
+mail_notification_SOURCES += mn-ssl.c
+mail_notification_SOURCES += mn-ssl.h
 endif
-
 if WITH_SASL
-sasl_sources = mn-sasl.c mn-sasl.h
+mail_notification_CPPFLAGS += $(SASL_CFLAGS)
+mail_notification_LDFLAGS += $(SASL_LIBS)
+mail_notification_SOURCES += mn-sasl.c
+mail_notification_SOURCES += mn-sasl.h
+endif
+if WITH_EVOLUTION
+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-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
+MAINTAINERCLEANFILES += mn-evolution-mailbox.gob.stamp
+MAINTAINERCLEANFILES += mn-evolution-mailbox-private.h mn-evolution-mailbox.c mn-evolution-mailbox.h
+mail_notification_SOURCES += mn-evolution-mailbox-properties.gob mn-evolution-mailbox-properties.gob.stamp
+mail_notification_SOURCES += mn-evolution-mailbox-properties-private.h mn-evolution-mailbox-properties.c mn-evolution-mailbox-properties.h
+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 += 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
+CLEANFILES += GNOME_MailNotification_Evolution-common.c GNOME_MailNotification_Evolution-skels.c GNOME_MailNotification_Evolution-stubs.c GNOME_MailNotification_Evolution.h
 endif
-
 if WITH_EVOLUTION
-evolution_plugin_eplug = org-gnome-mail-notification.eplug
-
-evolution_shared_sources = mn-evolution.h
-
-evolution_shared_idl_sources = GNOME_MailNotification_Evolution.idl
-evolution_shared_idl_built_sources = \
-	GNOME_MailNotification_Evolution-common.c	\
-	GNOME_MailNotification_Evolution-stubs.c	\
-	GNOME_MailNotification_Evolution-skels.c	\
-	GNOME_MailNotification_Evolution.h
-
-evolution_plugin_gob_sources = mn-evolution-glue.gob
-evolution_plugin_gob_built_sources = \
-	mn-evolution-glue-private.h	\
-	mn-evolution-glue.c		\
-	mn-evolution-glue.h
-
-evolution_gob_sources = \
-	mn-corba-object.gob			\
-	mn-evolution-mailbox-properties.gob	\
-	mn-evolution-mailbox.gob
-evolution_gob_built_sources = \
-	mn-corba-object-private.h			\
-	mn-corba-object.c				\
-	mn-corba-object.h				\
-	mn-evolution-mailbox-properties-private.h	\
-	mn-evolution-mailbox-properties.c		\
-	mn-evolution-mailbox-properties.h		\
-	mn-evolution-mailbox-private.h			\
-	mn-evolution-mailbox.c				\
-	mn-evolution-mailbox.h
-
-evolution_plugin_DATA = $(evolution_plugin_eplug)
 evolution_plugin_LTLIBRARIES = liborg-gnome-mail-notification.la
-
-nodist_liborg_gnome_mail_notification_la_SOURCES = \
-	$(evolution_shared_idl_built_sources)
-liborg_gnome_mail_notification_la_SOURCES = \
-	$(evolution_shared_sources)		\
-	$(evolution_shared_idl_sources)		\
-	$(evolution_plugin_gob_sources)		\
-	$(evolution_plugin_gob_built_sources)	\
-	mn-evolution-folder-tree-control.c	\
-	mn-evolution-folder-tree-control.h	\
-	mn-evolution-plugin.c
-
-liborg_gnome_mail_notification_la_CPPFLAGS = $(WARN_CFLAGS) \
-	-I$(top_srcdir) \
-	-DG_LOG_DOMAIN="\"$(PACKAGE)\"" \
-	$(EVOLUTION_PLUGIN_CFLAGS)
-liborg_gnome_mail_notification_la_LDFLAGS = -avoid-version -module $(EVOLUTION_PLUGIN_LIBS)
+liborg_gnome_mail_notification_la_CPPFLAGS = $(WARN_CFLAGS)
+liborg_gnome_mail_notification_la_CPPFLAGS += -I$(top_srcdir)
+liborg_gnome_mail_notification_la_CPPFLAGS += -DG_LOG_DOMAIN="\"$(PACKAGE)\""
+liborg_gnome_mail_notification_la_LDFLAGS = -avoid-version -module
+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-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
+MAINTAINERCLEANFILES += mn-evolution-glue.gob.stamp
+MAINTAINERCLEANFILES += mn-evolution-glue-private.h mn-evolution-glue.c mn-evolution-glue.h
+liborg_gnome_mail_notification_la_SOURCES += GNOME_MailNotification_Evolution.idl
+nodist_liborg_gnome_mail_notification_la_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
+CLEANFILES += GNOME_MailNotification_Evolution-common.c GNOME_MailNotification_Evolution-skels.c GNOME_MailNotification_Evolution-stubs.c GNOME_MailNotification_Evolution.h
 endif
-
-idl_sources = $(evolution_shared_idl_sources) GNOME_MailNotification.idl
-idl_built_sources = \
-	$(evolution_shared_idl_built_sources)	\
-	GNOME_MailNotification-common.c		\
-	GNOME_MailNotification-stubs.c		\
-	GNOME_MailNotification-skels.c		\
-	GNOME_MailNotification.h
-
-gob_sources = \
-	$(mbox_gob_sources)			\
-	$(mh_gob_sources)			\
-	$(maildir_gob_sources)			\
-	$(pop3_gob_sources)			\
-	$(imap_gob_sources)			\
-	$(authenticated_mailbox_gob_sources)	\
-	$(pi_gob_sources)			\
-	$(sylpheed_gob_sources)			\
-	$(gmail_gob_sources)			\
-	$(evolution_gob_sources)		\
-	$(vfs_mailbox_gob_sources)		\
-	$(reentrant_mailbox_gob_sources)	\
-	$(mime_gob_sources)			\
-	mn-about-dialog.gob			\
-	mn-autodetect-mailbox-properties.gob	\
-	mn-automation.gob			\
-	mn-blinking-image.gob			\
-	mn-dialog.gob				\
-	mn-mail-icon.gob			\
-	mn-mail-summary-popup.gob		\
-	mn-mailbox-properties-dialog.gob	\
-	mn-mailbox-properties.gob		\
-	mn-mailbox-view.gob			\
-	mn-mailbox.gob				\
-	mn-mailboxes.gob			\
-	mn-main-window.gob			\
-	mn-message-view.gob			\
-	mn-message.gob				\
-	mn-properties-dialog.gob		\
-	mn-shell.gob				\
-	mn-tooltips.gob
-gob_built_sources = \
-	$(mbox_gob_built_sources)			\
-	$(mh_gob_built_sources)				\
-	$(maildir_gob_built_sources)			\
-	$(pop3_gob_built_sources)			\
-	$(imap_gob_built_sources)			\
-	$(authenticated_mailbox_gob_built_sources)	\
-	$(pi_gob_built_sources)				\
-	$(sylpheed_gob_built_sources)			\
-	$(gmail_gob_built_sources)			\
-	$(evolution_gob_built_sources)			\
-	$(vfs_mailbox_gob_built_sources)		\
-	$(reentrant_mailbox_gob_built_sources)		\
-	$(mime_gob_built_sources)			\
-	mn-about-dialog-private.h			\
-	mn-about-dialog.c				\
-	mn-about-dialog.h				\
-	mn-autodetect-mailbox-properties-private.h	\
-	mn-autodetect-mailbox-properties.c		\
-	mn-autodetect-mailbox-properties.h		\
-	mn-automation-private.h				\
-	mn-automation.c					\
-	mn-automation.h					\
-	mn-blinking-image-private.h			\
-	mn-blinking-image.c				\
-	mn-blinking-image.h				\
-	mn-dialog-private.h				\
-	mn-dialog.c					\
-	mn-dialog.h					\
-	mn-mail-icon-private.h				\
-	mn-mail-icon.c					\
-	mn-mail-icon.h					\
-	mn-mail-summary-popup-private.h			\
-	mn-mail-summary-popup.c				\
-	mn-mail-summary-popup.h				\
-	mn-mailbox-properties-dialog-private.h		\
-	mn-mailbox-properties-dialog.c			\
-	mn-mailbox-properties-dialog.h			\
-	mn-mailbox-properties-private.h			\
-	mn-mailbox-properties.c				\
-	mn-mailbox-properties.h				\
-	mn-mailbox-view-private.h			\
-	mn-mailbox-view.c				\
-	mn-mailbox-view.h				\
-	mn-mailbox-private.h				\
-	mn-mailbox.c					\
-	mn-mailbox.h					\
-	mn-mailboxes-private.h				\
-	mn-mailboxes.c					\
-	mn-mailboxes.h					\
-	mn-main-window-private.h			\
-	mn-main-window.c				\
-	mn-main-window.h				\
-	mn-message-view-private.h			\
-	mn-message-view.c				\
-	mn-message-view.h				\
-	mn-message-private.h				\
-	mn-message.c					\
-	mn-message.h					\
-	mn-properties-dialog-private.h			\
-	mn-properties-dialog.c				\
-	mn-properties-dialog.h				\
-	mn-shell-private.h				\
-	mn-shell.c					\
-	mn-shell.h					\
-	mn-tooltips-private.h				\
-	mn-tooltips.c					\
-	mn-tooltips.h
-
-egg_built_sources = \
-	eggmarshalers.c	\
-	eggmarshalers.h
-
-nodist_mail_notification_SOURCES = $(idl_built_sources)
-mail_notification_SOURCES = \
-	$(idl_sources)				\
-	$(gob_sources)				\
-	$(gob_built_sources)			\
-	$(egg_built_sources)			\
-	$(md5_sources)				\
-	$(client_session_sources)		\
-	$(ssl_sources)				\
-	$(sasl_sources)				\
-	$(mime_sources)				\
-	$(evolution_shared_sources)		\
-	egg-editable-toolbar.c			\
-	egg-editable-toolbar.h			\
-	egg-toolbar-editor.c			\
-	egg-toolbar-editor.h			\
-	egg-toolbars-model.c			\
-	egg-toolbars-model.h			\
-	eggtrayicon.c				\
-	eggtrayicon.h				\
-	mn-conf.c				\
-	mn-conf.h				\
-	mn-main.c				\
-	mn-stock.c				\
-	mn-stock.h				\
-	mn-util.c				\
-	mn-util.h				\
-	mn-vfs.c				\
-	mn-vfs.h				\
-	nautilus-cell-renderer-pixbuf-emblem.c	\
-	nautilus-cell-renderer-pixbuf-emblem.h
-BUILT_SOURCES = \
-	$(evolution_plugin_gob_built_sources)	\
-	$(idl_built_sources)			\
-	$(gob_built_sources)			\
-	$(egg_built_sources)
-
-mail_notification_CPPFLAGS = $(WARN_CFLAGS) $(GNOME_CFLAGS) $(GMIME_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
-	-I$(top_srcdir) \
-	-DPREFIX="\"$(prefix)\"" \
-	-DSYSCONFDIR="\"$(sysconfdir)\"" \
-	-DDATADIR="\"$(datadir)\"" \
-	-DLIBDIR="\"$(libdir)\"" \
-	-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
-	-DGNOMEPIXMAPSDIR="\"$(datadir)/pixmaps\"" \
-	-DUIDIR="\"$(pkgdatadir)/ui\"" \
-	-DG_LOG_DOMAIN="\"$(PACKAGE)\""
-mail_notification_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GMIME_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
-
-CLEANFILES = $(evolution_plugin_eplug) $(idl_built_sources)
-MAINTAINERCLEANFILES = $(evolution_plugin_gob_built_sources) $(gob_built_sources) $(egg_built_sources)
-
-EXTRA_DIST = eggmarshalers.list org-gnome-mail-notification.eplug.in
-
-%.c %.h %-private.h: %.gob
-	$(GOB2) --always-private-header --exit-on-warn $<
-
-%-common.c %-stubs.c %-skels.c %.h: %.idl $(ORBIT_IDL)
-	$(ORBIT_IDL) -I$(LIBBONOBO_IDL) -I$(BONOBO_ACTIVATION_IDL) $<
-
-eggmarshalers.h: eggmarshalers.list
-	cd $(srcdir) \
-	&& $(GLIB_GENMARSHAL) --prefix=_egg_marshal eggmarshalers.list --header > xgen-emh \
-	&& cp xgen-emh eggmarshalers.h \
-	&& rm -f xgen-emh xgen-emh~
-
-eggmarshalers.c: eggmarshalers.list
-	cd $(srcdir) \
-	&& $(GLIB_GENMARSHAL) --prefix=_egg_marshal eggmarshalers.list --body > xgen-emc \
-	&& cp xgen-emc eggmarshalers.c \
-	&& rm -f xgen-emc xgen-emc~
-
-%.eplug: %.eplug.in
-	sed -e 's|\@PLUGINDIR\@|$(evolution_plugindir)|' $< > $@
+include $(srcdir)/aml.make
diff --git a/src/Makefile.in b/src/Makefile.in
@@ -39,13 +39,286 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+	$(srcdir)/aml.make $(top_srcdir)/aml/aml.make
 bin_PROGRAMS = mail-notification$(EXEEXT)
+@WITH_MBOX_TRUE@am__append_1 = mn-mbox-mailbox-backend.gob \
+@WITH_MBOX_TRUE@	mn-mbox-mailbox-backend.gob.stamp \
+@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_MBOX_TRUE@am__append_2 = mn-mbox-mailbox-backend.gob.stamp
+@WITH_MBOX_TRUE@am__append_3 = mn-mbox-mailbox-backend.gob.stamp \
+@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_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@	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@	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@	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@	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 \
+@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_POP3_TRUE@am__append_11 = 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@	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@	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 \
+@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_IMAP_TRUE@am__append_14 = 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@	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@	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 \
+@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 mn-pi-mailbox.gob \
+@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox.gob.stamp \
+@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-private.h \
+@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox.c mn-pi-mailbox.h \
+@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties.gob \
+@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties.gob.stamp \
+@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@	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@	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 \
+@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox.gob.stamp \
+@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-private.h \
+@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox.c mn-pi-mailbox.h \
+@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties.gob.stamp \
+@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@	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 \
+@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox.c \
+@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox.h \
+@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties.gob \
+@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties.gob.stamp \
+@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@	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@	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 \
+@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties.gob.stamp \
+@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@	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@	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@	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 \
+@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_GMAIL_TRUE@am__append_26 = 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@	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_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@	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_EVOLUTION_TRUE@	mn-evolution-mailbox.gob \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-private.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.c \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.gob \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.gob.stamp \
+@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@	GNOME_MailNotification_Evolution.idl
+@WITH_EVOLUTION_TRUE@am__append_46 = mn-corba-object.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.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-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@	mn-evolution-mailbox.gob.stamp \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-private.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.c \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.gob.stamp \
+@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-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@	GNOME_MailNotification_Evolution-skels.c \
+@WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-stubs.c \
+@WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution.h \
+@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
 subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
-	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
 	$(top_srcdir)/m4/reentrant-resolver.m4 \
 	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
 	$(top_srcdir)/configure.ac
@@ -65,23 +338,19 @@ am__installdirs = "$(DESTDIR)$(evolution_plugindir)" \
 evolution_pluginLTLIBRARIES_INSTALL = $(INSTALL)
 LTLIBRARIES = $(evolution_plugin_LTLIBRARIES)
 liborg_gnome_mail_notification_la_LIBADD =
-am__liborg_gnome_mail_notification_la_SOURCES_DIST = mn-evolution.h \
-	GNOME_MailNotification_Evolution.idl mn-evolution-glue.gob \
-	mn-evolution-glue-private.h mn-evolution-glue.c \
-	mn-evolution-glue.h mn-evolution-folder-tree-control.c \
-	mn-evolution-folder-tree-control.h mn-evolution-plugin.c
-am__objects_1 =
-@WITH_EVOLUTION_TRUE@am__objects_2 = liborg_gnome_mail_notification_la-mn-evolution-glue.lo
-@WITH_EVOLUTION_TRUE@am_liborg_gnome_mail_notification_la_OBJECTS =  \
-@WITH_EVOLUTION_TRUE@	$(am__objects_1) $(am__objects_1) \
-@WITH_EVOLUTION_TRUE@	$(am__objects_1) $(am__objects_2) \
+am__liborg_gnome_mail_notification_la_SOURCES_DIST =  \
+	mn-evolution-plugin.c mn-evolution.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 \
+	mn-evolution-glue.c mn-evolution-glue.h \
+	GNOME_MailNotification_Evolution.idl
+@WITH_EVOLUTION_TRUE@am_liborg_gnome_mail_notification_la_OBJECTS = liborg_gnome_mail_notification_la-mn-evolution-plugin.lo \
 @WITH_EVOLUTION_TRUE@	liborg_gnome_mail_notification_la-mn-evolution-folder-tree-control.lo \
-@WITH_EVOLUTION_TRUE@	liborg_gnome_mail_notification_la-mn-evolution-plugin.lo
-@WITH_EVOLUTION_TRUE@am__objects_3 = liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-common.lo \
-@WITH_EVOLUTION_TRUE@	liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo \
-@WITH_EVOLUTION_TRUE@	liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.lo
-@WITH_EVOLUTION_TRUE@nodist_liborg_gnome_mail_notification_la_OBJECTS =  \
-@WITH_EVOLUTION_TRUE@	$(am__objects_3)
+@WITH_EVOLUTION_TRUE@	liborg_gnome_mail_notification_la-mn-evolution-glue.lo
+@WITH_EVOLUTION_TRUE@nodist_liborg_gnome_mail_notification_la_OBJECTS = liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-common.lo \
+@WITH_EVOLUTION_TRUE@	liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.lo \
+@WITH_EVOLUTION_TRUE@	liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo
 liborg_gnome_mail_notification_la_OBJECTS =  \
 	$(am_liborg_gnome_mail_notification_la_OBJECTS) \
 	$(nodist_liborg_gnome_mail_notification_la_OBJECTS)
@@ -89,184 +358,210 @@ liborg_gnome_mail_notification_la_OBJECTS =  \
 @WITH_EVOLUTION_TRUE@	-rpath $(evolution_plugindir)
 binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
 PROGRAMS = $(bin_PROGRAMS)
-am__mail_notification_SOURCES_DIST =  \
-	GNOME_MailNotification_Evolution.idl \
-	GNOME_MailNotification.idl mn-mbox-mailbox-backend.gob \
-	mn-mh-mailbox-backend.gob mn-maildir-mailbox-backend.gob \
-	mn-pop3-mailbox-properties.gob mn-pop3-mailbox.gob \
-	mn-imap-mailbox-properties.gob mn-imap-mailbox.gob \
-	mn-authenticated-mailbox-properties.gob \
-	mn-authenticated-mailbox.gob mn-auth-combo-box.gob \
-	mn-pi-mailbox-properties.gob mn-pi-mailbox.gob \
-	mn-sylpheed-mailbox-backend.gob \
-	mn-gmail-mailbox-properties.gob mn-gmail-mailbox.gob \
-	mn-corba-object.gob mn-evolution-mailbox-properties.gob \
-	mn-evolution-mailbox.gob mn-custom-vfs-mailbox.gob \
-	mn-system-vfs-mailbox-properties.gob mn-system-vfs-mailbox.gob \
-	mn-vfs-mailbox-backend.gob mn-vfs-mailbox.gob \
-	mn-reentrant-mailbox.gob mn-gmime-stream-vfs.gob \
-	mn-about-dialog.gob mn-autodetect-mailbox-properties.gob \
-	mn-automation.gob mn-blinking-image.gob mn-dialog.gob \
-	mn-mail-icon.gob mn-mail-summary-popup.gob \
-	mn-mailbox-properties-dialog.gob mn-mailbox-properties.gob \
-	mn-mailbox-view.gob mn-mailbox.gob mn-mailboxes.gob \
-	mn-main-window.gob mn-message-view.gob mn-message.gob \
-	mn-properties-dialog.gob mn-shell.gob mn-tooltips.gob \
+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 \
+	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 \
+	mn-autodetect-mailbox-properties.gob \
+	mn-autodetect-mailbox-properties.gob.stamp \
+	mn-autodetect-mailbox-properties-private.h \
+	mn-autodetect-mailbox-properties.c \
+	mn-autodetect-mailbox-properties.h mn-automation.gob \
+	mn-automation.gob.stamp mn-automation-private.h \
+	mn-automation.c mn-automation.h mn-blinking-image.gob \
+	mn-blinking-image.gob.stamp mn-blinking-image-private.h \
+	mn-blinking-image.c mn-blinking-image.h \
+	mn-compact-message-view.gob mn-compact-message-view.gob.stamp \
+	mn-compact-message-view-private.h mn-compact-message-view.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-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 \
+	mn-mailbox-properties.h mn-mailbox-properties-dialog.gob \
+	mn-mailbox-properties-dialog.gob.stamp \
+	mn-mailbox-properties-dialog-private.h \
+	mn-mailbox-properties-dialog.c mn-mailbox-properties-dialog.h \
+	mn-mailbox-view.gob mn-mailbox-view.gob.stamp \
+	mn-mailbox-view-private.h mn-mailbox-view.c mn-mailbox-view.h \
+	mn-mailboxes.gob mn-mailboxes.gob.stamp mn-mailboxes-private.h \
+	mn-mailboxes.c mn-mailboxes.h mn-message.gob \
+	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-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 \
+	mn-shell-private.h mn-shell.c mn-shell.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-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-private.h \
-	mn-mh-mailbox-backend.c mn-mh-mailbox-backend.h \
+	mn-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 \
 	mn-maildir-mailbox-backend-private.h \
 	mn-maildir-mailbox-backend.c mn-maildir-mailbox-backend.h \
+	mn-md5.c mn-md5.h mn-pop3-mailbox.gob \
+	mn-pop3-mailbox.gob.stamp mn-pop3-mailbox-private.h \
+	mn-pop3-mailbox.c mn-pop3-mailbox.h \
+	mn-pop3-mailbox-properties.gob \
+	mn-pop3-mailbox-properties.gob.stamp \
 	mn-pop3-mailbox-properties-private.h \
 	mn-pop3-mailbox-properties.c mn-pop3-mailbox-properties.h \
-	mn-pop3-mailbox-private.h mn-pop3-mailbox.c mn-pop3-mailbox.h \
+	mn-imap-mailbox.gob mn-imap-mailbox.gob.stamp \
+	mn-imap-mailbox-private.h mn-imap-mailbox.c mn-imap-mailbox.h \
+	mn-imap-mailbox-properties.gob \
+	mn-imap-mailbox-properties.gob.stamp \
 	mn-imap-mailbox-properties-private.h \
 	mn-imap-mailbox-properties.c mn-imap-mailbox-properties.h \
-	mn-imap-mailbox-private.h mn-imap-mailbox.c mn-imap-mailbox.h \
+	mn-client-session.c mn-client-session.h mn-auth-combo-box.gob \
+	mn-auth-combo-box.gob.stamp mn-auth-combo-box-private.h \
+	mn-auth-combo-box.c mn-auth-combo-box.h mn-pi-mailbox.gob \
+	mn-pi-mailbox.gob.stamp mn-pi-mailbox-private.h \
+	mn-pi-mailbox.c mn-pi-mailbox.h mn-pi-mailbox-properties.gob \
+	mn-pi-mailbox-properties.gob.stamp \
+	mn-pi-mailbox-properties-private.h mn-pi-mailbox-properties.c \
+	mn-pi-mailbox-properties.h mn-authenticated-mailbox.gob \
+	mn-authenticated-mailbox.gob.stamp \
+	mn-authenticated-mailbox-private.h mn-authenticated-mailbox.c \
+	mn-authenticated-mailbox.h \
+	mn-authenticated-mailbox-properties.gob \
+	mn-authenticated-mailbox-properties.gob.stamp \
 	mn-authenticated-mailbox-properties-private.h \
 	mn-authenticated-mailbox-properties.c \
 	mn-authenticated-mailbox-properties.h \
-	mn-authenticated-mailbox-private.h mn-authenticated-mailbox.c \
-	mn-authenticated-mailbox.h mn-auth-combo-box-private.h \
-	mn-auth-combo-box.c mn-auth-combo-box.h \
-	mn-pi-mailbox-properties-private.h mn-pi-mailbox-properties.c \
-	mn-pi-mailbox-properties.h mn-pi-mailbox-private.h \
-	mn-pi-mailbox.c mn-pi-mailbox.h \
+	mn-sylpheed-mailbox-backend.gob \
+	mn-sylpheed-mailbox-backend.gob.stamp \
 	mn-sylpheed-mailbox-backend-private.h \
 	mn-sylpheed-mailbox-backend.c mn-sylpheed-mailbox-backend.h \
+	mn-gmail-mailbox.gob mn-gmail-mailbox.gob.stamp \
+	mn-gmail-mailbox-private.h mn-gmail-mailbox.c \
+	mn-gmail-mailbox.h mn-gmail-mailbox-properties.gob \
+	mn-gmail-mailbox-properties.gob.stamp \
 	mn-gmail-mailbox-properties-private.h \
 	mn-gmail-mailbox-properties.c mn-gmail-mailbox-properties.h \
-	mn-gmail-mailbox-private.h mn-gmail-mailbox.c \
-	mn-gmail-mailbox.h mn-corba-object-private.h mn-corba-object.c \
-	mn-corba-object.h mn-evolution-mailbox-properties-private.h \
-	mn-evolution-mailbox-properties.c \
-	mn-evolution-mailbox-properties.h \
-	mn-evolution-mailbox-private.h mn-evolution-mailbox.c \
-	mn-evolution-mailbox.h mn-custom-vfs-mailbox-private.h \
-	mn-custom-vfs-mailbox.c mn-custom-vfs-mailbox.h \
+	mn-custom-vfs-mailbox.gob mn-custom-vfs-mailbox.gob.stamp \
+	mn-custom-vfs-mailbox-private.h mn-custom-vfs-mailbox.c \
+	mn-custom-vfs-mailbox.h mn-system-vfs-mailbox.gob \
+	mn-system-vfs-mailbox.gob.stamp \
+	mn-system-vfs-mailbox-private.h mn-system-vfs-mailbox.c \
+	mn-system-vfs-mailbox.h mn-system-vfs-mailbox-properties.gob \
+	mn-system-vfs-mailbox-properties.gob.stamp \
 	mn-system-vfs-mailbox-properties-private.h \
 	mn-system-vfs-mailbox-properties.c \
-	mn-system-vfs-mailbox-properties.h \
-	mn-system-vfs-mailbox-private.h mn-system-vfs-mailbox.c \
-	mn-system-vfs-mailbox.h mn-vfs-mailbox-backend-private.h \
-	mn-vfs-mailbox-backend.c mn-vfs-mailbox-backend.h \
-	mn-vfs-mailbox-private.h mn-vfs-mailbox.c mn-vfs-mailbox.h \
-	mn-reentrant-mailbox-private.h mn-reentrant-mailbox.c \
-	mn-reentrant-mailbox.h mn-gmime-stream-vfs-private.h \
-	mn-gmime-stream-vfs.c mn-gmime-stream-vfs.h \
-	mn-about-dialog-private.h mn-about-dialog.c mn-about-dialog.h \
-	mn-autodetect-mailbox-properties-private.h \
-	mn-autodetect-mailbox-properties.c \
-	mn-autodetect-mailbox-properties.h mn-automation-private.h \
-	mn-automation.c mn-automation.h mn-blinking-image-private.h \
-	mn-blinking-image.c mn-blinking-image.h mn-dialog-private.h \
-	mn-dialog.c mn-dialog.h mn-mail-icon-private.h mn-mail-icon.c \
-	mn-mail-icon.h mn-mail-summary-popup-private.h \
-	mn-mail-summary-popup.c mn-mail-summary-popup.h \
-	mn-mailbox-properties-dialog-private.h \
-	mn-mailbox-properties-dialog.c mn-mailbox-properties-dialog.h \
-	mn-mailbox-properties-private.h mn-mailbox-properties.c \
-	mn-mailbox-properties.h mn-mailbox-view-private.h \
-	mn-mailbox-view.c mn-mailbox-view.h mn-mailbox-private.h \
-	mn-mailbox.c mn-mailbox.h mn-mailboxes-private.h \
-	mn-mailboxes.c mn-mailboxes.h mn-main-window-private.h \
-	mn-main-window.c mn-main-window.h mn-message-view-private.h \
-	mn-message-view.c mn-message-view.h mn-message-private.h \
-	mn-message.c mn-message.h mn-properties-dialog-private.h \
-	mn-properties-dialog.c mn-properties-dialog.h \
-	mn-shell-private.h mn-shell.c mn-shell.h mn-tooltips-private.h \
-	mn-tooltips.c mn-tooltips.h eggmarshalers.c eggmarshalers.h \
-	mn-md5.c mn-md5.h mn-client-session.c mn-client-session.h \
-	mn-ssl.c mn-ssl.h mn-sasl.c mn-sasl.h mn-message-mime.c \
-	mn-message-mime.h mn-evolution.h egg-editable-toolbar.c \
-	egg-editable-toolbar.h egg-toolbar-editor.c \
-	egg-toolbar-editor.h egg-toolbars-model.c egg-toolbars-model.h \
-	eggtrayicon.c eggtrayicon.h mn-conf.c mn-conf.h mn-main.c \
-	mn-stock.c mn-stock.h mn-util.c mn-util.h mn-vfs.c mn-vfs.h \
-	nautilus-cell-renderer-pixbuf-emblem.c \
-	nautilus-cell-renderer-pixbuf-emblem.h
-am__objects_4 = $(am__objects_1)
-am__objects_5 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \
-	$(am__objects_1) $(am__objects_1) $(am__objects_1) \
-	$(am__objects_1) $(am__objects_1) $(am__objects_1) \
-	$(am__objects_1) $(am__objects_1) $(am__objects_1) \
-	$(am__objects_1)
-@WITH_MBOX_TRUE@am__objects_6 = mail_notification-mn-mbox-mailbox-backend.$(OBJEXT)
-@WITH_MH_TRUE@am__objects_7 = mail_notification-mn-mh-mailbox-backend.$(OBJEXT)
-@WITH_MAILDIR_TRUE@am__objects_8 = mail_notification-mn-maildir-mailbox-backend.$(OBJEXT)
-@WITH_POP3_TRUE@am__objects_9 = mail_notification-mn-pop3-mailbox-properties.$(OBJEXT) \
-@WITH_POP3_TRUE@	mail_notification-mn-pop3-mailbox.$(OBJEXT)
-@WITH_IMAP_TRUE@am__objects_10 = mail_notification-mn-imap-mailbox-properties.$(OBJEXT) \
-@WITH_IMAP_TRUE@	mail_notification-mn-imap-mailbox.$(OBJEXT)
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@am__objects_11 = mail_notification-mn-authenticated-mailbox-properties.$(OBJEXT) \
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mail_notification-mn-authenticated-mailbox.$(OBJEXT)
-@WITH_POP3_OR_IMAP_TRUE@am__objects_12 = mail_notification-mn-auth-combo-box.$(OBJEXT) \
-@WITH_POP3_OR_IMAP_TRUE@	mail_notification-mn-pi-mailbox-properties.$(OBJEXT) \
-@WITH_POP3_OR_IMAP_TRUE@	mail_notification-mn-pi-mailbox.$(OBJEXT)
-@WITH_SYLPHEED_TRUE@am__objects_13 = mail_notification-mn-sylpheed-mailbox-backend.$(OBJEXT)
-@WITH_GMAIL_TRUE@am__objects_14 = mail_notification-mn-gmail-mailbox-properties.$(OBJEXT) \
-@WITH_GMAIL_TRUE@	mail_notification-mn-gmail-mailbox.$(OBJEXT)
-@WITH_EVOLUTION_TRUE@am__objects_15 = mail_notification-mn-corba-object.$(OBJEXT) \
-@WITH_EVOLUTION_TRUE@	mail_notification-mn-evolution-mailbox-properties.$(OBJEXT) \
-@WITH_EVOLUTION_TRUE@	mail_notification-mn-evolution-mailbox.$(OBJEXT)
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@am__objects_16 = mail_notification-mn-custom-vfs-mailbox.$(OBJEXT) \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-system-vfs-mailbox-properties.$(OBJEXT) \
+	mn-system-vfs-mailbox-properties.h mn-vfs-mailbox.gob \
+	mn-vfs-mailbox.gob.stamp mn-vfs-mailbox-private.h \
+	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-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-evolution-mailbox-properties.gob.stamp \
+	mn-evolution-mailbox-properties-private.h \
+	mn-evolution-mailbox-properties.c \
+	mn-evolution-mailbox-properties.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_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@	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@	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@	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_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-vfs-mailbox-backend.$(OBJEXT) \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mail_notification-mn-vfs-mailbox.$(OBJEXT)
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@am__objects_17 = mail_notification-mn-reentrant-mailbox.$(OBJEXT)
-@WITH_MIME_TRUE@am__objects_18 = mail_notification-mn-gmime-stream-vfs.$(OBJEXT)
-am__objects_19 = $(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) $(am__objects_16) $(am__objects_17) \
-	$(am__objects_18) mail_notification-mn-about-dialog.$(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_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_EVOLUTION_TRUE@	mail_notification-mn-evolution-mailbox.$(OBJEXT) \
+@WITH_EVOLUTION_TRUE@	mail_notification-mn-evolution-mailbox-properties.$(OBJEXT)
+am_mail_notification_OBJECTS = mail_notification-mn-main.$(OBJEXT) \
+	mail_notification-eggtrayicon.$(OBJEXT) \
+	mail_notification-mn-conf.$(OBJEXT) \
+	mail_notification-mn-locked-callback.$(OBJEXT) \
+	mail_notification-mn-stock.$(OBJEXT) \
+	mail_notification-mn-util.$(OBJEXT) \
+	mail_notification-mn-vfs.$(OBJEXT) \
+	mail_notification-nautilus-cell-renderer-pixbuf-emblem.$(OBJEXT) \
+	mail_notification-mn-about-dialog.$(OBJEXT) \
 	mail_notification-mn-autodetect-mailbox-properties.$(OBJEXT) \
 	mail_notification-mn-automation.$(OBJEXT) \
 	mail_notification-mn-blinking-image.$(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-properties-dialog.$(OBJEXT) \
+	mail_notification-mn-mailbox.$(OBJEXT) \
 	mail_notification-mn-mailbox-properties.$(OBJEXT) \
+	mail_notification-mn-mailbox-properties-dialog.$(OBJEXT) \
 	mail_notification-mn-mailbox-view.$(OBJEXT) \
-	mail_notification-mn-mailbox.$(OBJEXT) \
 	mail_notification-mn-mailboxes.$(OBJEXT) \
-	mail_notification-mn-main-window.$(OBJEXT) \
-	mail_notification-mn-message-view.$(OBJEXT) \
 	mail_notification-mn-message.$(OBJEXT) \
+	mail_notification-mn-message-view.$(OBJEXT) \
 	mail_notification-mn-properties-dialog.$(OBJEXT) \
 	mail_notification-mn-shell.$(OBJEXT) \
-	mail_notification-mn-tooltips.$(OBJEXT)
-am__objects_20 = mail_notification-eggmarshalers.$(OBJEXT)
-@WITH_POP3_TRUE@am__objects_21 = mail_notification-mn-md5.$(OBJEXT)
-@WITH_POP3_OR_IMAP_TRUE@am__objects_22 = mail_notification-mn-client-session.$(OBJEXT)
-@WITH_SSL_TRUE@am__objects_23 = mail_notification-mn-ssl.$(OBJEXT)
-@WITH_SASL_TRUE@am__objects_24 = mail_notification-mn-sasl.$(OBJEXT)
-@WITH_MIME_TRUE@am__objects_25 =  \
-@WITH_MIME_TRUE@	mail_notification-mn-message-mime.$(OBJEXT)
-am_mail_notification_OBJECTS = $(am__objects_4) $(am__objects_5) \
-	$(am__objects_19) $(am__objects_20) $(am__objects_21) \
-	$(am__objects_22) $(am__objects_23) $(am__objects_24) \
-	$(am__objects_25) $(am__objects_1) \
-	mail_notification-egg-editable-toolbar.$(OBJEXT) \
-	mail_notification-egg-toolbar-editor.$(OBJEXT) \
-	mail_notification-egg-toolbars-model.$(OBJEXT) \
-	mail_notification-eggtrayicon.$(OBJEXT) \
-	mail_notification-mn-conf.$(OBJEXT) \
-	mail_notification-mn-main.$(OBJEXT) \
-	mail_notification-mn-stock.$(OBJEXT) \
-	mail_notification-mn-util.$(OBJEXT) \
-	mail_notification-mn-vfs.$(OBJEXT) \
-	mail_notification-nautilus-cell-renderer-pixbuf-emblem.$(OBJEXT)
-@WITH_EVOLUTION_TRUE@am__objects_26 = mail_notification-GNOME_MailNotification_Evolution-common.$(OBJEXT) \
-@WITH_EVOLUTION_TRUE@	mail_notification-GNOME_MailNotification_Evolution-stubs.$(OBJEXT) \
-@WITH_EVOLUTION_TRUE@	mail_notification-GNOME_MailNotification_Evolution-skels.$(OBJEXT)
-am__objects_27 = $(am__objects_26) \
+	mail_notification-mn-standard-message-view.$(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) \
+@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) \
-	mail_notification-GNOME_MailNotification-skels.$(OBJEXT)
-nodist_mail_notification_OBJECTS = $(am__objects_27)
+	$(am__objects_16)
 mail_notification_OBJECTS = $(am_mail_notification_OBJECTS) \
 	$(nodist_mail_notification_OBJECTS)
 mail_notification_LDADD = $(LDADD)
@@ -301,7 +596,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BONOBO_ACTIVATION_IDL = @BONOBO_ACTIVATION_IDL@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -333,7 +628,6 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GMIME_CFLAGS = @GMIME_CFLAGS@
 GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
@@ -365,6 +659,7 @@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
 INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
 INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
 INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
 INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
 INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
 INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
@@ -375,7 +670,6 @@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
 INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
 INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
-LIBBONOBO_IDL = @LIBBONOBO_IDL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
@@ -470,6 +764,7 @@ 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@
@@ -497,364 +792,167 @@ target_alias = @target_alias@
 target_cpu = @target_cpu@
 target_os = @target_os@
 target_vendor = @target_vendor@
-@WITH_MBOX_TRUE@mbox_gob_sources = mn-mbox-mailbox-backend.gob
-@WITH_MBOX_TRUE@mbox_gob_built_sources = \
-@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@mh_gob_sources = mn-mh-mailbox-backend.gob
-@WITH_MH_TRUE@mh_gob_built_sources = \
-@WITH_MH_TRUE@	mn-mh-mailbox-backend-private.h		\
-@WITH_MH_TRUE@	mn-mh-mailbox-backend.c			\
-@WITH_MH_TRUE@	mn-mh-mailbox-backend.h
-
-@WITH_MAILDIR_TRUE@maildir_gob_sources = mn-maildir-mailbox-backend.gob
-@WITH_MAILDIR_TRUE@maildir_gob_built_sources = \
-@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@pop3_gob_sources = \
-@WITH_POP3_TRUE@	mn-pop3-mailbox-properties.gob	\
-@WITH_POP3_TRUE@	mn-pop3-mailbox.gob
-
-@WITH_POP3_TRUE@pop3_gob_built_sources = \
-@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@	mn-pop3-mailbox-private.h		\
-@WITH_POP3_TRUE@	mn-pop3-mailbox.c			\
-@WITH_POP3_TRUE@	mn-pop3-mailbox.h
-
-@WITH_POP3_TRUE@md5_sources = mn-md5.c mn-md5.h
-@WITH_IMAP_TRUE@imap_gob_sources = \
-@WITH_IMAP_TRUE@	mn-imap-mailbox-properties.gob	\
-@WITH_IMAP_TRUE@	mn-imap-mailbox.gob
-
-@WITH_IMAP_TRUE@imap_gob_built_sources = \
-@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@	mn-imap-mailbox-private.h		\
-@WITH_IMAP_TRUE@	mn-imap-mailbox.c			\
-@WITH_IMAP_TRUE@	mn-imap-mailbox.h
-
-@WITH_POP3_OR_IMAP_TRUE@client_session_sources = mn-client-session.c mn-client-session.h
-@WITH_POP3_OR_IMAP_TRUE@pi_gob_sources = \
-@WITH_POP3_OR_IMAP_TRUE@	mn-auth-combo-box.gob			\
-@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox-properties.gob		\
-@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox.gob
-
-@WITH_POP3_OR_IMAP_TRUE@pi_gob_built_sources = \
-@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				\
-@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@	mn-pi-mailbox-private.h				\
-@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox.c					\
-@WITH_POP3_OR_IMAP_TRUE@	mn-pi-mailbox.h
-
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@authenticated_mailbox_gob_sources = \
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox-properties.gob	\
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@	mn-authenticated-mailbox.gob
-
-@WITH_POP3_OR_IMAP_OR_GMAIL_TRUE@authenticated_mailbox_gob_built_sources = \
-@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@	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
-
-@WITH_SYLPHEED_TRUE@sylpheed_gob_sources = mn-sylpheed-mailbox-backend.gob
-@WITH_SYLPHEED_TRUE@sylpheed_gob_built_sources = \
-@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@gmail_gob_sources = \
-@WITH_GMAIL_TRUE@	mn-gmail-mailbox-properties.gob	\
-@WITH_GMAIL_TRUE@	mn-gmail-mailbox.gob
-
-@WITH_GMAIL_TRUE@gmail_gob_built_sources = \
-@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@	mn-gmail-mailbox-private.h		\
-@WITH_GMAIL_TRUE@	mn-gmail-mailbox.c			\
-@WITH_GMAIL_TRUE@	mn-gmail-mailbox.h
-
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@vfs_mailbox_gob_sources = \
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@	mn-custom-vfs-mailbox.gob		\
-@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.gob		\
-@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.gob
-
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_TRUE@vfs_mailbox_gob_built_sources = \
-@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-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-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-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@	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_OR_EVOLUTION_TRUE@reentrant_mailbox_gob_sources = mn-reentrant-mailbox.gob
-@WITH_MBOX_OR_MH_OR_MAILDIR_OR_SYLPHEED_OR_EVOLUTION_TRUE@reentrant_mailbox_gob_built_sources = \
-@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@mime_gob_sources = \
-@WITH_MIME_TRUE@	mn-gmime-stream-vfs.gob
-
-@WITH_MIME_TRUE@mime_gob_built_sources = \
-@WITH_MIME_TRUE@	mn-gmime-stream-vfs-private.h	\
-@WITH_MIME_TRUE@	mn-gmime-stream-vfs.c		\
-@WITH_MIME_TRUE@	mn-gmime-stream-vfs.h
-
-@WITH_MIME_TRUE@mime_sources = \
-@WITH_MIME_TRUE@	mn-message-mime.c	\
-@WITH_MIME_TRUE@	mn-message-mime.h
-
-@WITH_SSL_TRUE@ssl_sources = mn-ssl.c mn-ssl.h
-@WITH_SASL_TRUE@sasl_sources = mn-sasl.c mn-sasl.h
-@WITH_EVOLUTION_TRUE@evolution_plugin_eplug = org-gnome-mail-notification.eplug
-@WITH_EVOLUTION_TRUE@evolution_shared_sources = mn-evolution.h
-@WITH_EVOLUTION_TRUE@evolution_shared_idl_sources = GNOME_MailNotification_Evolution.idl
-@WITH_EVOLUTION_TRUE@evolution_shared_idl_built_sources = \
-@WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-common.c	\
-@WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-stubs.c	\
-@WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution-skels.c	\
-@WITH_EVOLUTION_TRUE@	GNOME_MailNotification_Evolution.h
-
-@WITH_EVOLUTION_TRUE@evolution_plugin_gob_sources = mn-evolution-glue.gob
-@WITH_EVOLUTION_TRUE@evolution_plugin_gob_built_sources = \
-@WITH_EVOLUTION_TRUE@	mn-evolution-glue-private.h	\
-@WITH_EVOLUTION_TRUE@	mn-evolution-glue.c		\
-@WITH_EVOLUTION_TRUE@	mn-evolution-glue.h
-
-@WITH_EVOLUTION_TRUE@evolution_gob_sources = \
-@WITH_EVOLUTION_TRUE@	mn-corba-object.gob			\
-@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox-properties.gob	\
-@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.gob
-
-@WITH_EVOLUTION_TRUE@evolution_gob_built_sources = \
-@WITH_EVOLUTION_TRUE@	mn-corba-object-private.h			\
-@WITH_EVOLUTION_TRUE@	mn-corba-object.c				\
-@WITH_EVOLUTION_TRUE@	mn-corba-object.h				\
-@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-mailbox-private.h			\
-@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.c				\
-@WITH_EVOLUTION_TRUE@	mn-evolution-mailbox.h
-
-@WITH_EVOLUTION_TRUE@evolution_plugin_DATA = $(evolution_plugin_eplug)
-@WITH_EVOLUTION_TRUE@evolution_plugin_LTLIBRARIES = liborg-gnome-mail-notification.la
-@WITH_EVOLUTION_TRUE@nodist_liborg_gnome_mail_notification_la_SOURCES = \
-@WITH_EVOLUTION_TRUE@	$(evolution_shared_idl_built_sources)
-
-@WITH_EVOLUTION_TRUE@liborg_gnome_mail_notification_la_SOURCES = \
-@WITH_EVOLUTION_TRUE@	$(evolution_shared_sources)		\
-@WITH_EVOLUTION_TRUE@	$(evolution_shared_idl_sources)		\
-@WITH_EVOLUTION_TRUE@	$(evolution_plugin_gob_sources)		\
-@WITH_EVOLUTION_TRUE@	$(evolution_plugin_gob_built_sources)	\
-@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.c	\
-@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.h	\
-@WITH_EVOLUTION_TRUE@	mn-evolution-plugin.c
-
-@WITH_EVOLUTION_TRUE@liborg_gnome_mail_notification_la_CPPFLAGS = $(WARN_CFLAGS) \
-@WITH_EVOLUTION_TRUE@	-I$(top_srcdir) \
-@WITH_EVOLUTION_TRUE@	-DG_LOG_DOMAIN="\"$(PACKAGE)\"" \
-@WITH_EVOLUTION_TRUE@	$(EVOLUTION_PLUGIN_CFLAGS)
-
-@WITH_EVOLUTION_TRUE@liborg_gnome_mail_notification_la_LDFLAGS = -avoid-version -module $(EVOLUTION_PLUGIN_LIBS)
-idl_sources = $(evolution_shared_idl_sources) GNOME_MailNotification.idl
-idl_built_sources = \
-	$(evolution_shared_idl_built_sources)	\
-	GNOME_MailNotification-common.c		\
-	GNOME_MailNotification-stubs.c		\
-	GNOME_MailNotification-skels.c		\
-	GNOME_MailNotification.h
-
-gob_sources = \
-	$(mbox_gob_sources)			\
-	$(mh_gob_sources)			\
-	$(maildir_gob_sources)			\
-	$(pop3_gob_sources)			\
-	$(imap_gob_sources)			\
-	$(authenticated_mailbox_gob_sources)	\
-	$(pi_gob_sources)			\
-	$(sylpheed_gob_sources)			\
-	$(gmail_gob_sources)			\
-	$(evolution_gob_sources)		\
-	$(vfs_mailbox_gob_sources)		\
-	$(reentrant_mailbox_gob_sources)	\
-	$(mime_gob_sources)			\
-	mn-about-dialog.gob			\
-	mn-autodetect-mailbox-properties.gob	\
-	mn-automation.gob			\
-	mn-blinking-image.gob			\
-	mn-dialog.gob				\
-	mn-mail-icon.gob			\
-	mn-mail-summary-popup.gob		\
-	mn-mailbox-properties-dialog.gob	\
-	mn-mailbox-properties.gob		\
-	mn-mailbox-view.gob			\
-	mn-mailbox.gob				\
-	mn-mailboxes.gob			\
-	mn-main-window.gob			\
-	mn-message-view.gob			\
-	mn-message.gob				\
-	mn-properties-dialog.gob		\
-	mn-shell.gob				\
-	mn-tooltips.gob
-
-gob_built_sources = \
-	$(mbox_gob_built_sources)			\
-	$(mh_gob_built_sources)				\
-	$(maildir_gob_built_sources)			\
-	$(pop3_gob_built_sources)			\
-	$(imap_gob_built_sources)			\
-	$(authenticated_mailbox_gob_built_sources)	\
-	$(pi_gob_built_sources)				\
-	$(sylpheed_gob_built_sources)			\
-	$(gmail_gob_built_sources)			\
-	$(evolution_gob_built_sources)			\
-	$(vfs_mailbox_gob_built_sources)		\
-	$(reentrant_mailbox_gob_built_sources)		\
-	$(mime_gob_built_sources)			\
-	mn-about-dialog-private.h			\
-	mn-about-dialog.c				\
-	mn-about-dialog.h				\
-	mn-autodetect-mailbox-properties-private.h	\
-	mn-autodetect-mailbox-properties.c		\
-	mn-autodetect-mailbox-properties.h		\
-	mn-automation-private.h				\
-	mn-automation.c					\
-	mn-automation.h					\
-	mn-blinking-image-private.h			\
-	mn-blinking-image.c				\
-	mn-blinking-image.h				\
-	mn-dialog-private.h				\
-	mn-dialog.c					\
-	mn-dialog.h					\
-	mn-mail-icon-private.h				\
-	mn-mail-icon.c					\
-	mn-mail-icon.h					\
-	mn-mail-summary-popup-private.h			\
-	mn-mail-summary-popup.c				\
-	mn-mail-summary-popup.h				\
-	mn-mailbox-properties-dialog-private.h		\
-	mn-mailbox-properties-dialog.c			\
-	mn-mailbox-properties-dialog.h			\
-	mn-mailbox-properties-private.h			\
-	mn-mailbox-properties.c				\
-	mn-mailbox-properties.h				\
-	mn-mailbox-view-private.h			\
-	mn-mailbox-view.c				\
-	mn-mailbox-view.h				\
-	mn-mailbox-private.h				\
-	mn-mailbox.c					\
-	mn-mailbox.h					\
-	mn-mailboxes-private.h				\
-	mn-mailboxes.c					\
-	mn-mailboxes.h					\
-	mn-main-window-private.h			\
-	mn-main-window.c				\
-	mn-main-window.h				\
-	mn-message-view-private.h			\
-	mn-message-view.c				\
-	mn-message-view.h				\
-	mn-message-private.h				\
-	mn-message.c					\
-	mn-message.h					\
-	mn-properties-dialog-private.h			\
-	mn-properties-dialog.c				\
-	mn-properties-dialog.h				\
-	mn-shell-private.h				\
-	mn-shell.c					\
-	mn-shell.h					\
-	mn-tooltips-private.h				\
-	mn-tooltips.c					\
-	mn-tooltips.h
-
-egg_built_sources = \
-	eggmarshalers.c	\
-	eggmarshalers.h
-
-nodist_mail_notification_SOURCES = $(idl_built_sources)
-mail_notification_SOURCES = \
-	$(idl_sources)				\
-	$(gob_sources)				\
-	$(gob_built_sources)			\
-	$(egg_built_sources)			\
-	$(md5_sources)				\
-	$(client_session_sources)		\
-	$(ssl_sources)				\
-	$(sasl_sources)				\
-	$(mime_sources)				\
-	$(evolution_shared_sources)		\
-	egg-editable-toolbar.c			\
-	egg-editable-toolbar.h			\
-	egg-toolbar-editor.c			\
-	egg-toolbar-editor.h			\
-	egg-toolbars-model.c			\
-	egg-toolbars-model.h			\
-	eggtrayicon.c				\
-	eggtrayicon.h				\
-	mn-conf.c				\
-	mn-conf.h				\
-	mn-main.c				\
-	mn-stock.c				\
-	mn-stock.h				\
-	mn-util.c				\
-	mn-util.h				\
-	mn-vfs.c				\
-	mn-vfs.h				\
-	nautilus-cell-renderer-pixbuf-emblem.c	\
-	nautilus-cell-renderer-pixbuf-emblem.h
-
-BUILT_SOURCES = \
-	$(evolution_plugin_gob_built_sources)	\
-	$(idl_built_sources)			\
-	$(gob_built_sources)			\
-	$(egg_built_sources)
-
-mail_notification_CPPFLAGS = $(WARN_CFLAGS) $(GNOME_CFLAGS) $(GMIME_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
-	-I$(top_srcdir) \
-	-DPREFIX="\"$(prefix)\"" \
-	-DSYSCONFDIR="\"$(sysconfdir)\"" \
-	-DDATADIR="\"$(datadir)\"" \
+GOBFLAGS = --always-private-header --no-touch --exit-on-warn
+mail_notification_CPPFLAGS = $(WARN_CFLAGS) -I$(top_srcdir) \
+	-DG_LOG_DOMAIN="\"$(PACKAGE)\"" -DPREFIX="\"$(prefix)\"" \
+	-DSYSCONFDIR="\"$(sysconfdir)\"" -DDATADIR="\"$(datadir)\"" \
 	-DLIBDIR="\"$(libdir)\"" \
 	-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
 	-DGNOMEPIXMAPSDIR="\"$(datadir)/pixmaps\"" \
-	-DUIDIR="\"$(pkgdatadir)/ui\"" \
-	-DG_LOG_DOMAIN="\"$(PACKAGE)\""
-
-mail_notification_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GMIME_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
-CLEANFILES = $(evolution_plugin_eplug) $(idl_built_sources)
-MAINTAINERCLEANFILES = $(evolution_plugin_gob_built_sources) $(gob_built_sources) $(egg_built_sources)
-EXTRA_DIST = eggmarshalers.list org-gnome-mail-notification.eplug.in
+	-DUIDIR="\"$(pkgdatadir)/ui\"" $(GNOME_CFLAGS) \
+	$(am__append_34) $(am__append_39) $(am__append_42)
+mail_notification_LDFLAGS = -export-dynamic $(INTLLIBS) $(GNOME_LIBS) \
+	$(am__append_35) $(am__append_40) $(am__append_43)
+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 \
+	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 \
+	mn-autodetect-mailbox-properties.gob \
+	mn-autodetect-mailbox-properties.gob.stamp \
+	mn-autodetect-mailbox-properties-private.h \
+	mn-autodetect-mailbox-properties.c \
+	mn-autodetect-mailbox-properties.h mn-automation.gob \
+	mn-automation.gob.stamp mn-automation-private.h \
+	mn-automation.c mn-automation.h mn-blinking-image.gob \
+	mn-blinking-image.gob.stamp mn-blinking-image-private.h \
+	mn-blinking-image.c mn-blinking-image.h \
+	mn-compact-message-view.gob mn-compact-message-view.gob.stamp \
+	mn-compact-message-view-private.h mn-compact-message-view.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-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 \
+	mn-mailbox-properties.h mn-mailbox-properties-dialog.gob \
+	mn-mailbox-properties-dialog.gob.stamp \
+	mn-mailbox-properties-dialog-private.h \
+	mn-mailbox-properties-dialog.c mn-mailbox-properties-dialog.h \
+	mn-mailbox-view.gob mn-mailbox-view.gob.stamp \
+	mn-mailbox-view-private.h mn-mailbox-view.c mn-mailbox-view.h \
+	mn-mailboxes.gob mn-mailboxes.gob.stamp mn-mailboxes-private.h \
+	mn-mailboxes.c mn-mailboxes.h mn-message.gob \
+	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-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 \
+	mn-shell-private.h mn-shell.c mn-shell.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-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 $(am__append_1) \
+	$(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)
+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-mailbox-properties-dialog.gob.stamp \
+	mn-mailbox-view.gob.stamp mn-mailboxes.gob.stamp \
+	mn-message.gob.stamp mn-message-view.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)
+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 \
+	mn-autodetect-mailbox-properties-private.h \
+	mn-autodetect-mailbox-properties.c \
+	mn-autodetect-mailbox-properties.h mn-automation.gob.stamp \
+	mn-automation-private.h mn-automation.c mn-automation.h \
+	mn-blinking-image.gob.stamp mn-blinking-image-private.h \
+	mn-blinking-image.c mn-blinking-image.h \
+	mn-compact-message-view.gob.stamp \
+	mn-compact-message-view-private.h mn-compact-message-view.c \
+	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-mailbox-properties-private.h mn-mailbox-properties.c \
+	mn-mailbox-properties.h mn-mailbox-properties-dialog.gob.stamp \
+	mn-mailbox-properties-dialog-private.h \
+	mn-mailbox-properties-dialog.c mn-mailbox-properties-dialog.h \
+	mn-mailbox-view.gob.stamp mn-mailbox-view-private.h \
+	mn-mailbox-view.c mn-mailbox-view.h mn-mailboxes.gob.stamp \
+	mn-mailboxes-private.h mn-mailboxes.c mn-mailboxes.h \
+	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-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) \
+	$(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)
+nodist_mail_notification_SOURCES = GNOME_MailNotification-common.c \
+	GNOME_MailNotification-skels.c GNOME_MailNotification-stubs.c \
+	GNOME_MailNotification.h $(am__append_48)
+CLEANFILES = GNOME_MailNotification-common.c \
+	GNOME_MailNotification-skels.c GNOME_MailNotification-stubs.c \
+	GNOME_MailNotification.h $(am__append_49) $(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) -I$(top_srcdir) \
+@WITH_EVOLUTION_TRUE@	-DG_LOG_DOMAIN="\"$(PACKAGE)\"" \
+@WITH_EVOLUTION_TRUE@	$(EVOLUTION_PLUGIN_CFLAGS)
+@WITH_EVOLUTION_TRUE@liborg_gnome_mail_notification_la_LDFLAGS =  \
+@WITH_EVOLUTION_TRUE@	-avoid-version -module \
+@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.c \
+@WITH_EVOLUTION_TRUE@	mn-evolution-folder-tree-control.h \
+@WITH_EVOLUTION_TRUE@	mn-evolution-glue.gob \
+@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@	GNOME_MailNotification_Evolution.idl
+@WITH_EVOLUTION_TRUE@nodist_liborg_gnome_mail_notification_la_SOURCES = GNOME_MailNotification_Evolution-common.c GNOME_MailNotification_Evolution-skels.c GNOME_MailNotification_Evolution-stubs.c GNOME_MailNotification_Evolution.h
+@WITH_EVOLUTION_TRUE@evolution_eplug = org-gnome-mail-notification.eplug
+@WITH_EVOLUTION_TRUE@evolution_plugin_DATA = $(evolution_eplug)
+IDLFLAGS = $(BONOBO_IDLFLAGS)
+EXTRA_DIST = $(evolution_eplug).in
 all: $(BUILT_SOURCES)
 	$(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/aml/aml.make $(srcdir)/aml.make $(am__configure_deps)
 	@for dep in $?; do \
 	  case '$(am__configure_deps)' in \
 	    *$$dep*) \
@@ -962,10 +1060,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-common.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-skels.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-egg-editable-toolbar.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-egg-toolbar-editor.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-egg-toolbars-model.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-eggmarshalers.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-eggtrayicon.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-about-dialog.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-auth-combo-box.Po@am__quote@
@@ -975,6 +1069,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-automation.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-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@
@@ -986,6 +1081,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Po@am__quote@
 @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@
@@ -994,7 +1090,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mailboxes.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Po@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-main-window.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-md5.Po@am__quote@
@@ -1011,10 +1106,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-sasl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-shell.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-ssl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-standard-message-view.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mail_notification-mn-stock.Po@am__quote@
 @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-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@
@@ -1043,12 +1140,12 @@ distclean-compile:
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $<
 
-liborg_gnome_mail_notification_la-mn-evolution-glue.lo: mn-evolution-glue.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liborg_gnome_mail_notification_la-mn-evolution-glue.lo -MD -MP -MF "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-glue.Tpo" -c -o liborg_gnome_mail_notification_la-mn-evolution-glue.lo `test -f 'mn-evolution-glue.c' || echo '$(srcdir)/'`mn-evolution-glue.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-glue.Tpo" "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-glue.Plo"; else rm -f "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-glue.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-glue.c' object='liborg_gnome_mail_notification_la-mn-evolution-glue.lo' libtool=yes @AMDEPBACKSLASH@
+liborg_gnome_mail_notification_la-mn-evolution-plugin.lo: mn-evolution-plugin.c
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liborg_gnome_mail_notification_la-mn-evolution-plugin.lo -MD -MP -MF "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-plugin.Tpo" -c -o liborg_gnome_mail_notification_la-mn-evolution-plugin.lo `test -f 'mn-evolution-plugin.c' || echo '$(srcdir)/'`mn-evolution-plugin.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-plugin.Tpo" "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-plugin.Plo"; else rm -f "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-plugin.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-plugin.c' object='liborg_gnome_mail_notification_la-mn-evolution-plugin.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liborg_gnome_mail_notification_la-mn-evolution-glue.lo `test -f 'mn-evolution-glue.c' || echo '$(srcdir)/'`mn-evolution-glue.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liborg_gnome_mail_notification_la-mn-evolution-plugin.lo `test -f 'mn-evolution-plugin.c' || echo '$(srcdir)/'`mn-evolution-plugin.c
 
 liborg_gnome_mail_notification_la-mn-evolution-folder-tree-control.lo: mn-evolution-folder-tree-control.c
 @am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liborg_gnome_mail_notification_la-mn-evolution-folder-tree-control.lo -MD -MP -MF "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-folder-tree-control.Tpo" -c -o liborg_gnome_mail_notification_la-mn-evolution-folder-tree-control.lo `test -f 'mn-evolution-folder-tree-control.c' || echo '$(srcdir)/'`mn-evolution-folder-tree-control.c; \
@@ -1057,12 +1154,12 @@ liborg_gnome_mail_notification_la-mn-evolution-folder-tree-control.lo: mn-evolut
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liborg_gnome_mail_notification_la-mn-evolution-folder-tree-control.lo `test -f 'mn-evolution-folder-tree-control.c' || echo '$(srcdir)/'`mn-evolution-folder-tree-control.c
 
-liborg_gnome_mail_notification_la-mn-evolution-plugin.lo: mn-evolution-plugin.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liborg_gnome_mail_notification_la-mn-evolution-plugin.lo -MD -MP -MF "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-plugin.Tpo" -c -o liborg_gnome_mail_notification_la-mn-evolution-plugin.lo `test -f 'mn-evolution-plugin.c' || echo '$(srcdir)/'`mn-evolution-plugin.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-plugin.Tpo" "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-plugin.Plo"; else rm -f "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-plugin.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-plugin.c' object='liborg_gnome_mail_notification_la-mn-evolution-plugin.lo' libtool=yes @AMDEPBACKSLASH@
+liborg_gnome_mail_notification_la-mn-evolution-glue.lo: mn-evolution-glue.c
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liborg_gnome_mail_notification_la-mn-evolution-glue.lo -MD -MP -MF "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-glue.Tpo" -c -o liborg_gnome_mail_notification_la-mn-evolution-glue.lo `test -f 'mn-evolution-glue.c' || echo '$(srcdir)/'`mn-evolution-glue.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-glue.Tpo" "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-glue.Plo"; else rm -f "$(DEPDIR)/liborg_gnome_mail_notification_la-mn-evolution-glue.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-glue.c' object='liborg_gnome_mail_notification_la-mn-evolution-glue.lo' libtool=yes @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liborg_gnome_mail_notification_la-mn-evolution-plugin.lo `test -f 'mn-evolution-plugin.c' || echo '$(srcdir)/'`mn-evolution-plugin.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liborg_gnome_mail_notification_la-mn-evolution-glue.lo `test -f 'mn-evolution-glue.c' || echo '$(srcdir)/'`mn-evolution-glue.c
 
 liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-common.lo: GNOME_MailNotification_Evolution-common.c
 @am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-common.lo -MD -MP -MF "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-common.Tpo" -c -o liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-common.lo `test -f 'GNOME_MailNotification_Evolution-common.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-common.c; \
@@ -1071,13 +1168,6 @@ liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-common.lo: GN
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-common.lo `test -f 'GNOME_MailNotification_Evolution-common.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-common.c
 
-liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo: GNOME_MailNotification_Evolution-stubs.c
-@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo -MD -MP -MF "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.Tpo" -c -o liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo `test -f 'GNOME_MailNotification_Evolution-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-stubs.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.Tpo" "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.Plo"; else rm -f "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification_Evolution-stubs.c' object='liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo `test -f 'GNOME_MailNotification_Evolution-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-stubs.c
-
 liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.lo: GNOME_MailNotification_Evolution-skels.c
 @am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.lo -MD -MP -MF "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.Tpo" -c -o liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.lo `test -f 'GNOME_MailNotification_Evolution-skels.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-skels.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.Tpo" "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.Plo"; else rm -f "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.Tpo"; exit 1; fi
@@ -1085,649 +1175,754 @@ liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.lo: GNO
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-skels.lo `test -f 'GNOME_MailNotification_Evolution-skels.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-skels.c
 
-mail_notification-mn-mbox-mailbox-backend.o: mn-mbox-mailbox-backend.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mbox-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo" -c -o mail_notification-mn-mbox-mailbox-backend.o `test -f 'mn-mbox-mailbox-backend.c' || echo '$(srcdir)/'`mn-mbox-mailbox-backend.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mbox-mailbox-backend.c' object='mail_notification-mn-mbox-mailbox-backend.o' libtool=no @AMDEPBACKSLASH@
+liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo: GNOME_MailNotification_Evolution-stubs.c
+@am__fastdepCC_TRUE@	if $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo -MD -MP -MF "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.Tpo" -c -o liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo `test -f 'GNOME_MailNotification_Evolution-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-stubs.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.Tpo" "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.Plo"; else rm -f "$(DEPDIR)/liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification_Evolution-stubs.c' object='liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo' libtool=yes @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-mbox-mailbox-backend.o `test -f 'mn-mbox-mailbox-backend.c' || echo '$(srcdir)/'`mn-mbox-mailbox-backend.c
+@am__fastdepCC_FALSE@	$(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(liborg_gnome_mail_notification_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o liborg_gnome_mail_notification_la-GNOME_MailNotification_Evolution-stubs.lo `test -f 'GNOME_MailNotification_Evolution-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-stubs.c
 
-mail_notification-mn-mbox-mailbox-backend.obj: mn-mbox-mailbox-backend.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mbox-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo" -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`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mbox-mailbox-backend.c' object='mail_notification-mn-mbox-mailbox-backend.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-main.o: mn-main.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-main.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-main.Tpo" -c -o mail_notification-mn-main.o `test -f 'mn-main.c' || echo '$(srcdir)/'`mn-main.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-main.Tpo" "$(DEPDIR)/mail_notification-mn-main.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-main.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-main.c' object='mail_notification-mn-main.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-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`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-main.o `test -f 'mn-main.c' || echo '$(srcdir)/'`mn-main.c
 
-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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mh-mailbox-backend.c' object='mail_notification-mn-mh-mailbox-backend.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-main.obj: mn-main.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-main.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-main.Tpo" -c -o mail_notification-mn-main.obj `if test -f 'mn-main.c'; then $(CYGPATH_W) 'mn-main.c'; else $(CYGPATH_W) '$(srcdir)/mn-main.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-main.Tpo" "$(DEPDIR)/mail_notification-mn-main.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-main.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-main.c' object='mail_notification-mn-main.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-mh-mailbox-backend.o `test -f 'mn-mh-mailbox-backend.c' || echo '$(srcdir)/'`mn-mh-mailbox-backend.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-main.obj `if test -f 'mn-main.c'; then $(CYGPATH_W) 'mn-main.c'; else $(CYGPATH_W) '$(srcdir)/mn-main.c'; fi`
 
-mail_notification-mn-mh-mailbox-backend.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mh-mailbox-backend.Tpo" -c -o mail_notification-mn-mh-mailbox-backend.obj `if test -f 'mn-mh-mailbox-backend.c'; then $(CYGPATH_W) 'mn-mh-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-mh-mailbox-backend.c'; fi`; \
-@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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mh-mailbox-backend.c' object='mail_notification-mn-mh-mailbox-backend.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-eggtrayicon.o: eggtrayicon.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-eggtrayicon.o -MD -MP -MF "$(DEPDIR)/mail_notification-eggtrayicon.Tpo" -c -o mail_notification-eggtrayicon.o `test -f 'eggtrayicon.c' || echo '$(srcdir)/'`eggtrayicon.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-eggtrayicon.Tpo" "$(DEPDIR)/mail_notification-eggtrayicon.Po"; else rm -f "$(DEPDIR)/mail_notification-eggtrayicon.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eggtrayicon.c' object='mail_notification-eggtrayicon.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-mh-mailbox-backend.obj `if test -f 'mn-mh-mailbox-backend.c'; then $(CYGPATH_W) 'mn-mh-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-mh-mailbox-backend.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-eggtrayicon.o `test -f 'eggtrayicon.c' || echo '$(srcdir)/'`eggtrayicon.c
 
-mail_notification-mn-maildir-mailbox-backend.o: mn-maildir-mailbox-backend.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-maildir-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo" -c -o mail_notification-mn-maildir-mailbox-backend.o `test -f 'mn-maildir-mailbox-backend.c' || echo '$(srcdir)/'`mn-maildir-mailbox-backend.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-maildir-mailbox-backend.c' object='mail_notification-mn-maildir-mailbox-backend.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-eggtrayicon.obj: eggtrayicon.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-eggtrayicon.obj -MD -MP -MF "$(DEPDIR)/mail_notification-eggtrayicon.Tpo" -c -o mail_notification-eggtrayicon.obj `if test -f 'eggtrayicon.c'; then $(CYGPATH_W) 'eggtrayicon.c'; else $(CYGPATH_W) '$(srcdir)/eggtrayicon.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-eggtrayicon.Tpo" "$(DEPDIR)/mail_notification-eggtrayicon.Po"; else rm -f "$(DEPDIR)/mail_notification-eggtrayicon.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eggtrayicon.c' object='mail_notification-eggtrayicon.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-maildir-mailbox-backend.o `test -f 'mn-maildir-mailbox-backend.c' || echo '$(srcdir)/'`mn-maildir-mailbox-backend.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-eggtrayicon.obj `if test -f 'eggtrayicon.c'; then $(CYGPATH_W) 'eggtrayicon.c'; else $(CYGPATH_W) '$(srcdir)/eggtrayicon.c'; fi`
 
-mail_notification-mn-maildir-mailbox-backend.obj: mn-maildir-mailbox-backend.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-maildir-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo" -c -o mail_notification-mn-maildir-mailbox-backend.obj `if test -f 'mn-maildir-mailbox-backend.c'; then $(CYGPATH_W) 'mn-maildir-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-maildir-mailbox-backend.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-maildir-mailbox-backend.c' object='mail_notification-mn-maildir-mailbox-backend.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-conf.o: mn-conf.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-conf.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-conf.Tpo" -c -o mail_notification-mn-conf.o `test -f 'mn-conf.c' || echo '$(srcdir)/'`mn-conf.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-conf.Tpo" "$(DEPDIR)/mail_notification-mn-conf.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-conf.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-conf.c' object='mail_notification-mn-conf.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-maildir-mailbox-backend.obj `if test -f 'mn-maildir-mailbox-backend.c'; then $(CYGPATH_W) 'mn-maildir-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-maildir-mailbox-backend.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-conf.o `test -f 'mn-conf.c' || echo '$(srcdir)/'`mn-conf.c
 
-mail_notification-mn-pop3-mailbox-properties.o: mn-pop3-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pop3-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo" -c -o mail_notification-mn-pop3-mailbox-properties.o `test -f 'mn-pop3-mailbox-properties.c' || echo '$(srcdir)/'`mn-pop3-mailbox-properties.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pop3-mailbox-properties.c' object='mail_notification-mn-pop3-mailbox-properties.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-conf.obj: mn-conf.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-conf.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-conf.Tpo" -c -o mail_notification-mn-conf.obj `if test -f 'mn-conf.c'; then $(CYGPATH_W) 'mn-conf.c'; else $(CYGPATH_W) '$(srcdir)/mn-conf.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-conf.Tpo" "$(DEPDIR)/mail_notification-mn-conf.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-conf.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-conf.c' object='mail_notification-mn-conf.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-pop3-mailbox-properties.o `test -f 'mn-pop3-mailbox-properties.c' || echo '$(srcdir)/'`mn-pop3-mailbox-properties.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-conf.obj `if test -f 'mn-conf.c'; then $(CYGPATH_W) 'mn-conf.c'; else $(CYGPATH_W) '$(srcdir)/mn-conf.c'; fi`
 
-mail_notification-mn-pop3-mailbox-properties.obj: mn-pop3-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pop3-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo" -c -o mail_notification-mn-pop3-mailbox-properties.obj `if test -f 'mn-pop3-mailbox-properties.c'; then $(CYGPATH_W) 'mn-pop3-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-pop3-mailbox-properties.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pop3-mailbox-properties.c' object='mail_notification-mn-pop3-mailbox-properties.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-locked-callback.o: mn-locked-callback.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-locked-callback.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-locked-callback.Tpo" -c -o mail_notification-mn-locked-callback.o `test -f 'mn-locked-callback.c' || echo '$(srcdir)/'`mn-locked-callback.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-locked-callback.Tpo" "$(DEPDIR)/mail_notification-mn-locked-callback.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-locked-callback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-locked-callback.c' object='mail_notification-mn-locked-callback.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-pop3-mailbox-properties.obj `if test -f 'mn-pop3-mailbox-properties.c'; then $(CYGPATH_W) 'mn-pop3-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-pop3-mailbox-properties.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-locked-callback.o `test -f 'mn-locked-callback.c' || echo '$(srcdir)/'`mn-locked-callback.c
 
-mail_notification-mn-pop3-mailbox.o: mn-pop3-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pop3-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo" -c -o mail_notification-mn-pop3-mailbox.o `test -f 'mn-pop3-mailbox.c' || echo '$(srcdir)/'`mn-pop3-mailbox.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pop3-mailbox.c' object='mail_notification-mn-pop3-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-locked-callback.obj: mn-locked-callback.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-locked-callback.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-locked-callback.Tpo" -c -o mail_notification-mn-locked-callback.obj `if test -f 'mn-locked-callback.c'; then $(CYGPATH_W) 'mn-locked-callback.c'; else $(CYGPATH_W) '$(srcdir)/mn-locked-callback.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-locked-callback.Tpo" "$(DEPDIR)/mail_notification-mn-locked-callback.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-locked-callback.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-locked-callback.c' object='mail_notification-mn-locked-callback.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-pop3-mailbox.o `test -f 'mn-pop3-mailbox.c' || echo '$(srcdir)/'`mn-pop3-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-locked-callback.obj `if test -f 'mn-locked-callback.c'; then $(CYGPATH_W) 'mn-locked-callback.c'; else $(CYGPATH_W) '$(srcdir)/mn-locked-callback.c'; fi`
 
-mail_notification-mn-pop3-mailbox.obj: mn-pop3-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pop3-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo" -c -o mail_notification-mn-pop3-mailbox.obj `if test -f 'mn-pop3-mailbox.c'; then $(CYGPATH_W) 'mn-pop3-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-pop3-mailbox.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pop3-mailbox.c' object='mail_notification-mn-pop3-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-stock.o: mn-stock.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-stock.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-stock.Tpo" -c -o mail_notification-mn-stock.o `test -f 'mn-stock.c' || echo '$(srcdir)/'`mn-stock.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-stock.Tpo" "$(DEPDIR)/mail_notification-mn-stock.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-stock.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-stock.c' object='mail_notification-mn-stock.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-pop3-mailbox.obj `if test -f 'mn-pop3-mailbox.c'; then $(CYGPATH_W) 'mn-pop3-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-pop3-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-stock.o `test -f 'mn-stock.c' || echo '$(srcdir)/'`mn-stock.c
 
-mail_notification-mn-imap-mailbox-properties.o: mn-imap-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-imap-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo" -c -o mail_notification-mn-imap-mailbox-properties.o `test -f 'mn-imap-mailbox-properties.c' || echo '$(srcdir)/'`mn-imap-mailbox-properties.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-imap-mailbox-properties.c' object='mail_notification-mn-imap-mailbox-properties.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-stock.obj: mn-stock.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-stock.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-stock.Tpo" -c -o mail_notification-mn-stock.obj `if test -f 'mn-stock.c'; then $(CYGPATH_W) 'mn-stock.c'; else $(CYGPATH_W) '$(srcdir)/mn-stock.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-stock.Tpo" "$(DEPDIR)/mail_notification-mn-stock.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-stock.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-stock.c' object='mail_notification-mn-stock.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-imap-mailbox-properties.o `test -f 'mn-imap-mailbox-properties.c' || echo '$(srcdir)/'`mn-imap-mailbox-properties.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-stock.obj `if test -f 'mn-stock.c'; then $(CYGPATH_W) 'mn-stock.c'; else $(CYGPATH_W) '$(srcdir)/mn-stock.c'; fi`
 
-mail_notification-mn-imap-mailbox-properties.obj: mn-imap-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-imap-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo" -c -o mail_notification-mn-imap-mailbox-properties.obj `if test -f 'mn-imap-mailbox-properties.c'; then $(CYGPATH_W) 'mn-imap-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-imap-mailbox-properties.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-imap-mailbox-properties.c' object='mail_notification-mn-imap-mailbox-properties.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-util.o: mn-util.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-util.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-util.Tpo" -c -o mail_notification-mn-util.o `test -f 'mn-util.c' || echo '$(srcdir)/'`mn-util.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-util.Tpo" "$(DEPDIR)/mail_notification-mn-util.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-util.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-util.c' object='mail_notification-mn-util.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-imap-mailbox-properties.obj `if test -f 'mn-imap-mailbox-properties.c'; then $(CYGPATH_W) 'mn-imap-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-imap-mailbox-properties.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-util.o `test -f 'mn-util.c' || echo '$(srcdir)/'`mn-util.c
 
-mail_notification-mn-imap-mailbox.o: mn-imap-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-imap-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo" -c -o mail_notification-mn-imap-mailbox.o `test -f 'mn-imap-mailbox.c' || echo '$(srcdir)/'`mn-imap-mailbox.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-imap-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-imap-mailbox.c' object='mail_notification-mn-imap-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-util.obj: mn-util.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-util.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-util.Tpo" -c -o mail_notification-mn-util.obj `if test -f 'mn-util.c'; then $(CYGPATH_W) 'mn-util.c'; else $(CYGPATH_W) '$(srcdir)/mn-util.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-util.Tpo" "$(DEPDIR)/mail_notification-mn-util.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-util.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-util.c' object='mail_notification-mn-util.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-imap-mailbox.o `test -f 'mn-imap-mailbox.c' || echo '$(srcdir)/'`mn-imap-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-util.obj `if test -f 'mn-util.c'; then $(CYGPATH_W) 'mn-util.c'; else $(CYGPATH_W) '$(srcdir)/mn-util.c'; fi`
 
-mail_notification-mn-imap-mailbox.obj: mn-imap-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-imap-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo" -c -o mail_notification-mn-imap-mailbox.obj `if test -f 'mn-imap-mailbox.c'; then $(CYGPATH_W) 'mn-imap-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-imap-mailbox.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-imap-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-imap-mailbox.c' object='mail_notification-mn-imap-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-vfs.o: mn-vfs.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs.Tpo" -c -o mail_notification-mn-vfs.o `test -f 'mn-vfs.c' || echo '$(srcdir)/'`mn-vfs.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs.Tpo" "$(DEPDIR)/mail_notification-mn-vfs.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs.c' object='mail_notification-mn-vfs.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-imap-mailbox.obj `if test -f 'mn-imap-mailbox.c'; then $(CYGPATH_W) 'mn-imap-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-imap-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-vfs.o `test -f 'mn-vfs.c' || echo '$(srcdir)/'`mn-vfs.c
 
-mail_notification-mn-authenticated-mailbox-properties.o: mn-authenticated-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-authenticated-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo" -c -o mail_notification-mn-authenticated-mailbox-properties.o `test -f 'mn-authenticated-mailbox-properties.c' || echo '$(srcdir)/'`mn-authenticated-mailbox-properties.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-authenticated-mailbox-properties.c' object='mail_notification-mn-authenticated-mailbox-properties.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-vfs.obj: mn-vfs.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs.Tpo" -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`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs.Tpo" "$(DEPDIR)/mail_notification-mn-vfs.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs.c' object='mail_notification-mn-vfs.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-authenticated-mailbox-properties.o `test -f 'mn-authenticated-mailbox-properties.c' || echo '$(srcdir)/'`mn-authenticated-mailbox-properties.c
+@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-authenticated-mailbox-properties.obj: mn-authenticated-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-authenticated-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo" -c -o mail_notification-mn-authenticated-mailbox-properties.obj `if test -f 'mn-authenticated-mailbox-properties.c'; then $(CYGPATH_W) 'mn-authenticated-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-authenticated-mailbox-properties.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-authenticated-mailbox-properties.c' object='mail_notification-mn-authenticated-mailbox-properties.obj' libtool=no @AMDEPBACKSLASH@
+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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nautilus-cell-renderer-pixbuf-emblem.c' object='mail_notification-nautilus-cell-renderer-pixbuf-emblem.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-authenticated-mailbox-properties.obj `if test -f 'mn-authenticated-mailbox-properties.c'; then $(CYGPATH_W) 'mn-authenticated-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-authenticated-mailbox-properties.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -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
 
-mail_notification-mn-authenticated-mailbox.o: mn-authenticated-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-authenticated-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo" -c -o mail_notification-mn-authenticated-mailbox.o `test -f 'mn-authenticated-mailbox.c' || echo '$(srcdir)/'`mn-authenticated-mailbox.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-authenticated-mailbox.c' object='mail_notification-mn-authenticated-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-nautilus-cell-renderer-pixbuf-emblem.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-nautilus-cell-renderer-pixbuf-emblem.Tpo" -c -o mail_notification-nautilus-cell-renderer-pixbuf-emblem.obj `if test -f 'nautilus-cell-renderer-pixbuf-emblem.c'; then $(CYGPATH_W) 'nautilus-cell-renderer-pixbuf-emblem.c'; else $(CYGPATH_W) '$(srcdir)/nautilus-cell-renderer-pixbuf-emblem.c'; fi`; \
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nautilus-cell-renderer-pixbuf-emblem.c' object='mail_notification-nautilus-cell-renderer-pixbuf-emblem.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-authenticated-mailbox.o `test -f 'mn-authenticated-mailbox.c' || echo '$(srcdir)/'`mn-authenticated-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-nautilus-cell-renderer-pixbuf-emblem.obj `if test -f 'nautilus-cell-renderer-pixbuf-emblem.c'; then $(CYGPATH_W) 'nautilus-cell-renderer-pixbuf-emblem.c'; else $(CYGPATH_W) '$(srcdir)/nautilus-cell-renderer-pixbuf-emblem.c'; fi`
 
-mail_notification-mn-authenticated-mailbox.obj: mn-authenticated-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-authenticated-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo" -c -o mail_notification-mn-authenticated-mailbox.obj `if test -f 'mn-authenticated-mailbox.c'; then $(CYGPATH_W) 'mn-authenticated-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-authenticated-mailbox.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-authenticated-mailbox.c' object='mail_notification-mn-authenticated-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-about-dialog.o: mn-about-dialog.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-about-dialog.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo" -c -o mail_notification-mn-about-dialog.o `test -f 'mn-about-dialog.c' || echo '$(srcdir)/'`mn-about-dialog.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-about-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-about-dialog.c' object='mail_notification-mn-about-dialog.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-authenticated-mailbox.obj `if test -f 'mn-authenticated-mailbox.c'; then $(CYGPATH_W) 'mn-authenticated-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-authenticated-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-about-dialog.o `test -f 'mn-about-dialog.c' || echo '$(srcdir)/'`mn-about-dialog.c
 
-mail_notification-mn-auth-combo-box.o: mn-auth-combo-box.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-auth-combo-box.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo" -c -o mail_notification-mn-auth-combo-box.o `test -f 'mn-auth-combo-box.c' || echo '$(srcdir)/'`mn-auth-combo-box.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo" "$(DEPDIR)/mail_notification-mn-auth-combo-box.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-auth-combo-box.c' object='mail_notification-mn-auth-combo-box.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-about-dialog.obj: mn-about-dialog.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-about-dialog.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo" -c -o mail_notification-mn-about-dialog.obj `if test -f 'mn-about-dialog.c'; then $(CYGPATH_W) 'mn-about-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-about-dialog.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-about-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-about-dialog.c' object='mail_notification-mn-about-dialog.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-auth-combo-box.o `test -f 'mn-auth-combo-box.c' || echo '$(srcdir)/'`mn-auth-combo-box.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-about-dialog.obj `if test -f 'mn-about-dialog.c'; then $(CYGPATH_W) 'mn-about-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-about-dialog.c'; fi`
 
-mail_notification-mn-auth-combo-box.obj: mn-auth-combo-box.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-auth-combo-box.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo" -c -o mail_notification-mn-auth-combo-box.obj `if test -f 'mn-auth-combo-box.c'; then $(CYGPATH_W) 'mn-auth-combo-box.c'; else $(CYGPATH_W) '$(srcdir)/mn-auth-combo-box.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo" "$(DEPDIR)/mail_notification-mn-auth-combo-box.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-auth-combo-box.c' object='mail_notification-mn-auth-combo-box.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-autodetect-mailbox-properties.o: mn-autodetect-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-autodetect-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo" -c -o mail_notification-mn-autodetect-mailbox-properties.o `test -f 'mn-autodetect-mailbox-properties.c' || echo '$(srcdir)/'`mn-autodetect-mailbox-properties.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-autodetect-mailbox-properties.c' object='mail_notification-mn-autodetect-mailbox-properties.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-auth-combo-box.obj `if test -f 'mn-auth-combo-box.c'; then $(CYGPATH_W) 'mn-auth-combo-box.c'; else $(CYGPATH_W) '$(srcdir)/mn-auth-combo-box.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-autodetect-mailbox-properties.o `test -f 'mn-autodetect-mailbox-properties.c' || echo '$(srcdir)/'`mn-autodetect-mailbox-properties.c
 
-mail_notification-mn-pi-mailbox-properties.o: mn-pi-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pi-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo" -c -o mail_notification-mn-pi-mailbox-properties.o `test -f 'mn-pi-mailbox-properties.c' || echo '$(srcdir)/'`mn-pi-mailbox-properties.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pi-mailbox-properties.c' object='mail_notification-mn-pi-mailbox-properties.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-autodetect-mailbox-properties.obj: mn-autodetect-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-autodetect-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo" -c -o mail_notification-mn-autodetect-mailbox-properties.obj `if test -f 'mn-autodetect-mailbox-properties.c'; then $(CYGPATH_W) 'mn-autodetect-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-autodetect-mailbox-properties.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-autodetect-mailbox-properties.c' object='mail_notification-mn-autodetect-mailbox-properties.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-pi-mailbox-properties.o `test -f 'mn-pi-mailbox-properties.c' || echo '$(srcdir)/'`mn-pi-mailbox-properties.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-autodetect-mailbox-properties.obj `if test -f 'mn-autodetect-mailbox-properties.c'; then $(CYGPATH_W) 'mn-autodetect-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-autodetect-mailbox-properties.c'; fi`
 
-mail_notification-mn-pi-mailbox-properties.obj: mn-pi-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pi-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo" -c -o mail_notification-mn-pi-mailbox-properties.obj `if test -f 'mn-pi-mailbox-properties.c'; then $(CYGPATH_W) 'mn-pi-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-pi-mailbox-properties.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pi-mailbox-properties.c' object='mail_notification-mn-pi-mailbox-properties.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-automation.o: mn-automation.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-automation.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-automation.Tpo" -c -o mail_notification-mn-automation.o `test -f 'mn-automation.c' || echo '$(srcdir)/'`mn-automation.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-automation.Tpo" "$(DEPDIR)/mail_notification-mn-automation.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-automation.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-automation.c' object='mail_notification-mn-automation.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-pi-mailbox-properties.obj `if test -f 'mn-pi-mailbox-properties.c'; then $(CYGPATH_W) 'mn-pi-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-pi-mailbox-properties.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-automation.o `test -f 'mn-automation.c' || echo '$(srcdir)/'`mn-automation.c
 
-mail_notification-mn-pi-mailbox.o: mn-pi-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pi-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo" -c -o mail_notification-mn-pi-mailbox.o `test -f 'mn-pi-mailbox.c' || echo '$(srcdir)/'`mn-pi-mailbox.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-pi-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pi-mailbox.c' object='mail_notification-mn-pi-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-automation.obj: mn-automation.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-automation.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-automation.Tpo" -c -o mail_notification-mn-automation.obj `if test -f 'mn-automation.c'; then $(CYGPATH_W) 'mn-automation.c'; else $(CYGPATH_W) '$(srcdir)/mn-automation.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-automation.Tpo" "$(DEPDIR)/mail_notification-mn-automation.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-automation.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-automation.c' object='mail_notification-mn-automation.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-pi-mailbox.o `test -f 'mn-pi-mailbox.c' || echo '$(srcdir)/'`mn-pi-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-automation.obj `if test -f 'mn-automation.c'; then $(CYGPATH_W) 'mn-automation.c'; else $(CYGPATH_W) '$(srcdir)/mn-automation.c'; fi`
 
-mail_notification-mn-pi-mailbox.obj: mn-pi-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pi-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo" -c -o mail_notification-mn-pi-mailbox.obj `if test -f 'mn-pi-mailbox.c'; then $(CYGPATH_W) 'mn-pi-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-pi-mailbox.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-pi-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pi-mailbox.c' object='mail_notification-mn-pi-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-blinking-image.o: mn-blinking-image.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-blinking-image.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo" -c -o mail_notification-mn-blinking-image.o `test -f 'mn-blinking-image.c' || echo '$(srcdir)/'`mn-blinking-image.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo" "$(DEPDIR)/mail_notification-mn-blinking-image.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-blinking-image.c' object='mail_notification-mn-blinking-image.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-pi-mailbox.obj `if test -f 'mn-pi-mailbox.c'; then $(CYGPATH_W) 'mn-pi-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-pi-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-blinking-image.o `test -f 'mn-blinking-image.c' || echo '$(srcdir)/'`mn-blinking-image.c
 
-mail_notification-mn-sylpheed-mailbox-backend.o: mn-sylpheed-mailbox-backend.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-sylpheed-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo" -c -o mail_notification-mn-sylpheed-mailbox-backend.o `test -f 'mn-sylpheed-mailbox-backend.c' || echo '$(srcdir)/'`mn-sylpheed-mailbox-backend.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-sylpheed-mailbox-backend.c' object='mail_notification-mn-sylpheed-mailbox-backend.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-blinking-image.obj: mn-blinking-image.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-blinking-image.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo" -c -o mail_notification-mn-blinking-image.obj `if test -f 'mn-blinking-image.c'; then $(CYGPATH_W) 'mn-blinking-image.c'; else $(CYGPATH_W) '$(srcdir)/mn-blinking-image.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo" "$(DEPDIR)/mail_notification-mn-blinking-image.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-blinking-image.c' object='mail_notification-mn-blinking-image.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-sylpheed-mailbox-backend.o `test -f 'mn-sylpheed-mailbox-backend.c' || echo '$(srcdir)/'`mn-sylpheed-mailbox-backend.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-blinking-image.obj `if test -f 'mn-blinking-image.c'; then $(CYGPATH_W) 'mn-blinking-image.c'; else $(CYGPATH_W) '$(srcdir)/mn-blinking-image.c'; fi`
 
-mail_notification-mn-sylpheed-mailbox-backend.obj: mn-sylpheed-mailbox-backend.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-sylpheed-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo" -c -o mail_notification-mn-sylpheed-mailbox-backend.obj `if test -f 'mn-sylpheed-mailbox-backend.c'; then $(CYGPATH_W) 'mn-sylpheed-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-sylpheed-mailbox-backend.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-sylpheed-mailbox-backend.c' object='mail_notification-mn-sylpheed-mailbox-backend.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-compact-message-view.o: mn-compact-message-view.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-compact-message-view.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-compact-message-view.Tpo" -c -o mail_notification-mn-compact-message-view.o `test -f 'mn-compact-message-view.c' || echo '$(srcdir)/'`mn-compact-message-view.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-compact-message-view.Tpo" "$(DEPDIR)/mail_notification-mn-compact-message-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-compact-message-view.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-compact-message-view.c' object='mail_notification-mn-compact-message-view.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-sylpheed-mailbox-backend.obj `if test -f 'mn-sylpheed-mailbox-backend.c'; then $(CYGPATH_W) 'mn-sylpheed-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-sylpheed-mailbox-backend.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-compact-message-view.o `test -f 'mn-compact-message-view.c' || echo '$(srcdir)/'`mn-compact-message-view.c
 
-mail_notification-mn-gmail-mailbox-properties.o: mn-gmail-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmail-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo" -c -o mail_notification-mn-gmail-mailbox-properties.o `test -f 'mn-gmail-mailbox-properties.c' || echo '$(srcdir)/'`mn-gmail-mailbox-properties.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmail-mailbox-properties.c' object='mail_notification-mn-gmail-mailbox-properties.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-compact-message-view.obj: mn-compact-message-view.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-compact-message-view.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-compact-message-view.Tpo" -c -o mail_notification-mn-compact-message-view.obj `if test -f 'mn-compact-message-view.c'; then $(CYGPATH_W) 'mn-compact-message-view.c'; else $(CYGPATH_W) '$(srcdir)/mn-compact-message-view.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-compact-message-view.Tpo" "$(DEPDIR)/mail_notification-mn-compact-message-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-compact-message-view.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-compact-message-view.c' object='mail_notification-mn-compact-message-view.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-gmail-mailbox-properties.o `test -f 'mn-gmail-mailbox-properties.c' || echo '$(srcdir)/'`mn-gmail-mailbox-properties.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-compact-message-view.obj `if test -f 'mn-compact-message-view.c'; then $(CYGPATH_W) 'mn-compact-message-view.c'; else $(CYGPATH_W) '$(srcdir)/mn-compact-message-view.c'; fi`
 
-mail_notification-mn-gmail-mailbox-properties.obj: mn-gmail-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmail-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo" -c -o mail_notification-mn-gmail-mailbox-properties.obj `if test -f 'mn-gmail-mailbox-properties.c'; then $(CYGPATH_W) 'mn-gmail-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmail-mailbox-properties.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmail-mailbox-properties.c' object='mail_notification-mn-gmail-mailbox-properties.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-dialog.o: mn-dialog.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-dialog.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-dialog.Tpo" -c -o mail_notification-mn-dialog.o `test -f 'mn-dialog.c' || echo '$(srcdir)/'`mn-dialog.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-dialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-dialog.c' object='mail_notification-mn-dialog.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-gmail-mailbox-properties.obj `if test -f 'mn-gmail-mailbox-properties.c'; then $(CYGPATH_W) 'mn-gmail-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmail-mailbox-properties.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-dialog.o `test -f 'mn-dialog.c' || echo '$(srcdir)/'`mn-dialog.c
 
-mail_notification-mn-gmail-mailbox.o: mn-gmail-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmail-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo" -c -o mail_notification-mn-gmail-mailbox.o `test -f 'mn-gmail-mailbox.c' || echo '$(srcdir)/'`mn-gmail-mailbox.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmail-mailbox.c' object='mail_notification-mn-gmail-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-dialog.obj: mn-dialog.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-dialog.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-dialog.Tpo" -c -o mail_notification-mn-dialog.obj `if test -f 'mn-dialog.c'; then $(CYGPATH_W) 'mn-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-dialog.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-dialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-dialog.c' object='mail_notification-mn-dialog.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-gmail-mailbox.o `test -f 'mn-gmail-mailbox.c' || echo '$(srcdir)/'`mn-gmail-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-dialog.obj `if test -f 'mn-dialog.c'; then $(CYGPATH_W) 'mn-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-dialog.c'; fi`
 
-mail_notification-mn-gmail-mailbox.obj: mn-gmail-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmail-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo" -c -o mail_notification-mn-gmail-mailbox.obj `if test -f 'mn-gmail-mailbox.c'; then $(CYGPATH_W) 'mn-gmail-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmail-mailbox.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmail-mailbox.c' object='mail_notification-mn-gmail-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-mail-icon.o: mn-mail-icon.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mail-icon.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo" -c -o mail_notification-mn-mail-icon.o `test -f 'mn-mail-icon.c' || echo '$(srcdir)/'`mn-mail-icon.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo" "$(DEPDIR)/mail_notification-mn-mail-icon.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mail-icon.c' object='mail_notification-mn-mail-icon.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-gmail-mailbox.obj `if test -f 'mn-gmail-mailbox.c'; then $(CYGPATH_W) 'mn-gmail-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmail-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mail-icon.o `test -f 'mn-mail-icon.c' || echo '$(srcdir)/'`mn-mail-icon.c
 
-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-mail-icon.obj: mn-mail-icon.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mail-icon.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo" -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`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo" "$(DEPDIR)/mail_notification-mn-mail-icon.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mail-icon.c' object='mail_notification-mn-mail-icon.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-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-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-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-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-mail-summary-popup.o `test -f 'mn-mail-summary-popup.c' || echo '$(srcdir)/'`mn-mail-summary-popup.c
 
-mail_notification-mn-evolution-mailbox-properties.o: mn-evolution-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-evolution-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo" -c -o mail_notification-mn-evolution-mailbox-properties.o `test -f 'mn-evolution-mailbox-properties.c' || echo '$(srcdir)/'`mn-evolution-mailbox-properties.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-mailbox-properties.c' object='mail_notification-mn-evolution-mailbox-properties.o' libtool=no @AMDEPBACKSLASH@
+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-evolution-mailbox-properties.o `test -f 'mn-evolution-mailbox-properties.c' || echo '$(srcdir)/'`mn-evolution-mailbox-properties.c
+@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-evolution-mailbox-properties.obj: mn-evolution-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-evolution-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo" -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`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-mailbox-properties.c' object='mail_notification-mn-evolution-mailbox-properties.obj' libtool=no @AMDEPBACKSLASH@
+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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox.c' object='mail_notification-mn-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-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`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mailbox.o `test -f 'mn-mailbox.c' || echo '$(srcdir)/'`mn-mailbox.c
 
-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; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-mailbox.c' object='mail_notification-mn-evolution-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-mailbox.obj: mn-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox.Tpo" -c -o mail_notification-mn-mailbox.obj `if test -f 'mn-mailbox.c'; then $(CYGPATH_W) 'mn-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox.c'; fi`; \
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox.c' object='mail_notification-mn-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-mailbox.obj `if test -f 'mn-mailbox.c'; then $(CYGPATH_W) 'mn-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox.c'; fi`
+
+mail_notification-mn-mailbox-properties.o: mn-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo" -c -o mail_notification-mn-mailbox-properties.o `test -f 'mn-mailbox-properties.c' || echo '$(srcdir)/'`mn-mailbox-properties.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-properties.c' object='mail_notification-mn-mailbox-properties.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-mailbox-properties.o `test -f 'mn-mailbox-properties.c' || echo '$(srcdir)/'`mn-mailbox-properties.c
+
+mail_notification-mn-mailbox-properties.obj: mn-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo" -c -o mail_notification-mn-mailbox-properties.obj `if test -f 'mn-mailbox-properties.c'; then $(CYGPATH_W) 'mn-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-properties.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-properties.c' object='mail_notification-mn-mailbox-properties.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-mailbox-properties.obj `if test -f 'mn-mailbox-properties.c'; then $(CYGPATH_W) 'mn-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-properties.c'; fi`
+
+mail_notification-mn-mailbox-properties-dialog.o: mn-mailbox-properties-dialog.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-properties-dialog.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo" -c -o mail_notification-mn-mailbox-properties-dialog.o `test -f 'mn-mailbox-properties-dialog.c' || echo '$(srcdir)/'`mn-mailbox-properties-dialog.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-properties-dialog.c' object='mail_notification-mn-mailbox-properties-dialog.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-mailbox-properties-dialog.o `test -f 'mn-mailbox-properties-dialog.c' || echo '$(srcdir)/'`mn-mailbox-properties-dialog.c
+
+mail_notification-mn-mailbox-properties-dialog.obj: mn-mailbox-properties-dialog.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-properties-dialog.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo" -c -o mail_notification-mn-mailbox-properties-dialog.obj `if test -f 'mn-mailbox-properties-dialog.c'; then $(CYGPATH_W) 'mn-mailbox-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-properties-dialog.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-properties-dialog.c' object='mail_notification-mn-mailbox-properties-dialog.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-mailbox-properties-dialog.obj `if test -f 'mn-mailbox-properties-dialog.c'; then $(CYGPATH_W) 'mn-mailbox-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-properties-dialog.c'; fi`
+
+mail_notification-mn-mailbox-view.o: mn-mailbox-view.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-view.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo" -c -o mail_notification-mn-mailbox-view.o `test -f 'mn-mailbox-view.c' || echo '$(srcdir)/'`mn-mailbox-view.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-view.c' object='mail_notification-mn-mailbox-view.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-mailbox-view.o `test -f 'mn-mailbox-view.c' || echo '$(srcdir)/'`mn-mailbox-view.c
+
+mail_notification-mn-mailbox-view.obj: mn-mailbox-view.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-view.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo" -c -o mail_notification-mn-mailbox-view.obj `if test -f 'mn-mailbox-view.c'; then $(CYGPATH_W) 'mn-mailbox-view.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-view.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-view.c' object='mail_notification-mn-mailbox-view.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-mailbox-view.obj `if test -f 'mn-mailbox-view.c'; then $(CYGPATH_W) 'mn-mailbox-view.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-view.c'; fi`
+
+mail_notification-mn-mailboxes.o: mn-mailboxes.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailboxes.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo" -c -o mail_notification-mn-mailboxes.o `test -f 'mn-mailboxes.c' || echo '$(srcdir)/'`mn-mailboxes.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo" "$(DEPDIR)/mail_notification-mn-mailboxes.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailboxes.c' object='mail_notification-mn-mailboxes.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-mailboxes.o `test -f 'mn-mailboxes.c' || echo '$(srcdir)/'`mn-mailboxes.c
+
+mail_notification-mn-mailboxes.obj: mn-mailboxes.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailboxes.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo" -c -o mail_notification-mn-mailboxes.obj `if test -f 'mn-mailboxes.c'; then $(CYGPATH_W) 'mn-mailboxes.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailboxes.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo" "$(DEPDIR)/mail_notification-mn-mailboxes.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailboxes.c' object='mail_notification-mn-mailboxes.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-mailboxes.obj `if test -f 'mn-mailboxes.c'; then $(CYGPATH_W) 'mn-mailboxes.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailboxes.c'; fi`
+
+mail_notification-mn-message.o: mn-message.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message.Tpo" -c -o mail_notification-mn-message.o `test -f 'mn-message.c' || echo '$(srcdir)/'`mn-message.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message.Tpo" "$(DEPDIR)/mail_notification-mn-message.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message.c' object='mail_notification-mn-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-message.o `test -f 'mn-message.c' || echo '$(srcdir)/'`mn-message.c
+
+mail_notification-mn-message.obj: mn-message.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message.Tpo" -c -o mail_notification-mn-message.obj `if test -f 'mn-message.c'; then $(CYGPATH_W) 'mn-message.c'; else $(CYGPATH_W) '$(srcdir)/mn-message.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message.Tpo" "$(DEPDIR)/mail_notification-mn-message.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message.c' object='mail_notification-mn-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-message.obj `if test -f 'mn-message.c'; then $(CYGPATH_W) 'mn-message.c'; else $(CYGPATH_W) '$(srcdir)/mn-message.c'; fi`
+
+mail_notification-mn-message-view.o: mn-message-view.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message-view.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message-view.Tpo" -c -o mail_notification-mn-message-view.o `test -f 'mn-message-view.c' || echo '$(srcdir)/'`mn-message-view.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message-view.Tpo" "$(DEPDIR)/mail_notification-mn-message-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message-view.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message-view.c' object='mail_notification-mn-message-view.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-message-view.o `test -f 'mn-message-view.c' || echo '$(srcdir)/'`mn-message-view.c
+
+mail_notification-mn-message-view.obj: mn-message-view.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message-view.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message-view.Tpo" -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`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message-view.Tpo" "$(DEPDIR)/mail_notification-mn-message-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message-view.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message-view.c' object='mail_notification-mn-message-view.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-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-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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-properties-dialog.c' object='mail_notification-mn-properties-dialog.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-properties-dialog.o `test -f 'mn-properties-dialog.c' || echo '$(srcdir)/'`mn-properties-dialog.c
+
+mail_notification-mn-properties-dialog.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-properties-dialog.Tpo" -c -o mail_notification-mn-properties-dialog.obj `if test -f 'mn-properties-dialog.c'; then $(CYGPATH_W) 'mn-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-properties-dialog.c'; fi`; \
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-properties-dialog.c' object='mail_notification-mn-properties-dialog.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-mailbox.o `test -f 'mn-evolution-mailbox.c' || echo '$(srcdir)/'`mn-evolution-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-properties-dialog.obj `if test -f 'mn-properties-dialog.c'; then $(CYGPATH_W) 'mn-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-properties-dialog.c'; fi`
 
-mail_notification-mn-evolution-mailbox.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo" -c -o mail_notification-mn-evolution-mailbox.obj `if test -f 'mn-evolution-mailbox.c'; then $(CYGPATH_W) 'mn-evolution-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-evolution-mailbox.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-mailbox.c' object='mail_notification-mn-evolution-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-shell.o: mn-shell.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-shell.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-shell.Tpo" -c -o mail_notification-mn-shell.o `test -f 'mn-shell.c' || echo '$(srcdir)/'`mn-shell.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-shell.Tpo" "$(DEPDIR)/mail_notification-mn-shell.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-shell.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-shell.c' object='mail_notification-mn-shell.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-mailbox.obj `if test -f 'mn-evolution-mailbox.c'; then $(CYGPATH_W) 'mn-evolution-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-evolution-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-shell.o `test -f 'mn-shell.c' || echo '$(srcdir)/'`mn-shell.c
 
-mail_notification-mn-custom-vfs-mailbox.o: mn-custom-vfs-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-custom-vfs-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo" -c -o mail_notification-mn-custom-vfs-mailbox.o `test -f 'mn-custom-vfs-mailbox.c' || echo '$(srcdir)/'`mn-custom-vfs-mailbox.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-custom-vfs-mailbox.c' object='mail_notification-mn-custom-vfs-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-shell.obj: mn-shell.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-shell.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-shell.Tpo" -c -o mail_notification-mn-shell.obj `if test -f 'mn-shell.c'; then $(CYGPATH_W) 'mn-shell.c'; else $(CYGPATH_W) '$(srcdir)/mn-shell.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-shell.Tpo" "$(DEPDIR)/mail_notification-mn-shell.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-shell.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-shell.c' object='mail_notification-mn-shell.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-custom-vfs-mailbox.o `test -f 'mn-custom-vfs-mailbox.c' || echo '$(srcdir)/'`mn-custom-vfs-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-shell.obj `if test -f 'mn-shell.c'; then $(CYGPATH_W) 'mn-shell.c'; else $(CYGPATH_W) '$(srcdir)/mn-shell.c'; fi`
 
-mail_notification-mn-custom-vfs-mailbox.obj: mn-custom-vfs-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-custom-vfs-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo" -c -o mail_notification-mn-custom-vfs-mailbox.obj `if test -f 'mn-custom-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-custom-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-custom-vfs-mailbox.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-custom-vfs-mailbox.c' object='mail_notification-mn-custom-vfs-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-standard-message-view.o: mn-standard-message-view.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-standard-message-view.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-standard-message-view.Tpo" -c -o mail_notification-mn-standard-message-view.o `test -f 'mn-standard-message-view.c' || echo '$(srcdir)/'`mn-standard-message-view.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-standard-message-view.Tpo" "$(DEPDIR)/mail_notification-mn-standard-message-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-standard-message-view.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-standard-message-view.c' object='mail_notification-mn-standard-message-view.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-custom-vfs-mailbox.obj `if test -f 'mn-custom-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-custom-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-custom-vfs-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-standard-message-view.o `test -f 'mn-standard-message-view.c' || echo '$(srcdir)/'`mn-standard-message-view.c
 
-mail_notification-mn-system-vfs-mailbox-properties.o: mn-system-vfs-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-system-vfs-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo" -c -o mail_notification-mn-system-vfs-mailbox-properties.o `test -f 'mn-system-vfs-mailbox-properties.c' || echo '$(srcdir)/'`mn-system-vfs-mailbox-properties.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-system-vfs-mailbox-properties.c' object='mail_notification-mn-system-vfs-mailbox-properties.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-standard-message-view.obj: mn-standard-message-view.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-standard-message-view.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-standard-message-view.Tpo" -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`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-standard-message-view.Tpo" "$(DEPDIR)/mail_notification-mn-standard-message-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-standard-message-view.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-standard-message-view.c' object='mail_notification-mn-standard-message-view.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-system-vfs-mailbox-properties.o `test -f 'mn-system-vfs-mailbox-properties.c' || echo '$(srcdir)/'`mn-system-vfs-mailbox-properties.c
+@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-system-vfs-mailbox-properties.obj: mn-system-vfs-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-system-vfs-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo" -c -o mail_notification-mn-system-vfs-mailbox-properties.obj `if test -f 'mn-system-vfs-mailbox-properties.c'; then $(CYGPATH_W) 'mn-system-vfs-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-system-vfs-mailbox-properties.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-system-vfs-mailbox-properties.c' object='mail_notification-mn-system-vfs-mailbox-properties.obj' libtool=no @AMDEPBACKSLASH@
+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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-text-table.c' object='mail_notification-mn-text-table.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-system-vfs-mailbox-properties.obj `if test -f 'mn-system-vfs-mailbox-properties.c'; then $(CYGPATH_W) 'mn-system-vfs-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-system-vfs-mailbox-properties.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-text-table.o `test -f 'mn-text-table.c' || echo '$(srcdir)/'`mn-text-table.c
 
-mail_notification-mn-system-vfs-mailbox.o: mn-system-vfs-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-system-vfs-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo" -c -o mail_notification-mn-system-vfs-mailbox.o `test -f 'mn-system-vfs-mailbox.c' || echo '$(srcdir)/'`mn-system-vfs-mailbox.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-system-vfs-mailbox.c' object='mail_notification-mn-system-vfs-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-text-table.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-text-table.Tpo" -c -o mail_notification-mn-text-table.obj `if test -f 'mn-text-table.c'; then $(CYGPATH_W) 'mn-text-table.c'; else $(CYGPATH_W) '$(srcdir)/mn-text-table.c'; fi`; \
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-text-table.c' object='mail_notification-mn-text-table.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-system-vfs-mailbox.o `test -f 'mn-system-vfs-mailbox.c' || echo '$(srcdir)/'`mn-system-vfs-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-text-table.obj `if test -f 'mn-text-table.c'; then $(CYGPATH_W) 'mn-text-table.c'; else $(CYGPATH_W) '$(srcdir)/mn-text-table.c'; fi`
 
-mail_notification-mn-system-vfs-mailbox.obj: mn-system-vfs-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-system-vfs-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo" -c -o mail_notification-mn-system-vfs-mailbox.obj `if test -f 'mn-system-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-system-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-system-vfs-mailbox.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-system-vfs-mailbox.c' object='mail_notification-mn-system-vfs-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-tooltips.o: mn-tooltips.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-tooltips.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-tooltips.Tpo" -c -o mail_notification-mn-tooltips.o `test -f 'mn-tooltips.c' || echo '$(srcdir)/'`mn-tooltips.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-tooltips.Tpo" "$(DEPDIR)/mail_notification-mn-tooltips.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-tooltips.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-tooltips.c' object='mail_notification-mn-tooltips.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-system-vfs-mailbox.obj `if test -f 'mn-system-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-system-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-system-vfs-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-tooltips.o `test -f 'mn-tooltips.c' || echo '$(srcdir)/'`mn-tooltips.c
 
-mail_notification-mn-vfs-mailbox-backend.o: mn-vfs-mailbox-backend.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo" -c -o mail_notification-mn-vfs-mailbox-backend.o `test -f 'mn-vfs-mailbox-backend.c' || echo '$(srcdir)/'`mn-vfs-mailbox-backend.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-mailbox-backend.c' object='mail_notification-mn-vfs-mailbox-backend.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-tooltips.obj: mn-tooltips.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-tooltips.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-tooltips.Tpo" -c -o mail_notification-mn-tooltips.obj `if test -f 'mn-tooltips.c'; then $(CYGPATH_W) 'mn-tooltips.c'; else $(CYGPATH_W) '$(srcdir)/mn-tooltips.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-tooltips.Tpo" "$(DEPDIR)/mail_notification-mn-tooltips.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-tooltips.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-tooltips.c' object='mail_notification-mn-tooltips.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-mailbox-backend.o `test -f 'mn-vfs-mailbox-backend.c' || echo '$(srcdir)/'`mn-vfs-mailbox-backend.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-tooltips.obj `if test -f 'mn-tooltips.c'; then $(CYGPATH_W) 'mn-tooltips.c'; else $(CYGPATH_W) '$(srcdir)/mn-tooltips.c'; fi`
 
-mail_notification-mn-vfs-mailbox-backend.obj: mn-vfs-mailbox-backend.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo" -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`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-mailbox-backend.c' object='mail_notification-mn-vfs-mailbox-backend.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-mbox-mailbox-backend.o: mn-mbox-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mbox-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo" -c -o mail_notification-mn-mbox-mailbox-backend.o `test -f 'mn-mbox-mailbox-backend.c' || echo '$(srcdir)/'`mn-mbox-mailbox-backend.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mbox-mailbox-backend.c' object='mail_notification-mn-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-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`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mbox-mailbox-backend.o `test -f 'mn-mbox-mailbox-backend.c' || echo '$(srcdir)/'`mn-mbox-mailbox-backend.c
 
-mail_notification-mn-vfs-mailbox.o: mn-vfs-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo" -c -o mail_notification-mn-vfs-mailbox.o `test -f 'mn-vfs-mailbox.c' || echo '$(srcdir)/'`mn-vfs-mailbox.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-mailbox.c' object='mail_notification-mn-vfs-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-mbox-mailbox-backend.obj: mn-mbox-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mbox-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo" -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`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mbox-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mbox-mailbox-backend.c' object='mail_notification-mn-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-vfs-mailbox.o `test -f 'mn-vfs-mailbox.c' || echo '$(srcdir)/'`mn-vfs-mailbox.c
+@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-vfs-mailbox.obj: mn-vfs-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo" -c -o mail_notification-mn-vfs-mailbox.obj `if test -f 'mn-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-vfs-mailbox.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-mailbox.c' object='mail_notification-mn-vfs-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mh-mailbox-backend.c' object='mail_notification-mn-mh-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-vfs-mailbox.obj `if test -f 'mn-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-vfs-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mh-mailbox-backend.o `test -f 'mn-mh-mailbox-backend.c' || echo '$(srcdir)/'`mn-mh-mailbox-backend.c
 
-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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-reentrant-mailbox.c' object='mail_notification-mn-reentrant-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-mh-mailbox-backend.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mh-mailbox-backend.Tpo" -c -o mail_notification-mn-mh-mailbox-backend.obj `if test -f 'mn-mh-mailbox-backend.c'; then $(CYGPATH_W) 'mn-mh-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-mh-mailbox-backend.c'; fi`; \
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mh-mailbox-backend.c' object='mail_notification-mn-mh-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-reentrant-mailbox.o `test -f 'mn-reentrant-mailbox.c' || echo '$(srcdir)/'`mn-reentrant-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-mh-mailbox-backend.obj `if test -f 'mn-mh-mailbox-backend.c'; then $(CYGPATH_W) 'mn-mh-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-mh-mailbox-backend.c'; fi`
 
-mail_notification-mn-reentrant-mailbox.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-reentrant-mailbox.Tpo" -c -o mail_notification-mn-reentrant-mailbox.obj `if test -f 'mn-reentrant-mailbox.c'; then $(CYGPATH_W) 'mn-reentrant-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-reentrant-mailbox.c'; fi`; \
-@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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-reentrant-mailbox.c' object='mail_notification-mn-reentrant-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-maildir-mailbox-backend.o: mn-maildir-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-maildir-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo" -c -o mail_notification-mn-maildir-mailbox-backend.o `test -f 'mn-maildir-mailbox-backend.c' || echo '$(srcdir)/'`mn-maildir-mailbox-backend.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-maildir-mailbox-backend.c' object='mail_notification-mn-maildir-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-reentrant-mailbox.obj `if test -f 'mn-reentrant-mailbox.c'; then $(CYGPATH_W) 'mn-reentrant-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-reentrant-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-maildir-mailbox-backend.o `test -f 'mn-maildir-mailbox-backend.c' || echo '$(srcdir)/'`mn-maildir-mailbox-backend.c
 
-mail_notification-mn-gmime-stream-vfs.o: mn-gmime-stream-vfs.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmime-stream-vfs.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo" -c -o mail_notification-mn-gmime-stream-vfs.o `test -f 'mn-gmime-stream-vfs.c' || echo '$(srcdir)/'`mn-gmime-stream-vfs.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo" "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmime-stream-vfs.c' object='mail_notification-mn-gmime-stream-vfs.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-maildir-mailbox-backend.obj: mn-maildir-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-maildir-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo" -c -o mail_notification-mn-maildir-mailbox-backend.obj `if test -f 'mn-maildir-mailbox-backend.c'; then $(CYGPATH_W) 'mn-maildir-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-maildir-mailbox-backend.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-maildir-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-maildir-mailbox-backend.c' object='mail_notification-mn-maildir-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-gmime-stream-vfs.o `test -f 'mn-gmime-stream-vfs.c' || echo '$(srcdir)/'`mn-gmime-stream-vfs.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-maildir-mailbox-backend.obj `if test -f 'mn-maildir-mailbox-backend.c'; then $(CYGPATH_W) 'mn-maildir-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-maildir-mailbox-backend.c'; fi`
 
-mail_notification-mn-gmime-stream-vfs.obj: mn-gmime-stream-vfs.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmime-stream-vfs.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo" -c -o mail_notification-mn-gmime-stream-vfs.obj `if test -f 'mn-gmime-stream-vfs.c'; then $(CYGPATH_W) 'mn-gmime-stream-vfs.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmime-stream-vfs.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo" "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmime-stream-vfs.c' object='mail_notification-mn-gmime-stream-vfs.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-md5.o: mn-md5.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-md5.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-md5.Tpo" -c -o mail_notification-mn-md5.o `test -f 'mn-md5.c' || echo '$(srcdir)/'`mn-md5.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-md5.Tpo" "$(DEPDIR)/mail_notification-mn-md5.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-md5.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-md5.c' object='mail_notification-mn-md5.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-gmime-stream-vfs.obj `if test -f 'mn-gmime-stream-vfs.c'; then $(CYGPATH_W) 'mn-gmime-stream-vfs.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmime-stream-vfs.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-md5.o `test -f 'mn-md5.c' || echo '$(srcdir)/'`mn-md5.c
 
-mail_notification-mn-about-dialog.o: mn-about-dialog.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-about-dialog.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo" -c -o mail_notification-mn-about-dialog.o `test -f 'mn-about-dialog.c' || echo '$(srcdir)/'`mn-about-dialog.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-about-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-about-dialog.c' object='mail_notification-mn-about-dialog.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-md5.obj: mn-md5.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-md5.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-md5.Tpo" -c -o mail_notification-mn-md5.obj `if test -f 'mn-md5.c'; then $(CYGPATH_W) 'mn-md5.c'; else $(CYGPATH_W) '$(srcdir)/mn-md5.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-md5.Tpo" "$(DEPDIR)/mail_notification-mn-md5.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-md5.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-md5.c' object='mail_notification-mn-md5.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-about-dialog.o `test -f 'mn-about-dialog.c' || echo '$(srcdir)/'`mn-about-dialog.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-md5.obj `if test -f 'mn-md5.c'; then $(CYGPATH_W) 'mn-md5.c'; else $(CYGPATH_W) '$(srcdir)/mn-md5.c'; fi`
 
-mail_notification-mn-about-dialog.obj: mn-about-dialog.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-about-dialog.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo" -c -o mail_notification-mn-about-dialog.obj `if test -f 'mn-about-dialog.c'; then $(CYGPATH_W) 'mn-about-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-about-dialog.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-about-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-about-dialog.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-about-dialog.c' object='mail_notification-mn-about-dialog.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-pop3-mailbox.o: mn-pop3-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pop3-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo" -c -o mail_notification-mn-pop3-mailbox.o `test -f 'mn-pop3-mailbox.c' || echo '$(srcdir)/'`mn-pop3-mailbox.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pop3-mailbox.c' object='mail_notification-mn-pop3-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-about-dialog.obj `if test -f 'mn-about-dialog.c'; then $(CYGPATH_W) 'mn-about-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-about-dialog.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-pop3-mailbox.o `test -f 'mn-pop3-mailbox.c' || echo '$(srcdir)/'`mn-pop3-mailbox.c
 
-mail_notification-mn-autodetect-mailbox-properties.o: mn-autodetect-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-autodetect-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo" -c -o mail_notification-mn-autodetect-mailbox-properties.o `test -f 'mn-autodetect-mailbox-properties.c' || echo '$(srcdir)/'`mn-autodetect-mailbox-properties.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-autodetect-mailbox-properties.c' object='mail_notification-mn-autodetect-mailbox-properties.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-pop3-mailbox.obj: mn-pop3-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pop3-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo" -c -o mail_notification-mn-pop3-mailbox.obj `if test -f 'mn-pop3-mailbox.c'; then $(CYGPATH_W) 'mn-pop3-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-pop3-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pop3-mailbox.c' object='mail_notification-mn-pop3-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-autodetect-mailbox-properties.o `test -f 'mn-autodetect-mailbox-properties.c' || echo '$(srcdir)/'`mn-autodetect-mailbox-properties.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-pop3-mailbox.obj `if test -f 'mn-pop3-mailbox.c'; then $(CYGPATH_W) 'mn-pop3-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-pop3-mailbox.c'; fi`
 
-mail_notification-mn-autodetect-mailbox-properties.obj: mn-autodetect-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-autodetect-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo" -c -o mail_notification-mn-autodetect-mailbox-properties.obj `if test -f 'mn-autodetect-mailbox-properties.c'; then $(CYGPATH_W) 'mn-autodetect-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-autodetect-mailbox-properties.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-autodetect-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-autodetect-mailbox-properties.c' object='mail_notification-mn-autodetect-mailbox-properties.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-pop3-mailbox-properties.o: mn-pop3-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pop3-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo" -c -o mail_notification-mn-pop3-mailbox-properties.o `test -f 'mn-pop3-mailbox-properties.c' || echo '$(srcdir)/'`mn-pop3-mailbox-properties.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pop3-mailbox-properties.c' object='mail_notification-mn-pop3-mailbox-properties.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-autodetect-mailbox-properties.obj `if test -f 'mn-autodetect-mailbox-properties.c'; then $(CYGPATH_W) 'mn-autodetect-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-autodetect-mailbox-properties.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-pop3-mailbox-properties.o `test -f 'mn-pop3-mailbox-properties.c' || echo '$(srcdir)/'`mn-pop3-mailbox-properties.c
 
-mail_notification-mn-automation.o: mn-automation.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-automation.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-automation.Tpo" -c -o mail_notification-mn-automation.o `test -f 'mn-automation.c' || echo '$(srcdir)/'`mn-automation.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-automation.Tpo" "$(DEPDIR)/mail_notification-mn-automation.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-automation.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-automation.c' object='mail_notification-mn-automation.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-pop3-mailbox-properties.obj: mn-pop3-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pop3-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo" -c -o mail_notification-mn-pop3-mailbox-properties.obj `if test -f 'mn-pop3-mailbox-properties.c'; then $(CYGPATH_W) 'mn-pop3-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-pop3-mailbox-properties.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pop3-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pop3-mailbox-properties.c' object='mail_notification-mn-pop3-mailbox-properties.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-automation.o `test -f 'mn-automation.c' || echo '$(srcdir)/'`mn-automation.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-pop3-mailbox-properties.obj `if test -f 'mn-pop3-mailbox-properties.c'; then $(CYGPATH_W) 'mn-pop3-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-pop3-mailbox-properties.c'; fi`
 
-mail_notification-mn-automation.obj: mn-automation.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-automation.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-automation.Tpo" -c -o mail_notification-mn-automation.obj `if test -f 'mn-automation.c'; then $(CYGPATH_W) 'mn-automation.c'; else $(CYGPATH_W) '$(srcdir)/mn-automation.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-automation.Tpo" "$(DEPDIR)/mail_notification-mn-automation.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-automation.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-automation.c' object='mail_notification-mn-automation.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-imap-mailbox.o: mn-imap-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-imap-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo" -c -o mail_notification-mn-imap-mailbox.o `test -f 'mn-imap-mailbox.c' || echo '$(srcdir)/'`mn-imap-mailbox.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-imap-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-imap-mailbox.c' object='mail_notification-mn-imap-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-automation.obj `if test -f 'mn-automation.c'; then $(CYGPATH_W) 'mn-automation.c'; else $(CYGPATH_W) '$(srcdir)/mn-automation.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-imap-mailbox.o `test -f 'mn-imap-mailbox.c' || echo '$(srcdir)/'`mn-imap-mailbox.c
 
-mail_notification-mn-blinking-image.o: mn-blinking-image.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-blinking-image.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo" -c -o mail_notification-mn-blinking-image.o `test -f 'mn-blinking-image.c' || echo '$(srcdir)/'`mn-blinking-image.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo" "$(DEPDIR)/mail_notification-mn-blinking-image.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-blinking-image.c' object='mail_notification-mn-blinking-image.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-imap-mailbox.obj: mn-imap-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-imap-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo" -c -o mail_notification-mn-imap-mailbox.obj `if test -f 'mn-imap-mailbox.c'; then $(CYGPATH_W) 'mn-imap-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-imap-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-imap-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-imap-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-imap-mailbox.c' object='mail_notification-mn-imap-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-blinking-image.o `test -f 'mn-blinking-image.c' || echo '$(srcdir)/'`mn-blinking-image.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-imap-mailbox.obj `if test -f 'mn-imap-mailbox.c'; then $(CYGPATH_W) 'mn-imap-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-imap-mailbox.c'; fi`
 
-mail_notification-mn-blinking-image.obj: mn-blinking-image.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-blinking-image.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo" -c -o mail_notification-mn-blinking-image.obj `if test -f 'mn-blinking-image.c'; then $(CYGPATH_W) 'mn-blinking-image.c'; else $(CYGPATH_W) '$(srcdir)/mn-blinking-image.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo" "$(DEPDIR)/mail_notification-mn-blinking-image.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-blinking-image.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-blinking-image.c' object='mail_notification-mn-blinking-image.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-imap-mailbox-properties.o: mn-imap-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-imap-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo" -c -o mail_notification-mn-imap-mailbox-properties.o `test -f 'mn-imap-mailbox-properties.c' || echo '$(srcdir)/'`mn-imap-mailbox-properties.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-imap-mailbox-properties.c' object='mail_notification-mn-imap-mailbox-properties.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-blinking-image.obj `if test -f 'mn-blinking-image.c'; then $(CYGPATH_W) 'mn-blinking-image.c'; else $(CYGPATH_W) '$(srcdir)/mn-blinking-image.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-imap-mailbox-properties.o `test -f 'mn-imap-mailbox-properties.c' || echo '$(srcdir)/'`mn-imap-mailbox-properties.c
 
-mail_notification-mn-dialog.o: mn-dialog.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-dialog.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-dialog.Tpo" -c -o mail_notification-mn-dialog.o `test -f 'mn-dialog.c' || echo '$(srcdir)/'`mn-dialog.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-dialog.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-dialog.c' object='mail_notification-mn-dialog.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-imap-mailbox-properties.obj: mn-imap-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-imap-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo" -c -o mail_notification-mn-imap-mailbox-properties.obj `if test -f 'mn-imap-mailbox-properties.c'; then $(CYGPATH_W) 'mn-imap-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-imap-mailbox-properties.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-imap-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-imap-mailbox-properties.c' object='mail_notification-mn-imap-mailbox-properties.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-dialog.o `test -f 'mn-dialog.c' || echo '$(srcdir)/'`mn-dialog.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-imap-mailbox-properties.obj `if test -f 'mn-imap-mailbox-properties.c'; then $(CYGPATH_W) 'mn-imap-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-imap-mailbox-properties.c'; fi`
 
-mail_notification-mn-dialog.obj: mn-dialog.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-dialog.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-dialog.Tpo" -c -o mail_notification-mn-dialog.obj `if test -f 'mn-dialog.c'; then $(CYGPATH_W) 'mn-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-dialog.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-dialog.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-dialog.c' object='mail_notification-mn-dialog.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-client-session.o: mn-client-session.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-client-session.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-client-session.Tpo" -c -o mail_notification-mn-client-session.o `test -f 'mn-client-session.c' || echo '$(srcdir)/'`mn-client-session.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-client-session.Tpo" "$(DEPDIR)/mail_notification-mn-client-session.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-client-session.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-client-session.c' object='mail_notification-mn-client-session.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-dialog.obj `if test -f 'mn-dialog.c'; then $(CYGPATH_W) 'mn-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-dialog.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-client-session.o `test -f 'mn-client-session.c' || echo '$(srcdir)/'`mn-client-session.c
 
-mail_notification-mn-mail-icon.o: mn-mail-icon.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mail-icon.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo" -c -o mail_notification-mn-mail-icon.o `test -f 'mn-mail-icon.c' || echo '$(srcdir)/'`mn-mail-icon.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo" "$(DEPDIR)/mail_notification-mn-mail-icon.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mail-icon.c' object='mail_notification-mn-mail-icon.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-client-session.obj: mn-client-session.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-client-session.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-client-session.Tpo" -c -o mail_notification-mn-client-session.obj `if test -f 'mn-client-session.c'; then $(CYGPATH_W) 'mn-client-session.c'; else $(CYGPATH_W) '$(srcdir)/mn-client-session.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-client-session.Tpo" "$(DEPDIR)/mail_notification-mn-client-session.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-client-session.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-client-session.c' object='mail_notification-mn-client-session.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-icon.o `test -f 'mn-mail-icon.c' || echo '$(srcdir)/'`mn-mail-icon.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-client-session.obj `if test -f 'mn-client-session.c'; then $(CYGPATH_W) 'mn-client-session.c'; else $(CYGPATH_W) '$(srcdir)/mn-client-session.c'; fi`
 
-mail_notification-mn-mail-icon.obj: mn-mail-icon.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mail-icon.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo" -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`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo" "$(DEPDIR)/mail_notification-mn-mail-icon.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mail-icon.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mail-icon.c' object='mail_notification-mn-mail-icon.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-auth-combo-box.o: mn-auth-combo-box.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-auth-combo-box.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo" -c -o mail_notification-mn-auth-combo-box.o `test -f 'mn-auth-combo-box.c' || echo '$(srcdir)/'`mn-auth-combo-box.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo" "$(DEPDIR)/mail_notification-mn-auth-combo-box.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-auth-combo-box.c' object='mail_notification-mn-auth-combo-box.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-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`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-auth-combo-box.o `test -f 'mn-auth-combo-box.c' || echo '$(srcdir)/'`mn-auth-combo-box.c
 
-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@
+mail_notification-mn-auth-combo-box.obj: mn-auth-combo-box.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-auth-combo-box.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo" -c -o mail_notification-mn-auth-combo-box.obj `if test -f 'mn-auth-combo-box.c'; then $(CYGPATH_W) 'mn-auth-combo-box.c'; else $(CYGPATH_W) '$(srcdir)/mn-auth-combo-box.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo" "$(DEPDIR)/mail_notification-mn-auth-combo-box.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-auth-combo-box.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-auth-combo-box.c' object='mail_notification-mn-auth-combo-box.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.o `test -f 'mn-mail-summary-popup.c' || echo '$(srcdir)/'`mn-mail-summary-popup.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-auth-combo-box.obj `if test -f 'mn-auth-combo-box.c'; then $(CYGPATH_W) 'mn-auth-combo-box.c'; else $(CYGPATH_W) '$(srcdir)/mn-auth-combo-box.c'; fi`
 
-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@
+mail_notification-mn-pi-mailbox.o: mn-pi-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pi-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo" -c -o mail_notification-mn-pi-mailbox.o `test -f 'mn-pi-mailbox.c' || echo '$(srcdir)/'`mn-pi-mailbox.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-pi-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pi-mailbox.c' object='mail_notification-mn-pi-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-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_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-pi-mailbox.o `test -f 'mn-pi-mailbox.c' || echo '$(srcdir)/'`mn-pi-mailbox.c
 
-mail_notification-mn-mailbox-properties-dialog.o: mn-mailbox-properties-dialog.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-properties-dialog.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo" -c -o mail_notification-mn-mailbox-properties-dialog.o `test -f 'mn-mailbox-properties-dialog.c' || echo '$(srcdir)/'`mn-mailbox-properties-dialog.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-properties-dialog.c' object='mail_notification-mn-mailbox-properties-dialog.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-pi-mailbox.obj: mn-pi-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pi-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo" -c -o mail_notification-mn-pi-mailbox.obj `if test -f 'mn-pi-mailbox.c'; then $(CYGPATH_W) 'mn-pi-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-pi-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-pi-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pi-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pi-mailbox.c' object='mail_notification-mn-pi-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-mailbox-properties-dialog.o `test -f 'mn-mailbox-properties-dialog.c' || echo '$(srcdir)/'`mn-mailbox-properties-dialog.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-pi-mailbox.obj `if test -f 'mn-pi-mailbox.c'; then $(CYGPATH_W) 'mn-pi-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-pi-mailbox.c'; fi`
 
-mail_notification-mn-mailbox-properties-dialog.obj: mn-mailbox-properties-dialog.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-properties-dialog.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo" -c -o mail_notification-mn-mailbox-properties-dialog.obj `if test -f 'mn-mailbox-properties-dialog.c'; then $(CYGPATH_W) 'mn-mailbox-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-properties-dialog.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-properties-dialog.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-properties-dialog.c' object='mail_notification-mn-mailbox-properties-dialog.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-pi-mailbox-properties.o: mn-pi-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pi-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo" -c -o mail_notification-mn-pi-mailbox-properties.o `test -f 'mn-pi-mailbox-properties.c' || echo '$(srcdir)/'`mn-pi-mailbox-properties.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pi-mailbox-properties.c' object='mail_notification-mn-pi-mailbox-properties.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-mailbox-properties-dialog.obj `if test -f 'mn-mailbox-properties-dialog.c'; then $(CYGPATH_W) 'mn-mailbox-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-properties-dialog.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-pi-mailbox-properties.o `test -f 'mn-pi-mailbox-properties.c' || echo '$(srcdir)/'`mn-pi-mailbox-properties.c
 
-mail_notification-mn-mailbox-properties.o: mn-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo" -c -o mail_notification-mn-mailbox-properties.o `test -f 'mn-mailbox-properties.c' || echo '$(srcdir)/'`mn-mailbox-properties.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-properties.c' object='mail_notification-mn-mailbox-properties.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-pi-mailbox-properties.obj: mn-pi-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-pi-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo" -c -o mail_notification-mn-pi-mailbox-properties.obj `if test -f 'mn-pi-mailbox-properties.c'; then $(CYGPATH_W) 'mn-pi-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-pi-mailbox-properties.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-pi-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-pi-mailbox-properties.c' object='mail_notification-mn-pi-mailbox-properties.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-mailbox-properties.o `test -f 'mn-mailbox-properties.c' || echo '$(srcdir)/'`mn-mailbox-properties.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-pi-mailbox-properties.obj `if test -f 'mn-pi-mailbox-properties.c'; then $(CYGPATH_W) 'mn-pi-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-pi-mailbox-properties.c'; fi`
 
-mail_notification-mn-mailbox-properties.obj: mn-mailbox-properties.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo" -c -o mail_notification-mn-mailbox-properties.obj `if test -f 'mn-mailbox-properties.c'; then $(CYGPATH_W) 'mn-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-properties.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-properties.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-properties.c' object='mail_notification-mn-mailbox-properties.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-authenticated-mailbox.o: mn-authenticated-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-authenticated-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo" -c -o mail_notification-mn-authenticated-mailbox.o `test -f 'mn-authenticated-mailbox.c' || echo '$(srcdir)/'`mn-authenticated-mailbox.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-authenticated-mailbox.c' object='mail_notification-mn-authenticated-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-mailbox-properties.obj `if test -f 'mn-mailbox-properties.c'; then $(CYGPATH_W) 'mn-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-properties.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-authenticated-mailbox.o `test -f 'mn-authenticated-mailbox.c' || echo '$(srcdir)/'`mn-authenticated-mailbox.c
 
-mail_notification-mn-mailbox-view.o: mn-mailbox-view.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-view.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo" -c -o mail_notification-mn-mailbox-view.o `test -f 'mn-mailbox-view.c' || echo '$(srcdir)/'`mn-mailbox-view.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-view.c' object='mail_notification-mn-mailbox-view.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-authenticated-mailbox.obj: mn-authenticated-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-authenticated-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo" -c -o mail_notification-mn-authenticated-mailbox.obj `if test -f 'mn-authenticated-mailbox.c'; then $(CYGPATH_W) 'mn-authenticated-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-authenticated-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-authenticated-mailbox.c' object='mail_notification-mn-authenticated-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-mailbox-view.o `test -f 'mn-mailbox-view.c' || echo '$(srcdir)/'`mn-mailbox-view.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-authenticated-mailbox.obj `if test -f 'mn-authenticated-mailbox.c'; then $(CYGPATH_W) 'mn-authenticated-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-authenticated-mailbox.c'; fi`
 
-mail_notification-mn-mailbox-view.obj: mn-mailbox-view.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox-view.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo" -c -o mail_notification-mn-mailbox-view.obj `if test -f 'mn-mailbox-view.c'; then $(CYGPATH_W) 'mn-mailbox-view.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-view.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo" "$(DEPDIR)/mail_notification-mn-mailbox-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailbox-view.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox-view.c' object='mail_notification-mn-mailbox-view.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-authenticated-mailbox-properties.o: mn-authenticated-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-authenticated-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo" -c -o mail_notification-mn-authenticated-mailbox-properties.o `test -f 'mn-authenticated-mailbox-properties.c' || echo '$(srcdir)/'`mn-authenticated-mailbox-properties.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-authenticated-mailbox-properties.c' object='mail_notification-mn-authenticated-mailbox-properties.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-mailbox-view.obj `if test -f 'mn-mailbox-view.c'; then $(CYGPATH_W) 'mn-mailbox-view.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox-view.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-authenticated-mailbox-properties.o `test -f 'mn-authenticated-mailbox-properties.c' || echo '$(srcdir)/'`mn-authenticated-mailbox-properties.c
 
-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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox.c' object='mail_notification-mn-mailbox.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-authenticated-mailbox-properties.obj: mn-authenticated-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-authenticated-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo" -c -o mail_notification-mn-authenticated-mailbox-properties.obj `if test -f 'mn-authenticated-mailbox-properties.c'; then $(CYGPATH_W) 'mn-authenticated-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-authenticated-mailbox-properties.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-authenticated-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-authenticated-mailbox-properties.c' object='mail_notification-mn-authenticated-mailbox-properties.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-mailbox.o `test -f 'mn-mailbox.c' || echo '$(srcdir)/'`mn-mailbox.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-authenticated-mailbox-properties.obj `if test -f 'mn-authenticated-mailbox-properties.c'; then $(CYGPATH_W) 'mn-authenticated-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-authenticated-mailbox-properties.c'; fi`
 
-mail_notification-mn-mailbox.obj: mn-mailbox.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailbox.Tpo" -c -o mail_notification-mn-mailbox.obj `if test -f 'mn-mailbox.c'; then $(CYGPATH_W) 'mn-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox.c'; fi`; \
-@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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailbox.c' object='mail_notification-mn-mailbox.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-sylpheed-mailbox-backend.o: mn-sylpheed-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-sylpheed-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo" -c -o mail_notification-mn-sylpheed-mailbox-backend.o `test -f 'mn-sylpheed-mailbox-backend.c' || echo '$(srcdir)/'`mn-sylpheed-mailbox-backend.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-sylpheed-mailbox-backend.c' object='mail_notification-mn-sylpheed-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-mailbox.obj `if test -f 'mn-mailbox.c'; then $(CYGPATH_W) 'mn-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailbox.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-sylpheed-mailbox-backend.o `test -f 'mn-sylpheed-mailbox-backend.c' || echo '$(srcdir)/'`mn-sylpheed-mailbox-backend.c
 
-mail_notification-mn-mailboxes.o: mn-mailboxes.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailboxes.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo" -c -o mail_notification-mn-mailboxes.o `test -f 'mn-mailboxes.c' || echo '$(srcdir)/'`mn-mailboxes.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo" "$(DEPDIR)/mail_notification-mn-mailboxes.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailboxes.c' object='mail_notification-mn-mailboxes.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-sylpheed-mailbox-backend.obj: mn-sylpheed-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-sylpheed-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo" -c -o mail_notification-mn-sylpheed-mailbox-backend.obj `if test -f 'mn-sylpheed-mailbox-backend.c'; then $(CYGPATH_W) 'mn-sylpheed-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-sylpheed-mailbox-backend.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-sylpheed-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-sylpheed-mailbox-backend.c' object='mail_notification-mn-sylpheed-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-mailboxes.o `test -f 'mn-mailboxes.c' || echo '$(srcdir)/'`mn-mailboxes.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-sylpheed-mailbox-backend.obj `if test -f 'mn-sylpheed-mailbox-backend.c'; then $(CYGPATH_W) 'mn-sylpheed-mailbox-backend.c'; else $(CYGPATH_W) '$(srcdir)/mn-sylpheed-mailbox-backend.c'; fi`
 
-mail_notification-mn-mailboxes.obj: mn-mailboxes.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-mailboxes.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo" -c -o mail_notification-mn-mailboxes.obj `if test -f 'mn-mailboxes.c'; then $(CYGPATH_W) 'mn-mailboxes.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailboxes.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo" "$(DEPDIR)/mail_notification-mn-mailboxes.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-mailboxes.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-mailboxes.c' object='mail_notification-mn-mailboxes.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-gmail-mailbox.o: mn-gmail-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmail-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo" -c -o mail_notification-mn-gmail-mailbox.o `test -f 'mn-gmail-mailbox.c' || echo '$(srcdir)/'`mn-gmail-mailbox.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmail-mailbox.c' object='mail_notification-mn-gmail-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-mailboxes.obj `if test -f 'mn-mailboxes.c'; then $(CYGPATH_W) 'mn-mailboxes.c'; else $(CYGPATH_W) '$(srcdir)/mn-mailboxes.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-gmail-mailbox.o `test -f 'mn-gmail-mailbox.c' || echo '$(srcdir)/'`mn-gmail-mailbox.c
+
+mail_notification-mn-gmail-mailbox.obj: mn-gmail-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmail-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo" -c -o mail_notification-mn-gmail-mailbox.obj `if test -f 'mn-gmail-mailbox.c'; then $(CYGPATH_W) 'mn-gmail-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmail-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmail-mailbox.c' object='mail_notification-mn-gmail-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-gmail-mailbox.obj `if test -f 'mn-gmail-mailbox.c'; then $(CYGPATH_W) 'mn-gmail-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmail-mailbox.c'; fi`
 
-mail_notification-mn-main-window.o: mn-main-window.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-main-window.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-main-window.Tpo" -c -o mail_notification-mn-main-window.o `test -f 'mn-main-window.c' || echo '$(srcdir)/'`mn-main-window.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-main-window.Tpo" "$(DEPDIR)/mail_notification-mn-main-window.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-main-window.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-main-window.c' object='mail_notification-mn-main-window.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-gmail-mailbox-properties.o: mn-gmail-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmail-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo" -c -o mail_notification-mn-gmail-mailbox-properties.o `test -f 'mn-gmail-mailbox-properties.c' || echo '$(srcdir)/'`mn-gmail-mailbox-properties.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmail-mailbox-properties.c' object='mail_notification-mn-gmail-mailbox-properties.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-main-window.o `test -f 'mn-main-window.c' || echo '$(srcdir)/'`mn-main-window.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-gmail-mailbox-properties.o `test -f 'mn-gmail-mailbox-properties.c' || echo '$(srcdir)/'`mn-gmail-mailbox-properties.c
 
-mail_notification-mn-main-window.obj: mn-main-window.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-main-window.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-main-window.Tpo" -c -o mail_notification-mn-main-window.obj `if test -f 'mn-main-window.c'; then $(CYGPATH_W) 'mn-main-window.c'; else $(CYGPATH_W) '$(srcdir)/mn-main-window.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-main-window.Tpo" "$(DEPDIR)/mail_notification-mn-main-window.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-main-window.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-main-window.c' object='mail_notification-mn-main-window.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-gmail-mailbox-properties.obj: mn-gmail-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmail-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo" -c -o mail_notification-mn-gmail-mailbox-properties.obj `if test -f 'mn-gmail-mailbox-properties.c'; then $(CYGPATH_W) 'mn-gmail-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmail-mailbox-properties.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmail-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmail-mailbox-properties.c' object='mail_notification-mn-gmail-mailbox-properties.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-main-window.obj `if test -f 'mn-main-window.c'; then $(CYGPATH_W) 'mn-main-window.c'; else $(CYGPATH_W) '$(srcdir)/mn-main-window.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-gmail-mailbox-properties.obj `if test -f 'mn-gmail-mailbox-properties.c'; then $(CYGPATH_W) 'mn-gmail-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmail-mailbox-properties.c'; fi`
 
-mail_notification-mn-message-view.o: mn-message-view.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message-view.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message-view.Tpo" -c -o mail_notification-mn-message-view.o `test -f 'mn-message-view.c' || echo '$(srcdir)/'`mn-message-view.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message-view.Tpo" "$(DEPDIR)/mail_notification-mn-message-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message-view.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message-view.c' object='mail_notification-mn-message-view.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-custom-vfs-mailbox.o: mn-custom-vfs-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-custom-vfs-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo" -c -o mail_notification-mn-custom-vfs-mailbox.o `test -f 'mn-custom-vfs-mailbox.c' || echo '$(srcdir)/'`mn-custom-vfs-mailbox.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-custom-vfs-mailbox.c' object='mail_notification-mn-custom-vfs-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-message-view.o `test -f 'mn-message-view.c' || echo '$(srcdir)/'`mn-message-view.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-custom-vfs-mailbox.o `test -f 'mn-custom-vfs-mailbox.c' || echo '$(srcdir)/'`mn-custom-vfs-mailbox.c
 
-mail_notification-mn-message-view.obj: mn-message-view.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message-view.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message-view.Tpo" -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`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message-view.Tpo" "$(DEPDIR)/mail_notification-mn-message-view.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message-view.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message-view.c' object='mail_notification-mn-message-view.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-custom-vfs-mailbox.obj: mn-custom-vfs-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-custom-vfs-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo" -c -o mail_notification-mn-custom-vfs-mailbox.obj `if test -f 'mn-custom-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-custom-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-custom-vfs-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-custom-vfs-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-custom-vfs-mailbox.c' object='mail_notification-mn-custom-vfs-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-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`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-custom-vfs-mailbox.obj `if test -f 'mn-custom-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-custom-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-custom-vfs-mailbox.c'; fi`
 
-mail_notification-mn-message.o: mn-message.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message.Tpo" -c -o mail_notification-mn-message.o `test -f 'mn-message.c' || echo '$(srcdir)/'`mn-message.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message.Tpo" "$(DEPDIR)/mail_notification-mn-message.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message.c' object='mail_notification-mn-message.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-system-vfs-mailbox.o: mn-system-vfs-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-system-vfs-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo" -c -o mail_notification-mn-system-vfs-mailbox.o `test -f 'mn-system-vfs-mailbox.c' || echo '$(srcdir)/'`mn-system-vfs-mailbox.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-system-vfs-mailbox.c' object='mail_notification-mn-system-vfs-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-message.o `test -f 'mn-message.c' || echo '$(srcdir)/'`mn-message.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-system-vfs-mailbox.o `test -f 'mn-system-vfs-mailbox.c' || echo '$(srcdir)/'`mn-system-vfs-mailbox.c
 
-mail_notification-mn-message.obj: mn-message.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message.Tpo" -c -o mail_notification-mn-message.obj `if test -f 'mn-message.c'; then $(CYGPATH_W) 'mn-message.c'; else $(CYGPATH_W) '$(srcdir)/mn-message.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message.Tpo" "$(DEPDIR)/mail_notification-mn-message.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message.c' object='mail_notification-mn-message.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-system-vfs-mailbox.obj: mn-system-vfs-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-system-vfs-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo" -c -o mail_notification-mn-system-vfs-mailbox.obj `if test -f 'mn-system-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-system-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-system-vfs-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-system-vfs-mailbox.c' object='mail_notification-mn-system-vfs-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-message.obj `if test -f 'mn-message.c'; then $(CYGPATH_W) 'mn-message.c'; else $(CYGPATH_W) '$(srcdir)/mn-message.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-system-vfs-mailbox.obj `if test -f 'mn-system-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-system-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-system-vfs-mailbox.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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-properties-dialog.c' object='mail_notification-mn-properties-dialog.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-system-vfs-mailbox-properties.o: mn-system-vfs-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-system-vfs-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo" -c -o mail_notification-mn-system-vfs-mailbox-properties.o `test -f 'mn-system-vfs-mailbox-properties.c' || echo '$(srcdir)/'`mn-system-vfs-mailbox-properties.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-system-vfs-mailbox-properties.c' object='mail_notification-mn-system-vfs-mailbox-properties.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-properties-dialog.o `test -f 'mn-properties-dialog.c' || echo '$(srcdir)/'`mn-properties-dialog.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-system-vfs-mailbox-properties.o `test -f 'mn-system-vfs-mailbox-properties.c' || echo '$(srcdir)/'`mn-system-vfs-mailbox-properties.c
 
-mail_notification-mn-properties-dialog.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-properties-dialog.Tpo" -c -o mail_notification-mn-properties-dialog.obj `if test -f 'mn-properties-dialog.c'; then $(CYGPATH_W) 'mn-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-properties-dialog.c'; fi`; \
-@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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-properties-dialog.c' object='mail_notification-mn-properties-dialog.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-system-vfs-mailbox-properties.obj: mn-system-vfs-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-system-vfs-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo" -c -o mail_notification-mn-system-vfs-mailbox-properties.obj `if test -f 'mn-system-vfs-mailbox-properties.c'; then $(CYGPATH_W) 'mn-system-vfs-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-system-vfs-mailbox-properties.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-system-vfs-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-system-vfs-mailbox-properties.c' object='mail_notification-mn-system-vfs-mailbox-properties.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-properties-dialog.obj `if test -f 'mn-properties-dialog.c'; then $(CYGPATH_W) 'mn-properties-dialog.c'; else $(CYGPATH_W) '$(srcdir)/mn-properties-dialog.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-system-vfs-mailbox-properties.obj `if test -f 'mn-system-vfs-mailbox-properties.c'; then $(CYGPATH_W) 'mn-system-vfs-mailbox-properties.c'; else $(CYGPATH_W) '$(srcdir)/mn-system-vfs-mailbox-properties.c'; fi`
 
-mail_notification-mn-shell.o: mn-shell.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-shell.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-shell.Tpo" -c -o mail_notification-mn-shell.o `test -f 'mn-shell.c' || echo '$(srcdir)/'`mn-shell.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-shell.Tpo" "$(DEPDIR)/mail_notification-mn-shell.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-shell.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-shell.c' object='mail_notification-mn-shell.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-vfs-mailbox.o: mn-vfs-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-mailbox.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo" -c -o mail_notification-mn-vfs-mailbox.o `test -f 'mn-vfs-mailbox.c' || echo '$(srcdir)/'`mn-vfs-mailbox.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-mailbox.c' object='mail_notification-mn-vfs-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-shell.o `test -f 'mn-shell.c' || echo '$(srcdir)/'`mn-shell.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-vfs-mailbox.o `test -f 'mn-vfs-mailbox.c' || echo '$(srcdir)/'`mn-vfs-mailbox.c
 
-mail_notification-mn-shell.obj: mn-shell.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-shell.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-shell.Tpo" -c -o mail_notification-mn-shell.obj `if test -f 'mn-shell.c'; then $(CYGPATH_W) 'mn-shell.c'; else $(CYGPATH_W) '$(srcdir)/mn-shell.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-shell.Tpo" "$(DEPDIR)/mail_notification-mn-shell.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-shell.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-shell.c' object='mail_notification-mn-shell.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-vfs-mailbox.obj: mn-vfs-mailbox.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-mailbox.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo" -c -o mail_notification-mn-vfs-mailbox.obj `if test -f 'mn-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-vfs-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-mailbox.c' object='mail_notification-mn-vfs-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-shell.obj `if test -f 'mn-shell.c'; then $(CYGPATH_W) 'mn-shell.c'; else $(CYGPATH_W) '$(srcdir)/mn-shell.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-vfs-mailbox.obj `if test -f 'mn-vfs-mailbox.c'; then $(CYGPATH_W) 'mn-vfs-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-vfs-mailbox.c'; fi`
 
-mail_notification-mn-tooltips.o: mn-tooltips.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-tooltips.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-tooltips.Tpo" -c -o mail_notification-mn-tooltips.o `test -f 'mn-tooltips.c' || echo '$(srcdir)/'`mn-tooltips.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-tooltips.Tpo" "$(DEPDIR)/mail_notification-mn-tooltips.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-tooltips.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-tooltips.c' object='mail_notification-mn-tooltips.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-vfs-mailbox-backend.o: mn-vfs-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-mailbox-backend.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo" -c -o mail_notification-mn-vfs-mailbox-backend.o `test -f 'mn-vfs-mailbox-backend.c' || echo '$(srcdir)/'`mn-vfs-mailbox-backend.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-mailbox-backend.c' object='mail_notification-mn-vfs-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-tooltips.o `test -f 'mn-tooltips.c' || echo '$(srcdir)/'`mn-tooltips.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-vfs-mailbox-backend.o `test -f 'mn-vfs-mailbox-backend.c' || echo '$(srcdir)/'`mn-vfs-mailbox-backend.c
 
-mail_notification-mn-tooltips.obj: mn-tooltips.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-tooltips.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-tooltips.Tpo" -c -o mail_notification-mn-tooltips.obj `if test -f 'mn-tooltips.c'; then $(CYGPATH_W) 'mn-tooltips.c'; else $(CYGPATH_W) '$(srcdir)/mn-tooltips.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-tooltips.Tpo" "$(DEPDIR)/mail_notification-mn-tooltips.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-tooltips.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-tooltips.c' object='mail_notification-mn-tooltips.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-vfs-mailbox-backend.obj: mn-vfs-mailbox-backend.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs-mailbox-backend.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo" -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`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo" "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs-mailbox-backend.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs-mailbox-backend.c' object='mail_notification-mn-vfs-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-tooltips.obj `if test -f 'mn-tooltips.c'; then $(CYGPATH_W) 'mn-tooltips.c'; else $(CYGPATH_W) '$(srcdir)/mn-tooltips.c'; fi`
+@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-eggmarshalers.o: eggmarshalers.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-eggmarshalers.o -MD -MP -MF "$(DEPDIR)/mail_notification-eggmarshalers.Tpo" -c -o mail_notification-eggmarshalers.o `test -f 'eggmarshalers.c' || echo '$(srcdir)/'`eggmarshalers.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-eggmarshalers.Tpo" "$(DEPDIR)/mail_notification-eggmarshalers.Po"; else rm -f "$(DEPDIR)/mail_notification-eggmarshalers.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eggmarshalers.c' object='mail_notification-eggmarshalers.o' libtool=no @AMDEPBACKSLASH@
+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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-reentrant-mailbox.c' object='mail_notification-mn-reentrant-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-eggmarshalers.o `test -f 'eggmarshalers.c' || echo '$(srcdir)/'`eggmarshalers.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-reentrant-mailbox.o `test -f 'mn-reentrant-mailbox.c' || echo '$(srcdir)/'`mn-reentrant-mailbox.c
 
-mail_notification-eggmarshalers.obj: eggmarshalers.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-eggmarshalers.obj -MD -MP -MF "$(DEPDIR)/mail_notification-eggmarshalers.Tpo" -c -o mail_notification-eggmarshalers.obj `if test -f 'eggmarshalers.c'; then $(CYGPATH_W) 'eggmarshalers.c'; else $(CYGPATH_W) '$(srcdir)/eggmarshalers.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-eggmarshalers.Tpo" "$(DEPDIR)/mail_notification-eggmarshalers.Po"; else rm -f "$(DEPDIR)/mail_notification-eggmarshalers.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eggmarshalers.c' object='mail_notification-eggmarshalers.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-reentrant-mailbox.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-reentrant-mailbox.Tpo" -c -o mail_notification-mn-reentrant-mailbox.obj `if test -f 'mn-reentrant-mailbox.c'; then $(CYGPATH_W) 'mn-reentrant-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-reentrant-mailbox.c'; fi`; \
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-reentrant-mailbox.c' object='mail_notification-mn-reentrant-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-eggmarshalers.obj `if test -f 'eggmarshalers.c'; then $(CYGPATH_W) 'eggmarshalers.c'; else $(CYGPATH_W) '$(srcdir)/eggmarshalers.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-reentrant-mailbox.obj `if test -f 'mn-reentrant-mailbox.c'; then $(CYGPATH_W) 'mn-reentrant-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-reentrant-mailbox.c'; fi`
 
-mail_notification-mn-md5.o: mn-md5.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-md5.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-md5.Tpo" -c -o mail_notification-mn-md5.o `test -f 'mn-md5.c' || echo '$(srcdir)/'`mn-md5.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-md5.Tpo" "$(DEPDIR)/mail_notification-mn-md5.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-md5.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-md5.c' object='mail_notification-mn-md5.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-message-mime.o: mn-message-mime.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message-mime.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message-mime.Tpo" -c -o mail_notification-mn-message-mime.o `test -f 'mn-message-mime.c' || echo '$(srcdir)/'`mn-message-mime.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message-mime.Tpo" "$(DEPDIR)/mail_notification-mn-message-mime.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message-mime.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message-mime.c' object='mail_notification-mn-message-mime.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-md5.o `test -f 'mn-md5.c' || echo '$(srcdir)/'`mn-md5.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-message-mime.o `test -f 'mn-message-mime.c' || echo '$(srcdir)/'`mn-message-mime.c
 
-mail_notification-mn-md5.obj: mn-md5.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-md5.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-md5.Tpo" -c -o mail_notification-mn-md5.obj `if test -f 'mn-md5.c'; then $(CYGPATH_W) 'mn-md5.c'; else $(CYGPATH_W) '$(srcdir)/mn-md5.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-md5.Tpo" "$(DEPDIR)/mail_notification-mn-md5.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-md5.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-md5.c' object='mail_notification-mn-md5.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-message-mime.obj: mn-message-mime.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message-mime.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message-mime.Tpo" -c -o mail_notification-mn-message-mime.obj `if test -f 'mn-message-mime.c'; then $(CYGPATH_W) 'mn-message-mime.c'; else $(CYGPATH_W) '$(srcdir)/mn-message-mime.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message-mime.Tpo" "$(DEPDIR)/mail_notification-mn-message-mime.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message-mime.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message-mime.c' object='mail_notification-mn-message-mime.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-md5.obj `if test -f 'mn-md5.c'; then $(CYGPATH_W) 'mn-md5.c'; else $(CYGPATH_W) '$(srcdir)/mn-md5.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-message-mime.obj `if test -f 'mn-message-mime.c'; then $(CYGPATH_W) 'mn-message-mime.c'; else $(CYGPATH_W) '$(srcdir)/mn-message-mime.c'; fi`
 
-mail_notification-mn-client-session.o: mn-client-session.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-client-session.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-client-session.Tpo" -c -o mail_notification-mn-client-session.o `test -f 'mn-client-session.c' || echo '$(srcdir)/'`mn-client-session.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-client-session.Tpo" "$(DEPDIR)/mail_notification-mn-client-session.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-client-session.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-client-session.c' object='mail_notification-mn-client-session.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-gmime-stream-vfs.o: mn-gmime-stream-vfs.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmime-stream-vfs.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo" -c -o mail_notification-mn-gmime-stream-vfs.o `test -f 'mn-gmime-stream-vfs.c' || echo '$(srcdir)/'`mn-gmime-stream-vfs.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo" "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmime-stream-vfs.c' object='mail_notification-mn-gmime-stream-vfs.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-client-session.o `test -f 'mn-client-session.c' || echo '$(srcdir)/'`mn-client-session.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-gmime-stream-vfs.o `test -f 'mn-gmime-stream-vfs.c' || echo '$(srcdir)/'`mn-gmime-stream-vfs.c
 
-mail_notification-mn-client-session.obj: mn-client-session.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-client-session.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-client-session.Tpo" -c -o mail_notification-mn-client-session.obj `if test -f 'mn-client-session.c'; then $(CYGPATH_W) 'mn-client-session.c'; else $(CYGPATH_W) '$(srcdir)/mn-client-session.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-client-session.Tpo" "$(DEPDIR)/mail_notification-mn-client-session.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-client-session.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-client-session.c' object='mail_notification-mn-client-session.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-gmime-stream-vfs.obj: mn-gmime-stream-vfs.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-gmime-stream-vfs.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo" -c -o mail_notification-mn-gmime-stream-vfs.obj `if test -f 'mn-gmime-stream-vfs.c'; then $(CYGPATH_W) 'mn-gmime-stream-vfs.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmime-stream-vfs.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo" "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-gmime-stream-vfs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-gmime-stream-vfs.c' object='mail_notification-mn-gmime-stream-vfs.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-client-session.obj `if test -f 'mn-client-session.c'; then $(CYGPATH_W) 'mn-client-session.c'; else $(CYGPATH_W) '$(srcdir)/mn-client-session.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-gmime-stream-vfs.obj `if test -f 'mn-gmime-stream-vfs.c'; then $(CYGPATH_W) 'mn-gmime-stream-vfs.c'; else $(CYGPATH_W) '$(srcdir)/mn-gmime-stream-vfs.c'; fi`
 
 mail_notification-mn-ssl.o: mn-ssl.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-ssl.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-ssl.Tpo" -c -o mail_notification-mn-ssl.o `test -f 'mn-ssl.c' || echo '$(srcdir)/'`mn-ssl.c; \
@@ -1757,159 +1952,89 @@ 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-message-mime.o: mn-message-mime.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message-mime.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message-mime.Tpo" -c -o mail_notification-mn-message-mime.o `test -f 'mn-message-mime.c' || echo '$(srcdir)/'`mn-message-mime.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message-mime.Tpo" "$(DEPDIR)/mail_notification-mn-message-mime.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message-mime.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message-mime.c' object='mail_notification-mn-message-mime.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-message-mime.o `test -f 'mn-message-mime.c' || echo '$(srcdir)/'`mn-message-mime.c
-
-mail_notification-mn-message-mime.obj: mn-message-mime.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-message-mime.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-message-mime.Tpo" -c -o mail_notification-mn-message-mime.obj `if test -f 'mn-message-mime.c'; then $(CYGPATH_W) 'mn-message-mime.c'; else $(CYGPATH_W) '$(srcdir)/mn-message-mime.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-message-mime.Tpo" "$(DEPDIR)/mail_notification-mn-message-mime.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-message-mime.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-message-mime.c' object='mail_notification-mn-message-mime.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-message-mime.obj `if test -f 'mn-message-mime.c'; then $(CYGPATH_W) 'mn-message-mime.c'; else $(CYGPATH_W) '$(srcdir)/mn-message-mime.c'; fi`
-
-mail_notification-egg-editable-toolbar.o: egg-editable-toolbar.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-egg-editable-toolbar.o -MD -MP -MF "$(DEPDIR)/mail_notification-egg-editable-toolbar.Tpo" -c -o mail_notification-egg-editable-toolbar.o `test -f 'egg-editable-toolbar.c' || echo '$(srcdir)/'`egg-editable-toolbar.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-egg-editable-toolbar.Tpo" "$(DEPDIR)/mail_notification-egg-editable-toolbar.Po"; else rm -f "$(DEPDIR)/mail_notification-egg-editable-toolbar.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='egg-editable-toolbar.c' object='mail_notification-egg-editable-toolbar.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-egg-editable-toolbar.o `test -f 'egg-editable-toolbar.c' || echo '$(srcdir)/'`egg-editable-toolbar.c
-
-mail_notification-egg-editable-toolbar.obj: egg-editable-toolbar.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-egg-editable-toolbar.obj -MD -MP -MF "$(DEPDIR)/mail_notification-egg-editable-toolbar.Tpo" -c -o mail_notification-egg-editable-toolbar.obj `if test -f 'egg-editable-toolbar.c'; then $(CYGPATH_W) 'egg-editable-toolbar.c'; else $(CYGPATH_W) '$(srcdir)/egg-editable-toolbar.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-egg-editable-toolbar.Tpo" "$(DEPDIR)/mail_notification-egg-editable-toolbar.Po"; else rm -f "$(DEPDIR)/mail_notification-egg-editable-toolbar.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='egg-editable-toolbar.c' object='mail_notification-egg-editable-toolbar.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-egg-editable-toolbar.obj `if test -f 'egg-editable-toolbar.c'; then $(CYGPATH_W) 'egg-editable-toolbar.c'; else $(CYGPATH_W) '$(srcdir)/egg-editable-toolbar.c'; fi`
-
-mail_notification-egg-toolbar-editor.o: egg-toolbar-editor.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-egg-toolbar-editor.o -MD -MP -MF "$(DEPDIR)/mail_notification-egg-toolbar-editor.Tpo" -c -o mail_notification-egg-toolbar-editor.o `test -f 'egg-toolbar-editor.c' || echo '$(srcdir)/'`egg-toolbar-editor.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-egg-toolbar-editor.Tpo" "$(DEPDIR)/mail_notification-egg-toolbar-editor.Po"; else rm -f "$(DEPDIR)/mail_notification-egg-toolbar-editor.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='egg-toolbar-editor.c' object='mail_notification-egg-toolbar-editor.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-egg-toolbar-editor.o `test -f 'egg-toolbar-editor.c' || echo '$(srcdir)/'`egg-toolbar-editor.c
-
-mail_notification-egg-toolbar-editor.obj: egg-toolbar-editor.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-egg-toolbar-editor.obj -MD -MP -MF "$(DEPDIR)/mail_notification-egg-toolbar-editor.Tpo" -c -o mail_notification-egg-toolbar-editor.obj `if test -f 'egg-toolbar-editor.c'; then $(CYGPATH_W) 'egg-toolbar-editor.c'; else $(CYGPATH_W) '$(srcdir)/egg-toolbar-editor.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-egg-toolbar-editor.Tpo" "$(DEPDIR)/mail_notification-egg-toolbar-editor.Po"; else rm -f "$(DEPDIR)/mail_notification-egg-toolbar-editor.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='egg-toolbar-editor.c' object='mail_notification-egg-toolbar-editor.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-egg-toolbar-editor.obj `if test -f 'egg-toolbar-editor.c'; then $(CYGPATH_W) 'egg-toolbar-editor.c'; else $(CYGPATH_W) '$(srcdir)/egg-toolbar-editor.c'; fi`
-
-mail_notification-egg-toolbars-model.o: egg-toolbars-model.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-egg-toolbars-model.o -MD -MP -MF "$(DEPDIR)/mail_notification-egg-toolbars-model.Tpo" -c -o mail_notification-egg-toolbars-model.o `test -f 'egg-toolbars-model.c' || echo '$(srcdir)/'`egg-toolbars-model.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-egg-toolbars-model.Tpo" "$(DEPDIR)/mail_notification-egg-toolbars-model.Po"; else rm -f "$(DEPDIR)/mail_notification-egg-toolbars-model.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='egg-toolbars-model.c' object='mail_notification-egg-toolbars-model.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-egg-toolbars-model.o `test -f 'egg-toolbars-model.c' || echo '$(srcdir)/'`egg-toolbars-model.c
-
-mail_notification-egg-toolbars-model.obj: egg-toolbars-model.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-egg-toolbars-model.obj -MD -MP -MF "$(DEPDIR)/mail_notification-egg-toolbars-model.Tpo" -c -o mail_notification-egg-toolbars-model.obj `if test -f 'egg-toolbars-model.c'; then $(CYGPATH_W) 'egg-toolbars-model.c'; else $(CYGPATH_W) '$(srcdir)/egg-toolbars-model.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-egg-toolbars-model.Tpo" "$(DEPDIR)/mail_notification-egg-toolbars-model.Po"; else rm -f "$(DEPDIR)/mail_notification-egg-toolbars-model.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='egg-toolbars-model.c' object='mail_notification-egg-toolbars-model.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-egg-toolbars-model.obj `if test -f 'egg-toolbars-model.c'; then $(CYGPATH_W) 'egg-toolbars-model.c'; else $(CYGPATH_W) '$(srcdir)/egg-toolbars-model.c'; fi`
-
-mail_notification-eggtrayicon.o: eggtrayicon.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-eggtrayicon.o -MD -MP -MF "$(DEPDIR)/mail_notification-eggtrayicon.Tpo" -c -o mail_notification-eggtrayicon.o `test -f 'eggtrayicon.c' || echo '$(srcdir)/'`eggtrayicon.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-eggtrayicon.Tpo" "$(DEPDIR)/mail_notification-eggtrayicon.Po"; else rm -f "$(DEPDIR)/mail_notification-eggtrayicon.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eggtrayicon.c' object='mail_notification-eggtrayicon.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-eggtrayicon.o `test -f 'eggtrayicon.c' || echo '$(srcdir)/'`eggtrayicon.c
-
-mail_notification-eggtrayicon.obj: eggtrayicon.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-eggtrayicon.obj -MD -MP -MF "$(DEPDIR)/mail_notification-eggtrayicon.Tpo" -c -o mail_notification-eggtrayicon.obj `if test -f 'eggtrayicon.c'; then $(CYGPATH_W) 'eggtrayicon.c'; else $(CYGPATH_W) '$(srcdir)/eggtrayicon.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-eggtrayicon.Tpo" "$(DEPDIR)/mail_notification-eggtrayicon.Po"; else rm -f "$(DEPDIR)/mail_notification-eggtrayicon.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='eggtrayicon.c' object='mail_notification-eggtrayicon.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-eggtrayicon.obj `if test -f 'eggtrayicon.c'; then $(CYGPATH_W) 'eggtrayicon.c'; else $(CYGPATH_W) '$(srcdir)/eggtrayicon.c'; fi`
-
-mail_notification-mn-conf.o: mn-conf.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-conf.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-conf.Tpo" -c -o mail_notification-mn-conf.o `test -f 'mn-conf.c' || echo '$(srcdir)/'`mn-conf.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-conf.Tpo" "$(DEPDIR)/mail_notification-mn-conf.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-conf.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-conf.c' object='mail_notification-mn-conf.o' libtool=no @AMDEPBACKSLASH@
+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@
 @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-conf.o `test -f 'mn-conf.c' || echo '$(srcdir)/'`mn-conf.c
+@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
 
-mail_notification-mn-conf.obj: mn-conf.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-conf.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-conf.Tpo" -c -o mail_notification-mn-conf.obj `if test -f 'mn-conf.c'; then $(CYGPATH_W) 'mn-conf.c'; else $(CYGPATH_W) '$(srcdir)/mn-conf.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-conf.Tpo" "$(DEPDIR)/mail_notification-mn-conf.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-conf.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-conf.c' object='mail_notification-mn-conf.obj' libtool=no @AMDEPBACKSLASH@
+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@
 @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-conf.obj `if test -f 'mn-conf.c'; then $(CYGPATH_W) 'mn-conf.c'; else $(CYGPATH_W) '$(srcdir)/mn-conf.c'; fi`
+@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`
 
-mail_notification-mn-main.o: mn-main.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-main.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-main.Tpo" -c -o mail_notification-mn-main.o `test -f 'mn-main.c' || echo '$(srcdir)/'`mn-main.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-main.Tpo" "$(DEPDIR)/mail_notification-mn-main.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-main.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-main.c' object='mail_notification-mn-main.o' libtool=no @AMDEPBACKSLASH@
+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; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-mailbox.c' object='mail_notification-mn-evolution-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-main.o `test -f 'mn-main.c' || echo '$(srcdir)/'`mn-main.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-evolution-mailbox.o `test -f 'mn-evolution-mailbox.c' || echo '$(srcdir)/'`mn-evolution-mailbox.c
 
-mail_notification-mn-main.obj: mn-main.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-main.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-main.Tpo" -c -o mail_notification-mn-main.obj `if test -f 'mn-main.c'; then $(CYGPATH_W) 'mn-main.c'; else $(CYGPATH_W) '$(srcdir)/mn-main.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-main.Tpo" "$(DEPDIR)/mail_notification-mn-main.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-main.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-main.c' object='mail_notification-mn-main.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-evolution-mailbox.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo" -c -o mail_notification-mn-evolution-mailbox.obj `if test -f 'mn-evolution-mailbox.c'; then $(CYGPATH_W) 'mn-evolution-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-evolution-mailbox.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-mailbox.c' object='mail_notification-mn-evolution-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-main.obj `if test -f 'mn-main.c'; then $(CYGPATH_W) 'mn-main.c'; else $(CYGPATH_W) '$(srcdir)/mn-main.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-evolution-mailbox.obj `if test -f 'mn-evolution-mailbox.c'; then $(CYGPATH_W) 'mn-evolution-mailbox.c'; else $(CYGPATH_W) '$(srcdir)/mn-evolution-mailbox.c'; fi`
 
-mail_notification-mn-stock.o: mn-stock.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-stock.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-stock.Tpo" -c -o mail_notification-mn-stock.o `test -f 'mn-stock.c' || echo '$(srcdir)/'`mn-stock.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-stock.Tpo" "$(DEPDIR)/mail_notification-mn-stock.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-stock.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-stock.c' object='mail_notification-mn-stock.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-evolution-mailbox-properties.o: mn-evolution-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-evolution-mailbox-properties.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo" -c -o mail_notification-mn-evolution-mailbox-properties.o `test -f 'mn-evolution-mailbox-properties.c' || echo '$(srcdir)/'`mn-evolution-mailbox-properties.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-mailbox-properties.c' object='mail_notification-mn-evolution-mailbox-properties.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-stock.o `test -f 'mn-stock.c' || echo '$(srcdir)/'`mn-stock.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-mn-evolution-mailbox-properties.o `test -f 'mn-evolution-mailbox-properties.c' || echo '$(srcdir)/'`mn-evolution-mailbox-properties.c
 
-mail_notification-mn-stock.obj: mn-stock.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-stock.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-stock.Tpo" -c -o mail_notification-mn-stock.obj `if test -f 'mn-stock.c'; then $(CYGPATH_W) 'mn-stock.c'; else $(CYGPATH_W) '$(srcdir)/mn-stock.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-stock.Tpo" "$(DEPDIR)/mail_notification-mn-stock.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-stock.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-stock.c' object='mail_notification-mn-stock.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-mn-evolution-mailbox-properties.obj: mn-evolution-mailbox-properties.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-evolution-mailbox-properties.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo" -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`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo" "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-evolution-mailbox-properties.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-evolution-mailbox-properties.c' object='mail_notification-mn-evolution-mailbox-properties.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-stock.obj `if test -f 'mn-stock.c'; then $(CYGPATH_W) 'mn-stock.c'; else $(CYGPATH_W) '$(srcdir)/mn-stock.c'; fi`
+@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-util.o: mn-util.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-util.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-util.Tpo" -c -o mail_notification-mn-util.o `test -f 'mn-util.c' || echo '$(srcdir)/'`mn-util.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-util.Tpo" "$(DEPDIR)/mail_notification-mn-util.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-util.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-util.c' object='mail_notification-mn-util.o' libtool=no @AMDEPBACKSLASH@
+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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-common.c' object='mail_notification-GNOME_MailNotification-common.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-util.o `test -f 'mn-util.c' || echo '$(srcdir)/'`mn-util.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-GNOME_MailNotification-common.o `test -f 'GNOME_MailNotification-common.c' || echo '$(srcdir)/'`GNOME_MailNotification-common.c
 
-mail_notification-mn-util.obj: mn-util.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-util.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-util.Tpo" -c -o mail_notification-mn-util.obj `if test -f 'mn-util.c'; then $(CYGPATH_W) 'mn-util.c'; else $(CYGPATH_W) '$(srcdir)/mn-util.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-util.Tpo" "$(DEPDIR)/mail_notification-mn-util.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-util.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-util.c' object='mail_notification-mn-util.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-GNOME_MailNotification-common.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-common.Tpo" -c -o mail_notification-GNOME_MailNotification-common.obj `if test -f 'GNOME_MailNotification-common.c'; then $(CYGPATH_W) 'GNOME_MailNotification-common.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-common.c'; fi`; \
+@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
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-common.c' object='mail_notification-GNOME_MailNotification-common.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-util.obj `if test -f 'mn-util.c'; then $(CYGPATH_W) 'mn-util.c'; else $(CYGPATH_W) '$(srcdir)/mn-util.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-GNOME_MailNotification-common.obj `if test -f 'GNOME_MailNotification-common.c'; then $(CYGPATH_W) 'GNOME_MailNotification-common.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-common.c'; fi`
 
-mail_notification-mn-vfs.o: mn-vfs.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs.o -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs.Tpo" -c -o mail_notification-mn-vfs.o `test -f 'mn-vfs.c' || echo '$(srcdir)/'`mn-vfs.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs.Tpo" "$(DEPDIR)/mail_notification-mn-vfs.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs.c' object='mail_notification-mn-vfs.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-GNOME_MailNotification-skels.o: GNOME_MailNotification-skels.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification-skels.o -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo" -c -o mail_notification-GNOME_MailNotification-skels.o `test -f 'GNOME_MailNotification-skels.c' || echo '$(srcdir)/'`GNOME_MailNotification-skels.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-skels.c' object='mail_notification-GNOME_MailNotification-skels.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.o `test -f 'mn-vfs.c' || echo '$(srcdir)/'`mn-vfs.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-GNOME_MailNotification-skels.o `test -f 'GNOME_MailNotification-skels.c' || echo '$(srcdir)/'`GNOME_MailNotification-skels.c
 
-mail_notification-mn-vfs.obj: mn-vfs.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-mn-vfs.obj -MD -MP -MF "$(DEPDIR)/mail_notification-mn-vfs.Tpo" -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`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-mn-vfs.Tpo" "$(DEPDIR)/mail_notification-mn-vfs.Po"; else rm -f "$(DEPDIR)/mail_notification-mn-vfs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='mn-vfs.c' object='mail_notification-mn-vfs.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-GNOME_MailNotification-skels.obj: GNOME_MailNotification-skels.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification-skels.obj -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo" -c -o mail_notification-GNOME_MailNotification-skels.obj `if test -f 'GNOME_MailNotification-skels.c'; then $(CYGPATH_W) 'GNOME_MailNotification-skels.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-skels.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-skels.c' object='mail_notification-GNOME_MailNotification-skels.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.obj `if test -f 'mn-vfs.c'; then $(CYGPATH_W) 'mn-vfs.c'; else $(CYGPATH_W) '$(srcdir)/mn-vfs.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-GNOME_MailNotification-skels.obj `if test -f 'GNOME_MailNotification-skels.c'; then $(CYGPATH_W) 'GNOME_MailNotification-skels.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-skels.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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nautilus-cell-renderer-pixbuf-emblem.c' object='mail_notification-nautilus-cell-renderer-pixbuf-emblem.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-GNOME_MailNotification-stubs.o: GNOME_MailNotification-stubs.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification-stubs.o -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo" -c -o mail_notification-GNOME_MailNotification-stubs.o `test -f 'GNOME_MailNotification-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification-stubs.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-stubs.c' object='mail_notification-GNOME_MailNotification-stubs.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-nautilus-cell-renderer-pixbuf-emblem.o `test -f 'nautilus-cell-renderer-pixbuf-emblem.c' || echo '$(srcdir)/'`nautilus-cell-renderer-pixbuf-emblem.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-GNOME_MailNotification-stubs.o `test -f 'GNOME_MailNotification-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification-stubs.c
 
-mail_notification-nautilus-cell-renderer-pixbuf-emblem.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-nautilus-cell-renderer-pixbuf-emblem.Tpo" -c -o mail_notification-nautilus-cell-renderer-pixbuf-emblem.obj `if test -f 'nautilus-cell-renderer-pixbuf-emblem.c'; then $(CYGPATH_W) 'nautilus-cell-renderer-pixbuf-emblem.c'; else $(CYGPATH_W) '$(srcdir)/nautilus-cell-renderer-pixbuf-emblem.c'; fi`; \
-@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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='nautilus-cell-renderer-pixbuf-emblem.c' object='mail_notification-nautilus-cell-renderer-pixbuf-emblem.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-GNOME_MailNotification-stubs.obj: GNOME_MailNotification-stubs.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification-stubs.obj -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo" -c -o mail_notification-GNOME_MailNotification-stubs.obj `if test -f 'GNOME_MailNotification-stubs.c'; then $(CYGPATH_W) 'GNOME_MailNotification-stubs.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-stubs.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-stubs.c' object='mail_notification-GNOME_MailNotification-stubs.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-nautilus-cell-renderer-pixbuf-emblem.obj `if test -f 'nautilus-cell-renderer-pixbuf-emblem.c'; then $(CYGPATH_W) 'nautilus-cell-renderer-pixbuf-emblem.c'; else $(CYGPATH_W) '$(srcdir)/nautilus-cell-renderer-pixbuf-emblem.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-GNOME_MailNotification-stubs.obj `if test -f 'GNOME_MailNotification-stubs.c'; then $(CYGPATH_W) 'GNOME_MailNotification-stubs.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-stubs.c'; fi`
 
 mail_notification-GNOME_MailNotification_Evolution-common.o: GNOME_MailNotification_Evolution-common.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification_Evolution-common.o -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-common.Tpo" -c -o mail_notification-GNOME_MailNotification_Evolution-common.o `test -f 'GNOME_MailNotification_Evolution-common.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-common.c; \
@@ -1925,20 +2050,6 @@ mail_notification-GNOME_MailNotification_Evolution-common.obj: GNOME_MailNotific
 @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-GNOME_MailNotification_Evolution-common.obj `if test -f 'GNOME_MailNotification_Evolution-common.c'; then $(CYGPATH_W) 'GNOME_MailNotification_Evolution-common.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification_Evolution-common.c'; fi`
 
-mail_notification-GNOME_MailNotification_Evolution-stubs.o: GNOME_MailNotification_Evolution-stubs.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification_Evolution-stubs.o -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo" -c -o mail_notification-GNOME_MailNotification_Evolution-stubs.o `test -f 'GNOME_MailNotification_Evolution-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-stubs.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification_Evolution-stubs.c' object='mail_notification-GNOME_MailNotification_Evolution-stubs.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-GNOME_MailNotification_Evolution-stubs.o `test -f 'GNOME_MailNotification_Evolution-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-stubs.c
-
-mail_notification-GNOME_MailNotification_Evolution-stubs.obj: GNOME_MailNotification_Evolution-stubs.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification_Evolution-stubs.obj -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo" -c -o mail_notification-GNOME_MailNotification_Evolution-stubs.obj `if test -f 'GNOME_MailNotification_Evolution-stubs.c'; then $(CYGPATH_W) 'GNOME_MailNotification_Evolution-stubs.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification_Evolution-stubs.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification_Evolution-stubs.c' object='mail_notification-GNOME_MailNotification_Evolution-stubs.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-GNOME_MailNotification_Evolution-stubs.obj `if test -f 'GNOME_MailNotification_Evolution-stubs.c'; then $(CYGPATH_W) 'GNOME_MailNotification_Evolution-stubs.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification_Evolution-stubs.c'; fi`
-
 mail_notification-GNOME_MailNotification_Evolution-skels.o: GNOME_MailNotification_Evolution-skels.c
 @am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification_Evolution-skels.o -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-skels.Tpo" -c -o mail_notification-GNOME_MailNotification_Evolution-skels.o `test -f 'GNOME_MailNotification_Evolution-skels.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-skels.c; \
 @am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-skels.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-skels.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-skels.Tpo"; exit 1; fi
@@ -1953,47 +2064,19 @@ mail_notification-GNOME_MailNotification_Evolution-skels.obj: GNOME_MailNotifica
 @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-GNOME_MailNotification_Evolution-skels.obj `if test -f 'GNOME_MailNotification_Evolution-skels.c'; then $(CYGPATH_W) 'GNOME_MailNotification_Evolution-skels.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification_Evolution-skels.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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-common.c' object='mail_notification-GNOME_MailNotification-common.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-GNOME_MailNotification-common.o `test -f 'GNOME_MailNotification-common.c' || echo '$(srcdir)/'`GNOME_MailNotification-common.c
-
-mail_notification-GNOME_MailNotification-common.obj: 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.obj -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-common.Tpo" -c -o mail_notification-GNOME_MailNotification-common.obj `if test -f 'GNOME_MailNotification-common.c'; then $(CYGPATH_W) 'GNOME_MailNotification-common.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-common.c'; fi`; \
-@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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-common.c' object='mail_notification-GNOME_MailNotification-common.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-GNOME_MailNotification-common.obj `if test -f 'GNOME_MailNotification-common.c'; then $(CYGPATH_W) 'GNOME_MailNotification-common.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-common.c'; fi`
-
-mail_notification-GNOME_MailNotification-stubs.o: GNOME_MailNotification-stubs.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification-stubs.o -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo" -c -o mail_notification-GNOME_MailNotification-stubs.o `test -f 'GNOME_MailNotification-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification-stubs.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-stubs.c' object='mail_notification-GNOME_MailNotification-stubs.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-GNOME_MailNotification-stubs.o `test -f 'GNOME_MailNotification-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification-stubs.c
-
-mail_notification-GNOME_MailNotification-stubs.obj: GNOME_MailNotification-stubs.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification-stubs.obj -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo" -c -o mail_notification-GNOME_MailNotification-stubs.obj `if test -f 'GNOME_MailNotification-stubs.c'; then $(CYGPATH_W) 'GNOME_MailNotification-stubs.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-stubs.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-stubs.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-stubs.c' object='mail_notification-GNOME_MailNotification-stubs.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-GNOME_MailNotification-stubs.obj `if test -f 'GNOME_MailNotification-stubs.c'; then $(CYGPATH_W) 'GNOME_MailNotification-stubs.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-stubs.c'; fi`
-
-mail_notification-GNOME_MailNotification-skels.o: GNOME_MailNotification-skels.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification-skels.o -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo" -c -o mail_notification-GNOME_MailNotification-skels.o `test -f 'GNOME_MailNotification-skels.c' || echo '$(srcdir)/'`GNOME_MailNotification-skels.c; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-skels.c' object='mail_notification-GNOME_MailNotification-skels.o' libtool=no @AMDEPBACKSLASH@
+mail_notification-GNOME_MailNotification_Evolution-stubs.o: GNOME_MailNotification_Evolution-stubs.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification_Evolution-stubs.o -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo" -c -o mail_notification-GNOME_MailNotification_Evolution-stubs.o `test -f 'GNOME_MailNotification_Evolution-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-stubs.c; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification_Evolution-stubs.c' object='mail_notification-GNOME_MailNotification_Evolution-stubs.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-GNOME_MailNotification-skels.o `test -f 'GNOME_MailNotification-skels.c' || echo '$(srcdir)/'`GNOME_MailNotification-skels.c
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-GNOME_MailNotification_Evolution-stubs.o `test -f 'GNOME_MailNotification_Evolution-stubs.c' || echo '$(srcdir)/'`GNOME_MailNotification_Evolution-stubs.c
 
-mail_notification-GNOME_MailNotification-skels.obj: GNOME_MailNotification-skels.c
-@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification-skels.obj -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo" -c -o mail_notification-GNOME_MailNotification-skels.obj `if test -f 'GNOME_MailNotification-skels.c'; then $(CYGPATH_W) 'GNOME_MailNotification-skels.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-skels.c'; fi`; \
-@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification-skels.Tpo"; exit 1; fi
-@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification-skels.c' object='mail_notification-GNOME_MailNotification-skels.obj' libtool=no @AMDEPBACKSLASH@
+mail_notification-GNOME_MailNotification_Evolution-stubs.obj: GNOME_MailNotification_Evolution-stubs.c
+@am__fastdepCC_TRUE@	if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mail_notification-GNOME_MailNotification_Evolution-stubs.obj -MD -MP -MF "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo" -c -o mail_notification-GNOME_MailNotification_Evolution-stubs.obj `if test -f 'GNOME_MailNotification_Evolution-stubs.c'; then $(CYGPATH_W) 'GNOME_MailNotification_Evolution-stubs.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification_Evolution-stubs.c'; fi`; \
+@am__fastdepCC_TRUE@	then mv -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo" "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Po"; else rm -f "$(DEPDIR)/mail_notification-GNOME_MailNotification_Evolution-stubs.Tpo"; exit 1; fi
+@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='GNOME_MailNotification_Evolution-stubs.c' object='mail_notification-GNOME_MailNotification_Evolution-stubs.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-GNOME_MailNotification-skels.obj `if test -f 'GNOME_MailNotification-skels.c'; then $(CYGPATH_W) 'GNOME_MailNotification-skels.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification-skels.c'; fi`
+@am__fastdepCC_FALSE@	$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mail_notification_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mail_notification-GNOME_MailNotification_Evolution-stubs.obj `if test -f 'GNOME_MailNotification_Evolution-stubs.c'; then $(CYGPATH_W) 'GNOME_MailNotification_Evolution-stubs.c'; else $(CYGPATH_W) '$(srcdir)/GNOME_MailNotification_Evolution-stubs.c'; fi`
 
 mostlyclean-libtool:
 	-rm -f *.lo
@@ -2071,6 +2154,7 @@ distclean-tags:
 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
 distdir: $(DISTFILES)
+	$(mkdir_p) $(distdir)/../aml
 	@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
 	list='$(DISTFILES)'; for file in $$list; do \
@@ -2202,23 +2286,18 @@ uninstall-am: uninstall-binPROGRAMS uninstall-evolution_pluginDATA \
 	uninstall-evolution_pluginLTLIBRARIES uninstall-info-am
 
 
-%.c %.h %-private.h: %.gob
-	$(GOB2) --always-private-header --exit-on-warn $<
+# intentionally do not add aml/aml to sources (Makefile.am is distributed)
+Makefile.am: automake.xml $(top_srcdir)/aml/aml.c $(top_srcdir)/aml/Makefile.aml
+	cd $(top_srcdir)/aml && $(MAKE) -f Makefile.aml $(AM_MAKEFLAGS) aml
+	$(top_srcdir)/aml/aml $< > $@.aml && mv -f $@.aml $@
+
+# intentionally do not add $(GOB2) to sources (generated files are distributed)
+%.gob.stamp: %.gob
+	$(GOB2) $(GOBFLAGS) $<
+	@touch $@
 
 %-common.c %-stubs.c %-skels.c %.h: %.idl $(ORBIT_IDL)
-	$(ORBIT_IDL) -I$(LIBBONOBO_IDL) -I$(BONOBO_ACTIVATION_IDL) $<
-
-eggmarshalers.h: eggmarshalers.list
-	cd $(srcdir) \
-	&& $(GLIB_GENMARSHAL) --prefix=_egg_marshal eggmarshalers.list --header > xgen-emh \
-	&& cp xgen-emh eggmarshalers.h \
-	&& rm -f xgen-emh xgen-emh~
-
-eggmarshalers.c: eggmarshalers.list
-	cd $(srcdir) \
-	&& $(GLIB_GENMARSHAL) --prefix=_egg_marshal eggmarshalers.list --body > xgen-emc \
-	&& cp xgen-emc eggmarshalers.c \
-	&& rm -f xgen-emc xgen-emc~
+	$(ORBIT_IDL) $(IDLFLAGS) $<
 
 %.eplug: %.eplug.in
 	sed -e 's|\@PLUGINDIR\@|$(evolution_plugindir)|' $< > $@
diff --git a/src/aml.make b/src/aml.make
@@ -0,0 +1,12 @@
+if WITH_EVOLUTION
+evolution_eplug = org-gnome-mail-notification.eplug
+evolution_plugin_DATA = $(evolution_eplug)
+endif
+
+IDLFLAGS = $(BONOBO_IDLFLAGS)
+
+CLEANFILES += $(evolution_eplug)
+EXTRA_DIST = $(evolution_eplug).in
+
+%.eplug: %.eplug.in
+	sed -e 's|\@PLUGINDIR\@|$(evolution_plugindir)|' $< > $@
diff --git a/src/egg-editable-toolbar.c b/src/egg-editable-toolbar.c
@@ -1,1463 +0,0 @@
-/*
- *  Copyright (C) 2003, 2004  Marco Pesenti Gritti
- *  Copyright (C) 2003, 2004, 2005  Christian Persch
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- *  $libegg-Id: egg-editable-toolbar.c,v 1.29 2005/07/07 19:09:35 chpe Exp $
- */
-
-#include "config.h"
-
-#include "egg-editable-toolbar.h"
-#include "egg-toolbars-model.h"
-#include "egg-toolbar-editor.h"
-
-#include <gtk/gtkvseparator.h>
-#include <gtk/gtkiconfactory.h>
-#include <gtk/gtkwindow.h>
-#include <gtk/gtkmain.h>
-#include <gtk/gtkdnd.h>
-#include <gtk/gtkhbox.h>
-#include <gtk/gtkimage.h>
-#include <gtk/gtkimagemenuitem.h>
-#include <gtk/gtkmenu.h>
-#include <gtk/gtkstock.h>
-#include <gtk/gtktoolbar.h>
-#include <gtk/gtktoolitem.h>
-#include <gtk/gtkseparatortoolitem.h>
-#include <glib/gi18n.h>
-#include <string.h>
-
-static void egg_editable_toolbar_class_init	(EggEditableToolbarClass *klass);
-static void egg_editable_toolbar_init		(EggEditableToolbar *t);
-static void egg_editable_toolbar_finalize	(GObject *object);
-
-#define MIN_TOOLBAR_HEIGHT 20
-
-static const GtkTargetEntry dest_drag_types[] = {
-  {EGG_TOOLBAR_ITEM_TYPE, GTK_TARGET_SAME_APP, 0},
-};
-
-enum
-{
-  PROP_0,
-  PROP_TOOLBARS_MODEL,
-  PROP_UI_MANAGER
-};
-
-enum
-{
-  ACTION_REQUEST,
-  LAST_SIGNAL
-};
-
-static guint egg_editable_toolbar_signals[LAST_SIGNAL] = { 0 };
-
-static GObjectClass *parent_class = NULL;
-
-#define EGG_EDITABLE_TOOLBAR_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EGG_TYPE_EDITABLE_TOOLBAR, EggEditableToolbarPrivate))
-
-struct _EggEditableToolbarPrivate
-{
-  GtkUIManager *manager;
-  EggToolbarsModel *model;
-  gboolean edit_mode;
-  GtkWidget *selected_toolbar;
-  GtkWidget *fixed_toolbar;
-
-  gboolean pending;
-  GtkToolbar *target_toolbar;
-  GtkWidget *dragged_item;
-};
-
-GType
-egg_editable_toolbar_get_type (void)
-{
-  static GType type = 0;
-
-  if (G_UNLIKELY (type == 0))
-    {
-      static const GTypeInfo our_info = {
-	sizeof (EggEditableToolbarClass),
-	NULL,			/* base_init */
-	NULL,			/* base_finalize */
-	(GClassInitFunc) egg_editable_toolbar_class_init,
-	NULL,
-	NULL,			/* class_data */
-	sizeof (EggEditableToolbar),
-	0,			/* n_preallocs */
-	(GInstanceInitFunc) egg_editable_toolbar_init
-      };
-
-      type = g_type_register_static (GTK_TYPE_VBOX,
-				     "EggEditableToolbar",
-				     &our_info, 0);
-    }
-
-  return type;
-}
-
-static int
-get_toolbar_position (EggEditableToolbar *etoolbar, GtkWidget *toolbar)
-{
-  GList *l;
-  int result;
-
-  l = gtk_container_get_children (GTK_CONTAINER (etoolbar));
-  result = g_list_index (l, toolbar->parent);
-  g_list_free (l);
-
-  return result;
-}
-
-static int
-get_n_toolbars (EggEditableToolbar *etoolbar)
-{
-  GList *l;
-  int result;
-
-  l = gtk_container_get_children (GTK_CONTAINER (etoolbar));
-  result = g_list_length (l);
-  g_list_free (l);
-
-  return result;
-}
-
-static GtkWidget *
-get_dock_nth (EggEditableToolbar *etoolbar,
-	      int                 position)
-{
-  GList *l;
-  GtkWidget *result;
-
-  l = gtk_container_get_children (GTK_CONTAINER (etoolbar));
-  result = g_list_nth_data (l, position);
-  g_list_free (l);
-
-  return result;
-}
-
-static GtkWidget *
-get_toolbar_nth (EggEditableToolbar *etoolbar,
-		 int                 position)
-{
-  GList *l;
-  GtkWidget *dock;
-  GtkWidget *result;
-
-  dock = get_dock_nth (etoolbar, position);
-
-  l = gtk_container_get_children (GTK_CONTAINER (dock));
-  result = GTK_WIDGET (l->data);
-  g_list_free (l);
-
-  return result;
-}
-
-static GtkAction *
-find_action (EggEditableToolbar *t,
-	     const char         *name)
-{
-  GList *l;
-  GtkAction *action = NULL;
-
-  l = gtk_ui_manager_get_action_groups (t->priv->manager);
-
-  g_return_val_if_fail (name != NULL, NULL);
-
-  for (; l != NULL; l = l->next)
-    {
-      GtkAction *tmp;
-
-      tmp = gtk_action_group_get_action (GTK_ACTION_GROUP (l->data), name);
-      if (tmp)
-	action = tmp;
-    }
-
-  return action;
-}
-
-static void
-drag_data_delete_cb (GtkWidget          *widget,
-		     GdkDragContext     *context,
-		     EggEditableToolbar *etoolbar)
-{
-  int pos, toolbar_pos;
-
-  g_return_if_fail (EGG_IS_EDITABLE_TOOLBAR (etoolbar));
-
-  pos = gtk_toolbar_get_item_index (GTK_TOOLBAR (widget->parent),
-				    GTK_TOOL_ITEM (widget));
-  toolbar_pos = get_toolbar_position (etoolbar, widget->parent);
-
-  egg_toolbars_model_remove_item (etoolbar->priv->model,
-			          toolbar_pos, pos);
-}
-
-static void
-drag_begin_cb (GtkWidget          *widget,
-	       GdkDragContext     *context,
-	       EggEditableToolbar *etoolbar)
-{
-	gtk_widget_hide (widget);
-}
-
-static void
-drag_end_cb (GtkWidget          *widget,
-	     GdkDragContext     *context,
-	     EggEditableToolbar *etoolbar)
-{
-	gtk_widget_show (widget);
-}
-
-static void
-drag_data_get_cb (GtkWidget          *widget,
-		  GdkDragContext     *context,
-		  GtkSelectionData   *selection_data,
-		  guint               info,
-		  guint32             time,
-		  EggEditableToolbar *etoolbar)
-{
-  const char *id, *type;
-  char *target;
-
-  g_return_if_fail (EGG_IS_EDITABLE_TOOLBAR (etoolbar));
-
-  type = g_object_get_data (G_OBJECT (widget), "type");
-  id = g_object_get_data (G_OBJECT (widget), "id");
-  if (strcmp (id, "separator") == 0)
-    {
-      target = g_strdup (id);
-    }
-  else
-    {
-      target = egg_toolbars_model_get_item_data (etoolbar->priv->model,
-						 type, id);
-    }
-
-  gtk_selection_data_set (selection_data,
-                          selection_data->target, 8,
-                          (const guchar *)target, strlen (target));
-
-  g_free (target);
-}
-
-static void
-set_drag_cursor (GtkWidget *widget)
-{
-  if (widget->window)
-    {
-      GdkCursor *cursor;
-      GdkPixbuf *pixbuf;
-
-      pixbuf = gdk_pixbuf_new_from_file (UIDIR G_DIR_SEPARATOR_S "hand-open.png", NULL);
-      cursor = gdk_cursor_new_from_pixbuf (gdk_display_get_default (),
-					   pixbuf, 12, 12);
-      gdk_window_set_cursor (widget->window, cursor);
-      gdk_cursor_unref (cursor);
-      g_object_unref (pixbuf);
-    }
-}
-
-static void
-unset_drag_cursor (GtkWidget *widget)
-{
-  if (widget->window)
-    {
-      gdk_window_set_cursor (widget->window, NULL);
-    }
-}
-
-static void
-set_item_drag_source (EggToolbarsModel *model,
-		      GtkWidget        *item,
-		      GtkAction        *action,
-		      gboolean          is_separator,
-		      const char       *type)
-{
-  GtkTargetEntry target_entry;
-  const char *id;
-
-  target_entry.target = (char *)type;
-  target_entry.flags = GTK_TARGET_SAME_APP;
-  target_entry.info = 0;
-
-  gtk_drag_source_set (item, GDK_BUTTON1_MASK,
-                       &target_entry, 1,
-                       GDK_ACTION_MOVE);
-
-  if (is_separator)
-    {
-      GtkWidget *icon;
-      GdkPixbuf *pixbuf;
-
-      id = "separator";
-
-      icon = _egg_editable_toolbar_new_separator_image ();
-      pixbuf = gtk_image_get_pixbuf (GTK_IMAGE (icon));
-      gtk_drag_source_set_icon_pixbuf (item, pixbuf);
-    }
-  else
-    {
-      const char *stock_id;
-      GValue value = { 0, };
-      GdkPixbuf *pixbuf;
-
-      id = gtk_action_get_name (action);
-
-      g_value_init (&value, G_TYPE_STRING);
-      g_object_get_property (G_OBJECT (action), "stock_id", &value);
-      stock_id = g_value_get_string (&value);
-
-      if (stock_id != NULL)
-        {
-          pixbuf = gtk_widget_render_icon (item, stock_id,
-				           GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
-        }
-      else
-        {
-          pixbuf = gtk_widget_render_icon (item, GTK_STOCK_DND,
-					   GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
-        }
-
-      gtk_drag_source_set_icon_pixbuf (item, pixbuf);
-      g_object_unref (pixbuf);
-
-      g_value_unset (&value);
-    }
-
-    g_object_set_data_full (G_OBJECT (item), "id",
-                            g_strdup (id), g_free);
-    g_object_set_data_full (G_OBJECT (item), "type",
-                            g_strdup (type), g_free);
-}
-
-static GtkWidget *
-create_item_from_action (EggEditableToolbar *t,
-			 const char *action_name,
-			 const char *type,
-			 gboolean is_separator,
-			 GtkAction **ret_action)
-{
-  GtkWidget *item;
-  GtkAction *action;
-
-  if (is_separator)
-    {
-      item = GTK_WIDGET (gtk_separator_tool_item_new ());
-      action = NULL;
-    }
-  else
-    {
-      g_return_val_if_fail (action_name != NULL, NULL);
-
-      g_signal_emit (G_OBJECT (t), egg_editable_toolbar_signals[ACTION_REQUEST],
-		     0, action_name);
-
-      action = find_action (t, action_name);
-      if (action)
-        {
-          item = gtk_action_create_tool_item (action);
-        }
-      else
-        {
-          return NULL;
-        }  
-    }
-
-  gtk_widget_show (item);
-
-  g_signal_connect (item, "drag_begin",
-		    G_CALLBACK (drag_begin_cb), t);
-  g_signal_connect (item, "drag_end",
-		    G_CALLBACK (drag_end_cb), t);
-  g_signal_connect (item, "drag_data_get",
-		    G_CALLBACK (drag_data_get_cb), t);
-  g_signal_connect (item, "drag_data_delete",
-		    G_CALLBACK (drag_data_delete_cb), t);
-
-  if (t->priv->edit_mode)
-    {
-      set_drag_cursor (item);
-      gtk_widget_set_sensitive (item, TRUE);
-      set_item_drag_source (t->priv->model, item, action,
-			    is_separator, type);
-      gtk_tool_item_set_use_drag_window (GTK_TOOL_ITEM (item), TRUE);
-    }
-
-  if (ret_action)
-    {
-      *ret_action = action;
-    }
-
-  return item;
-}
-
-static GtkWidget *
-create_item (EggEditableToolbar *t,
-	     EggToolbarsModel   *model,
-	     int                 toolbar_position,
-	     int                 position,
-             GtkAction         **ret_action)
-{
-  const char *action_name, *type;
-  gboolean is_separator;
-
-  egg_toolbars_model_item_nth (model, toolbar_position, position,
-			       &is_separator, &action_name, &type);
-  return create_item_from_action (t, action_name, type,
-				  is_separator, ret_action);
-}
-
-static gboolean
-data_is_separator (const char *data)
-{
-  return strcmp (data, "separator") == 0;
-}
-
-static void
-drag_data_received_cb (GtkWidget          *widget,
-		       GdkDragContext     *context,
-		       gint                x,
-		       gint                y,
-		       GtkSelectionData   *selection_data,
-		       guint               info,
-		       guint               time,
-		       EggEditableToolbar *etoolbar)
-{
-  char *type;
-  char *id;
-
-  GdkAtom target;
-	  
-  target = gtk_drag_dest_find_target (widget, context, NULL);
-  type = egg_toolbars_model_get_item_type (etoolbar->priv->model, target);
-  id = egg_toolbars_model_get_item_id (etoolbar->priv->model, type,
-                                       (const char*)selection_data->data);
-
-  /* This function can be called for two reasons
-   *
-   *  (1) drag_motion() needs an item to pass to
-   *      gtk_toolbar_set_drop_highlight_item(). We can
-   *      recognize this case by etoolbar->priv->pending being TRUE
-   *      We should just create an item and return.
-   *
-   *  (2) The drag has finished, and drag_drop() wants us to
-   *      actually add a new item to the toolbar.
-   */
-
-  if (id == NULL)
-    {
-      etoolbar->priv->pending = FALSE;
-      g_free (type);
-      return;
-    }
-
-  if (etoolbar->priv->pending)
-    {
-      etoolbar->priv->pending = FALSE;
-      etoolbar->priv->dragged_item =
-        create_item_from_action (etoolbar, id, type,
-				 data_is_separator (id), NULL);
-      g_object_ref (etoolbar->priv->dragged_item);
-      gtk_object_sink (GTK_OBJECT (etoolbar->priv->dragged_item));
-    }
-  else
-    {
-      int pos, toolbar_pos;
-
-      pos = gtk_toolbar_get_drop_index (GTK_TOOLBAR (widget), x, y);
-      toolbar_pos = get_toolbar_position (etoolbar, widget);
-
-      if (data_is_separator ((const char*)selection_data->data))
-	{
-	  egg_toolbars_model_add_separator (etoolbar->priv->model,
-					    toolbar_pos, pos);
-	}
-      else
-	{
-	  egg_toolbars_model_add_item (etoolbar->priv->model,
-				       toolbar_pos, pos, id, type);
-	}
-      
-      gtk_drag_finish (context, TRUE, context->action == GDK_ACTION_MOVE,
-		       time);
-    }
-
-  g_free (type);
-  g_free (id);
-}
-
-static void
-remove_toolbar_cb (GtkWidget          *menuitem,
-		   EggEditableToolbar *etoolbar)
-{
-  int pos;
-
-  pos = get_toolbar_position (etoolbar, etoolbar->priv->selected_toolbar);
-  egg_toolbars_model_remove_toolbar (etoolbar->priv->model, pos);
-}
-
-static void
-popup_toolbar_context_menu_cb (GtkWidget          *toolbar,
-			       gint		   x,
-			       gint		   y,
-			       gint                button_number,
-			       EggEditableToolbar *t)
-{
-  GtkWidget *menu;
-  GtkWidget *item;
-  GtkWidget *image;
-
-  if (t->priv->edit_mode)
-    {
-      EggTbModelFlags flags;
-      int position;
-
-      t->priv->selected_toolbar = toolbar;
-
-      menu = gtk_menu_new ();
-
-      item = gtk_image_menu_item_new_with_mnemonic (_("_Remove Toolbar"));
-      gtk_widget_show (item);
-      image = gtk_image_new_from_stock (GTK_STOCK_REMOVE, GTK_ICON_SIZE_MENU);
-      gtk_widget_show (image);
-      gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image);
-      gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
-      g_signal_connect (item, "activate",
-	                G_CALLBACK (remove_toolbar_cb),
-		        t);
-
-      position = get_toolbar_position (t, toolbar);
-      flags = egg_toolbars_model_get_flags (t->priv->model, position);
-      if (flags & EGG_TB_MODEL_NOT_REMOVABLE)
-        {
-          gtk_widget_set_sensitive (GTK_WIDGET (item), FALSE);
-        }
-
-      gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL, 2,
-		      gtk_get_current_event_time ());
-    }
-}
-
-static void
-free_dragged_item (EggEditableToolbar *etoolbar)
-{
-  if (etoolbar->priv->dragged_item)
-    {
-      gtk_widget_destroy (etoolbar->priv->dragged_item);
-      g_object_unref (etoolbar->priv->dragged_item);
-      etoolbar->priv->dragged_item = NULL;
-    }
-}
-
-static gboolean
-toolbar_drag_drop_cb (GtkWidget          *widget,
-		      GdkDragContext     *context,
-		      gint                x,
-		      gint                y,
-		      guint               time,
-		      EggEditableToolbar *etoolbar)
-{
-  GdkAtom target;
-
-  target = gtk_drag_dest_find_target (widget, context, NULL);
-  if (target != GDK_NONE)
-    {
-      gtk_drag_get_data (widget, context,
-                         target,
-                         time);
-      return TRUE;
-    }
-  
-  free_dragged_item (etoolbar);
-  
-  return FALSE;
-}
-
-static gboolean
-toolbar_drag_motion_cb (GtkWidget          *widget,
-		        GdkDragContext     *context,
-		        gint                x,
-		        gint                y,
-		        guint               time,
-		        EggEditableToolbar *etoolbar)
-{
-  GdkAtom target;
-  int index;
-  GtkToolbar *toolbar = GTK_TOOLBAR (widget);
-  GtkToolItem *item;
-  GtkWidget *source;
-
-  source = gtk_drag_get_source_widget (context);
-  if (source)
-    {
-      EggTbModelFlags flags;
-      int pos;
-      gboolean is_item;
-
-      pos = get_toolbar_position (etoolbar, widget);
-      flags = egg_toolbars_model_get_flags (etoolbar->priv->model, pos);
-
-      is_item = etoolbar->priv->edit_mode &&
-		(gtk_widget_get_ancestor (source, EGG_TYPE_EDITABLE_TOOLBAR) ||
-		 gtk_widget_get_ancestor (source, EGG_TYPE_TOOLBAR_EDITOR));
-
-      if ((flags & EGG_TB_MODEL_ACCEPT_ITEMS_ONLY) && !is_item)
-        {
-          gdk_drag_status (context, 0, time);
-          return FALSE;
-        }
-
-      if (gtk_widget_is_ancestor (source, widget))
-        {
-          context->suggested_action = GDK_ACTION_MOVE;
-        }
-    }
-
-  target = gtk_drag_dest_find_target (widget, context, NULL);
-  if (target == GDK_NONE)
-    {
-      gdk_drag_status (context, 0, time);
-      return FALSE;
-    }
-
-  if (etoolbar->priv->target_toolbar != toolbar)
-    {
-      if (etoolbar->priv->target_toolbar)
-	gtk_toolbar_set_drop_highlight_item
-		(etoolbar->priv->target_toolbar, NULL, 0);
-      
-      free_dragged_item (etoolbar);
-      etoolbar->priv->pending = TRUE;
-
-      etoolbar->priv->target_toolbar = toolbar;
-
-      gtk_drag_get_data (widget, context, target, time);
-    }
-
-  if (etoolbar->priv->dragged_item != NULL &&
-      etoolbar->priv->edit_mode)
-    {
-      item = GTK_TOOL_ITEM (etoolbar->priv->dragged_item);
-
-      index = gtk_toolbar_get_drop_index (toolbar, x, y);
-      gtk_toolbar_set_drop_highlight_item (toolbar, item, index);
-    }
-
-  gdk_drag_status (context, context->suggested_action, time);
-
-  return TRUE;
-}
-
-static void
-toolbar_drag_leave_cb (GtkToolbar         *toolbar,
-		       GdkDragContext     *context,
-		       guint               time,
-		       EggEditableToolbar *etoolbar)
-{
-  /* This is a workaround for bug 125557. Sometimes
-   * we seemingly enter another toolbar *before* leaving
-   * the current one.
-   *
-   * In that case etoolbar->priv->target_toolbar will
-   * have been set to something else and the highlighting
-   * will already have been turned off
-   */
-  
-  if (etoolbar->priv->target_toolbar == toolbar)
-    {
-      gtk_toolbar_set_drop_highlight_item (toolbar, NULL, 0);
-
-      etoolbar->priv->target_toolbar = NULL;
-      free_dragged_item (etoolbar);
-    }
-}
-
-static GtkWidget *
-create_dock (EggEditableToolbar *t)
-{
-  GtkWidget *toolbar, *hbox;
-
-  hbox = gtk_hbox_new (0, FALSE);
-  gtk_widget_show (hbox);
-
-  toolbar = gtk_toolbar_new ();
-  gtk_toolbar_set_show_arrow (GTK_TOOLBAR (toolbar), TRUE);
-  gtk_widget_show (toolbar);
-  gtk_box_pack_start (GTK_BOX (hbox), toolbar, TRUE, TRUE, 0);
-
-  gtk_drag_dest_set (toolbar, 0,
-		     dest_drag_types, G_N_ELEMENTS (dest_drag_types),
-		     GDK_ACTION_MOVE | GDK_ACTION_COPY);
- 
-  g_signal_connect (toolbar, "drag_drop",
-		    G_CALLBACK (toolbar_drag_drop_cb), t); 
-  g_signal_connect (toolbar, "drag_motion",
-		    G_CALLBACK (toolbar_drag_motion_cb), t);
-  g_signal_connect (toolbar, "drag_leave",
-		    G_CALLBACK (toolbar_drag_leave_cb), t);
-
-  g_signal_connect (toolbar, "drag_data_received",
-		    G_CALLBACK (drag_data_received_cb), t);
-  g_signal_connect (toolbar, "popup_context_menu",
-		    G_CALLBACK (popup_toolbar_context_menu_cb), t);
-
-  return hbox;
-}
-
-static void
-set_fixed_style (EggEditableToolbar *t, GtkToolbarStyle style)
-{
-  g_return_if_fail (GTK_IS_TOOLBAR (t->priv->fixed_toolbar));
-  gtk_toolbar_set_style (GTK_TOOLBAR (t->priv->fixed_toolbar),
-  			 style == GTK_TOOLBAR_ICONS ? GTK_TOOLBAR_BOTH_HORIZ : style);
-}
-
-static void
-unset_fixed_style (EggEditableToolbar *t)
-{
-  g_return_if_fail (GTK_IS_TOOLBAR (t->priv->fixed_toolbar));
-  gtk_toolbar_unset_style (GTK_TOOLBAR (t->priv->fixed_toolbar));
-}
-
-static void
-toolbar_changed_cb (EggToolbarsModel   *model,
-	            int                 position,
-	            EggEditableToolbar *t)
-{
-  GtkWidget *toolbar;
-  EggTbModelFlags flags;
-  GtkToolbarStyle style;
-
-  flags = egg_toolbars_model_get_flags (model, position);
-  toolbar = get_toolbar_nth (t, position);
-
-  if (flags & EGG_TB_MODEL_ICONS)
-  {
-    style = GTK_TOOLBAR_ICONS;
-  }
-  else if (flags & EGG_TB_MODEL_TEXT)
-  {
-    style = GTK_TOOLBAR_TEXT;
-  }
-  else if (flags & EGG_TB_MODEL_BOTH)
-  {
-    style = GTK_TOOLBAR_BOTH;
-  }
-  else if (flags & EGG_TB_MODEL_BOTH_HORIZ)
-  {
-    style = GTK_TOOLBAR_BOTH_HORIZ;
-  }
-  else
-  {
-    gtk_toolbar_unset_style (GTK_TOOLBAR (toolbar));
-    if (position == 0 && t->priv->fixed_toolbar)
-      {
-        unset_fixed_style (t);
-      }
-    return;
-  }
-
-  gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), style);
-  if (position == 0 && t->priv->fixed_toolbar)
-    {
-      set_fixed_style (t, style);
-    }
-}
-
-static void
-unparent_fixed (EggEditableToolbar *t)
-{
-  GtkWidget *toolbar, *dock;
-  g_return_if_fail (GTK_IS_TOOLBAR (t->priv->fixed_toolbar));
-
-  toolbar = t->priv->fixed_toolbar;
-  dock = get_dock_nth (t, 0);
-
-  if (dock && toolbar->parent != NULL)
-    {
-      gtk_container_remove (GTK_CONTAINER (dock), toolbar);
-    }
-}
-
-static void
-update_fixed (EggEditableToolbar *t)
-{
-  GtkWidget *toolbar, *dock;
-  if (!t->priv->fixed_toolbar) return;
-
-  toolbar = t->priv->fixed_toolbar;
-  dock = get_dock_nth (t, 0);
-
-  if (dock && toolbar && toolbar->parent == NULL)
-    {
-      gtk_box_pack_end (GTK_BOX (dock), toolbar, FALSE, TRUE, 0);
-
-      gtk_widget_show (toolbar);
-  
-      gtk_widget_set_size_request (dock, -1, -1);
-      gtk_widget_queue_resize_no_redraw (dock);
-    }
-}
-
-static void
-toolbar_added_cb (EggToolbarsModel   *model,
-	          int                 position,
-	          EggEditableToolbar *t)
-{
-  GtkWidget *dock;
-
-  dock = create_dock (t);
-
-  gtk_widget_set_size_request (dock, -1, MIN_TOOLBAR_HEIGHT);
-
-  gtk_box_pack_start (GTK_BOX (t), dock, TRUE, TRUE, 0);
-
-  gtk_box_reorder_child (GTK_BOX (t), dock, position);
-
-  gtk_widget_show_all (dock);
-  
-  update_fixed (t);
-}
-
-static void
-toolbar_removed_cb (EggToolbarsModel   *model,
-	            int                 position,
-	            EggEditableToolbar *t)
-{
-  GtkWidget *toolbar;
-
-  if (position == 0 && t->priv->fixed_toolbar != NULL)
-    {
-      unparent_fixed (t);
-    }
-
-  toolbar = get_dock_nth (t, position);
-  gtk_widget_destroy (toolbar);
-
-  update_fixed (t);
-}
-
-static void
-item_added_cb (EggToolbarsModel   *model,
-	       int                 toolbar_position,
-	       int                 position,
-	       EggEditableToolbar *t)
-{
-  GtkWidget *dock;
-  GtkWidget *toolbar;
-  GtkWidget *item;
-  GtkAction *action;
-
-  toolbar = get_toolbar_nth (t, toolbar_position);
-  item = create_item (t, model, toolbar_position, position, &action);
-  gtk_toolbar_insert (GTK_TOOLBAR (toolbar),
-		      GTK_TOOL_ITEM (item), position);
-
-  dock = get_dock_nth (t, toolbar_position);
-  gtk_widget_set_size_request (dock, -1, -1);
-  gtk_widget_queue_resize_no_redraw (dock);
-
-  /* FIXME Hack to make tooltip work from gtk */
-  if (action)
-    {
-      g_object_notify (G_OBJECT (action), "tooltip");
-    }
-}
-
-static void
-item_removed_cb (EggToolbarsModel   *model,
-	         int                 toolbar_position,
-	         int                 position,
-	         EggEditableToolbar *t)
-{
-  GtkWidget *toolbar;
-  GtkWidget *item;
-
-  toolbar = get_toolbar_nth (t, toolbar_position);
-  item = GTK_WIDGET (gtk_toolbar_get_nth_item
-	(GTK_TOOLBAR (toolbar), position));
-  g_return_if_fail (item != NULL);
-  gtk_container_remove (GTK_CONTAINER (toolbar), item);
-
-  if (egg_toolbars_model_n_items (model, toolbar_position) == 0)
-    {
-      egg_toolbars_model_remove_toolbar (model, toolbar_position);
-    }
-}
-
-static void
-egg_editable_toolbar_construct (EggEditableToolbar *t)
-{
-  int i, l, n_items, n_toolbars;
-  EggToolbarsModel *model = t->priv->model;
-
-  g_return_if_fail (model != NULL);
-  g_return_if_fail (t->priv->manager != NULL);
-
-  n_toolbars = egg_toolbars_model_n_toolbars (model);
-
-  for (i = 0; i < n_toolbars; i++)
-    {
-      GtkWidget *toolbar, *dock;
-
-      dock = create_dock (t);
-      gtk_box_pack_start (GTK_BOX (t), dock, TRUE, TRUE, 0);
-      toolbar = get_toolbar_nth (t, i);
-
-      n_items = egg_toolbars_model_n_items (model, i);
-      for (l = 0; l < n_items; l++)
-        {
-          GtkWidget *item;
-          GtkAction *action;
-
-          item = create_item (t, model, i, l, &action);
-          if (item)
-            {
-	      gtk_toolbar_insert (GTK_TOOLBAR (toolbar),
-			          GTK_TOOL_ITEM (item), l);
-              /* FIXME Hack to make tooltip work from gtk */
-              if (action)
-                {
-                  g_object_notify (G_OBJECT (action), "tooltip");
-                }
-            }
-          else
-            {
-              egg_toolbars_model_remove_item (model, i, l);
-              l--;
-              n_items--;
-            }
-        }
-
-      if (n_items == 0)
-        {
-            gtk_widget_set_size_request (dock, -1, MIN_TOOLBAR_HEIGHT);
-        }
-    }
-
-  update_fixed (t);
-
-  /* apply styles */
-  for (i = 0; i < n_toolbars; i ++)
-    {
-      toolbar_changed_cb (model, i, t);
-    }
-}
-
-static void
-egg_editable_toolbar_disconnect_model (EggEditableToolbar *toolbar)
-{
-  EggToolbarsModel *model = toolbar->priv->model;
-
-  g_signal_handlers_disconnect_by_func
-    (model, G_CALLBACK (item_added_cb), toolbar);
-  g_signal_handlers_disconnect_by_func
-    (model, G_CALLBACK (item_removed_cb), toolbar);
-  g_signal_handlers_disconnect_by_func
-    (model, G_CALLBACK (toolbar_added_cb), toolbar);
-  g_signal_handlers_disconnect_by_func
-    (model, G_CALLBACK (toolbar_removed_cb), toolbar);
-  g_signal_handlers_disconnect_by_func
-    (model, G_CALLBACK (toolbar_changed_cb), toolbar);
-}
-
-static void
-egg_editable_toolbar_deconstruct (EggEditableToolbar *toolbar)
-{
-  EggToolbarsModel *model = toolbar->priv->model;
-  GList *children;
-
-  g_return_if_fail (model != NULL);
-
-  if (toolbar->priv->fixed_toolbar)
-    {
-       unset_fixed_style (toolbar);
-       unparent_fixed (toolbar);
-    }
-
-  children = gtk_container_get_children (GTK_CONTAINER (toolbar));
-  g_list_foreach (children, (GFunc) gtk_widget_destroy, NULL);
-  g_list_free (children);
-}
-
-void
-egg_editable_toolbar_set_model (EggEditableToolbar *toolbar,
-				EggToolbarsModel   *model)
-{
-  g_return_if_fail (EGG_IS_TOOLBARS_MODEL (model));
-  g_return_if_fail (EGG_IS_EDITABLE_TOOLBAR (toolbar));
-  g_return_if_fail (toolbar->priv->manager);
-
-  if (toolbar->priv->model == model) return;
-
-  if (toolbar->priv->model)
-    {
-      egg_editable_toolbar_disconnect_model (toolbar);
-      egg_editable_toolbar_deconstruct (toolbar);
-
-      g_object_unref (toolbar->priv->model);
-    }
-
-  toolbar->priv->model = g_object_ref (model);
-
-  egg_editable_toolbar_construct (toolbar);
-
-  g_signal_connect (model, "item_added",
-		    G_CALLBACK (item_added_cb), toolbar);
-  g_signal_connect (model, "item_removed",
-		    G_CALLBACK (item_removed_cb), toolbar);
-  g_signal_connect (model, "toolbar_added",
-		    G_CALLBACK (toolbar_added_cb), toolbar);
-  g_signal_connect (model, "toolbar_removed",
-		    G_CALLBACK (toolbar_removed_cb), toolbar);
-  g_signal_connect (model, "toolbar_changed",
-		    G_CALLBACK (toolbar_changed_cb), toolbar);
-}
-
-static void
-egg_editable_toolbar_set_ui_manager (EggEditableToolbar *t,
-				     GtkUIManager       *manager)
-{
-  g_return_if_fail (GTK_IS_UI_MANAGER (manager));
-
-  t->priv->manager = g_object_ref (manager);
-}
-
-static void
-egg_editable_toolbar_set_property (GObject      *object,
-				   guint         prop_id,
-				   const GValue *value,
-				   GParamSpec   *pspec)
-{
-  EggEditableToolbar *t = EGG_EDITABLE_TOOLBAR (object);
-
-  switch (prop_id)
-    {
-    case PROP_UI_MANAGER:
-      egg_editable_toolbar_set_ui_manager (t, g_value_get_object (value));
-      break;
-    case PROP_TOOLBARS_MODEL:
-      egg_editable_toolbar_set_model (t, g_value_get_object (value));
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-egg_editable_toolbar_get_property (GObject    *object,
-				   guint       prop_id,
-				   GValue     *value,
-				   GParamSpec *pspec)
-{
-  EggEditableToolbar *t = EGG_EDITABLE_TOOLBAR (object);
-
-  switch (prop_id)
-    {
-    case PROP_UI_MANAGER:
-      g_value_set_object (value, t->priv->manager);
-      break;
-    case PROP_TOOLBARS_MODEL:
-      g_value_set_object (value, t->priv->model);
-      break;
-    default:
-      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
-      break;
-    }
-}
-
-static void
-egg_editable_toolbar_class_init (EggEditableToolbarClass *klass)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-  parent_class = g_type_class_peek_parent (klass);
-
-  object_class->finalize = egg_editable_toolbar_finalize;
-  object_class->set_property = egg_editable_toolbar_set_property;
-  object_class->get_property = egg_editable_toolbar_get_property;
-
-  egg_editable_toolbar_signals[ACTION_REQUEST] =
-    g_signal_new ("action_request",
-		  G_OBJECT_CLASS_TYPE (object_class),
-		  G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (EggEditableToolbarClass, action_request),
-		  NULL, NULL, g_cclosure_marshal_VOID__STRING,
-		  G_TYPE_NONE, 1, G_TYPE_STRING);
-
-  g_object_class_install_property (object_class,
-				   PROP_UI_MANAGER,
-				   g_param_spec_object ("ui-manager",
-							"UI-Mmanager",
-							"UI Manager",
-							GTK_TYPE_UI_MANAGER,
-							G_PARAM_READWRITE));
-  g_object_class_install_property (object_class,
-				   PROP_TOOLBARS_MODEL,
-				   g_param_spec_object ("model",
-							"Model",
-							"Toolbars Model",
-							EGG_TYPE_TOOLBARS_MODEL,
-							G_PARAM_READWRITE));
-
-  g_type_class_add_private (object_class, sizeof (EggEditableToolbarPrivate));
-}
-
-static void
-egg_editable_toolbar_init (EggEditableToolbar *t)
-{
-  t->priv = EGG_EDITABLE_TOOLBAR_GET_PRIVATE (t);
-}
-
-static void
-egg_editable_toolbar_finalize (GObject *object)
-{
-  EggEditableToolbar *t = EGG_EDITABLE_TOOLBAR (object);
-
-  if (t->priv->fixed_toolbar)
-    {
-      g_object_unref (t->priv->fixed_toolbar);
-    }
-
-  if (t->priv->manager)
-    {
-      g_object_unref (t->priv->manager);
-    }
-
-  if (t->priv->model)
-    {
-      egg_editable_toolbar_disconnect_model (t);
-      g_object_unref (t->priv->model);
-    }
-
-  G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-GtkWidget *
-egg_editable_toolbar_new (GtkUIManager     *manager)
-{
-  return GTK_WIDGET (g_object_new (EGG_TYPE_EDITABLE_TOOLBAR,
-				   "ui-manager", manager,
-				   NULL));
-}
-
-GtkWidget *
-egg_editable_toolbar_new_with_model (GtkUIManager     *manager,
-				     EggToolbarsModel *model)
-{
-  return GTK_WIDGET (g_object_new (EGG_TYPE_EDITABLE_TOOLBAR,
-				   "ui-manager", manager,
-				   "model", model,
-				   NULL));
-}
-
-gboolean
-egg_editable_toolbar_get_edit_mode (EggEditableToolbar *etoolbar)
-{
-	return etoolbar->priv->edit_mode;
-}
-
-void
-egg_editable_toolbar_set_edit_mode (EggEditableToolbar *etoolbar,
-				    gboolean            mode)
-{
-  int i, l, n_toolbars, n_items;
-
-  etoolbar->priv->edit_mode = mode;
-
-  n_toolbars = get_n_toolbars (etoolbar);
-  for (i = 0; i < n_toolbars; i++)
-    {
-      GtkWidget *toolbar;
-
-      toolbar = get_toolbar_nth (etoolbar, i);
-      n_items = gtk_toolbar_get_n_items (GTK_TOOLBAR (toolbar));
-      for (l = 0; l < n_items; l++)
-        {
-	  GtkToolItem *item;
-	  const char *action_name, *type;
-          gboolean is_separator;
-	  GtkAction *action = NULL;
-
-          egg_toolbars_model_item_nth (etoolbar->priv->model, i, l,
-		 		       &is_separator, &action_name, &type);
-	  action = find_action (etoolbar, action_name);
-
-	  item = gtk_toolbar_get_nth_item (GTK_TOOLBAR (toolbar), l);
-	  gtk_tool_item_set_use_drag_window (item, mode);
-
-          if (mode)
-	    {
-              set_drag_cursor (GTK_WIDGET (item));
-	      gtk_widget_set_sensitive (GTK_WIDGET (item), TRUE);
-              set_item_drag_source (etoolbar->priv->model, GTK_WIDGET (item),
-				    action, is_separator, type);
-            }
-	  else
-            {
-              unset_drag_cursor (GTK_WIDGET (item));
-              gtk_drag_source_unset (GTK_WIDGET (item));
-
-              if (!is_separator)
-                {
-	          g_object_notify (G_OBJECT (action), "sensitive");
-                }
-	    }
-        }
-    }
-}
-
-void
-egg_editable_toolbar_show (EggEditableToolbar *etoolbar,
-			   const char         *name)
-{
-  int i, n_toolbars;
-  EggToolbarsModel *model = etoolbar->priv->model;
-
-  g_return_if_fail (model != NULL);
-
-  n_toolbars = egg_toolbars_model_n_toolbars (model);
-  for (i = 0; i < n_toolbars; i++)
-    {
-      const char *toolbar_name;
-
-      toolbar_name = egg_toolbars_model_toolbar_nth (model, i);
-      if (strcmp (toolbar_name, name) == 0)
-      {
-        gtk_widget_show (get_dock_nth (etoolbar, i));
-      }
-    }
-}
-
-void
-egg_editable_toolbar_hide (EggEditableToolbar *etoolbar,
-			   const char         *name)
-{
-  int i, n_toolbars;
-  EggToolbarsModel *model = etoolbar->priv->model;
-
-  g_return_if_fail (model != NULL);
-
-  n_toolbars = egg_toolbars_model_n_toolbars (model);
-  for (i = 0; i < n_toolbars; i++)
-    {
-      const char *toolbar_name;
-
-      toolbar_name = egg_toolbars_model_toolbar_nth (model, i);
-      if (strcmp (toolbar_name, name) == 0)
-      {
-        gtk_widget_hide (get_dock_nth (etoolbar, i));
-      }
-    }
-}
-
-void
-egg_editable_toolbar_set_fixed (EggEditableToolbar *toolbar,
-				GtkToolbar         *fixed_toolbar)
-{
-  g_return_if_fail (EGG_IS_EDITABLE_TOOLBAR (toolbar));
-  g_return_if_fail (!fixed_toolbar || GTK_IS_TOOLBAR (fixed_toolbar));
-
-  if (toolbar->priv->fixed_toolbar)
-    {
-      unparent_fixed (toolbar);
-      g_object_unref (toolbar->priv->fixed_toolbar);
-      toolbar->priv->fixed_toolbar = NULL;
-    }
-
-  if (fixed_toolbar)
-    {
-      toolbar->priv->fixed_toolbar = GTK_WIDGET (fixed_toolbar);
-      gtk_toolbar_set_show_arrow (fixed_toolbar, FALSE);
-      g_object_ref (fixed_toolbar);
-      gtk_object_sink (GTK_OBJECT (fixed_toolbar));
-    }
-
-  update_fixed (toolbar);
-}
-
-void
-egg_editable_toolbar_set_drag_dest (EggEditableToolbar   *etoolbar,
-				    const GtkTargetEntry *targets,
-				    gint                  n_targets,
-				    const char           *toolbar_name)
-{
-  int i, n_toolbars;
-  EggToolbarsModel *model = etoolbar->priv->model;
-
-  g_return_if_fail (model != NULL);
-
-  n_toolbars = egg_toolbars_model_n_toolbars (model);
-  for (i = 0; i < n_toolbars; i++)
-    {
-      const char *name;
-
-      name = egg_toolbars_model_toolbar_nth (model, i);
-      if (strcmp (toolbar_name, name) == 0)
-      {
-        GtkWidget *widget = get_toolbar_nth (etoolbar, i);
-
-        gtk_drag_dest_unset (widget);
-        gtk_drag_dest_set (widget, 0,
-                           targets, n_targets,
-                           GDK_ACTION_MOVE | GDK_ACTION_COPY);
-      }
-    }
-}
-
-#define DEFAULT_ICON_HEIGHT 20
-#define DEFAULT_ICON_WIDTH 0
-
-static void
-fake_expose_widget (GtkWidget *widget,
-		    GdkPixmap *pixmap)
-{
-  GdkWindow *tmp_window;
-  GdkEventExpose event;
-
-  event.type = GDK_EXPOSE;
-  event.window = pixmap;
-  event.send_event = FALSE;
-  event.area = widget->allocation;
-  event.region = NULL;
-  event.count = 0;
-
-  tmp_window = widget->window;
-  widget->window = pixmap;
-  gtk_widget_send_expose (widget, (GdkEvent *) &event);
-  widget->window = tmp_window;
-}
-
-/* We should probably experiment some more with this.
- * Right now the rendered icon is pretty good for most
- * themes. However, the icon is slightly large for themes
- * with large toolbar icons.
- */
-static GdkPixbuf *
-new_pixbuf_from_widget (GtkWidget *widget)
-{
-  GtkWidget *window;
-  GdkPixbuf *pixbuf;
-  GtkRequisition requisition;
-  GtkAllocation allocation;
-  GdkPixmap *pixmap;
-  GdkVisual *visual;
-  gint icon_width;
-  gint icon_height;
-
-  icon_width = DEFAULT_ICON_WIDTH;
-
-  if (!gtk_icon_size_lookup_for_settings (gtk_settings_get_default (), 
-					  GTK_ICON_SIZE_LARGE_TOOLBAR,
-					  NULL, 
-					  &icon_height))
-    {
-      icon_height = DEFAULT_ICON_HEIGHT;
-    }
-
-  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-  
-  gtk_container_add (GTK_CONTAINER (window), widget);
-  gtk_widget_realize (window);
-  gtk_widget_show (widget);
-  gtk_widget_realize (widget);
-  gtk_widget_map (widget);
-
-  /* Gtk will never set the width or height of a window to 0. So setting the width to
-   * 0 and than getting it will provide us with the minimum width needed to render
-   * the icon correctly, without any additional window background noise.
-   * This is needed mostly for pixmap based themes.
-   */
-  gtk_window_set_default_size (GTK_WINDOW (window), icon_width, icon_height);
-  gtk_window_get_size (GTK_WINDOW (window),&icon_width, &icon_height);
-
-  gtk_widget_size_request (window, &requisition);
-  allocation.x = 0;
-  allocation.y = 0;
-  allocation.width = icon_width;
-  allocation.height = icon_height;
-  gtk_widget_size_allocate (window, &allocation);
-  gtk_widget_size_request (window, &requisition);
-  
-  /* Create a pixmap */
-  visual = gtk_widget_get_visual (window);
-  pixmap = gdk_pixmap_new (NULL, icon_width, icon_height, visual->depth);
-  gdk_drawable_set_colormap (GDK_DRAWABLE (pixmap), gtk_widget_get_colormap (window));
-
-  /* Draw the window */
-  gtk_widget_ensure_style (window);
-  g_assert (window->style);
-  g_assert (window->style->font_desc);
-  
-  fake_expose_widget (window, pixmap);
-  fake_expose_widget (widget, pixmap);
-  
-  pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, icon_width, icon_height);
-  gdk_pixbuf_get_from_drawable (pixbuf, pixmap, NULL, 0, 0, 0, 0, icon_width, icon_height);
-
-  gtk_widget_destroy (window);
-
-  return pixbuf;
-}
-
-static GdkPixbuf *
-new_separator_pixbuf ()
-{
-  GtkWidget *separator;
-  GdkPixbuf *pixbuf;
-
-  separator = gtk_vseparator_new ();
-  pixbuf = new_pixbuf_from_widget (separator);
-  return pixbuf;
-}
-
-static void
-update_separator_image (GtkImage *image)
-{
-  GdkPixbuf *pixbuf = new_separator_pixbuf ();
-  gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf);
-  g_object_unref (pixbuf);
-}
-
-static gboolean
-style_set_cb (GtkWidget *widget,
-              GtkStyle *previous_style,
-              GtkImage *image)
-{
-
-  update_separator_image (image);
-  return FALSE;
-}
-
-GtkWidget *
-_egg_editable_toolbar_new_separator_image (void)
-{
-  GtkWidget *image = gtk_image_new ();
-  update_separator_image (GTK_IMAGE (image));
-  g_signal_connect (G_OBJECT (image), "style_set",
-		    G_CALLBACK (style_set_cb), GTK_IMAGE (image));
-
-  return image;
-}
-
-EggToolbarsModel *
-egg_editable_toolbar_get_model (EggEditableToolbar *etoolbar)
-{
-  return etoolbar->priv->model;
-}
diff --git a/src/egg-editable-toolbar.h b/src/egg-editable-toolbar.h
@@ -1,90 +0,0 @@
-/*
- *  Copyright (C) 2003, 2004  Marco Pesenti Gritti
- *  Copyright (C) 2003, 2004, 2005  Christian Persch
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- *  $libegg-Id: egg-editable-toolbar.h,v 1.13 2005/06/01 17:22:19 chpe Exp $
- */
-
-#ifndef EGG_EDITABLE_TOOLBAR_H
-#define EGG_EDITABLE_TOOLBAR_H
-
-#include "egg-toolbars-model.h"
-
-#include <gtk/gtkuimanager.h>
-#include <gtk/gtkselection.h>
-#include <gtk/gtkvbox.h>
-#include <gtk/gtktoolitem.h>
-#include <gtk/gtktoolbar.h>
-
-G_BEGIN_DECLS
-
-#define EGG_TYPE_EDITABLE_TOOLBAR             (egg_editable_toolbar_get_type ())
-#define EGG_EDITABLE_TOOLBAR(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_EDITABLE_TOOLBAR, EggEditableToolbar))
-#define EGG_EDITABLE_TOOLBAR_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_EDITABLE_TOOLBAR, EggEditableToolbarClass))
-#define EGG_IS_EDITABLE_TOOLBAR(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_EDITABLE_TOOLBAR))
-#define EGG_IS_EDITABLE_TOOLBAR_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_EDITABLE_TOOLBAR))
-#define EGG_EDITABLE_TOOLBAR_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_EDITABLE_TOOLBAR, EggEditableToolbarClass))
-
-typedef struct _EggEditableToolbar        EggEditableToolbar;
-typedef struct _EggEditableToolbarPrivate EggEditableToolbarPrivate;
-typedef struct _EggEditableToolbarClass   EggEditableToolbarClass;
-
-struct _EggEditableToolbar
-{
-  GtkVBox parent_object;
-
-  /*< private >*/
-  EggEditableToolbarPrivate *priv;
-};
-
-struct _EggEditableToolbarClass
-{
-  GtkVBoxClass parent_class;
-
-  void (* action_request) (EggEditableToolbar *etoolbar,
-			   const char *action_name);
-};
-
-GType               egg_editable_toolbar_get_type        (void);
-GtkWidget	   *egg_editable_toolbar_new		 (GtkUIManager         *manager);
-GtkWidget	   *egg_editable_toolbar_new_with_model	 (GtkUIManager         *manager,
-							  EggToolbarsModel     *model);
-void		    egg_editable_toolbar_set_model       (EggEditableToolbar   *etoolbar,
-							  EggToolbarsModel     *model);
-EggToolbarsModel   *egg_editable_toolbar_get_model       (EggEditableToolbar   *etoolbar);
-void		    egg_editable_toolbar_set_edit_mode	 (EggEditableToolbar   *etoolbar,
-							  gboolean              mode);
-gboolean	    egg_editable_toolbar_get_edit_mode	 (EggEditableToolbar   *etoolbar);
-void		    egg_editable_toolbar_show		 (EggEditableToolbar   *etoolbar,
-							  const char           *name);
-void		    egg_editable_toolbar_hide		 (EggEditableToolbar   *etoolbar,
-							  const char           *name);
-void		    egg_editable_toolbar_set_drag_dest   (EggEditableToolbar   *etoolbar,
-							  const GtkTargetEntry *targets,
-							  gint                  n_targets,
-							  const char           *toolbar_name);
-void		    egg_editable_toolbar_set_fixed       (EggEditableToolbar   *etoolbar,
-							  GtkToolbar           *fixed_toolbar);
-
-
-/* Private Functions */
-
-GtkWidget 	   *_egg_editable_toolbar_new_separator_image (void);
-
-G_END_DECLS
-
-#endif
diff --git a/src/egg-toolbar-editor.c b/src/egg-toolbar-editor.c
@@ -1,690 +0,0 @@
-/*
- *  Copyright (C) 2003 Marco Pesenti Gritti
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- *  $libegg-Id: egg-toolbar-editor.c,v 1.14 2005/06/01 17:22:19 chpe Exp $
- */
-
-#include "config.h"
-
-#include "egg-toolbar-editor.h"
-#include "egg-editable-toolbar.h"
-
-#include <string.h>
-#include <glib/gi18n.h>
-#include <libxml/tree.h>
-#include <gtk/gtkimage.h>
-#include <gtk/gtkeventbox.h>
-#include <gtk/gtkdnd.h>
-#include <gtk/gtkscrolledwindow.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtktable.h>
-#include <gtk/gtkstock.h>
-#include <gtk/gtkhbox.h>
-
-static const GtkTargetEntry dest_drag_types[] = {
-  {EGG_TOOLBAR_ITEM_TYPE, GTK_TARGET_SAME_APP, 0},
-};
-
-static const GtkTargetEntry source_drag_types[] = {
-  {EGG_TOOLBAR_ITEM_TYPE, GTK_TARGET_SAME_APP, 0},
-};
-
-static void egg_toolbar_editor_class_init	(EggToolbarEditorClass *klass);
-static void egg_toolbar_editor_init		(EggToolbarEditor *t);
-static void egg_toolbar_editor_finalize         (GObject *object);
-static void update_actions_list			(EggToolbarEditor *editor);
-static void update_editor_sheet                 (EggToolbarEditor *editor);
-
-enum
-{
-  PROP_0,
-  PROP_UI_MANAGER,
-  PROP_TOOLBARS_MODEL
-};
-
-static GObjectClass *parent_class = NULL;
-
-#define EGG_TOOLBAR_EDITOR_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EGG_TYPE_TOOLBAR_EDITOR, EggToolbarEditorPrivate))
-
-struct EggToolbarEditorPrivate
-{
-  GtkUIManager *manager;
-  EggToolbarsModel *model;
-
-  GtkWidget *table;
-  GtkWidget *scrolled_window;
-
-  GList *default_actions_list;
-  GList *actions_list;
-};
-
-GType
-egg_toolbar_editor_get_type (void)
-{
-  static GType type = 0;
-
-  if (G_UNLIKELY (type == 0))
-    {
-      static const GTypeInfo our_info = {
-	sizeof (EggToolbarEditorClass),
-	NULL,			/* base_init */
-	NULL,			/* base_finalize */
-	(GClassInitFunc) egg_toolbar_editor_class_init,
-	NULL,
-	NULL,			/* class_data */
-	sizeof (EggToolbarEditor),
-	0,			/* n_preallocs */
-	(GInstanceInitFunc) egg_toolbar_editor_init
-      };
-
-      type = g_type_register_static (GTK_TYPE_VBOX,
-				     "EggToolbarEditor",
-				     &our_info, 0);
-    }
-
-  return type;
-}
-
-static gint
-compare_actions (gconstpointer a,
-		 gconstpointer b)
-{
-  GValue value_a = { 0, }, value_b = { 0, };
-  const char *short_label_a, *short_label_b;
-  int ret;
-
-  g_value_init (&value_a, G_TYPE_STRING);
-  g_object_get_property (G_OBJECT (a), "short_label", &value_a);
-  short_label_a = g_value_get_string (&value_a);
-
-  g_value_init (&value_b, G_TYPE_STRING);
-  g_object_get_property (G_OBJECT (b), "short_label", &value_b);
-  short_label_b = g_value_get_string (&value_b);
-
-  ret = g_utf8_collate (short_label_a, short_label_b);
-
-  g_value_unset (&value_a);
-  g_value_unset (&value_b);
-
-  return ret;
-}
-
-static GtkAction *
-find_action (EggToolbarEditor *t,
-	     const char       *name)
-{
-  GList *l;
-  GtkAction *action = NULL;
-
-  l = gtk_ui_manager_get_action_groups (t->priv->manager);
-
-  g_return_val_if_fail (EGG_IS_TOOLBAR_EDITOR (t), NULL);
-  g_return_val_if_fail (name != NULL, NULL);
-
-  for (; l != NULL; l = l->next)
-    {
-      GtkAction *tmp;
-
-      tmp = gtk_action_group_get_action (GTK_ACTION_GROUP (l->data), name);
-      if (tmp)
-	action = tmp;
-    }
-
-  return action;
-}
-
-static void
-egg_toolbar_editor_set_ui_manager (EggToolbarEditor *t,
-				   GtkUIManager     *manager)
-{
-  g_return_if_fail (GTK_IS_UI_MANAGER (manager));
-
-  t->priv->manager = g_object_ref (manager);
-}
-
-static void
-toolbar_removed_cb (EggToolbarsModel   *model,
-	            int                 position,
-	            EggToolbarEditor   *editor)
-{
-  update_actions_list (editor);
-  update_editor_sheet (editor);
-}
-
-static void
-egg_toolbar_editor_set_model (EggToolbarEditor *t,
-			      EggToolbarsModel *model)
-{
-  g_return_if_fail (EGG_IS_TOOLBAR_EDITOR (t));
-
-  t->priv->model = g_object_ref (model);
-
-  g_signal_connect_object (model, "toolbar_removed",
-			   G_CALLBACK (toolbar_removed_cb), t, 0);
-}
-
-static void
-egg_toolbar_editor_set_property (GObject      *object,
-				 guint         prop_id,
-				 const GValue *value,
-				 GParamSpec   *pspec)
-{
-  EggToolbarEditor *t = EGG_TOOLBAR_EDITOR (object);
-
-  switch (prop_id)
-    {
-    case PROP_UI_MANAGER:
-      egg_toolbar_editor_set_ui_manager (t, g_value_get_object (value));
-      break;
-    case PROP_TOOLBARS_MODEL:
-      egg_toolbar_editor_set_model (t, g_value_get_object (value));
-      break;
-    }
-}
-
-static void
-egg_toolbar_editor_get_property (GObject    *object,
-				 guint       prop_id,
-				 GValue     *value,
-				 GParamSpec *pspec)
-{
-  EggToolbarEditor *t = EGG_TOOLBAR_EDITOR (object);
-
-  switch (prop_id)
-    {
-    case PROP_UI_MANAGER:
-      g_value_set_object (value, t->priv->manager);
-      break;
-    case PROP_TOOLBARS_MODEL:
-      g_value_set_object (value, t->priv->model);
-      break;
-    }
-}
-
-static void
-egg_toolbar_editor_class_init (EggToolbarEditorClass *klass)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-  parent_class = g_type_class_peek_parent (klass);
-
-  object_class->finalize = egg_toolbar_editor_finalize;
-  object_class->set_property = egg_toolbar_editor_set_property;
-  object_class->get_property = egg_toolbar_editor_get_property;
-
-  g_object_class_install_property (object_class,
-				   PROP_UI_MANAGER,
-				   g_param_spec_object ("ui-manager",
-							"UI-Manager",
-							"UI Manager",
-							GTK_TYPE_UI_MANAGER,
-							G_PARAM_READWRITE |
-							G_PARAM_CONSTRUCT_ONLY));
- g_object_class_install_property (object_class,
-				  PROP_TOOLBARS_MODEL,
-				  g_param_spec_object ("model",
-						       "Model",
-						       "Toolbars Model",
-						       EGG_TYPE_TOOLBARS_MODEL,
-						       G_PARAM_READWRITE |
-						       G_PARAM_CONSTRUCT_ONLY));
-
-  g_type_class_add_private (object_class, sizeof (EggToolbarEditorPrivate));
-}
-
-static void
-egg_toolbar_editor_finalize (GObject *object)
-{
-  EggToolbarEditor *editor = EGG_TOOLBAR_EDITOR (object);
-
-  if (editor->priv->manager)
-    {
-      g_object_unref (editor->priv->manager);
-    }
-
-  if (editor->priv->model)
-    {
-      g_object_unref (editor->priv->model);
-    }
-
-  g_list_free (editor->priv->default_actions_list);
-  g_list_free (editor->priv->actions_list);
-
-  G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-GtkWidget *
-egg_toolbar_editor_new (GtkUIManager *manager,
-			EggToolbarsModel *model)
-{
-  return GTK_WIDGET (g_object_new (EGG_TYPE_TOOLBAR_EDITOR,
-				   "ui-manager", manager,
-				   "model", model,
-				   NULL));
-}
-
-static void
-drag_begin_cb (GtkWidget          *widget,
-	       GdkDragContext     *context)
-{
-	gtk_widget_hide (widget);
-}
-
-static void
-drag_end_cb (GtkWidget          *widget,
-	     GdkDragContext     *context)
-{
-	gtk_widget_show (widget);
-}
-
-static void
-editor_drag_data_received_cb (GtkWidget          *widget,
-			      GdkDragContext     *context,
-			      gint                x,
-			      gint                y,
-			      GtkSelectionData   *selection_data,
-			      guint               info,
-			      guint               time_,
-			      EggToolbarEditor *editor)
-{
-  GtkAction *action;
-  const char *data;
-
-  g_return_if_fail (EGG_IS_TOOLBAR_EDITOR (editor));
-  g_return_if_fail (selection_data != NULL);
-
-  if (selection_data->length <= 0 || selection_data->data == NULL) return;
-
-  data = (const char *) selection_data->data;
-
-  if (strcmp (data, "separator") == 0) return;
-
-  action = find_action (editor, data);
-  g_return_if_fail (action != NULL);
-
-  if (g_list_find (editor->priv->default_actions_list, action))
-    {
-      editor->priv->actions_list = g_list_insert_sorted
-	    (editor->priv->actions_list, action, compare_actions);
-    }
-
-  update_editor_sheet (editor);
-}
-
-static void
-editor_drag_data_delete_cb (GtkWidget          *widget,
-			    GdkDragContext     *context,
-			    EggToolbarEditor *editor)
-{
-  GtkAction *action;
-  g_return_if_fail (EGG_IS_TOOLBAR_EDITOR (editor));
-
-  action = GTK_ACTION (g_object_get_data (G_OBJECT (widget), "egg-action"));
-  if (action)
-    {
-      editor->priv->actions_list = g_list_remove
-	    (editor->priv->actions_list, action);
-    }
-
-  update_editor_sheet (editor);
-}
-
-static void
-drag_data_get_cb (GtkWidget          *widget,
-		  GdkDragContext     *context,
-		  GtkSelectionData   *selection_data,
-		  guint               info,
-		  guint32             time,
-		  EggToolbarEditor   *editor)
-{
-  GtkAction *action;
-  const char *target;
-
-  action = GTK_ACTION (g_object_get_data (G_OBJECT (widget), "egg-action"));
-
-  if (action)
-    {
-      target = gtk_action_get_name (action);
-    }
-  else
-    {
-      target = "separator";
-    }
-
-  gtk_selection_data_set (selection_data,
-                          selection_data->target, 8,
-                          (const guchar *)target, strlen (target));
-}
-
-static gchar *
-elide_underscores (const gchar *original)
-{
-  gchar *q, *result;
-  const gchar *p;
-  gboolean last_underscore;
-
-  q = result = g_malloc (strlen (original) + 1);
-  last_underscore = FALSE;
-
-  for (p = original; *p; p++)
-    {
-      if (!last_underscore && *p == '_')
-	last_underscore = TRUE;
-      else
-	{
-	  last_underscore = FALSE;
-	  *q++ = *p;
-	}
-    }
-
-  *q = '\0';
-
-  return result;
-}
-
-static void
-set_drag_cursor (GtkWidget *widget)
-{
-  GdkCursor *cursor;
-  GdkPixbuf *pixbuf;
-
-  pixbuf = gdk_pixbuf_new_from_file (UIDIR G_DIR_SEPARATOR_S "hand-open.png", NULL);
-  cursor = gdk_cursor_new_from_pixbuf (gdk_display_get_default (), pixbuf, 12, 12);
-
-  gdk_window_set_cursor (widget->window, cursor);
-  gdk_cursor_unref (cursor);
-  g_object_unref (pixbuf);
-}
-
-static void
-event_box_realize_cb (GtkWidget *widget, GtkImage *icon)
-{
-  GtkImageType type;
-
-  set_drag_cursor (widget);
-
-  type = gtk_image_get_storage_type (icon);
-  if (type == GTK_IMAGE_STOCK)
-    {
-      gchar *stock_id;
-      GdkPixbuf *pixbuf;
-      gtk_image_get_stock (icon, &stock_id, NULL);
-      pixbuf = gtk_widget_render_icon (widget, stock_id,
-	                               GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
-      gtk_drag_source_set_icon_pixbuf (widget, pixbuf);
-      g_object_unref (pixbuf);
-    }
-  else if (type == GTK_IMAGE_PIXBUF)
-    {
-      GdkPixbuf *pixbuf = gtk_image_get_pixbuf (icon);
-      gtk_drag_source_set_icon_pixbuf (widget, pixbuf);
-    }
-}
-
-static GtkWidget *
-editor_create_item (EggToolbarEditor *editor,
-		    GtkImage	     *icon,
-		    const char       *label_text,
-		    GdkDragAction     action)
-{
-  GtkWidget *event_box;
-  GtkWidget *vbox;
-  GtkWidget *label;
-  gchar *label_no_mnemonic = NULL;
-
-  event_box = gtk_event_box_new ();
-  gtk_event_box_set_visible_window (GTK_EVENT_BOX (event_box), FALSE);
-  gtk_widget_show (event_box);
-  gtk_drag_source_set (event_box,
-		       GDK_BUTTON1_MASK,
-		       source_drag_types, G_N_ELEMENTS (source_drag_types), action);
-  g_signal_connect (event_box, "drag_data_get",
-		    G_CALLBACK (drag_data_get_cb), editor);
-  g_signal_connect (event_box, "drag_data_delete",
-		    G_CALLBACK (editor_drag_data_delete_cb), editor);
-  g_signal_connect_after (event_box, "realize",
-		          G_CALLBACK (event_box_realize_cb), icon);
-
-  if (action == GDK_ACTION_MOVE)
-    {
-      g_signal_connect (event_box, "drag_begin",
-		        G_CALLBACK (drag_begin_cb), NULL);
-      g_signal_connect (event_box, "drag_end",
-		        G_CALLBACK (drag_end_cb), NULL);
-    }
-
-  vbox = gtk_vbox_new (0, FALSE);
-  gtk_widget_show (vbox);
-  gtk_container_add (GTK_CONTAINER (event_box), vbox);
-
-  gtk_widget_show (GTK_WIDGET (icon));
-  gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (icon), FALSE, TRUE, 0);
-  label_no_mnemonic = elide_underscores (label_text);
-  label = gtk_label_new (label_no_mnemonic);
-  g_free (label_no_mnemonic);
-  gtk_widget_show (label);
-  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
-
-  return event_box;
-}
-
-static void
-update_editor_sheet (EggToolbarEditor *editor)
-{
-  GList *l;
-  GList *to_drag;
-  int x, y, height, width;
-  GtkWidget *table;
-  GtkWidget *viewport;
-  GtkWidget *item;
-  GtkWidget *icon;
-
-  g_return_if_fail (EGG_IS_TOOLBAR_EDITOR (editor));
-
-  viewport = GTK_BIN (editor->priv->scrolled_window)->child;
-  if (viewport)
-    {
-      table = GTK_BIN (viewport)->child;
-      gtk_container_remove (GTK_CONTAINER (viewport), table);
-    }
-  table = gtk_table_new (0, 0, TRUE);
-  editor->priv->table = table;
-  gtk_container_set_border_width (GTK_CONTAINER (table), 12);
-  gtk_widget_show (table);
-  gtk_scrolled_window_add_with_viewport
-    (GTK_SCROLLED_WINDOW (editor->priv->scrolled_window), table);
-  gtk_drag_dest_set (table, GTK_DEST_DEFAULT_ALL,
-		     dest_drag_types, G_N_ELEMENTS (dest_drag_types), GDK_ACTION_MOVE);
-  g_signal_connect (table, "drag_data_received",
-		    G_CALLBACK (editor_drag_data_received_cb), editor);
-
-  to_drag = editor->priv->actions_list;
-
-  x = y = 0;
-  width = 4;
-  height = (g_list_length (to_drag)) / width + 1;
-  gtk_table_resize (GTK_TABLE (editor->priv->table), height, width);
-
-  for (l = to_drag; l != NULL; l = l->next)
-    {
-      GtkAction *action = (l->data);
-      const char *stock_id, *short_label;
-      GValue value = { 0, };
-
-      g_value_init (&value, G_TYPE_STRING);
-      g_object_get_property (G_OBJECT (action), "stock_id", &value);
-      stock_id = g_value_get_string (&value);
-      icon = gtk_image_new_from_stock
-		(stock_id ? stock_id : GTK_STOCK_DND,
-		 GTK_ICON_SIZE_LARGE_TOOLBAR);
-      g_value_unset (&value);
-
-      g_value_init (&value, G_TYPE_STRING);
-      g_object_get_property (G_OBJECT (action), "short_label", &value);
-      short_label = g_value_get_string (&value);
-      item = editor_create_item (editor, GTK_IMAGE (icon),
-				 short_label, GDK_ACTION_MOVE);
-      g_value_unset (&value);
-      g_object_set_data (G_OBJECT (item), "egg-action", action);
-      gtk_table_attach_defaults (GTK_TABLE (editor->priv->table),
-		                 item, x, x + 1, y, y + 1);
-
-      x++;
-      if (x >= width)
-	{
-	  x = 0;
-	  y++;
-	}
-    }
-
-  icon = _egg_editable_toolbar_new_separator_image ();
-  item = editor_create_item (editor, GTK_IMAGE (icon), _("Separator"),
-			     GDK_ACTION_COPY);
-  gtk_table_attach_defaults (GTK_TABLE (editor->priv->table),
-		             item, x, x + 1, y, y + 1);
-}
-
-static void
-setup_editor (EggToolbarEditor *editor)
-{
-  GtkWidget *scrolled_window;
-
-  gtk_container_set_border_width (GTK_CONTAINER (editor), 12);
-  scrolled_window = gtk_scrolled_window_new (NULL, NULL);
-  editor->priv->scrolled_window = scrolled_window;
-  gtk_widget_show (scrolled_window);
-  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window),
-				  GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-  gtk_box_pack_start (GTK_BOX (editor), scrolled_window, TRUE, TRUE, 0);
-}
-
-static void
-egg_toolbar_editor_init (EggToolbarEditor *t)
-{
-  t->priv = EGG_TOOLBAR_EDITOR_GET_PRIVATE (t);
-
-  t->priv->manager = NULL;
-  t->priv->default_actions_list = NULL;
-  t->priv->actions_list = NULL;
-
-  setup_editor (t);
-}
-
-void
-egg_toolbar_editor_add_action (EggToolbarEditor *editor,
-			       const char       *action_name)
-{
-	GtkAction *action;
-
-	action = find_action (editor, action_name);
-	g_return_if_fail (action != NULL);
-
-	editor->priv->default_actions_list = g_list_insert_sorted
-		(editor->priv->default_actions_list, action, compare_actions);
-}
-
-static void
-parse_item_list (EggToolbarEditor *t,
-		 xmlNodePtr        child)
-{
-  while (child)
-    {
-      if (xmlStrEqual (child->name, (const xmlChar*) "toolitem"))
-	{
-	  xmlChar *name;
-
-	  name = xmlGetProp (child, (const xmlChar*) "name");
-	  egg_toolbar_editor_add_action (t, (const char*)name);
-	  xmlFree (name);
-	}
-      child = child->next;
-    }
-}
-
-static gboolean
-model_has_action (EggToolbarsModel *model, GtkAction *action)
-{
-  int i, l, n_items, n_toolbars;
-
-  n_toolbars = egg_toolbars_model_n_toolbars (model);
-  for (i = 0; i < n_toolbars; i++)
-    {
-      n_items = egg_toolbars_model_n_items (model, i);
-      for (l = 0; l < n_items; l++)
-        {
-          const char *name;
-	  const char *action_name;
-          gboolean sep;
-
-          egg_toolbars_model_item_nth (model, i, l, &sep, &name, NULL);
-          action_name = gtk_action_get_name (action);
-          if (!sep && strcmp (name, action_name) == 0) return TRUE;
-        }
-    }
-
-  return FALSE;
-}
-
-static void
-update_actions_list (EggToolbarEditor *editor)
-{
-  GList *l;
-
-  if (editor->priv->actions_list)
-    g_list_free (editor->priv->actions_list);
-
-  /* Remove the already used items */
-  editor->priv->actions_list = NULL;
-
-  for (l = editor->priv->default_actions_list; l != NULL; l = l->next)
-    {
-      GtkAction *action = GTK_ACTION (l->data);
-
-      if (!model_has_action (editor->priv->model, action))
-        {
-          editor->priv->actions_list = g_list_insert_sorted
-		(editor->priv->actions_list, action, compare_actions);
-        }
-    }
-}
-
-void
-egg_toolbar_editor_load_actions (EggToolbarEditor *editor,
-				 const char       *xml_file)
-{
-  xmlDocPtr doc;
-  xmlNodePtr root;
-  xmlNodePtr child;
-
-  doc = xmlParseFile (xml_file);
-  root = xmlDocGetRootElement (doc);
-  child = root->children;
-
-  while (child)
-    {
-      if (xmlStrEqual (child->name, (const xmlChar*) "available"))
-	{
-	  parse_item_list (editor, child->children);
-	}
-      child = child->next;
-    }
-
-  xmlFreeDoc (doc);
-
-  update_actions_list (editor);
-  update_editor_sheet (editor);
-}
diff --git a/src/egg-toolbar-editor.h b/src/egg-toolbar-editor.h
@@ -1,67 +0,0 @@
-/*
- *  Copyright (C) 2003 Marco Pesenti Gritti
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifndef EGG_TOOLBAR_EDITOR_H
-#define EGG_TOOLBAR_EDITOR_H
-
-#include <gtk/gtkvbox.h>
-#include <gtk/gtkuimanager.h>
-
-#include "egg-toolbars-model.h"
-
-G_BEGIN_DECLS
-
-typedef struct EggToolbarEditorClass EggToolbarEditorClass;
-
-#define EGG_TYPE_TOOLBAR_EDITOR             (egg_toolbar_editor_get_type ())
-#define EGG_TOOLBAR_EDITOR(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_TOOLBAR_EDITOR, EggToolbarEditor))
-#define EGG_TOOLBAR_EDITOR_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_TOOLBAR_EDITOR, EggToolbarEditorClass))
-#define EGG_IS_TOOLBAR_EDITOR(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_TOOLBAR_EDITOR))
-#define EGG_IS_TOOLBAR_EDITOR_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_TOOLBAR_EDITOR))
-#define EGG_TOOLBAR_EDITOR_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_TOOLBAR_EDITOR, EggToolbarEditorClass))
-
-
-typedef struct EggToolbarEditor EggToolbarEditor;
-typedef struct EggToolbarEditorPrivate EggToolbarEditorPrivate;
-
-struct EggToolbarEditor
-{
-  GtkVBox parent_object;
-
-  /*< private >*/
-  EggToolbarEditorPrivate *priv;
-};
-
-struct EggToolbarEditorClass
-{
-  GtkVBoxClass parent_class;
-};
-
-
-GType             egg_toolbar_editor_get_type     (void);
-GtkWidget        *egg_toolbar_editor_new          (GtkUIManager *manager,
-						   EggToolbarsModel *model);
-void              egg_toolbar_editor_load_actions (EggToolbarEditor *editor,
-						   const char       *xml_file);
-
-void		  egg_toolbar_editor_add_action	  (EggToolbarEditor *editor,
-						   const char *action_name);
-
-G_END_DECLS
-
-#endif
diff --git a/src/egg-toolbars-model.c b/src/egg-toolbars-model.c
@@ -1,828 +0,0 @@
-/*
- *  Copyright (C) 2002-2004 Marco Pesenti Gritti
- *  Copyright (C) 2004 Christian Persch
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- *  $libegg-Id: egg-toolbars-model.c,v 1.15 2005/06/01 17:22:19 chpe Exp $
- */
-
-#include "config.h"
-
-#include "egg-toolbars-model.h"
-#include "eggmarshalers.h"
-
-#include <unistd.h>
-#include <string.h>
-#include <libxml/tree.h>
-#include <gdk/gdkproperty.h>
-
-static void egg_toolbars_model_class_init (EggToolbarsModelClass *klass);
-static void egg_toolbars_model_init       (EggToolbarsModel      *t);
-static void egg_toolbars_model_finalize   (GObject               *object);
-
-enum
-{
-  ITEM_ADDED,
-  ITEM_REMOVED,
-  TOOLBAR_ADDED,
-  TOOLBAR_CHANGED,
-  TOOLBAR_REMOVED,
-  GET_ITEM_TYPE,
-  GET_ITEM_ID,
-  GET_ITEM_DATA,
-  LAST_SIGNAL
-};
-
-typedef struct
-{
-  char *name;
-  EggTbModelFlags flags;
-} EggToolbarsToolbar;
-
-typedef struct
-{
-  char *id;
-  char *type;
-  gboolean separator;
-} EggToolbarsItem;
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-static GObjectClass *parent_class = NULL;
-
-#define EGG_TOOLBARS_MODEL_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), EGG_TYPE_TOOLBARS_MODEL, EggToolbarsModelPrivate))
-
-struct EggToolbarsModelPrivate
-{
-  GNode *toolbars;
-};
-
-GType
-egg_toolbars_model_get_type (void)
-{
-  static GType type = 0;
-
-  if (G_UNLIKELY (type == 0))
-    {
-      static const GTypeInfo our_info = {
-	sizeof (EggToolbarsModelClass),
-	NULL,			/* base_init */
-	NULL,			/* base_finalize */
-	(GClassInitFunc) egg_toolbars_model_class_init,
-	NULL,
-	NULL,			/* class_data */
-	sizeof (EggToolbarsModel),
-	0,			/* n_preallocs */
-	(GInstanceInitFunc) egg_toolbars_model_init
-      };
-
-      type = g_type_register_static (G_TYPE_OBJECT,
-				     "EggToolbarsModel",
-				     &our_info, 0);
-    }
-
-  return type;
-}
-
-static xmlDocPtr
-egg_toolbars_model_to_xml (EggToolbarsModel *t)
-{
-  GNode *l1, *l2, *tl;
-  xmlDocPtr doc;
-
-  g_return_val_if_fail (EGG_IS_TOOLBARS_MODEL (t), NULL);
-
-  tl = t->priv->toolbars;
-
-  xmlIndentTreeOutput = TRUE;
-  doc = xmlNewDoc ((const xmlChar*) "1.0");
-  doc->children = xmlNewDocNode (doc, NULL, (const xmlChar*) "toolbars", NULL);
-
-  for (l1 = tl->children; l1 != NULL; l1 = l1->next)
-    {
-      xmlNodePtr tnode;
-      EggToolbarsToolbar *toolbar = l1->data;
-
-      tnode = xmlNewChild (doc->children, NULL, (const xmlChar*) "toolbar", NULL);
-      xmlSetProp (tnode, (const xmlChar*) "name", (const xmlChar*) toolbar->name);
-
-      for (l2 = l1->children; l2 != NULL; l2 = l2->next)
-	{
-	  xmlNodePtr node;
-	  EggToolbarsItem *item = l2->data;
-
-	  if (item->separator)
-	    {
-	      node = xmlNewChild (tnode, NULL, (const xmlChar*) "separator", NULL);
-	    }
-	  else
-	    {
-	      char *data;
-
-	      node = xmlNewChild (tnode, NULL, (const xmlChar*) "toolitem", NULL);
-	      data = egg_toolbars_model_get_item_data (t, item->type, item->id);
-	      xmlSetProp (node, (const xmlChar*) "type", (const xmlChar*) item->type);
-	      xmlSetProp (node, (const xmlChar*) "name", (const xmlChar*) data);
-	      g_free (data);
-	    }
-	}
-    }
-
-  return doc;
-}
-
-static gboolean
-safe_save_xml (const char *xml_file, xmlDocPtr doc)
-{
-	char *tmp_file;
-	char *old_file;
-	gboolean old_exist;
-	gboolean retval = TRUE;
-
-	tmp_file = g_strconcat (xml_file, ".tmp", NULL);
-	old_file = g_strconcat (xml_file, ".old", NULL);
-
-	if (xmlSaveFormatFile (tmp_file, doc, 1) <= 0)
-	{
-		g_warning ("Failed to write XML data to %s", tmp_file);
-		goto failed;
-	}
-
-	old_exist = g_file_test (xml_file, G_FILE_TEST_EXISTS);
-
-	if (old_exist)
-	{
-		if (rename (xml_file, old_file) < 0)
-		{
-			g_warning ("Failed to rename %s to %s", xml_file, old_file);
-			retval = FALSE;
-			goto failed;
-		}
-	}
-
-	if (rename (tmp_file, xml_file) < 0)
-	{
-		g_warning ("Failed to rename %s to %s", tmp_file, xml_file);
-
-		if (rename (old_file, xml_file) < 0)
-		{
-			g_warning ("Failed to restore %s from %s", xml_file, tmp_file);
-		}
-		retval = FALSE;
-		goto failed;
-	}
-
-	if (old_exist)
-	{
-		if (unlink (old_file) < 0)
-		{
-			g_warning ("Failed to delete old file %s", old_file);
-		}
-	}
-
-	failed:
-	g_free (old_file);
-	g_free (tmp_file);
-
-	return retval;
-}
-
-void
-egg_toolbars_model_save (EggToolbarsModel *t,
-			 const char *xml_file,
-			 const char *version)
-{
-  xmlDocPtr doc;
-  xmlNodePtr root;
-
-  g_return_if_fail (EGG_IS_TOOLBARS_MODEL (t));
-
-  doc = egg_toolbars_model_to_xml (t);
-  root = xmlDocGetRootElement (doc);
-  xmlSetProp (root, (const xmlChar*) "version", (const xmlChar*) version);
-  safe_save_xml (xml_file, doc);
-  xmlFreeDoc (doc);
-}
-
-static EggToolbarsToolbar *
-toolbars_toolbar_new (const char *name)
-{
-  EggToolbarsToolbar *toolbar;
-
-  toolbar = g_new (EggToolbarsToolbar, 1);
-  toolbar->name = g_strdup (name);
-  toolbar->flags = 0;
-
-  return toolbar;
-}
-
-static EggToolbarsItem *
-toolbars_item_new (const char *id,
-		   const char *type,
-		   gboolean    separator)
-{
-  EggToolbarsItem *item;
-
-  g_return_val_if_fail (id != NULL, NULL);
-  g_return_val_if_fail (type != NULL, NULL);
-
-  item = g_new (EggToolbarsItem, 1);
-  item->id = g_strdup (id);
-  item->type = g_strdup (type);
-  item->separator = separator;
-
-  return item;
-}
-
-static void
-free_toolbar_node (GNode *toolbar_node)
-{
-  EggToolbarsToolbar *toolbar = toolbar_node->data;
-
-  g_free (toolbar->name);
-  g_free (toolbar);
-
-  g_node_destroy (toolbar_node);
-}
-
-static void
-free_item_node (GNode *item_node)
-{
-  EggToolbarsItem *item = item_node->data;
-
-  g_free (item->id);
-  g_free (item->type);
-  g_free (item);
-
-  g_node_destroy (item_node);
-}
-
-EggTbModelFlags
-egg_toolbars_model_get_flags (EggToolbarsModel *t,
-			      int               toolbar_position)
-{
-  GNode *toolbar_node;
-  EggToolbarsToolbar *toolbar;
-
-  toolbar_node = g_node_nth_child (t->priv->toolbars, toolbar_position);
-  g_return_val_if_fail (toolbar_node != NULL, 0);
-
-  toolbar = toolbar_node->data;
-
-  return toolbar->flags;
-}
-
-void
-egg_toolbars_model_set_flags (EggToolbarsModel *t,
-			      int               toolbar_position,
-			      EggTbModelFlags   flags)
-{
-  GNode *toolbar_node;
-  EggToolbarsToolbar *toolbar;
-
-  toolbar_node = g_node_nth_child (t->priv->toolbars, toolbar_position);
-  g_return_if_fail (toolbar_node != NULL);
-
-  toolbar = toolbar_node->data;
-
-  toolbar->flags = flags;
-
-  g_signal_emit (G_OBJECT (t), signals[TOOLBAR_CHANGED],
-		 0, toolbar_position);
-}
-
-void
-egg_toolbars_model_add_separator (EggToolbarsModel *t,
-			          int		    toolbar_position,
-			          int		    position)
-{
-  GNode *parent_node;
-  GNode *node;
-  EggToolbarsItem *item;
-  int real_position;
-
-  g_return_if_fail (EGG_IS_TOOLBARS_MODEL (t));
-
-  parent_node = g_node_nth_child (t->priv->toolbars, toolbar_position);
-  item = toolbars_item_new ("separator", EGG_TOOLBAR_ITEM_TYPE, TRUE);
-  node = g_node_new (item);
-  g_node_insert (parent_node, position, node);
-
-  real_position = g_node_child_position (parent_node, node);
-
-  g_signal_emit (G_OBJECT (t), signals[ITEM_ADDED], 0,
-		 toolbar_position, real_position);
-}
-
-static gboolean
-impl_add_item (EggToolbarsModel    *t,
-	       int		    toolbar_position,
-	       int		    position,
-	       const char          *id,
-	       const char          *type)
-{
-  GNode *parent_node;
-  GNode *node;
-  EggToolbarsItem *item;
-  int real_position;
-
-  g_return_val_if_fail (EGG_IS_TOOLBARS_MODEL (t), FALSE);
-  g_return_val_if_fail (id != NULL, FALSE);
-  g_return_val_if_fail (type != NULL, FALSE);
-
-  parent_node = g_node_nth_child (t->priv->toolbars, toolbar_position);
-  item = toolbars_item_new (id, type, FALSE);
-  node = g_node_new (item);
-  g_node_insert (parent_node, position, node);
-
-  real_position = g_node_child_position (parent_node, node);
-
-  g_signal_emit (G_OBJECT (t), signals[ITEM_ADDED], 0,
-		 toolbar_position, real_position);
-
-  return TRUE;
-}
-
-static void
-parse_item_list (EggToolbarsModel *t,
-		 xmlNodePtr        child,
-		 int               position)
-{
-  while (child)
-    {
-      if (xmlStrEqual (child->name, (const xmlChar*) "toolitem"))
-	{
-	  xmlChar *name, *type;
-	  char *id;
-
-	  name = xmlGetProp (child, (const xmlChar*) "name");
-	  type = xmlGetProp (child, (const xmlChar*) "type");
-          if (type == NULL)
-            {
-              type = xmlCharStrdup (EGG_TOOLBAR_ITEM_TYPE);
-            }
-
-	  if (name != NULL && name[0] != '\0' && type != NULL)
-	    {
-              id = egg_toolbars_model_get_item_id (t, (const char*)type, (const char*)name);
-	      if (id != NULL)
-	        {
-	          egg_toolbars_model_add_item (t, position, -1, id, (const char*)type);
-                }
-              g_free (id);
-            }
-	  xmlFree (name);
-          xmlFree (type);
-	}
-      else if (xmlStrEqual (child->name, (const xmlChar*) "separator"))
-	{
-	  egg_toolbars_model_add_separator (t, position, -1);
-	}
-
-      child = child->next;
-    }
-}
-
-int
-egg_toolbars_model_add_toolbar (EggToolbarsModel *t,
-				int               position,
-				const char       *name)
-{
-  GNode *node;
-  int real_position;
-
-  g_return_val_if_fail (EGG_IS_TOOLBARS_MODEL (t), -1);
-
-  node = g_node_new (toolbars_toolbar_new (name));
-  g_node_insert (t->priv->toolbars, position, node);
-
-  real_position = g_node_child_position (t->priv->toolbars, node);
-
-  g_signal_emit (G_OBJECT (t), signals[TOOLBAR_ADDED],
-		 0, real_position);
-
-  return g_node_child_position (t->priv->toolbars, node);
-}
-
-static void
-parse_toolbars (EggToolbarsModel *t,
-		xmlNodePtr        child)
-{
-  while (child)
-    {
-      if (xmlStrEqual (child->name, (const xmlChar*) "toolbar"))
-	{
-	  xmlChar *name;
-	  xmlChar *style;
-	  int position;
-
-	  name = xmlGetProp (child, (const xmlChar*) "name");
-	  position = egg_toolbars_model_add_toolbar (t, -1, (const char*) name);
-	  xmlFree (name);
-
-	  style = xmlGetProp (child, (const xmlChar*) "style");
-	  if (style && xmlStrEqual (style, (const xmlChar*) "icons-only"))
-	    {
-	      /* FIXME: use toolbar position instead of 0 */
-	      egg_toolbars_model_set_flags (t, 0, EGG_TB_MODEL_ICONS);
-	    }
-	  xmlFree (style);
-
-	  parse_item_list (t, child->children, position);
-	}
-
-      child = child->next;
-    }
-}
-
-gboolean
-egg_toolbars_model_load (EggToolbarsModel *t,
-			 const char *xml_file)
-{
-  xmlDocPtr doc;
-  xmlNodePtr root;
-
-  g_return_val_if_fail (EGG_IS_TOOLBARS_MODEL (t), FALSE);
-
-  if (!xml_file || !g_file_test (xml_file, G_FILE_TEST_EXISTS)) return FALSE;
-
-  doc = xmlParseFile (xml_file);
-  if (doc == NULL)
-  {
-    g_warning ("Failed to load XML data from %s", xml_file);
-    return FALSE;
-  }
-  root = xmlDocGetRootElement (doc);
-
-  parse_toolbars (t, root->children);
-
-  xmlFreeDoc (doc);
-
-  return TRUE;
-}
-
-static char *
-impl_get_item_id (EggToolbarsModel *t,
-		  const char       *type,
-		  const char       *data)
-{
-  if (strcmp (type, EGG_TOOLBAR_ITEM_TYPE) == 0)
-    {
-      return g_strdup (data);
-    }
-
-  return NULL;
-}
-
-static char *
-impl_get_item_data (EggToolbarsModel *t,
-		    const char       *type,
-		    const char       *id)
-{
-  if (strcmp (type, EGG_TOOLBAR_ITEM_TYPE) == 0)
-    {
-      return g_strdup (id);
-    }
-
-  return NULL;
-}
-
-static char *
-impl_get_item_type (EggToolbarsModel *t,
-		    GdkAtom type)
-{
-  if (gdk_atom_intern (EGG_TOOLBAR_ITEM_TYPE, FALSE) == type)
-    {
-      return g_strdup (EGG_TOOLBAR_ITEM_TYPE);
-    }
-
-  return NULL;
-}
-
-static gboolean
-_egg_accumulator_STRING (GSignalInvocationHint *ihint,
-                         GValue                *return_accu,
-                         const GValue          *handler_return,
-                         gpointer               dummy)
-{
-  gboolean continue_emission;
-  const char *retval;
-
-  retval = g_value_get_string (handler_return);
-  g_value_set_string (return_accu, retval);
-  continue_emission = !retval || !retval[0];
-  
-  return continue_emission;
-}
-
-
-static void
-egg_toolbars_model_class_init (EggToolbarsModelClass *klass)
-{
-  GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-  parent_class = g_type_class_peek_parent (klass);
-
-  object_class->finalize = egg_toolbars_model_finalize;
-
-  klass->add_item = impl_add_item;
-  klass->get_item_id = impl_get_item_id;
-  klass->get_item_data = impl_get_item_data;
-  klass->get_item_type = impl_get_item_type;
-
-  signals[ITEM_ADDED] =
-    g_signal_new ("item_added",
-		  G_OBJECT_CLASS_TYPE (object_class),
-		  G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (EggToolbarsModelClass, item_added),
-		  NULL, NULL, _egg_marshal_VOID__INT_INT,
-		  G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
-  signals[TOOLBAR_ADDED] =
-    g_signal_new ("toolbar_added",
-		  G_OBJECT_CLASS_TYPE (object_class),
-		  G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (EggToolbarsModelClass, toolbar_added),
-		  NULL, NULL, g_cclosure_marshal_VOID__INT,
-		  G_TYPE_NONE, 1, G_TYPE_INT);
-  signals[ITEM_REMOVED] =
-    g_signal_new ("item_removed",
-		  G_OBJECT_CLASS_TYPE (object_class),
-		  G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (EggToolbarsModelClass, item_removed),
-		  NULL, NULL, _egg_marshal_VOID__INT_INT,
-		  G_TYPE_NONE, 2, G_TYPE_INT, G_TYPE_INT);
-  signals[TOOLBAR_REMOVED] =
-    g_signal_new ("toolbar_removed",
-		  G_OBJECT_CLASS_TYPE (object_class),
-		  G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (EggToolbarsModelClass, toolbar_removed),
-		  NULL, NULL, g_cclosure_marshal_VOID__INT,
-		  G_TYPE_NONE, 1, G_TYPE_INT);
-  signals[TOOLBAR_CHANGED] =
-    g_signal_new ("toolbar_changed",
-		  G_OBJECT_CLASS_TYPE (object_class),
-		  G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (EggToolbarsModelClass, toolbar_changed),
-		  NULL, NULL, g_cclosure_marshal_VOID__INT,
-		  G_TYPE_NONE, 1, G_TYPE_INT);
-  signals[GET_ITEM_TYPE] =
-    g_signal_new ("get_item_type",
-		  G_OBJECT_CLASS_TYPE (object_class),
-		  G_SIGNAL_RUN_FIRST | G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (EggToolbarsModelClass, get_item_type),
-		  _egg_accumulator_STRING, NULL,
-		  _egg_marshal_STRING__POINTER,
-		  G_TYPE_STRING, 1, G_TYPE_POINTER);
-  signals[GET_ITEM_ID] =
-    g_signal_new ("get_item_id",
-		  G_OBJECT_CLASS_TYPE (object_class),
-		  G_SIGNAL_RUN_FIRST | G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (EggToolbarsModelClass, get_item_id),
-		  _egg_accumulator_STRING, NULL,
-		  _egg_marshal_STRING__STRING_STRING,
-		  G_TYPE_STRING, 2, G_TYPE_STRING, G_TYPE_STRING);
-  signals[GET_ITEM_DATA] =
-    g_signal_new ("get_item_data",
-		  G_OBJECT_CLASS_TYPE (object_class),
-		  G_SIGNAL_RUN_FIRST | G_SIGNAL_RUN_LAST,
-		  G_STRUCT_OFFSET (EggToolbarsModelClass, get_item_data),
-		  _egg_accumulator_STRING, NULL,
-		  _egg_marshal_STRING__STRING_STRING,
-		  G_TYPE_STRING, 2, G_TYPE_STRING, G_TYPE_STRING);
-
-  g_type_class_add_private (object_class, sizeof (EggToolbarsModelPrivate));
-}
-
-static void
-egg_toolbars_model_init (EggToolbarsModel *t)
-{
-  t->priv =EGG_TOOLBARS_MODEL_GET_PRIVATE (t);
-
-  t->priv->toolbars = g_node_new (NULL);
-}
-
-static void
-free_toolbar (GNode *toolbar_node)
-{
-  g_node_children_foreach (toolbar_node, G_TRAVERSE_ALL,
-    			   (GNodeForeachFunc) free_item_node, NULL);
-  free_toolbar_node (toolbar_node);
-}
-
-static void
-egg_toolbars_model_finalize (GObject *object)
-{
-  EggToolbarsModel *t = EGG_TOOLBARS_MODEL (object);
-
-  g_node_children_foreach (t->priv->toolbars, G_TRAVERSE_ALL,
-    			   (GNodeForeachFunc) free_toolbar, NULL);
-  g_node_destroy (t->priv->toolbars);
-
-  G_OBJECT_CLASS (parent_class)->finalize (object);
-}
-
-EggToolbarsModel *
-egg_toolbars_model_new (void)
-{
-  return EGG_TOOLBARS_MODEL (g_object_new (EGG_TYPE_TOOLBARS_MODEL, NULL));
-}
-
-void
-egg_toolbars_model_remove_toolbar (EggToolbarsModel   *t,
-				   int                 position)
-{
-  GNode *node;
-  EggTbModelFlags flags;
-
-  g_return_if_fail (EGG_IS_TOOLBARS_MODEL (t));
-
-  flags = egg_toolbars_model_get_flags (t, position);
-
-  if (!(flags & EGG_TB_MODEL_NOT_REMOVABLE))
-    {
-      node = g_node_nth_child (t->priv->toolbars, position);
-      g_return_if_fail (node != NULL);
-
-      free_toolbar_node (node);
-
-      g_signal_emit (G_OBJECT (t), signals[TOOLBAR_REMOVED],
-		     0, position);
-    }
-}
-
-void
-egg_toolbars_model_remove_item (EggToolbarsModel *t,
-				int               toolbar_position,
-				int               position)
-{
-  GNode *node, *toolbar;
-
-  g_return_if_fail (EGG_IS_TOOLBARS_MODEL (t));
-
-  toolbar = g_node_nth_child (t->priv->toolbars, toolbar_position);
-  g_return_if_fail (toolbar != NULL);
-
-  node = g_node_nth_child (toolbar, position);
-  g_return_if_fail (node != NULL);
-
-  free_item_node (node);
-
-  g_signal_emit (G_OBJECT (t), signals[ITEM_REMOVED], 0,
-		 toolbar_position, position);
-}
-
-void
-egg_toolbars_model_move_item (EggToolbarsModel *t,
-			      int               toolbar_position,
-			      int               position,
-			      int		new_toolbar_position,
-			      int		new_position)
-{
-  GNode *node, *toolbar, *new_toolbar;
-
-  g_return_if_fail (EGG_IS_TOOLBARS_MODEL (t));
-
-  toolbar = g_node_nth_child (t->priv->toolbars, toolbar_position);
-  g_return_if_fail (toolbar != NULL);
-
-  new_toolbar = g_node_nth_child (t->priv->toolbars, new_toolbar_position);
-  g_return_if_fail (new_toolbar != NULL);
-
-  node = g_node_nth_child (toolbar, position);
-  g_return_if_fail (node != NULL);
-
-  g_node_unlink (node);
-
-  g_signal_emit (G_OBJECT (t), signals[ITEM_REMOVED], 0,
-		 toolbar_position, position);
-
-  g_node_insert (new_toolbar, new_position, node);
-
-  g_signal_emit (G_OBJECT (t), signals[ITEM_ADDED], 0,
-		 new_toolbar_position, new_position);
-}
-
-int
-egg_toolbars_model_n_items (EggToolbarsModel *t,
-			    int               toolbar_position)
-{
-  GNode *toolbar;
-
-  toolbar = g_node_nth_child (t->priv->toolbars, toolbar_position);
-  g_return_val_if_fail (toolbar != NULL, -1);
-
-  return g_node_n_children (toolbar);
-}
-
-void
-egg_toolbars_model_item_nth (EggToolbarsModel *t,
-			     int	       toolbar_position,
-			     int               position,
-			     gboolean         *is_separator,
-			     const char      **id,
-			     const char      **type)
-{
-  GNode *toolbar;
-  GNode *item;
-  EggToolbarsItem *idata;
-
-  toolbar = g_node_nth_child (t->priv->toolbars, toolbar_position);
-  g_return_if_fail (toolbar != NULL);
-
-  item = g_node_nth_child (toolbar, position);
-  g_return_if_fail (item != NULL);
-
-  idata = item->data;
-
-  *is_separator = idata->separator;
-
-  if (id)
-    {
-      *id = idata->id;
-    }
-
-  if (type)
-    {
-      *type = idata->type;
-    }
-}
-
-int
-egg_toolbars_model_n_toolbars (EggToolbarsModel *t)
-{
-  return g_node_n_children (t->priv->toolbars);
-}
-
-const char *
-egg_toolbars_model_toolbar_nth (EggToolbarsModel *t,
-				int               position)
-{
-  GNode *toolbar;
-  EggToolbarsToolbar *tdata;
-
-  toolbar = g_node_nth_child (t->priv->toolbars, position);
-  g_return_val_if_fail (toolbar != NULL, NULL);
-
-  tdata = toolbar->data;
-
-  return tdata->name;
-}
-
-gboolean
-egg_toolbars_model_add_item (EggToolbarsModel *t,
-			     int	       toolbar_position,
-			     int               position,
-			     const char       *id,
-			     const char       *type)
-{
-  EggToolbarsModelClass *klass = EGG_TOOLBARS_MODEL_GET_CLASS (t);
-  return klass->add_item (t, toolbar_position, position, id, type);
-}
-
-char *
-egg_toolbars_model_get_item_id (EggToolbarsModel *t,
-			        const char       *type,
-			        const char       *name)
-{
-  char *retval;
-
-  g_signal_emit (t, signals[GET_ITEM_ID], 0, type, name, &retval);
-
-  return retval;
-}
-
-char *
-egg_toolbars_model_get_item_data (EggToolbarsModel *t,
-				  const char       *type,
-			          const char       *id)
-{
-  char *retval;
-
-  g_signal_emit (t, signals[GET_ITEM_DATA], 0, type, id, &retval);
-
-  return retval;
-}
-
-char *
-egg_toolbars_model_get_item_type (EggToolbarsModel *t,
-				  GdkAtom type)
-{
-  char *retval;
-
-  g_signal_emit (t, signals[GET_ITEM_TYPE], 0, type, &retval);
-
-  return retval;
-}
diff --git a/src/egg-toolbars-model.h b/src/egg-toolbars-model.h
@@ -1,152 +0,0 @@
-/*
- *  Copyright (C) 2003-2004 Marco Pesenti Gritti
- *
- *  This program is free software; you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2, or (at your option)
- *  any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * 
- *  $libegg-Id: egg-toolbars-model.h,v 1.13 2005/06/01 17:22:19 chpe Exp $
- */
-
-#ifndef EGG_TOOLBARS_MODEL_H
-#define EGG_TOOLBARS_MODEL_H
-
-#include <glib.h>
-#include <glib-object.h>
-#include <gdk/gdktypes.h>
-
-G_BEGIN_DECLS
-
-#define EGG_TYPE_TOOLBARS_MODEL             (egg_toolbars_model_get_type ())
-#define EGG_TOOLBARS_MODEL(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), EGG_TYPE_TOOLBARS_MODEL, EggToolbarsModel))
-#define EGG_TOOLBARS_MODEL_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), EGG_TYPE_TOOLBARS_MODEL, EggToolbarsModelClass))
-#define EGG_IS_TOOLBARS_MODEL(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_TOOLBARS_MODEL))
-#define EGG_IS_TOOLBARS_MODEL_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_TOOLBARS_MODEL))
-#define EGG_TOOLBARS_MODEL_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_TOOLBARS_MODEL, EggToolbarsModelClass))
-
-typedef struct EggToolbarsModel		EggToolbarsModel;
-typedef struct EggToolbarsModelPrivate	EggToolbarsModelPrivate;
-typedef struct EggToolbarsModelClass	EggToolbarsModelClass;
-
-#define EGG_TOOLBAR_ITEM_TYPE "application/x-toolbar-item"
-
-typedef enum
-{
-  EGG_TB_MODEL_NOT_REMOVABLE	 = 1 << 0,
-  EGG_TB_MODEL_BOTH		 = 1 << 1,
-  EGG_TB_MODEL_BOTH_HORIZ	 = 1 << 2,
-  EGG_TB_MODEL_ICONS		 = 1 << 3,
-  EGG_TB_MODEL_TEXT		 = 1 << 4,
-  EGG_TB_MODEL_STYLES_MASK	 = 0x1F,
-  EGG_TB_MODEL_ACCEPT_ITEMS_ONLY = 1 << 5
-} EggTbModelFlags;
-
-struct EggToolbarsModel
-{
-  GObject parent_object;
-
-  /*< private >*/
-  EggToolbarsModelPrivate *priv;
-};
-
-struct EggToolbarsModelClass
-{
-  GObjectClass parent_class;
-
-  /* Signals */
-  void (* item_added)      (EggToolbarsModel *model,
-			    int toolbar_position,
-			    int position);
-  void (* item_removed)    (EggToolbarsModel *model,
-			    int toolbar_position,
-			    int position);
-  void (* toolbar_added)   (EggToolbarsModel *model,
-			    int position);
-  void (* toolbar_changed) (EggToolbarsModel *model,
-			    int position);
-  void (* toolbar_removed) (EggToolbarsModel *model,
-			    int position);
-  char * (* get_item_type) (EggToolbarsModel *model,
-			    GdkAtom           dnd_type);
-  char * (* get_item_id)   (EggToolbarsModel *model,
-			    const char       *type,
-			    const char       *data);
-  char * (* get_item_data) (EggToolbarsModel *model,
-			    const char       *type,
-			    const char       *id);
-
-  /* Virtual Table */
-  gboolean (* add_item)    (EggToolbarsModel *t,
-			    int	              toolbar_position,
-			    int               position,
-			    const char       *id,
-			    const char       *type);
-};
-
-GType		  egg_toolbars_model_flags_get_type (void);
-GType		  egg_toolbars_model_get_type       (void);
-EggToolbarsModel *egg_toolbars_model_new	    (void);
-gboolean          egg_toolbars_model_load           (EggToolbarsModel *model,
-						     const char *xml_file);
-void              egg_toolbars_model_save           (EggToolbarsModel *model,
-						     const char *xml_file,
-						     const char *version);
-int               egg_toolbars_model_add_toolbar    (EggToolbarsModel *model,
-						     int               position,
-						     const char       *name);
-EggTbModelFlags   egg_toolbars_model_get_flags      (EggToolbarsModel *model,
-						     int               toolbar_position);
-void              egg_toolbars_model_set_flags      (EggToolbarsModel *model,
-						     int	       toolbar_position,
-						     EggTbModelFlags   flags);
-void              egg_toolbars_model_add_separator  (EggToolbarsModel *model,
-						     int               toolbar_position,
-						     int               position);
-char             *egg_toolbars_model_get_item_type  (EggToolbarsModel *model,
-				                     GdkAtom           dnd_type);
-char             *egg_toolbars_model_get_item_id    (EggToolbarsModel *model,
-						     const char       *type,
-			                             const char       *name);
-char             *egg_toolbars_model_get_item_data  (EggToolbarsModel *model,
-						     const char       *type,
-			                             const char       *id);
-gboolean	  egg_toolbars_model_add_item       (EggToolbarsModel *model,
-						     int	       toolbar_position,
-				                     int               position,
-						     const char       *id,
-						     const char       *type);
-void		  egg_toolbars_model_remove_toolbar (EggToolbarsModel *model,
-						     int               position);
-void		  egg_toolbars_model_remove_item    (EggToolbarsModel *model,
-						     int               toolbar_position,
-						     int               position);
-void		  egg_toolbars_model_move_item      (EggToolbarsModel *model,
-						     int               toolbar_position,
-						     int               position,
-						     int	       new_toolbar_position,
-						     int               new_position);
-int		  egg_toolbars_model_n_items	    (EggToolbarsModel *model,
-						     int               toolbar_position);
-void	 	  egg_toolbars_model_item_nth	    (EggToolbarsModel *model,
-						     int	       toolbar_position,
-						     int               position,
-						     gboolean         *is_separator,
-						     const char      **id,
-						     const char      **type);
-int		  egg_toolbars_model_n_toolbars	    (EggToolbarsModel *model);
-const char	 *egg_toolbars_model_toolbar_nth    (EggToolbarsModel *model,
-						     int               position);
-
-G_END_DECLS
-
-#endif
diff --git a/src/eggmarshalers.c b/src/eggmarshalers.c
@@ -1,679 +0,0 @@
-
-#include	<glib-object.h>
-
-
-#ifdef G_ENABLE_DEBUG
-#define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
-#define g_marshal_value_peek_char(v)     g_value_get_char (v)
-#define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
-#define g_marshal_value_peek_int(v)      g_value_get_int (v)
-#define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
-#define g_marshal_value_peek_long(v)     g_value_get_long (v)
-#define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
-#define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
-#define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
-#define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
-#define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
-#define g_marshal_value_peek_float(v)    g_value_get_float (v)
-#define g_marshal_value_peek_double(v)   g_value_get_double (v)
-#define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
-#define g_marshal_value_peek_param(v)    g_value_get_param (v)
-#define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
-#define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
-#define g_marshal_value_peek_object(v)   g_value_get_object (v)
-#else /* !G_ENABLE_DEBUG */
-/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
- *          Do not access GValues directly in your code. Instead, use the
- *          g_value_get_*() functions
- */
-#define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
-#define g_marshal_value_peek_char(v)     (v)->data[0].v_int
-#define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
-#define g_marshal_value_peek_int(v)      (v)->data[0].v_int
-#define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
-#define g_marshal_value_peek_long(v)     (v)->data[0].v_long
-#define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
-#define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
-#define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
-#define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
-#define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
-#define g_marshal_value_peek_float(v)    (v)->data[0].v_float
-#define g_marshal_value_peek_double(v)   (v)->data[0].v_double
-#define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
-#define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
-#define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
-#define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
-#define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
-#endif /* !G_ENABLE_DEBUG */
-
-
-/* VOID:OBJECT,OBJECT (eggmarshalers.list:1) */
-void
-_egg_marshal_VOID__OBJECT_OBJECT (GClosure     *closure,
-                                  GValue       *return_value,
-                                  guint         n_param_values,
-                                  const GValue *param_values,
-                                  gpointer      invocation_hint,
-                                  gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__OBJECT_OBJECT) (gpointer     data1,
-                                                    gpointer     arg_1,
-                                                    gpointer     arg_2,
-                                                    gpointer     data2);
-  register GMarshalFunc_VOID__OBJECT_OBJECT callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__OBJECT_OBJECT) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_object (param_values + 1),
-            g_marshal_value_peek_object (param_values + 2),
-            data2);
-}
-
-/* VOID:OBJECT,STRING,LONG,LONG (eggmarshalers.list:2) */
-void
-_egg_marshal_VOID__OBJECT_STRING_LONG_LONG (GClosure     *closure,
-                                            GValue       *return_value,
-                                            guint         n_param_values,
-                                            const GValue *param_values,
-                                            gpointer      invocation_hint,
-                                            gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__OBJECT_STRING_LONG_LONG) (gpointer     data1,
-                                                              gpointer     arg_1,
-                                                              gpointer     arg_2,
-                                                              glong        arg_3,
-                                                              glong        arg_4,
-                                                              gpointer     data2);
-  register GMarshalFunc_VOID__OBJECT_STRING_LONG_LONG callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 5);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__OBJECT_STRING_LONG_LONG) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_object (param_values + 1),
-            g_marshal_value_peek_string (param_values + 2),
-            g_marshal_value_peek_long (param_values + 3),
-            g_marshal_value_peek_long (param_values + 4),
-            data2);
-}
-
-/* VOID:OBJECT,LONG (eggmarshalers.list:3) */
-void
-_egg_marshal_VOID__OBJECT_LONG (GClosure     *closure,
-                                GValue       *return_value,
-                                guint         n_param_values,
-                                const GValue *param_values,
-                                gpointer      invocation_hint,
-                                gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__OBJECT_LONG) (gpointer     data1,
-                                                  gpointer     arg_1,
-                                                  glong        arg_2,
-                                                  gpointer     data2);
-  register GMarshalFunc_VOID__OBJECT_LONG callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__OBJECT_LONG) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_object (param_values + 1),
-            g_marshal_value_peek_long (param_values + 2),
-            data2);
-}
-
-/* VOID:OBJECT,STRING,STRING (eggmarshalers.list:4) */
-void
-_egg_marshal_VOID__OBJECT_STRING_STRING (GClosure     *closure,
-                                         GValue       *return_value,
-                                         guint         n_param_values,
-                                         const GValue *param_values,
-                                         gpointer      invocation_hint,
-                                         gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__OBJECT_STRING_STRING) (gpointer     data1,
-                                                           gpointer     arg_1,
-                                                           gpointer     arg_2,
-                                                           gpointer     arg_3,
-                                                           gpointer     data2);
-  register GMarshalFunc_VOID__OBJECT_STRING_STRING callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 4);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__OBJECT_STRING_STRING) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_object (param_values + 1),
-            g_marshal_value_peek_string (param_values + 2),
-            g_marshal_value_peek_string (param_values + 3),
-            data2);
-}
-
-/* VOID:UINT,UINT (eggmarshalers.list:5) */
-void
-_egg_marshal_VOID__UINT_UINT (GClosure     *closure,
-                              GValue       *return_value,
-                              guint         n_param_values,
-                              const GValue *param_values,
-                              gpointer      invocation_hint,
-                              gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__UINT_UINT) (gpointer     data1,
-                                                guint        arg_1,
-                                                guint        arg_2,
-                                                gpointer     data2);
-  register GMarshalFunc_VOID__UINT_UINT callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__UINT_UINT) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_uint (param_values + 1),
-            g_marshal_value_peek_uint (param_values + 2),
-            data2);
-}
-
-/* BOOLEAN:INT (eggmarshalers.list:6) */
-void
-_egg_marshal_BOOLEAN__INT (GClosure     *closure,
-                           GValue       *return_value,
-                           guint         n_param_values,
-                           const GValue *param_values,
-                           gpointer      invocation_hint,
-                           gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__INT) (gpointer     data1,
-                                                 gint         arg_1,
-                                                 gpointer     data2);
-  register GMarshalFunc_BOOLEAN__INT callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 2);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__INT) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_int (param_values + 1),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* BOOLEAN:ENUM (eggmarshalers.list:7) */
-void
-_egg_marshal_BOOLEAN__ENUM (GClosure     *closure,
-                            GValue       *return_value,
-                            guint         n_param_values,
-                            const GValue *param_values,
-                            gpointer      invocation_hint,
-                            gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__ENUM) (gpointer     data1,
-                                                  gint         arg_1,
-                                                  gpointer     data2);
-  register GMarshalFunc_BOOLEAN__ENUM callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 2);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__ENUM) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_enum (param_values + 1),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* BOOLEAN:VOID (eggmarshalers.list:8) */
-void
-_egg_marshal_BOOLEAN__VOID (GClosure     *closure,
-                            GValue       *return_value,
-                            guint         n_param_values,
-                            const GValue *param_values,
-                            gpointer      invocation_hint,
-                            gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__VOID) (gpointer     data1,
-                                                  gpointer     data2);
-  register GMarshalFunc_BOOLEAN__VOID callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 1);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__VOID) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* OBJECT:VOID (eggmarshalers.list:9) */
-void
-_egg_marshal_OBJECT__VOID (GClosure     *closure,
-                           GValue       *return_value,
-                           guint         n_param_values,
-                           const GValue *param_values,
-                           gpointer      invocation_hint,
-                           gpointer      marshal_data)
-{
-  typedef GObject* (*GMarshalFunc_OBJECT__VOID) (gpointer     data1,
-                                                 gpointer     data2);
-  register GMarshalFunc_OBJECT__VOID callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  GObject* v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 1);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_OBJECT__VOID) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       data2);
-
-  g_value_take_object (return_value, v_return);
-}
-
-/* VOID:VOID (eggmarshalers.list:10) */
-
-/* VOID:INT,INT (eggmarshalers.list:11) */
-void
-_egg_marshal_VOID__INT_INT (GClosure     *closure,
-                            GValue       *return_value,
-                            guint         n_param_values,
-                            const GValue *param_values,
-                            gpointer      invocation_hint,
-                            gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__INT_INT) (gpointer     data1,
-                                              gint         arg_1,
-                                              gint         arg_2,
-                                              gpointer     data2);
-  register GMarshalFunc_VOID__INT_INT callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__INT_INT) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_int (param_values + 1),
-            g_marshal_value_peek_int (param_values + 2),
-            data2);
-}
-
-/* VOID:UINT,UINT (eggmarshalers.list:12) */
-
-/* VOID:BOOLEAN (eggmarshalers.list:13) */
-
-/* VOID:OBJECT,ENUM,BOXED (eggmarshalers.list:14) */
-void
-_egg_marshal_VOID__OBJECT_ENUM_BOXED (GClosure     *closure,
-                                      GValue       *return_value,
-                                      guint         n_param_values,
-                                      const GValue *param_values,
-                                      gpointer      invocation_hint,
-                                      gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__OBJECT_ENUM_BOXED) (gpointer     data1,
-                                                        gpointer     arg_1,
-                                                        gint         arg_2,
-                                                        gpointer     arg_3,
-                                                        gpointer     data2);
-  register GMarshalFunc_VOID__OBJECT_ENUM_BOXED callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 4);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__OBJECT_ENUM_BOXED) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_object (param_values + 1),
-            g_marshal_value_peek_enum (param_values + 2),
-            g_marshal_value_peek_boxed (param_values + 3),
-            data2);
-}
-
-/* VOID:BOXED (eggmarshalers.list:15) */
-
-/* BOOLEAN:BOOLEAN (eggmarshalers.list:16) */
-void
-_egg_marshal_BOOLEAN__BOOLEAN (GClosure     *closure,
-                               GValue       *return_value,
-                               guint         n_param_values,
-                               const GValue *param_values,
-                               gpointer      invocation_hint,
-                               gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__BOOLEAN) (gpointer     data1,
-                                                     gboolean     arg_1,
-                                                     gpointer     data2);
-  register GMarshalFunc_BOOLEAN__BOOLEAN callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 2);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__BOOLEAN) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_boolean (param_values + 1),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* BOOLEAN:OBJECT,STRING,STRING (eggmarshalers.list:17) */
-void
-_egg_marshal_BOOLEAN__OBJECT_STRING_STRING (GClosure     *closure,
-                                            GValue       *return_value,
-                                            guint         n_param_values,
-                                            const GValue *param_values,
-                                            gpointer      invocation_hint,
-                                            gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING) (gpointer     data1,
-                                                                  gpointer     arg_1,
-                                                                  gpointer     arg_2,
-                                                                  gpointer     arg_3,
-                                                                  gpointer     data2);
-  register GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 4);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__OBJECT_STRING_STRING) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_object (param_values + 1),
-                       g_marshal_value_peek_string (param_values + 2),
-                       g_marshal_value_peek_string (param_values + 3),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* BOOLEAN:ENUM,INT (eggmarshalers.list:18) */
-void
-_egg_marshal_BOOLEAN__ENUM_INT (GClosure     *closure,
-                                GValue       *return_value,
-                                guint         n_param_values,
-                                const GValue *param_values,
-                                gpointer      invocation_hint,
-                                gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__ENUM_INT) (gpointer     data1,
-                                                      gint         arg_1,
-                                                      gint         arg_2,
-                                                      gpointer     data2);
-  register GMarshalFunc_BOOLEAN__ENUM_INT callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__ENUM_INT) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_enum (param_values + 1),
-                       g_marshal_value_peek_int (param_values + 2),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* STRING:POINTER (eggmarshalers.list:19) */
-void
-_egg_marshal_STRING__POINTER (GClosure     *closure,
-                              GValue       *return_value,
-                              guint         n_param_values,
-                              const GValue *param_values,
-                              gpointer      invocation_hint,
-                              gpointer      marshal_data)
-{
-  typedef gchar* (*GMarshalFunc_STRING__POINTER) (gpointer     data1,
-                                                  gpointer     arg_1,
-                                                  gpointer     data2);
-  register GMarshalFunc_STRING__POINTER callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gchar* v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 2);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_STRING__POINTER) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_pointer (param_values + 1),
-                       data2);
-
-  g_value_take_string (return_value, v_return);
-}
-
-/* STRING:STRING,STRING (eggmarshalers.list:20) */
-void
-_egg_marshal_STRING__STRING_STRING (GClosure     *closure,
-                                    GValue       *return_value,
-                                    guint         n_param_values,
-                                    const GValue *param_values,
-                                    gpointer      invocation_hint,
-                                    gpointer      marshal_data)
-{
-  typedef gchar* (*GMarshalFunc_STRING__STRING_STRING) (gpointer     data1,
-                                                        gpointer     arg_1,
-                                                        gpointer     arg_2,
-                                                        gpointer     data2);
-  register GMarshalFunc_STRING__STRING_STRING callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gchar* v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 3);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_STRING__STRING_STRING) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_string (param_values + 1),
-                       g_marshal_value_peek_string (param_values + 2),
-                       data2);
-
-  g_value_take_string (return_value, v_return);
-}
-
diff --git a/src/eggmarshalers.h b/src/eggmarshalers.h
@@ -1,151 +0,0 @@
-
-#ifndef ___egg_marshal_MARSHAL_H__
-#define ___egg_marshal_MARSHAL_H__
-
-#include	<glib-object.h>
-
-G_BEGIN_DECLS
-
-/* VOID:OBJECT,OBJECT (eggmarshalers.list:1) */
-extern void _egg_marshal_VOID__OBJECT_OBJECT (GClosure     *closure,
-                                              GValue       *return_value,
-                                              guint         n_param_values,
-                                              const GValue *param_values,
-                                              gpointer      invocation_hint,
-                                              gpointer      marshal_data);
-
-/* VOID:OBJECT,STRING,LONG,LONG (eggmarshalers.list:2) */
-extern void _egg_marshal_VOID__OBJECT_STRING_LONG_LONG (GClosure     *closure,
-                                                        GValue       *return_value,
-                                                        guint         n_param_values,
-                                                        const GValue *param_values,
-                                                        gpointer      invocation_hint,
-                                                        gpointer      marshal_data);
-
-/* VOID:OBJECT,LONG (eggmarshalers.list:3) */
-extern void _egg_marshal_VOID__OBJECT_LONG (GClosure     *closure,
-                                            GValue       *return_value,
-                                            guint         n_param_values,
-                                            const GValue *param_values,
-                                            gpointer      invocation_hint,
-                                            gpointer      marshal_data);
-
-/* VOID:OBJECT,STRING,STRING (eggmarshalers.list:4) */
-extern void _egg_marshal_VOID__OBJECT_STRING_STRING (GClosure     *closure,
-                                                     GValue       *return_value,
-                                                     guint         n_param_values,
-                                                     const GValue *param_values,
-                                                     gpointer      invocation_hint,
-                                                     gpointer      marshal_data);
-
-/* VOID:UINT,UINT (eggmarshalers.list:5) */
-extern void _egg_marshal_VOID__UINT_UINT (GClosure     *closure,
-                                          GValue       *return_value,
-                                          guint         n_param_values,
-                                          const GValue *param_values,
-                                          gpointer      invocation_hint,
-                                          gpointer      marshal_data);
-
-/* BOOLEAN:INT (eggmarshalers.list:6) */
-extern void _egg_marshal_BOOLEAN__INT (GClosure     *closure,
-                                       GValue       *return_value,
-                                       guint         n_param_values,
-                                       const GValue *param_values,
-                                       gpointer      invocation_hint,
-                                       gpointer      marshal_data);
-
-/* BOOLEAN:ENUM (eggmarshalers.list:7) */
-extern void _egg_marshal_BOOLEAN__ENUM (GClosure     *closure,
-                                        GValue       *return_value,
-                                        guint         n_param_values,
-                                        const GValue *param_values,
-                                        gpointer      invocation_hint,
-                                        gpointer      marshal_data);
-
-/* BOOLEAN:VOID (eggmarshalers.list:8) */
-extern void _egg_marshal_BOOLEAN__VOID (GClosure     *closure,
-                                        GValue       *return_value,
-                                        guint         n_param_values,
-                                        const GValue *param_values,
-                                        gpointer      invocation_hint,
-                                        gpointer      marshal_data);
-
-/* OBJECT:VOID (eggmarshalers.list:9) */
-extern void _egg_marshal_OBJECT__VOID (GClosure     *closure,
-                                       GValue       *return_value,
-                                       guint         n_param_values,
-                                       const GValue *param_values,
-                                       gpointer      invocation_hint,
-                                       gpointer      marshal_data);
-
-/* VOID:VOID (eggmarshalers.list:10) */
-#define _egg_marshal_VOID__VOID	g_cclosure_marshal_VOID__VOID
-
-/* VOID:INT,INT (eggmarshalers.list:11) */
-extern void _egg_marshal_VOID__INT_INT (GClosure     *closure,
-                                        GValue       *return_value,
-                                        guint         n_param_values,
-                                        const GValue *param_values,
-                                        gpointer      invocation_hint,
-                                        gpointer      marshal_data);
-
-/* VOID:UINT,UINT (eggmarshalers.list:12) */
-
-/* VOID:BOOLEAN (eggmarshalers.list:13) */
-#define _egg_marshal_VOID__BOOLEAN	g_cclosure_marshal_VOID__BOOLEAN
-
-/* VOID:OBJECT,ENUM,BOXED (eggmarshalers.list:14) */
-extern void _egg_marshal_VOID__OBJECT_ENUM_BOXED (GClosure     *closure,
-                                                  GValue       *return_value,
-                                                  guint         n_param_values,
-                                                  const GValue *param_values,
-                                                  gpointer      invocation_hint,
-                                                  gpointer      marshal_data);
-
-/* VOID:BOXED (eggmarshalers.list:15) */
-#define _egg_marshal_VOID__BOXED	g_cclosure_marshal_VOID__BOXED
-
-/* BOOLEAN:BOOLEAN (eggmarshalers.list:16) */
-extern void _egg_marshal_BOOLEAN__BOOLEAN (GClosure     *closure,
-                                           GValue       *return_value,
-                                           guint         n_param_values,
-                                           const GValue *param_values,
-                                           gpointer      invocation_hint,
-                                           gpointer      marshal_data);
-
-/* BOOLEAN:OBJECT,STRING,STRING (eggmarshalers.list:17) */
-extern void _egg_marshal_BOOLEAN__OBJECT_STRING_STRING (GClosure     *closure,
-                                                        GValue       *return_value,
-                                                        guint         n_param_values,
-                                                        const GValue *param_values,
-                                                        gpointer      invocation_hint,
-                                                        gpointer      marshal_data);
-
-/* BOOLEAN:ENUM,INT (eggmarshalers.list:18) */
-extern void _egg_marshal_BOOLEAN__ENUM_INT (GClosure     *closure,
-                                            GValue       *return_value,
-                                            guint         n_param_values,
-                                            const GValue *param_values,
-                                            gpointer      invocation_hint,
-                                            gpointer      marshal_data);
-
-/* STRING:POINTER (eggmarshalers.list:19) */
-extern void _egg_marshal_STRING__POINTER (GClosure     *closure,
-                                          GValue       *return_value,
-                                          guint         n_param_values,
-                                          const GValue *param_values,
-                                          gpointer      invocation_hint,
-                                          gpointer      marshal_data);
-
-/* STRING:STRING,STRING (eggmarshalers.list:20) */
-extern void _egg_marshal_STRING__STRING_STRING (GClosure     *closure,
-                                                GValue       *return_value,
-                                                guint         n_param_values,
-                                                const GValue *param_values,
-                                                gpointer      invocation_hint,
-                                                gpointer      marshal_data);
-
-G_END_DECLS
-
-#endif /* ___egg_marshal_MARSHAL_H__ */
-
diff --git a/src/eggmarshalers.list b/src/eggmarshalers.list
@@ -1,20 +0,0 @@
-VOID:OBJECT,OBJECT
-VOID:OBJECT,STRING,LONG,LONG
-VOID:OBJECT,LONG
-VOID:OBJECT,STRING,STRING
-VOID:UINT,UINT
-BOOLEAN:INT
-BOOLEAN:ENUM
-BOOLEAN:VOID
-OBJECT:VOID
-VOID:VOID
-VOID:INT,INT
-VOID:UINT,UINT
-VOID:BOOLEAN
-VOID:OBJECT,ENUM,BOXED
-VOID:BOXED
-BOOLEAN:BOOLEAN
-BOOLEAN:OBJECT,STRING,STRING
-BOOLEAN:ENUM,INT
-STRING:POINTER
-STRING:STRING,STRING
diff --git a/src/eggtrayicon.c b/src/eggtrayicon.c
@@ -1,4 +1,3 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /* eggtrayicon.c
  * Copyright (C) 2002 Anders Carlsson <andersca@gnu.org>
  *
@@ -54,7 +53,7 @@ enum {
   PROP_0,
   PROP_ORIENTATION
 };
-         
+
 static GtkPlugClass *parent_class = NULL;
 
 static void egg_tray_icon_init (EggTrayIcon *icon);
@@ -65,6 +64,8 @@ static void egg_tray_icon_get_property (GObject    *object,
 					GValue     *value,
 					GParamSpec *pspec);
 
+static void egg_tray_icon_add (GtkContainer *container, GtkWidget *widget);
+
 static void egg_tray_icon_realize   (GtkWidget *widget);
 static void egg_tray_icon_unrealize (GtkWidget *widget);
 
@@ -105,7 +106,7 @@ egg_tray_icon_init (EggTrayIcon *icon)
 {
   icon->stamp = 1;
   icon->orientation = GTK_ORIENTATION_HORIZONTAL;
-  
+
   gtk_widget_add_events (GTK_WIDGET (icon), GDK_PROPERTY_CHANGE_MASK);
 }
 
@@ -114,6 +115,7 @@ egg_tray_icon_class_init (EggTrayIconClass *klass)
 {
   GObjectClass *gobject_class = (GObjectClass *)klass;
   GtkWidgetClass *widget_class = (GtkWidgetClass *)klass;
+  GtkContainerClass *container_class = (GtkContainerClass *)klass;
 
   parent_class = g_type_class_peek_parent (klass);
 
@@ -122,6 +124,8 @@ egg_tray_icon_class_init (EggTrayIconClass *klass)
   widget_class->realize   = egg_tray_icon_realize;
   widget_class->unrealize = egg_tray_icon_unrealize;
 
+  container_class->add = egg_tray_icon_add;
+
   g_object_class_install_property (gobject_class,
 				   PROP_ORIENTATION,
 				   g_param_spec_enum ("orientation",
@@ -176,7 +180,7 @@ egg_tray_icon_get_orientation_property (EggTrayIcon *icon)
   int error, result;
 
   g_assert (icon->manager_window != None);
-  
+
   xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
 
   gdk_error_trap_push ();
@@ -280,7 +284,7 @@ egg_tray_icon_send_manager_message (EggTrayIcon *icon,
 {
   XClientMessageEvent ev;
   Display *display;
-  
+
   ev.type = ClientMessage;
   ev.window = window;
   ev.message_type = icon->system_tray_opcode_atom;
@@ -292,7 +296,7 @@ egg_tray_icon_send_manager_message (EggTrayIcon *icon,
   ev.data.l[4] = data3;
 
   display = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
-  
+
   gdk_error_trap_push ();
   XSendEvent (display,
 	      icon->manager_window, False, NoEventMask, (XEvent *)&ev);
@@ -315,14 +319,14 @@ egg_tray_icon_update_manager_window (EggTrayIcon *icon,
 				     gboolean     dock_if_realized)
 {
   Display *xdisplay;
-  
+
   if (icon->manager_window != None)
     return;
 
   xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
-  
+
   XGrabServer (xdisplay);
-  
+
   icon->manager_window = XGetSelectionOwner (xdisplay,
 					     icon->selection_atom);
 
@@ -332,14 +336,14 @@ egg_tray_icon_update_manager_window (EggTrayIcon *icon,
 
   XUngrabServer (xdisplay);
   XFlush (xdisplay);
-  
+
   if (icon->manager_window != None)
     {
       GdkWindow *gdkwin;
 
       gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
 					      icon->manager_window);
-      
+
       gdk_window_add_filter (gdkwin, egg_tray_icon_manager_filter, icon);
 
       if (dock_if_realized && GTK_WIDGET_REALIZED (icon))
@@ -349,16 +353,46 @@ egg_tray_icon_update_manager_window (EggTrayIcon *icon,
     }
 }
 
+static gboolean
+transparent_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
+{
+  gdk_window_clear_area (widget->window, event->area.x, event->area.y,
+			 event->area.width, event->area.height);
+  return FALSE;
+}
+
+static void
+make_transparent_again (GtkWidget *widget, GtkStyle *previous_style,
+			gpointer user_data)
+{
+  gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+}
+
+static void
+make_transparent (GtkWidget *widget, gpointer user_data)
+{
+  if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
+    return;
+
+  gtk_widget_set_app_paintable (widget, TRUE);
+  gtk_widget_set_double_buffered (widget, FALSE);
+  gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+  g_signal_connect (widget, "expose_event",
+		    G_CALLBACK (transparent_expose_event), NULL);
+  g_signal_connect_after (widget, "style_set",
+			  G_CALLBACK (make_transparent_again), NULL);
+}
+
 static void
 egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon)
 {
   GdkWindow *gdkwin;
-  
+
   g_return_if_fail (icon->manager_window != None);
 
   gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
 					  icon->manager_window);
-      
+
   gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
 
   icon->manager_window = None;
@@ -382,6 +416,8 @@ egg_tray_icon_realize (GtkWidget *widget)
   if (GTK_WIDGET_CLASS (parent_class)->realize)
     GTK_WIDGET_CLASS (parent_class)->realize (widget);
 
+  make_transparent (widget, NULL);
+
   screen = gtk_widget_get_screen (widget);
   display = gdk_screen_get_display (screen);
   xdisplay = gdk_x11_display_get_xdisplay (display);
@@ -392,9 +428,9 @@ egg_tray_icon_realize (GtkWidget *widget)
 	      gdk_screen_get_number (screen));
 
   icon->selection_atom = XInternAtom (xdisplay, buffer, False);
-  
+
   icon->manager_atom = XInternAtom (xdisplay, "MANAGER", False);
-  
+
   icon->system_tray_opcode_atom = XInternAtom (xdisplay,
 						   "_NET_SYSTEM_TRAY_OPCODE",
 						   False);
@@ -407,13 +443,21 @@ egg_tray_icon_realize (GtkWidget *widget)
   egg_tray_icon_send_dock_request (icon);
 
   root_window = gdk_screen_get_root_window (screen);
-  
+
   /* Add a root window filter so that we get changes on MANAGER */
   gdk_window_add_filter (root_window,
 			 egg_tray_icon_manager_filter, icon);
 #endif
 }
 
+static void
+egg_tray_icon_add (GtkContainer *container, GtkWidget *widget)
+{
+  g_signal_connect (widget, "realize",
+		    G_CALLBACK (make_transparent), NULL);
+  GTK_CONTAINER_CLASS (parent_class)->add (container, widget);
+}
+
 EggTrayIcon *
 egg_tray_icon_new_for_screen (GdkScreen *screen, const char *name)
 {
@@ -435,11 +479,11 @@ egg_tray_icon_send_message (EggTrayIcon *icon,
 			    gint         len)
 {
   guint stamp;
-  
+
   g_return_val_if_fail (EGG_IS_TRAY_ICON (icon), 0);
   g_return_val_if_fail (timeout >= 0, 0);
   g_return_val_if_fail (message != NULL, 0);
-		     
+
 #ifdef GDK_WINDOWING_X11
   if (icon->manager_window == None)
     return 0;
@@ -449,7 +493,7 @@ egg_tray_icon_send_message (EggTrayIcon *icon,
     len = strlen (message);
 
   stamp = icon->stamp++;
-  
+
 #ifdef GDK_WINDOWING_X11
   /* Get ready to send the message */
   egg_tray_icon_send_manager_message (icon, SYSTEM_TRAY_BEGIN_MESSAGE,
@@ -464,7 +508,7 @@ egg_tray_icon_send_message (EggTrayIcon *icon,
       Display *xdisplay;
 
       xdisplay = GDK_DISPLAY_XDISPLAY (gtk_widget_get_display (GTK_WIDGET (icon)));
-      
+
       ev.type = ClientMessage;
       ev.window = (Window)gtk_plug_get_id (GTK_PLUG (icon));
       ev.format = 8;
diff --git a/src/eggtrayicon.h b/src/eggtrayicon.h
@@ -34,7 +34,7 @@ G_BEGIN_DECLS
 #define EGG_IS_TRAY_ICON(obj)		(G_TYPE_CHECK_INSTANCE_TYPE ((obj), EGG_TYPE_TRAY_ICON))
 #define EGG_IS_TRAY_ICON_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE ((klass), EGG_TYPE_TRAY_ICON))
 #define EGG_TRAY_ICON_GET_CLASS(obj)	(G_TYPE_INSTANCE_GET_CLASS ((obj), EGG_TYPE_TRAY_ICON, EggTrayIconClass))
-	
+
 typedef struct _EggTrayIcon	  EggTrayIcon;
 typedef struct _EggTrayIconClass  EggTrayIconClass;
 
@@ -43,7 +43,7 @@ struct _EggTrayIcon
   GtkPlug parent_instance;
 
   guint stamp;
-  
+
 #ifdef GDK_WINDOWING_X11
   Atom selection_atom;
   Atom manager_atom;
@@ -74,7 +74,7 @@ void         egg_tray_icon_cancel_message (EggTrayIcon *icon,
 					   guint        id);
 
 GtkOrientation egg_tray_icon_get_orientation (EggTrayIcon *icon);
-					    
+
 G_END_DECLS
 
 #endif /* __EGG_TRAY_ICON_H__ */
diff --git a/src/mn-about-dialog-private.h b/src/mn-about-dialog-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_ABOUT_DIALOG_PRIVATE_H__
 #define __MN_ABOUT_DIALOG_PRIVATE_H__
diff --git a/src/mn-about-dialog.c b/src/mn-about-dialog.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -28,7 +27,7 @@
 #include <gnome.h>
 #include "mn-util.h"
 
-#line 32 "mn-about-dialog.c"
+#line 31 "mn-about-dialog.c"
 /* self casting macros */
 #define SELF(x) MN_ABOUT_DIALOG(x)
 #define SELF_CONST(x) MN_ABOUT_DIALOG_CONST(x)
@@ -97,7 +96,7 @@ GET_NEW_VARG (const char *first, ...)
 #line 33 "mn-about-dialog.gob"
 static void 
 mn_about_dialog_class_init (MNAboutDialogClass * class G_GNUC_UNUSED)
-#line 101 "mn-about-dialog.c"
+#line 100 "mn-about-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:About:Dialog::class_init"
 
@@ -109,14 +108,14 @@ mn_about_dialog_class_init (MNAboutDialogClass * class G_GNUC_UNUSED)
     gtk_about_dialog_set_email_hook(self_activate_link_cb, "mailto:", NULL);
     gtk_about_dialog_set_url_hook(self_activate_link_cb, NULL, NULL);
   
-#line 113 "mn-about-dialog.c"
+#line 112 "mn-about-dialog.c"
  }
 }
 #undef __GOB_FUNCTION__
 #line 39 "mn-about-dialog.gob"
 static void 
 mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
-#line 120 "mn-about-dialog.c"
+#line 119 "mn-about-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:About:Dialog::init"
  {
@@ -128,7 +127,8 @@ mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
     GdkPixbuf *logo;
 
     gtk_about_dialog_set_version(about, VERSION);
-    gtk_about_dialog_set_copyright(about, "Copyright \302\251 2003-2005 Jean-Yves Lefort");
+    gtk_about_dialog_set_copyright(about, "Copyright \302\251 2003-2006 Jean-Yves Lefort");
+    /* translators: header capitalization */
     gtk_about_dialog_set_comments(about, _("A Mail Notification Icon"));
     gtk_about_dialog_set_website(about, "http://www.nongnu.org/mailnotify");
     gtk_about_dialog_set_authors(about, authors);
@@ -139,7 +139,7 @@ mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
      */
     gtk_about_dialog_set_translator_credits(about, _("translator-credits"));
 
-    logo = mn_pixbuf_new(MN_IMAGE_FILE(UIDIR, "logo.png"));
+    logo = mn_pixbuf_new(UIDIR G_DIR_SEPARATOR_S "logo.png");
     if (logo)
       {
 	gtk_about_dialog_set_logo(about, logo);
@@ -153,14 +153,14 @@ mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
 
 
 
-#line 66 "mn-about-dialog.gob"
+#line 67 "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"
 {
 #define __GOB_FUNCTION__ "MN:About:Dialog::activate_link_cb"
 {
-#line 70 "mn-about-dialog.gob"
+#line 71 "mn-about-dialog.gob"
 	
     GError *err = NULL;
     const char *prefix = data;
@@ -169,7 +169,7 @@ mn_about_dialog_activate_link_cb (GtkAboutDialog * about, const char * link, gpo
     url = prefix ? g_strconcat(prefix, link, NULL) : g_strdup(link);
     if (! gnome_url_show(url, &err))
       {
-        mn_error_dialog(GTK_WINDOW(about), NULL, NULL, _("Unable to open link"), "%s", err->message);
+        mn_error_dialog(GTK_WINDOW(about), _("Unable to open link"), "%s", err->message);
 	g_error_free(err);
       }
     g_free(url);
diff --git a/src/mn-about-dialog.gob b/src/mn-about-dialog.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "config.h"
@@ -35,7 +35,7 @@ class MN:About:Dialog from Gtk:About:Dialog
     gtk_about_dialog_set_email_hook(self_activate_link_cb, "mailto:", NULL);
     gtk_about_dialog_set_url_hook(self_activate_link_cb, NULL, NULL);
   }
-  
+
   init (self)
   {
     GtkAboutDialog *about = GTK_ABOUT_DIALOG(self);
@@ -44,7 +44,8 @@ class MN:About:Dialog from Gtk:About:Dialog
     GdkPixbuf *logo;
 
     gtk_about_dialog_set_version(about, VERSION);
-    gtk_about_dialog_set_copyright(about, "Copyright \302\251 2003-2005 Jean-Yves Lefort");
+    gtk_about_dialog_set_copyright(about, "Copyright \302\251 2003-2006 Jean-Yves Lefort");
+    /* translators: header capitalization */
     gtk_about_dialog_set_comments(about, _("A Mail Notification Icon"));
     gtk_about_dialog_set_website(about, "http://www.nongnu.org/mailnotify");
     gtk_about_dialog_set_authors(about, authors);
@@ -55,7 +56,7 @@ class MN:About:Dialog from Gtk:About:Dialog
      */
     gtk_about_dialog_set_translator_credits(about, _("translator-credits"));
 
-    logo = mn_pixbuf_new(MN_IMAGE_FILE(UIDIR, "logo.png"));
+    logo = mn_pixbuf_new(UIDIR G_DIR_SEPARATOR_S "logo.png");
     if (logo)
       {
 	gtk_about_dialog_set_logo(about, logo);
@@ -75,7 +76,7 @@ class MN:About:Dialog from Gtk:About:Dialog
     url = prefix ? g_strconcat(prefix, link, NULL) : g_strdup(link);
     if (! gnome_url_show(url, &err))
       {
-        mn_error_dialog(GTK_WINDOW(about), NULL, NULL, _("Unable to open link"), "%s", err->message);
+        mn_error_dialog(GTK_WINDOW(about), _("Unable to open link"), "%s", err->message);
 	g_error_free(err);
       }
     g_free(url);
diff --git a/src/mn-about-dialog.gob.stamp b/src/mn-about-dialog.gob.stamp
diff --git a/src/mn-about-dialog.h b/src/mn-about-dialog.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-auth-combo-box-private.h b/src/mn-auth-combo-box-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_AUTH_COMBO_BOX_PRIVATE_H__
 #define __MN_AUTH_COMBO_BOX_PRIVATE_H__
diff --git a/src/mn-auth-combo-box.c b/src/mn-auth-combo-box.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -27,7 +26,7 @@
 
 #include "config.h"
 #include <glib/gi18n.h>
-#ifdef WITH_SASL
+#if WITH_SASL
 #include <sasl/sasl.h>
 #include "mn-sasl.h"
 #endif /* WITH_SASL */
@@ -40,7 +39,7 @@ enum
   N_COLUMNS
 };
 
-#line 44 "mn-auth-combo-box.c"
+#line 43 "mn-auth-combo-box.c"
 /* self casting macros */
 #define SELF(x) MN_AUTH_COMBO_BOX(x)
 #define SELF_CONST(x) MN_AUTH_COMBO_BOX_CONST(x)
@@ -145,7 +144,7 @@ mn_auth_combo_box_class_init (MNAuthComboBoxClass * c G_GNUC_UNUSED)
 #line 88 "mn-auth-combo-box.gob"
 static void 
 mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
-#line 149 "mn-auth-combo-box.c"
+#line 148 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::init"
  {
@@ -163,9 +162,9 @@ mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
     gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(self), renderer,
 				   "markup", COLUMN_LABEL,
 				   NULL);
-    
+
     self_append(self, NULL, _("<span style=\"italic\">autodetect</span>"));
-#ifdef WITH_SASL
+#if WITH_SASL
     if (mn_sasl_init(NULL))
       {
         const char **mechanisms;
@@ -190,7 +189,7 @@ mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
 
     self_set_active_mechanism(self, NULL);
   
-#line 194 "mn-auth-combo-box.c"
+#line 193 "mn-auth-combo-box.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -218,27 +217,27 @@ ___object_set_property (GObject *object,
 
       model = gtk_combo_box_get_model(GTK_COMBO_BOX(self));
       valid = gtk_tree_model_get_iter_first(model, &iter);
-    
+
       while (valid)
 	{
 	  char *this_mech;
 	  gboolean found;
-	  
+
 	  gtk_tree_model_get(model, &iter, COLUMN_MECHANISM, &this_mech, -1);
 	  found = (! this_mech && ! mechanism)
 	    || (this_mech && mechanism && ! strcmp(this_mech, mechanism));
 	  g_free(this_mech);
-	  
+
 	  if (found)
 	    {
 	      gtk_combo_box_set_active_iter(GTK_COMBO_BOX(self), &iter);
 	      break;
 	    }
-	  
+
 	  valid = gtk_tree_model_iter_next(model, &iter);
 	}
     
-#line 242 "mn-auth-combo-box.c"
+#line 241 "mn-auth-combo-box.c"
 		}
 		break;
 	default:
@@ -280,7 +279,7 @@ ___object_get_property (GObject *object,
 
       g_value_take_string(VAL, mechanism);
     
-#line 284 "mn-auth-combo-box.c"
+#line 283 "mn-auth-combo-box.c"
 		}
 		break;
 	default:
@@ -299,34 +298,34 @@ ___object_get_property (GObject *object,
 #line 75 "mn-auth-combo-box.gob"
 gchar * 
 mn_auth_combo_box_get_active_mechanism (MNAuthComboBox * self)
-#line 303 "mn-auth-combo-box.c"
+#line 302 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::get_active_mechanism"
 {
 #line 44 "mn-auth-combo-box.gob"
 		gchar* val; g_object_get (G_OBJECT (self), "active_mechanism", &val, NULL); return val;
 }}
-#line 310 "mn-auth-combo-box.c"
+#line 309 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
 #line 46 "mn-auth-combo-box.gob"
 void 
 mn_auth_combo_box_set_active_mechanism (MNAuthComboBox * self, gchar * val)
-#line 316 "mn-auth-combo-box.c"
+#line 315 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::set_active_mechanism"
 {
 #line 44 "mn-auth-combo-box.gob"
 		g_object_set (G_OBJECT (self), "active_mechanism", val, NULL);
 }}
-#line 323 "mn-auth-combo-box.c"
+#line 322 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
 
 #line 130 "mn-auth-combo-box.gob"
 static int 
 mn_auth_combo_box_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data)
-#line 330 "mn-auth-combo-box.c"
+#line 329 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::sort_cb"
 {
@@ -349,7 +348,7 @@ mn_auth_combo_box_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * 
 
     /* put "autodetect" (NULL mechanism) on top of the list */
     if (mechanism_a && mechanism_b)
-      coll = mn_utf8_strcasecoll(label_a, label_b);
+      coll = g_utf8_collate(label_a, label_b);
     else if (mechanism_a || mechanism_b)
       coll = mechanism_a ? 1 : -1;
     else
@@ -360,13 +359,13 @@ mn_auth_combo_box_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * 
 
     return coll;
   }}
-#line 364 "mn-auth-combo-box.c"
+#line 363 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
 #line 165 "mn-auth-combo-box.gob"
 void 
 mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const char * label)
-#line 370 "mn-auth-combo-box.c"
+#line 369 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::append"
 #line 165 "mn-auth-combo-box.gob"
@@ -375,7 +374,7 @@ mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const c
 	g_return_if_fail (MN_IS_AUTH_COMBO_BOX (self));
 #line 165 "mn-auth-combo-box.gob"
 	g_return_if_fail (label != NULL);
-#line 379 "mn-auth-combo-box.c"
+#line 378 "mn-auth-combo-box.c"
 {
 #line 167 "mn-auth-combo-box.gob"
 	
@@ -383,20 +382,20 @@ mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const c
     GtkTreeIter iter;
 
     model = gtk_combo_box_get_model(GTK_COMBO_BOX(self));
-    
+
     gtk_list_store_append(GTK_LIST_STORE(model), &iter);
     gtk_list_store_set(GTK_LIST_STORE(model), &iter,
 		       COLUMN_MECHANISM, mechanism,
 		       COLUMN_LABEL, label,
 		       -1);
   }}
-#line 394 "mn-auth-combo-box.c"
+#line 393 "mn-auth-combo-box.c"
 #undef __GOB_FUNCTION__
 
 #line 180 "mn-auth-combo-box.gob"
 GtkWidget * 
 mn_auth_combo_box_new (void)
-#line 400 "mn-auth-combo-box.c"
+#line 399 "mn-auth-combo-box.c"
 {
 #define __GOB_FUNCTION__ "MN:Auth:Combo:Box::new"
 {
@@ -404,5 +403,5 @@ mn_auth_combo_box_new (void)
 	
     return GTK_WIDGET(GET_NEW);
   }}
-#line 408 "mn-auth-combo-box.c"
+#line 407 "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,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
@@ -25,7 +25,7 @@ requires 2.0.12
 %{
 #include "config.h"
 #include <glib/gi18n.h>
-#ifdef WITH_SASL
+#if WITH_SASL
 #include <sasl/sasl.h>
 #include "mn-sasl.h"
 #endif /* WITH_SASL */
@@ -51,23 +51,23 @@ class MN:Auth:Combo:Box from Gtk:Combo:Box
 
       model = gtk_combo_box_get_model(GTK_COMBO_BOX(self));
       valid = gtk_tree_model_get_iter_first(model, &iter);
-    
+
       while (valid)
 	{
 	  char *this_mech;
 	  gboolean found;
-	  
+
 	  gtk_tree_model_get(model, &iter, COLUMN_MECHANISM, &this_mech, -1);
 	  found = (! this_mech && ! mechanism)
 	    || (this_mech && mechanism && ! strcmp(this_mech, mechanism));
 	  g_free(this_mech);
-	  
+
 	  if (found)
 	    {
 	      gtk_combo_box_set_active_iter(GTK_COMBO_BOX(self), &iter);
 	      break;
 	    }
-	  
+
 	  valid = gtk_tree_model_iter_next(model, &iter);
 	}
     }
@@ -84,7 +84,7 @@ class MN:Auth:Combo:Box from Gtk:Combo:Box
 
       g_value_take_string(VAL, mechanism);
     };
-  
+
   init (self)
   {
     GtkListStore *store;
@@ -99,9 +99,9 @@ class MN:Auth:Combo:Box from Gtk:Combo:Box
     gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(self), renderer,
 				   "markup", COLUMN_LABEL,
 				   NULL);
-    
+
     self_append(self, NULL, _("<span style=\"italic\">autodetect</span>"));
-#ifdef WITH_SASL
+#if WITH_SASL
     if (mn_sasl_init(NULL))
       {
         const char **mechanisms;
@@ -150,7 +150,7 @@ class MN:Auth:Combo:Box from Gtk:Combo:Box
 
     /* put "autodetect" (NULL mechanism) on top of the list */
     if (mechanism_a && mechanism_b)
-      coll = mn_utf8_strcasecoll(label_a, label_b);
+      coll = g_utf8_collate(label_a, label_b);
     else if (mechanism_a || mechanism_b)
       coll = mechanism_a ? 1 : -1;
     else
@@ -161,7 +161,7 @@ class MN:Auth:Combo:Box from Gtk:Combo:Box
 
     return coll;
   }
-  
+
   public void
     append (self, const char *mechanism, const char *label (check null))
   {
@@ -169,7 +169,7 @@ class MN:Auth:Combo:Box from Gtk:Combo:Box
     GtkTreeIter iter;
 
     model = gtk_combo_box_get_model(GTK_COMBO_BOX(self));
-    
+
     gtk_list_store_append(GTK_LIST_STORE(model), &iter);
     gtk_list_store_set(GTK_LIST_STORE(model), &iter,
 		       COLUMN_MECHANISM, mechanism,
diff --git a/src/mn-auth-combo-box.gob.stamp b/src/mn-auth-combo-box.gob.stamp
diff --git a/src/mn-auth-combo-box.h b/src/mn-auth-combo-box.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-authenticated-mailbox-private.h b/src/mn-authenticated-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_AUTHENTICATED_MAILBOX_PRIVATE_H__
 #define __MN_AUTHENTICATED_MAILBOX_PRIVATE_H__
@@ -9,23 +9,11 @@
 extern "C" {
 #endif /* __cplusplus */
 
-
-#line 25 "mn-authenticated-mailbox.gob"
-
-#include <gtk/gtk.h>
-
-#line 18 "mn-authenticated-mailbox-private.h"
 struct _MNAuthenticatedMailboxPrivate {
-#line 51 "mn-authenticated-mailbox.gob"
-	gboolean authentication_failed;
-#line 52 "mn-authenticated-mailbox.gob"
-	GtkWidget * dialog;
-#line 54 "mn-authenticated-mailbox.gob"
+#line 39 "mn-authenticated-mailbox.gob"
 	gboolean checking;
-#line 26 "mn-authenticated-mailbox-private.h"
+#line 16 "mn-authenticated-mailbox-private.h"
 };
-void 	mn_authenticated_mailbox_authentication_failed	(MNAuthenticatedMailbox * self);
-void 	mn_authenticated_mailbox_fill_credentials	(MNAuthenticatedMailbox * self, gboolean need_username, gboolean need_password);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-authenticated-mailbox-properties-private.h b/src/mn-authenticated-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_AUTHENTICATED_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_AUTHENTICATED_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-authenticated-mailbox-properties.c b/src/mn-authenticated-mailbox-properties.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -29,7 +28,7 @@
 #include <glib/gi18n.h>
 #include "mn-authenticated-mailbox.h"
 
-#line 33 "mn-authenticated-mailbox-properties.c"
+#line 32 "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)
@@ -74,7 +73,7 @@ mn_authenticated_mailbox_properties_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (MN_TYPE_MAILBOX_PROPERTIES, "MNAuthenticatedMailboxProperties", &info, (GTypeFlags)0);
+		type = g_type_register_static (MN_TYPE_MAILBOX_PROPERTIES, "MNAuthenticatedMailboxProperties", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -109,13 +108,13 @@ mn_authenticated_mailbox_properties_class_init (MNAuthenticatedMailboxProperties
 	mn_mailbox_properties_class->set_mailbox = ___3_mn_authenticated_mailbox_properties_set_mailbox;
 #line 100 "mn-authenticated-mailbox-properties.gob"
 	mn_mailbox_properties_class->get_mailbox = ___4_mn_authenticated_mailbox_properties_get_mailbox;
-#line 113 "mn-authenticated-mailbox-properties.c"
+#line 112 "mn-authenticated-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 #line 41 "mn-authenticated-mailbox-properties.gob"
 static void 
 mn_authenticated_mailbox_properties_init (MNAuthenticatedMailboxProperties * self G_GNUC_UNUSED)
-#line 119 "mn-authenticated-mailbox-properties.c"
+#line 118 "mn-authenticated-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::init"
  {
@@ -139,7 +138,7 @@ mn_authenticated_mailbox_properties_init (MNAuthenticatedMailboxProperties * sel
 
     gtk_entry_set_visibility(GTK_ENTRY(self->password_entry), FALSE);
   
-#line 143 "mn-authenticated-mailbox-properties.c"
+#line 142 "mn-authenticated-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -149,7 +148,7 @@ mn_authenticated_mailbox_properties_init (MNAuthenticatedMailboxProperties * sel
 #line 62 "mn-authenticated-mailbox-properties.gob"
 GtkWidget * 
 mn_authenticated_mailbox_properties_field_new (MNAuthenticatedMailboxProperties * self, const char * mnemonic, GtkWidget ** label, GtkWidget ** entry)
-#line 153 "mn-authenticated-mailbox-properties.c"
+#line 152 "mn-authenticated-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::field_new"
 #line 62 "mn-authenticated-mailbox-properties.gob"
@@ -160,7 +159,7 @@ mn_authenticated_mailbox_properties_field_new (MNAuthenticatedMailboxProperties 
 	g_return_val_if_fail (mnemonic != NULL, (GtkWidget * )0);
 #line 62 "mn-authenticated-mailbox-properties.gob"
 	g_return_val_if_fail (entry != NULL, (GtkWidget * )0);
-#line 164 "mn-authenticated-mailbox-properties.c"
+#line 163 "mn-authenticated-mailbox-properties.c"
 {
 #line 67 "mn-authenticated-mailbox-properties.gob"
 	
@@ -182,16 +181,16 @@ mn_authenticated_mailbox_properties_field_new (MNAuthenticatedMailboxProperties 
 
     if (label)
       *label = _label;
-    
+
     return hbox;
   }}
-#line 189 "mn-authenticated-mailbox-properties.c"
+#line 188 "mn-authenticated-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
 #line 90 "mn-authenticated-mailbox-properties.gob"
 static void 
 ___3_mn_authenticated_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 195 "mn-authenticated-mailbox-properties.c"
+#line 194 "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); }
@@ -206,14 +205,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 210 "mn-authenticated-mailbox-properties.c"
+#line 209 "mn-authenticated-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 100 "mn-authenticated-mailbox-properties.gob"
 static MNMailbox * 
 ___4_mn_authenticated_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
-#line 217 "mn-authenticated-mailbox-properties.c"
+#line 216 "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): \
@@ -234,27 +233,27 @@ ___4_mn_authenticated_mailbox_properties_get_mailbox (MNMailboxProperties * prop
     password = gtk_entry_get_text(GTK_ENTRY(self->password_entry));
 
     g_object_set(mailbox,
-		 "username", *username ? username : NULL,
-		 "password", *password ? password : NULL,
+		 MN_AUTHENTICATED_MAILBOX_PROP_USERNAME((char *) (*username ? username : NULL)),
+		 MN_AUTHENTICATED_MAILBOX_PROP_PASSWORD((char *) (*password ? password : NULL)),
 		 NULL);
 
     return mailbox;
   }}
-#line 244 "mn-authenticated-mailbox-properties.c"
+#line 243 "mn-authenticated-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 121 "mn-authenticated-mailbox-properties.gob"
 void 
 mn_authenticated_mailbox_properties_get_contents (MNAuthenticatedMailboxProperties * self, const char ** username, const char ** password)
-#line 251 "mn-authenticated-mailbox-properties.c"
+#line 250 "mn-authenticated-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox:Properties::get_contents"
 #line 121 "mn-authenticated-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
 #line 121 "mn-authenticated-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX_PROPERTIES (self));
-#line 258 "mn-authenticated-mailbox-properties.c"
+#line 257 "mn-authenticated-mailbox-properties.c"
 {
 #line 125 "mn-authenticated-mailbox-properties.gob"
 	
@@ -273,5 +272,5 @@ mn_authenticated_mailbox_properties_get_contents (MNAuthenticatedMailboxProperti
 	*password = *_password ? _password : NULL;
       }
   }}
-#line 277 "mn-authenticated-mailbox-properties.c"
+#line 276 "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,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
@@ -29,7 +29,7 @@ requires 2.0.12
 #include "mn-authenticated-mailbox.h"
 %}
 
-class MN:Authenticated:Mailbox:Properties from MN:Mailbox:Properties
+class MN:Authenticated:Mailbox:Properties from MN:Mailbox:Properties (abstract)
 {
   protected GtkWidget *username_vbox;
   protected GtkWidget *username_label;
@@ -83,7 +83,7 @@ class MN:Authenticated:Mailbox:Properties from MN:Mailbox:Properties
 
     if (label)
       *label = _label;
-    
+
     return hbox;
   }
 
@@ -111,8 +111,8 @@ class MN:Authenticated:Mailbox:Properties from MN:Mailbox:Properties
     password = gtk_entry_get_text(GTK_ENTRY(self->password_entry));
 
     g_object_set(mailbox,
-		 "username", *username ? username : NULL,
-		 "password", *password ? password : NULL,
+		 MN_AUTHENTICATED_MAILBOX_PROP_USERNAME((char *) (*username ? username : NULL)),
+		 MN_AUTHENTICATED_MAILBOX_PROP_PASSWORD((char *) (*password ? password : NULL)),
 		 NULL);
 
     return mailbox;
diff --git a/src/mn-authenticated-mailbox-properties.gob.stamp b/src/mn-authenticated-mailbox-properties.gob.stamp
diff --git a/src/mn-authenticated-mailbox-properties.h b/src/mn-authenticated-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-authenticated-mailbox.c b/src/mn-authenticated-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,15 +22,13 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-authenticated-mailbox.gob"
+#line 25 "mn-authenticated-mailbox.gob"
 
 #include "config.h"
-#include <gnome.h>
-#include <eel/eel.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
 
-#line 35 "mn-authenticated-mailbox.c"
+#line 32 "mn-authenticated-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_AUTHENTICATED_MAILBOX(x)
 #define SELF_CONST(x) MN_AUTHENTICATED_MAILBOX_CONST(x)
@@ -50,12 +47,9 @@ static void ___object_set_property (GObject *object, guint property_id, const GV
 static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
 static void mn_authenticated_mailbox_init (MNAuthenticatedMailbox * o) G_GNUC_UNUSED;
 static void mn_authenticated_mailbox_class_init (MNAuthenticatedMailboxClass * c) G_GNUC_UNUSED;
-static void ___1_mn_authenticated_mailbox_removed (MNMailbox * mailbox) G_GNUC_UNUSED;
-static void ___2_mn_authenticated_mailbox_check (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___1_mn_authenticated_mailbox_check (MNMailbox * mailbox) G_GNUC_UNUSED;
 static void mn_authenticated_mailbox_check_thread_cb (MNAuthenticatedMailbox * self) G_GNUC_UNUSED;
-static void ___real_mn_authenticated_mailbox_impl_check (MNAuthenticatedMailbox * self);
-static void mn_authenticated_mailbox_impl_check (MNAuthenticatedMailbox * self) G_GNUC_UNUSED;
-static gboolean mn_authenticated_mailbox_credentials_prompt (MNAuthenticatedMailbox * self, char ** username, char ** password, const char * format, ...) G_GNUC_UNUSED;
+static void mn_authenticated_mailbox_authenticated_check (MNAuthenticatedMailbox * self) G_GNUC_UNUSED;
 
 enum {
 	PROP_0,
@@ -68,10 +62,7 @@ static MNMailboxClass *parent_class = NULL;
 
 /* Short form macros */
 #define self_check_thread_cb mn_authenticated_mailbox_check_thread_cb
-#define self_impl_check mn_authenticated_mailbox_impl_check
-#define self_authentication_failed mn_authenticated_mailbox_authentication_failed
-#define self_fill_credentials mn_authenticated_mailbox_fill_credentials
-#define self_credentials_prompt mn_authenticated_mailbox_credentials_prompt
+#define self_authenticated_check mn_authenticated_mailbox_authenticated_check
 GType
 mn_authenticated_mailbox_get_type (void)
 {
@@ -91,7 +82,7 @@ mn_authenticated_mailbox_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (MN_TYPE_MAILBOX, "MNAuthenticatedMailbox", &info, (GTypeFlags)0);
+		type = g_type_register_static (MN_TYPE_MAILBOX, "MNAuthenticatedMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -123,18 +114,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 39 "mn-authenticated-mailbox.gob"
+#line 33 "mn-authenticated-mailbox.gob"
 	if(self->username) { g_free ((gpointer) self->username); self->username = NULL; }
-#line 129 "mn-authenticated-mailbox.c"
-#line 42 "mn-authenticated-mailbox.gob"
+#line 120 "mn-authenticated-mailbox.c"
+#line 36 "mn-authenticated-mailbox.gob"
 	if(self->password) { g_free ((gpointer) self->password); self->password = NULL; }
-#line 132 "mn-authenticated-mailbox.c"
-#line 45 "mn-authenticated-mailbox.gob"
-	if(self->runtime_username) { g_free ((gpointer) self->runtime_username); self->runtime_username = NULL; }
-#line 135 "mn-authenticated-mailbox.c"
-#line 46 "mn-authenticated-mailbox.gob"
-	if(self->runtime_password) { g_free ((gpointer) self->runtime_password); self->runtime_password = NULL; }
-#line 138 "mn-authenticated-mailbox.c"
+#line 123 "mn-authenticated-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -156,13 +141,10 @@ mn_authenticated_mailbox_class_init (MNAuthenticatedMailboxClass * c G_GNUC_UNUS
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 56 "mn-authenticated-mailbox.gob"
-	mn_mailbox_class->removed = ___1_mn_authenticated_mailbox_removed;
-#line 67 "mn-authenticated-mailbox.gob"
-	mn_mailbox_class->check = ___2_mn_authenticated_mailbox_check;
-#line 97 "mn-authenticated-mailbox.gob"
-	c->impl_check = ___real_mn_authenticated_mailbox_impl_check;
-#line 166 "mn-authenticated-mailbox.c"
+#line 41 "mn-authenticated-mailbox.gob"
+	mn_mailbox_class->check = ___1_mn_authenticated_mailbox_check;
+#line 147 "mn-authenticated-mailbox.c"
+	c->authenticated_check = NULL;
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
@@ -205,16 +187,16 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_USERNAME:
 		{
-#line 40 "mn-authenticated-mailbox.gob"
+#line 34 "mn-authenticated-mailbox.gob"
 { char *old = self->username; self->username = g_value_dup_string (VAL); g_free (old); }
-#line 211 "mn-authenticated-mailbox.c"
+#line 193 "mn-authenticated-mailbox.c"
 		}
 		break;
 	case PROP_PASSWORD:
 		{
-#line 43 "mn-authenticated-mailbox.gob"
+#line 37 "mn-authenticated-mailbox.gob"
 { char *old = self->password; self->password = g_value_dup_string (VAL); g_free (old); }
-#line 218 "mn-authenticated-mailbox.c"
+#line 200 "mn-authenticated-mailbox.c"
 		}
 		break;
 	default:
@@ -243,16 +225,16 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_USERNAME:
 		{
-#line 40 "mn-authenticated-mailbox.gob"
+#line 34 "mn-authenticated-mailbox.gob"
 g_value_set_string (VAL, self->username);
-#line 249 "mn-authenticated-mailbox.c"
+#line 231 "mn-authenticated-mailbox.c"
 		}
 		break;
 	case PROP_PASSWORD:
 		{
-#line 43 "mn-authenticated-mailbox.gob"
+#line 37 "mn-authenticated-mailbox.gob"
 g_value_set_string (VAL, self->password);
-#line 256 "mn-authenticated-mailbox.c"
+#line 238 "mn-authenticated-mailbox.c"
 		}
 		break;
 	default:
@@ -269,40 +251,17 @@ g_value_set_string (VAL, self->password);
 
 
 
-#line 56 "mn-authenticated-mailbox.gob"
+#line 41 "mn-authenticated-mailbox.gob"
 static void 
-___1_mn_authenticated_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 276 "mn-authenticated-mailbox.c"
-#define PARENT_HANDLER(___mailbox) \
-	{ if(MN_MAILBOX_CLASS(parent_class)->removed) \
-		(* MN_MAILBOX_CLASS(parent_class)->removed)(___mailbox); }
-{
-#define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::removed"
-{
-#line 58 "mn-authenticated-mailbox.gob"
-	
-    Self *self = SELF(mailbox);
-
-    if (selfp->dialog)
-      gtk_dialog_response(GTK_DIALOG(selfp->dialog), GTK_RESPONSE_CANCEL);
-
-    PARENT_HANDLER(mailbox);
-  }}
-#line 292 "mn-authenticated-mailbox.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 67 "mn-authenticated-mailbox.gob"
-static void 
-___2_mn_authenticated_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 299 "mn-authenticated-mailbox.c"
+___1_mn_authenticated_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 258 "mn-authenticated-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->check) \
 		(* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::check"
 {
-#line 69 "mn-authenticated-mailbox.gob"
+#line 43 "mn-authenticated-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -311,30 +270,31 @@ ___2_mn_authenticated_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 
     PARENT_HANDLER(mailbox);
 
+    selfp->checking = TRUE;
     mn_mailbox_set_error(mailbox, NULL);
 
     g_object_ref(self);
     mn_thread_create((GThreadFunc) self_check_thread_cb, self);
   }}
-#line 320 "mn-authenticated-mailbox.c"
+#line 280 "mn-authenticated-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 83 "mn-authenticated-mailbox.gob"
+#line 58 "mn-authenticated-mailbox.gob"
 static void 
 mn_authenticated_mailbox_check_thread_cb (MNAuthenticatedMailbox * self)
-#line 327 "mn-authenticated-mailbox.c"
+#line 287 "mn-authenticated-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::check_thread_cb"
-#line 83 "mn-authenticated-mailbox.gob"
+#line 58 "mn-authenticated-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 83 "mn-authenticated-mailbox.gob"
+#line 58 "mn-authenticated-mailbox.gob"
 	g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self));
-#line 334 "mn-authenticated-mailbox.c"
+#line 294 "mn-authenticated-mailbox.c"
 {
-#line 85 "mn-authenticated-mailbox.gob"
+#line 60 "mn-authenticated-mailbox.gob"
 	
-    self_impl_check(self);
+    self_authenticated_check(self);
 
     GDK_THREADS_ENTER();
 
@@ -344,199 +304,22 @@ mn_authenticated_mailbox_check_thread_cb (MNAuthenticatedMailbox * self)
     gdk_flush();
     GDK_THREADS_LEAVE();
   }}
-#line 348 "mn-authenticated-mailbox.c"
+#line 308 "mn-authenticated-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 97 "mn-authenticated-mailbox.gob"
+#line 72 "mn-authenticated-mailbox.gob"
 static void 
-mn_authenticated_mailbox_impl_check (MNAuthenticatedMailbox * self)
-#line 354 "mn-authenticated-mailbox.c"
+mn_authenticated_mailbox_authenticated_check (MNAuthenticatedMailbox * self)
+#line 314 "mn-authenticated-mailbox.c"
 {
 	MNAuthenticatedMailboxClass *klass;
-#line 97 "mn-authenticated-mailbox.gob"
+#line 72 "mn-authenticated-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 97 "mn-authenticated-mailbox.gob"
+#line 72 "mn-authenticated-mailbox.gob"
 	g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self));
-#line 361 "mn-authenticated-mailbox.c"
+#line 321 "mn-authenticated-mailbox.c"
 	klass = MN_AUTHENTICATED_MAILBOX_GET_CLASS(self);
 
-	if(klass->impl_check)
-		(*klass->impl_check)(self);
+	if(klass->authenticated_check)
+		(*klass->authenticated_check)(self);
 }
-#line 97 "mn-authenticated-mailbox.gob"
-static void 
-___real_mn_authenticated_mailbox_impl_check (MNAuthenticatedMailbox * self G_GNUC_UNUSED)
-#line 370 "mn-authenticated-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::impl_check"
-{
-#line 99 "mn-authenticated-mailbox.gob"
-	
-    self->prompted = FALSE;
-    selfp->authentication_failed = FALSE;
-  }}
-#line 379 "mn-authenticated-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 104 "mn-authenticated-mailbox.gob"
-void 
-mn_authenticated_mailbox_authentication_failed (MNAuthenticatedMailbox * self)
-#line 385 "mn-authenticated-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::authentication_failed"
-#line 104 "mn-authenticated-mailbox.gob"
-	g_return_if_fail (self != NULL);
-#line 104 "mn-authenticated-mailbox.gob"
-	g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self));
-#line 392 "mn-authenticated-mailbox.c"
-{
-#line 106 "mn-authenticated-mailbox.gob"
-	
-    if (! self->username)
-      {
-	g_free(self->runtime_username);
-	self->runtime_username = NULL;
-      }
-
-    if (! self->password)
-      {
-	g_free(self->runtime_password);
-	self->runtime_password = NULL;
-      }
-
-    selfp->authentication_failed = TRUE;
-  }}
-#line 410 "mn-authenticated-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 122 "mn-authenticated-mailbox.gob"
-void 
-mn_authenticated_mailbox_fill_credentials (MNAuthenticatedMailbox * self, gboolean need_username, gboolean need_password)
-#line 416 "mn-authenticated-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::fill_credentials"
-#line 122 "mn-authenticated-mailbox.gob"
-	g_return_if_fail (self != NULL);
-#line 122 "mn-authenticated-mailbox.gob"
-	g_return_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self));
-#line 423 "mn-authenticated-mailbox.c"
-{
-#line 124 "mn-authenticated-mailbox.gob"
-	
-    g_return_if_fail(need_username || need_password);
-
-    self->cancelled = FALSE;
-
-    if (! self->runtime_username)
-      self->runtime_username = g_strdup(self->username);
-    if (! self->runtime_password)
-      self->runtime_password = g_strdup(self->password);
-
-    if (self->runtime_username)
-      need_username = FALSE;
-    if (self->runtime_password)
-      need_password = FALSE;
-
-    if (need_username || need_password)
-      {
-	char *username;
-	char *password;
-
-	GDK_THREADS_ENTER();
-
-	self->prompted = TRUE;
-
-	if (self_credentials_prompt(self,
-				    need_username ? &username : NULL,
-				    &password,
-				    selfp->authentication_failed
-				    ? _("Mail Notification was unable to log into %s mailbox %s, possibly because the credentials you have entered are invalid.\n\nPlease re-enter your credentials.")
-				    : _("Enter your credentials for %s mailbox %s."),
-				    MN_MAILBOX(self)->format,
-				    MN_MAILBOX(self)->runtime_name))
-	  {
-	    if (need_username)
-	      self->runtime_username = username;
-
-	    /*
-	     * GnomePasswordDialog does not let us disable the
-	     * password entry, so, even if need_password is FALSE, we
-	     * set runtime_password to what the user has entered.
-	     */
-
-	    g_free(self->runtime_password);
-	    self->runtime_password = password;
-	  }
-	else
-	  self->cancelled = TRUE;
-	
-	gdk_flush();
-	GDK_THREADS_LEAVE();
-      }
-  }}
-#line 478 "mn-authenticated-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 177 "mn-authenticated-mailbox.gob"
-static gboolean 
-mn_authenticated_mailbox_credentials_prompt (MNAuthenticatedMailbox * self, char ** username, char ** password, const char * format, ...)
-#line 484 "mn-authenticated-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:Authenticated:Mailbox::credentials_prompt"
-#line 177 "mn-authenticated-mailbox.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 177 "mn-authenticated-mailbox.gob"
-	g_return_val_if_fail (MN_IS_AUTHENTICATED_MAILBOX (self), (gboolean )0);
-#line 177 "mn-authenticated-mailbox.gob"
-	g_return_val_if_fail (password != NULL, (gboolean )0);
-#line 177 "mn-authenticated-mailbox.gob"
-	g_return_val_if_fail (format != NULL, (gboolean )0);
-#line 495 "mn-authenticated-mailbox.c"
-{
-#line 183 "mn-authenticated-mailbox.gob"
-	
-    va_list args;
-    char *message;
-    gboolean ok;
-
-    g_return_val_if_fail(selfp->dialog == NULL, FALSE);
-
-    va_start(args, format);
-    message = g_strdup_vprintf(format, args);
-    va_end(args);
-
-    /* keep the title in sync with gnome-authentication-manager */
-    selfp->dialog = gnome_password_dialog_new(_("Authentication Required"),
-					      message,
-					      self->runtime_username,
-					      self->runtime_password,
-					      FALSE);
-    g_free(message);
-
-    eel_add_weak_pointer(&selfp->dialog);
-
-    gnome_password_dialog_set_show_userpass_buttons(GNOME_PASSWORD_DIALOG(selfp->dialog), FALSE);
-    gnome_password_dialog_set_readonly_username(GNOME_PASSWORD_DIALOG(selfp->dialog), username == NULL);
-
-    ok = gnome_password_dialog_run_and_block(GNOME_PASSWORD_DIALOG(selfp->dialog));
-    if (ok)
-      {
-	if (username)
-	  *username = gnome_password_dialog_get_username(GNOME_PASSWORD_DIALOG(selfp->dialog));
-
-	*password = gnome_password_dialog_get_password(GNOME_PASSWORD_DIALOG(selfp->dialog));
-      }
-    else
-      {
-	if (username)
-	  *username = NULL;
-
-	*password = NULL;
-      }
-    
-    gtk_widget_destroy(selfp->dialog);
-
-    return ok;
-  }}
-#line 542 "mn-authenticated-mailbox.c"
-#undef __GOB_FUNCTION__
diff --git a/src/mn-authenticated-mailbox.gob b/src/mn-authenticated-mailbox.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,25 +16,19 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-mailbox.h"
 %}
 
-%privateheader{
-#include <gtk/gtk.h>
-%}
-
 %{
 #include "config.h"
-#include <gnome.h>
-#include <eel/eel.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
 %}
 
-class MN:Authenticated:Mailbox from MN:Mailbox
+class MN:Authenticated:Mailbox from MN:Mailbox (abstract)
 {
   public char *username destroywith g_free;
   property STRING username (link, flags = MN_MAILBOX_PARAM_PERMANENT);
@@ -42,29 +36,9 @@ class MN:Authenticated:Mailbox from MN:Mailbox
   public char *password destroywith g_free;
   property STRING password (link, flags = MN_MAILBOX_PARAM_PERMANENT);
 
-  public char *runtime_username destroywith g_free;
-  public char *runtime_password destroywith g_free;
-
-  protected gboolean prompted;
-  protected gboolean cancelled;
-
-  private gboolean authentication_failed;
-  private GtkWidget *dialog;
-
   private gboolean checking;
 
   override (MN:Mailbox) void
-    removed (MNMailbox *mailbox)
-  {
-    Self *self = SELF(mailbox);
-
-    if (selfp->dialog)
-      gtk_dialog_response(GTK_DIALOG(selfp->dialog), GTK_RESPONSE_CANCEL);
-
-    PARENT_HANDLER(mailbox);
-  }
-
-  override (MN:Mailbox) void
     check (MNMailbox *mailbox)
   {
     Self *self = SELF(mailbox);
@@ -74,6 +48,7 @@ class MN:Authenticated:Mailbox from MN:Mailbox
 
     PARENT_HANDLER(mailbox);
 
+    selfp->checking = TRUE;
     mn_mailbox_set_error(mailbox, NULL);
 
     g_object_ref(self);
@@ -83,7 +58,7 @@ class MN:Authenticated:Mailbox from MN:Mailbox
   private void
     check_thread_cb (self)
   {
-    self_impl_check(self);
+    self_authenticated_check(self);
 
     GDK_THREADS_ENTER();
 
@@ -93,135 +68,7 @@ class MN:Authenticated:Mailbox from MN:Mailbox
     gdk_flush();
     GDK_THREADS_LEAVE();
   }
-  
+
   virtual private void
-    impl_check (self)
-  {
-    self->prompted = FALSE;
-    selfp->authentication_failed = FALSE;
-  }
-  
-  protected void
-    authentication_failed (self)
-  {
-    if (! self->username)
-      {
-	g_free(self->runtime_username);
-	self->runtime_username = NULL;
-      }
-
-    if (! self->password)
-      {
-	g_free(self->runtime_password);
-	self->runtime_password = NULL;
-      }
-
-    selfp->authentication_failed = TRUE;
-  }
-  
-  protected void
-    fill_credentials (self, gboolean need_username, gboolean need_password)
-  {
-    g_return_if_fail(need_username || need_password);
-
-    self->cancelled = FALSE;
-
-    if (! self->runtime_username)
-      self->runtime_username = g_strdup(self->username);
-    if (! self->runtime_password)
-      self->runtime_password = g_strdup(self->password);
-
-    if (self->runtime_username)
-      need_username = FALSE;
-    if (self->runtime_password)
-      need_password = FALSE;
-
-    if (need_username || need_password)
-      {
-	char *username;
-	char *password;
-
-	GDK_THREADS_ENTER();
-
-	self->prompted = TRUE;
-
-	if (self_credentials_prompt(self,
-				    need_username ? &username : NULL,
-				    &password,
-				    selfp->authentication_failed
-				    ? _("Mail Notification was unable to log into %s mailbox %s, possibly because the credentials you have entered are invalid.\n\nPlease re-enter your credentials.")
-				    : _("Enter your credentials for %s mailbox %s."),
-				    MN_MAILBOX(self)->format,
-				    MN_MAILBOX(self)->runtime_name))
-	  {
-	    if (need_username)
-	      self->runtime_username = username;
-
-	    /*
-	     * GnomePasswordDialog does not let us disable the
-	     * password entry, so, even if need_password is FALSE, we
-	     * set runtime_password to what the user has entered.
-	     */
-
-	    g_free(self->runtime_password);
-	    self->runtime_password = password;
-	  }
-	else
-	  self->cancelled = TRUE;
-	
-	gdk_flush();
-	GDK_THREADS_LEAVE();
-      }
-  }
-  
-  private gboolean
-    credentials_prompt (self,
-			char **username,
-			char **password (check null),
-			const char *format (check null),
-			...)
-  {
-    va_list args;
-    char *message;
-    gboolean ok;
-
-    g_return_val_if_fail(selfp->dialog == NULL, FALSE);
-
-    va_start(args, format);
-    message = g_strdup_vprintf(format, args);
-    va_end(args);
-
-    /* keep the title in sync with gnome-authentication-manager */
-    selfp->dialog = gnome_password_dialog_new(_("Authentication Required"),
-					      message,
-					      self->runtime_username,
-					      self->runtime_password,
-					      FALSE);
-    g_free(message);
-
-    eel_add_weak_pointer(&selfp->dialog);
-
-    gnome_password_dialog_set_show_userpass_buttons(GNOME_PASSWORD_DIALOG(selfp->dialog), FALSE);
-    gnome_password_dialog_set_readonly_username(GNOME_PASSWORD_DIALOG(selfp->dialog), username == NULL);
-
-    ok = gnome_password_dialog_run_and_block(GNOME_PASSWORD_DIALOG(selfp->dialog));
-    if (ok)
-      {
-	if (username)
-	  *username = gnome_password_dialog_get_username(GNOME_PASSWORD_DIALOG(selfp->dialog));
-
-	*password = gnome_password_dialog_get_password(GNOME_PASSWORD_DIALOG(selfp->dialog));
-      }
-    else
-      {
-	if (username)
-	  *username = NULL;
-
-	*password = NULL;
-      }
-    
-    gtk_widget_destroy(selfp->dialog);
-
-    return ok;
-  }
+    authenticated_check (self);
 }
diff --git a/src/mn-authenticated-mailbox.gob.stamp b/src/mn-authenticated-mailbox.gob.stamp
diff --git a/src/mn-authenticated-mailbox.h b/src/mn-authenticated-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -40,11 +40,7 @@ struct _MNAuthenticatedMailbox {
 	/*< public >*/
 	char * username;
 	char * password;
-	char * runtime_username;
-	char * runtime_password;
 	/*< private >*/
-	gboolean prompted; /* protected */
-	gboolean cancelled; /* protected */
 	MNAuthenticatedMailboxPrivate *_priv;
 };
 
@@ -54,7 +50,7 @@ struct _MNAuthenticatedMailbox {
 typedef struct _MNAuthenticatedMailboxClass MNAuthenticatedMailboxClass;
 struct _MNAuthenticatedMailboxClass {
 	MNMailboxClass __parent__;
-	void (* impl_check) (MNAuthenticatedMailbox * self);
+	void (* authenticated_check) (MNAuthenticatedMailbox * self);
 };
 
 
diff --git a/src/mn-autodetect-mailbox-properties-private.h b/src/mn-autodetect-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-autodetect-mailbox-properties.c b/src/mn-autodetect-mailbox-properties.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -32,14 +31,14 @@
 #include "mn-mailbox-properties-private.h"
 #include "mn-util.h"
 #include "mn-properties-dialog.h"
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-custom-vfs-mailbox.h"
 #endif
 #include "mn-stock.h"
 
 static char *current_folder_uri = NULL;
 
-#line 43 "mn-autodetect-mailbox-properties.c"
+#line 42 "mn-autodetect-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_AUTODETECT_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_AUTODETECT_MAILBOX_PROPERTIES_CONST(x)
@@ -66,7 +65,8 @@ static MNMailbox * ___7_mn_autodetect_mailbox_properties_get_mailbox (MNMailboxP
 enum {
 	PROP_0,
 	PROP_COMPLETE,
-	PROP_DEFAULT_NAME
+	PROP_DEFAULT_NAME,
+	PROP_DEFAULT_CHECK_DELAY
 };
 
 /* pointer to the class of our parent */
@@ -130,7 +130,7 @@ ___finalize(GObject *obj_self)
 }
 #undef __GOB_FUNCTION__
 
-#line 86 "mn-autodetect-mailbox-properties.gob"
+#line 103 "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 199 "mn-autodetect-mailbox-properties.gob"
+#line 222 "mn-autodetect-mailbox-properties.gob"
 	mn_mailbox_properties_class->set_mailbox = ___6_mn_autodetect_mailbox_properties_set_mailbox;
-#line 211 "mn-autodetect-mailbox-properties.gob"
+#line 234 "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;
@@ -157,9 +157,12 @@ mn_autodetect_mailbox_properties_class_init (MNAutodetectMailboxPropertiesClass 
 	g_object_class_override_property (g_object_class,
 		PROP_DEFAULT_NAME,
 		"default_name");
+	g_object_class_override_property (g_object_class,
+		PROP_DEFAULT_CHECK_DELAY,
+		"default_check_delay");
     }
  {
-#line 87 "mn-autodetect-mailbox-properties.gob"
+#line 104 "mn-autodetect-mailbox-properties.gob"
 
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
 
@@ -167,21 +170,23 @@ mn_autodetect_mailbox_properties_class_init (MNAutodetectMailboxPropertiesClass 
     p_class->stock_id = MN_STOCK_UNKNOWN;
     p_class->combo_label = _("<span style=\"italic\">autodetect</span>");
     p_class->section_label = _("Location");
+    p_class->no_check_delay_unless_complete = TRUE;
   
-#line 172 "mn-autodetect-mailbox-properties.c"
+#line 176 "mn-autodetect-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 96 "mn-autodetect-mailbox-properties.gob"
+#line 114 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * self G_GNUC_UNUSED)
-#line 179 "mn-autodetect-mailbox-properties.c"
+#line 183 "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);
  {
-#line 97 "mn-autodetect-mailbox-properties.gob"
+#line 115 "mn-autodetect-mailbox-properties.gob"
 
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     GtkWidget *outer_hbox;
     GtkWidget *hbox;
     GtkWidget *label;
@@ -189,36 +194,39 @@ mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * self G_GN
 
     label = gtk_label_new_with_mnemonic(_("_Location:"));
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    
+
     outer_hbox = gtk_hbox_new(FALSE, 12);
     hbox = gtk_hbox_new(FALSE, 6);
-    
+
     selfp->location_entry = gtk_entry_new();
+    /* translators: header capitalization */
     button = gtk_button_new_with_mnemonic(_("_Browse..."));
-    
+
     gtk_label_set_mnemonic_widget(GTK_LABEL(label), selfp->location_entry);
-    mn_mailbox_properties_add_entry(MN_MAILBOX_PROPERTIES(self), GTK_ENTRY(selfp->location_entry));
+    properties->entries = g_slist_append(properties->entries, selfp->location_entry);
 
     gtk_box_pack_start(GTK_BOX(hbox), selfp->location_entry, TRUE, TRUE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
-    
+
     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_widget_show_all(outer_hbox);
 
     gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, label);
+    gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->entry_size_group, selfp->location_entry);
     gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->entry_button_size_group, button);
 
     g_object_connect(selfp->location_entry,
 		     "swapped-signal::changed", mn_mailbox_properties_notify_complete, self,
 		     "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self,
+		     "swapped-signal::changed", mn_mailbox_properties_notify_default_check_delay, self,
 		     NULL);
-    
+
     g_signal_connect(button, "clicked", G_CALLBACK(self_browse_clicked_h), self);
   
-#line 222 "mn-autodetect-mailbox-properties.c"
+#line 230 "mn-autodetect-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -241,7 +249,7 @@ ___object_get_property (GObject *object,
 
       const char *location;
       gboolean complete = FALSE;
-      
+
       location = gtk_entry_get_text(GTK_ENTRY(SELF(self)->_priv->location_entry));
       if (*location)
 	{
@@ -254,10 +262,10 @@ ___object_get_property (GObject *object,
 	      g_object_unref(mailbox);
 	    }
 	}
-      
+
       g_value_set_boolean(VAL, complete);
     
-#line 261 "mn-autodetect-mailbox-properties.c"
+#line 269 "mn-autodetect-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_NAME:
@@ -277,7 +285,27 @@ ___object_get_property (GObject *object,
 
       g_value_take_string(VAL, name);
     
-#line 281 "mn-autodetect-mailbox-properties.c"
+#line 289 "mn-autodetect-mailbox-properties.c"
+		}
+		break;
+	case PROP_DEFAULT_CHECK_DELAY:
+		{
+#line 88 "mn-autodetect-mailbox-properties.gob"
+
+      int check_delay = -1;
+      MNMailbox *mailbox;
+
+      mailbox = mn_mailbox_new_from_uri(gtk_entry_get_text(GTK_ENTRY(selfp->location_entry)));
+      if (mailbox)
+	{
+	  mn_mailbox_seal(mailbox);
+	  check_delay = mailbox->runtime_check_delay;
+	  g_object_unref(mailbox);
+	}
+
+      g_value_set_int(VAL, check_delay);
+    
+#line 309 "mn-autodetect-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -294,14 +322,14 @@ ___object_get_property (GObject *object,
 
 
 
-#line 135 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer user_data)
-#line 301 "mn-autodetect-mailbox-properties.c"
+#line 329 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::browse_clicked_h"
 {
-#line 137 "mn-autodetect-mailbox-properties.gob"
+#line 159 "mn-autodetect-mailbox-properties.gob"
 	
     Self *self = user_data;
     GtkWidget *toplevel;
@@ -312,8 +340,9 @@ mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer 
 	gtk_window_present(GTK_WINDOW(selfp->chooser));
 	return;
       }
-    
+
     toplevel = gtk_widget_get_toplevel(GTK_WIDGET(button));
+    /* translators: header capitalization */
     selfp->chooser = gtk_file_chooser_dialog_new_with_backend(_("Select a File or Folder"),
 							      GTK_WINDOW(toplevel),
 							      GTK_FILE_CHOOSER_ACTION_OPEN,
@@ -322,7 +351,7 @@ mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer 
 							      GTK_STOCK_OPEN, 1,
 							      NULL);
     eel_add_weak_pointer(&selfp->chooser);
-    
+
     gtk_window_set_destroy_with_parent(GTK_WINDOW(selfp->chooser), TRUE);
     gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(selfp->chooser), FALSE);
     mn_file_chooser_dialog_allow_select_folder(GTK_FILE_CHOOSER_DIALOG(selfp->chooser), 1);
@@ -332,7 +361,7 @@ mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer 
       gtk_file_chooser_set_uri(GTK_FILE_CHOOSER(selfp->chooser), location);
     else if (current_folder_uri)
       gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(selfp->chooser), current_folder_uri);
-      
+
     g_object_connect(selfp->chooser,
 		     "signal::current-folder-changed", self_current_folder_changed_h, self,
 		     "signal::response", self_chooser_response_h, self,
@@ -340,38 +369,38 @@ mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer 
 
     gtk_widget_show(selfp->chooser);
   }}
-#line 344 "mn-autodetect-mailbox-properties.c"
+#line 373 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 176 "mn-autodetect-mailbox-properties.gob"
+#line 199 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_current_folder_changed_h (GtkFileChooser * chooser, gpointer user_data)
-#line 350 "mn-autodetect-mailbox-properties.c"
+#line 379 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::current_folder_changed_h"
 {
-#line 178 "mn-autodetect-mailbox-properties.gob"
+#line 201 "mn-autodetect-mailbox-properties.gob"
 	
     g_free(current_folder_uri);
     current_folder_uri = gtk_file_chooser_get_current_folder_uri(chooser);
   }}
-#line 359 "mn-autodetect-mailbox-properties.c"
+#line 388 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 183 "mn-autodetect-mailbox-properties.gob"
+#line 206 "mn-autodetect-mailbox-properties.gob"
 static void 
 mn_autodetect_mailbox_properties_chooser_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 365 "mn-autodetect-mailbox-properties.c"
+#line 394 "mn-autodetect-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::chooser_response_h"
 {
-#line 185 "mn-autodetect-mailbox-properties.gob"
+#line 208 "mn-autodetect-mailbox-properties.gob"
 	
     if (response == 1)
       {
 	Self *self = user_data;
 	char *uri;
-	
+
 	uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
 	gtk_entry_set_text(GTK_ENTRY(selfp->location_entry), uri);
 	g_free(uri);
@@ -379,37 +408,37 @@ mn_autodetect_mailbox_properties_chooser_response_h (GtkDialog * dialog, int res
 
     gtk_widget_destroy(GTK_WIDGET(dialog));
   }}
-#line 383 "mn-autodetect-mailbox-properties.c"
+#line 412 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 199 "mn-autodetect-mailbox-properties.gob"
+#line 222 "mn-autodetect-mailbox-properties.gob"
 static void 
 ___6_mn_autodetect_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 389 "mn-autodetect-mailbox-properties.c"
+#line 418 "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 201 "mn-autodetect-mailbox-properties.gob"
+#line 224 "mn-autodetect-mailbox-properties.gob"
 	
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || 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);
 #else
-    g_return_if_reached();
+    g_assert_not_reached();
 #endif
   }}
-#line 406 "mn-autodetect-mailbox-properties.c"
+#line 435 "mn-autodetect-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 211 "mn-autodetect-mailbox-properties.gob"
+#line 234 "mn-autodetect-mailbox-properties.gob"
 static MNMailbox * 
 ___7_mn_autodetect_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
-#line 413 "mn-autodetect-mailbox-properties.c"
+#line 442 "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): \
@@ -417,13 +446,13 @@ ___7_mn_autodetect_mailbox_properties_get_mailbox (MNMailboxProperties * propert
 {
 #define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::get_mailbox"
 {
-#line 213 "mn-autodetect-mailbox-properties.gob"
+#line 236 "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 428 "mn-autodetect-mailbox-properties.c"
+#line 457 "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,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
@@ -31,7 +31,7 @@ requires 2.0.12
 #include "mn-mailbox-properties-private.h"
 #include "mn-util.h"
 #include "mn-properties-dialog.h"
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-custom-vfs-mailbox.h"
 #endif
 #include "mn-stock.h"
@@ -49,7 +49,7 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
     {
       const char *location;
       gboolean complete = FALSE;
-      
+
       location = gtk_entry_get_text(GTK_ENTRY(SELF(self)->_priv->location_entry));
       if (*location)
 	{
@@ -62,7 +62,7 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
 	      g_object_unref(mailbox);
 	    }
 	}
-      
+
       g_value_set_boolean(VAL, complete);
     };
 
@@ -82,7 +82,24 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
 
       g_value_take_string(VAL, name);
     };
-  
+
+  property INT default_check_delay (override)
+    get
+    {
+      int check_delay = -1;
+      MNMailbox *mailbox;
+
+      mailbox = mn_mailbox_new_from_uri(gtk_entry_get_text(GTK_ENTRY(selfp->location_entry)));
+      if (mailbox)
+	{
+	  mn_mailbox_seal(mailbox);
+	  check_delay = mailbox->runtime_check_delay;
+	  g_object_unref(mailbox);
+	}
+
+      g_value_set_int(VAL, check_delay);
+    };
+
   class_init (class)
   {
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
@@ -91,10 +108,12 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
     p_class->stock_id = MN_STOCK_UNKNOWN;
     p_class->combo_label = _("<span style=\"italic\">autodetect</span>");
     p_class->section_label = _("Location");
+    p_class->no_check_delay_unless_complete = TRUE;
   }
 
   init (self)
   {
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     GtkWidget *outer_hbox;
     GtkWidget *hbox;
     GtkWidget *label;
@@ -102,33 +121,36 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
 
     label = gtk_label_new_with_mnemonic(_("_Location:"));
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
-    
+
     outer_hbox = gtk_hbox_new(FALSE, 12);
     hbox = gtk_hbox_new(FALSE, 6);
-    
+
     selfp->location_entry = gtk_entry_new();
+    /* translators: header capitalization */
     button = gtk_button_new_with_mnemonic(_("_Browse..."));
-    
+
     gtk_label_set_mnemonic_widget(GTK_LABEL(label), selfp->location_entry);
-    mn_mailbox_properties_add_entry(MN_MAILBOX_PROPERTIES(self), GTK_ENTRY(selfp->location_entry));
+    properties->entries = g_slist_append(properties->entries, selfp->location_entry);
 
     gtk_box_pack_start(GTK_BOX(hbox), selfp->location_entry, TRUE, TRUE, 0);
     gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
-    
+
     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_widget_show_all(outer_hbox);
 
     gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->label_size_group, label);
+    gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->entry_size_group, selfp->location_entry);
     gtk_size_group_add_widget(MN_MAILBOX_PROPERTIES(self)->entry_button_size_group, button);
 
     g_object_connect(selfp->location_entry,
 		     "swapped-signal::changed", mn_mailbox_properties_notify_complete, self,
 		     "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self,
+		     "swapped-signal::changed", mn_mailbox_properties_notify_default_check_delay, self,
 		     NULL);
-    
+
     g_signal_connect(button, "clicked", G_CALLBACK(self_browse_clicked_h), self);
   }
 
@@ -144,8 +166,9 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
 	gtk_window_present(GTK_WINDOW(selfp->chooser));
 	return;
       }
-    
+
     toplevel = gtk_widget_get_toplevel(GTK_WIDGET(button));
+    /* translators: header capitalization */
     selfp->chooser = gtk_file_chooser_dialog_new_with_backend(_("Select a File or Folder"),
 							      GTK_WINDOW(toplevel),
 							      GTK_FILE_CHOOSER_ACTION_OPEN,
@@ -154,7 +177,7 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
 							      GTK_STOCK_OPEN, 1,
 							      NULL);
     eel_add_weak_pointer(&selfp->chooser);
-    
+
     gtk_window_set_destroy_with_parent(GTK_WINDOW(selfp->chooser), TRUE);
     gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(selfp->chooser), FALSE);
     mn_file_chooser_dialog_allow_select_folder(GTK_FILE_CHOOSER_DIALOG(selfp->chooser), 1);
@@ -164,7 +187,7 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
       gtk_file_chooser_set_uri(GTK_FILE_CHOOSER(selfp->chooser), location);
     else if (current_folder_uri)
       gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(selfp->chooser), current_folder_uri);
-      
+
     g_object_connect(selfp->chooser,
 		     "signal::current-folder-changed", self_current_folder_changed_h, self,
 		     "signal::response", self_chooser_response_h, self,
@@ -172,14 +195,14 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
 
     gtk_widget_show(selfp->chooser);
   }
-  
+
   private void
     current_folder_changed_h (GtkFileChooser *chooser, gpointer user_data)
   {
     g_free(current_folder_uri);
     current_folder_uri = gtk_file_chooser_get_current_folder_uri(chooser);
   }
-  
+
   private void
     chooser_response_h (GtkDialog *dialog, int response, gpointer user_data)
   {
@@ -187,7 +210,7 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
       {
 	Self *self = user_data;
 	char *uri;
-	
+
 	uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER(dialog));
 	gtk_entry_set_text(GTK_ENTRY(selfp->location_entry), uri);
 	g_free(uri);
@@ -195,16 +218,16 @@ class MN:Autodetect:Mailbox:Properties from MN:Mailbox:Properties
 
     gtk_widget_destroy(GTK_WIDGET(dialog));
   }
-  
+
   override (MN:Mailbox:Properties) void
     set_mailbox (MNMailboxProperties *properties, MNMailbox *mailbox)
   {
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || 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);
 #else
-    g_return_if_reached();
+    g_assert_not_reached();
 #endif
   }
 
diff --git a/src/mn-autodetect-mailbox-properties.gob.stamp b/src/mn-autodetect-mailbox-properties.gob.stamp
diff --git a/src/mn-autodetect-mailbox-properties.h b/src/mn-autodetect-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -62,9 +62,11 @@ GType	mn_autodetect_mailbox_properties_get_type	(void);
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg)	"complete", __extension__ ({gboolean *z = (arg); z;})
 #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg)	"default_name", __extension__ ({gchar **z = (arg); z;})
+#define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(arg)	"default_check_delay", __extension__ ({gint *z = (arg); z;})
 #else /* __GNUC__ && !__STRICT_ANSI__ */
 #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(arg)	"complete",(gboolean *)(arg)
 #define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(arg)	"default_name",(gchar **)(arg)
+#define MN_AUTODETECT_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(arg)	"default_check_delay",(gint *)(arg)
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
 
 
diff --git a/src/mn-automation-private.h b/src/mn-automation-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_AUTOMATION_PRIVATE_H__
 #define __MN_AUTOMATION_PRIVATE_H__
diff --git a/src/mn-automation.c b/src/mn-automation.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -27,7 +26,7 @@
 
 #include "mn-shell.h"
 
-#line 31 "mn-automation.c"
+#line 30 "mn-automation.c"
 /* self casting macros */
 #define SELF(x) MN_AUTOMATION(x)
 #define SELF_CONST(x) MN_AUTOMATION_CONST(x)
@@ -44,8 +43,8 @@ typedef MNAutomationClass SelfClass;
 /* here are local prototypes */
 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 void mn_automation_update (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
-static void mn_automation_displayMainWindow (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;
@@ -55,8 +54,8 @@ static void mn_automation_quit (PortableServer_Servant servant, CORBA_Environmen
 static BonoboObjectClass *parent_class = NULL;
 
 /* Short form macros */
+#define self_hasMailboxes mn_automation_hasMailboxes
 #define self_update mn_automation_update
-#define self_displayMainWindow mn_automation_displayMainWindow
 #define self_displayProperties mn_automation_displayProperties
 #define self_displayAbout mn_automation_displayAbout
 #define self_closePopup mn_automation_closePopup
@@ -122,9 +121,9 @@ mn_automation_class_init (MNAutomationClass * c G_GNUC_UNUSED)
 	parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT);
 
 #line 32 "mn-automation.gob"
-	c->_epv.update = self_update;
+	c->_epv.hasMailboxes = self_hasMailboxes;
 #line 39 "mn-automation.gob"
-	c->_epv.displayMainWindow = self_displayMainWindow;
+	c->_epv.update = self_update;
 #line 46 "mn-automation.gob"
 	c->_epv.displayProperties = self_displayProperties;
 #line 53 "mn-automation.gob"
@@ -133,106 +132,106 @@ mn_automation_class_init (MNAutomationClass * c G_GNUC_UNUSED)
 	c->_epv.closePopup = self_closePopup;
 #line 67 "mn-automation.gob"
 	c->_epv.quit = self_quit;
-#line 137 "mn-automation.c"
+#line 136 "mn-automation.c"
 }
 #undef __GOB_FUNCTION__
 
 
 
 #line 32 "mn-automation.gob"
-static void 
-mn_automation_update (PortableServer_Servant servant, CORBA_Environment * env)
-#line 146 "mn-automation.c"
+static CORBA_boolean 
+mn_automation_hasMailboxes (PortableServer_Servant servant, CORBA_Environment * env)
+#line 145 "mn-automation.c"
 {
-#define __GOB_FUNCTION__ "MN:Automation::update"
+#define __GOB_FUNCTION__ "MN:Automation::hasMailboxes"
 {
 #line 34 "mn-automation.gob"
 	
-    g_return_if_fail(mn_shell != NULL);
-    mn_mailboxes_check(mn_shell->mailboxes);
+    g_assert(mn_shell != NULL);
+    return mn_shell->mailboxes->list != NULL ? CORBA_TRUE : CORBA_FALSE;
   }}
-#line 155 "mn-automation.c"
+#line 154 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
 #line 39 "mn-automation.gob"
 static void 
-mn_automation_displayMainWindow (PortableServer_Servant servant, CORBA_Environment * env)
-#line 161 "mn-automation.c"
+mn_automation_update (PortableServer_Servant servant, CORBA_Environment * env)
+#line 160 "mn-automation.c"
 {
-#define __GOB_FUNCTION__ "MN:Automation::displayMainWindow"
+#define __GOB_FUNCTION__ "MN:Automation::update"
 {
 #line 41 "mn-automation.gob"
 	
-    g_return_if_fail(mn_shell != NULL);
-    mn_shell_display_main_window(mn_shell);
+    g_assert(mn_shell != NULL);
+    mn_mailboxes_check(mn_shell->mailboxes);
   }}
-#line 170 "mn-automation.c"
+#line 169 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
 #line 46 "mn-automation.gob"
 static void 
 mn_automation_displayProperties (PortableServer_Servant servant, CORBA_Environment * env)
-#line 176 "mn-automation.c"
+#line 175 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::displayProperties"
 {
 #line 48 "mn-automation.gob"
 	
-    g_return_if_fail(mn_shell != NULL);
-    mn_shell_display_properties_dialog(mn_shell, NULL);
+    g_assert(mn_shell != NULL);
+    mn_shell_display_properties_dialog(mn_shell);
   }}
-#line 185 "mn-automation.c"
+#line 184 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
 #line 53 "mn-automation.gob"
 static void 
 mn_automation_displayAbout (PortableServer_Servant servant, CORBA_Environment * env)
-#line 191 "mn-automation.c"
+#line 190 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::displayAbout"
 {
 #line 55 "mn-automation.gob"
 	
-    g_return_if_fail(mn_shell != NULL);
-    mn_shell_display_about_dialog(mn_shell, NULL);
+    g_assert(mn_shell != NULL);
+    mn_shell_display_about_dialog(mn_shell);
   }}
-#line 200 "mn-automation.c"
+#line 199 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
 #line 60 "mn-automation.gob"
 static void 
 mn_automation_closePopup (PortableServer_Servant servant, CORBA_Environment * env)
-#line 206 "mn-automation.c"
+#line 205 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::closePopup"
 {
 #line 62 "mn-automation.gob"
 	
-    g_return_if_fail(mn_shell != NULL);
+    g_assert(mn_shell != NULL);
     mn_shell_close_mail_summary_popup(mn_shell);
   }}
-#line 215 "mn-automation.c"
+#line 214 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
 #line 67 "mn-automation.gob"
 static void 
 mn_automation_quit (PortableServer_Servant servant, CORBA_Environment * env)
-#line 221 "mn-automation.c"
+#line 220 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::quit"
 {
 #line 69 "mn-automation.gob"
 	
-    g_return_if_fail(mn_shell != NULL);
+    g_assert(mn_shell != NULL);
     g_object_unref(mn_shell);
   }}
-#line 230 "mn-automation.c"
+#line 229 "mn-automation.c"
 #undef __GOB_FUNCTION__
 
 #line 74 "mn-automation.gob"
 MNAutomation * 
 mn_automation_new (void)
-#line 236 "mn-automation.c"
+#line 235 "mn-automation.c"
 {
 #define __GOB_FUNCTION__ "MN:Automation::new"
 {
@@ -240,5 +239,5 @@ mn_automation_new (void)
 	
     return GET_NEW;
   }}
-#line 244 "mn-automation.c"
+#line 243 "mn-automation.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-automation.gob b/src/mn-automation.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <libbonobo.h>
@@ -26,48 +26,48 @@ requires 2.0.12
 %{
 #include "mn-shell.h"
 %}
-  
+
 class MN:Automation from Bonobo:Object (BonoboObject GNOME_MailNotification_Automation)
 {
-  BonoboObject private void
-    update (PortableServer_Servant servant, CORBA_Environment *env)
+  BonoboObject private CORBA_boolean
+    hasMailboxes (PortableServer_Servant servant, CORBA_Environment *env)
   {
-    g_return_if_fail(mn_shell != NULL);
-    mn_mailboxes_check(mn_shell->mailboxes);
+    g_assert(mn_shell != NULL);
+    return mn_shell->mailboxes->list != NULL ? CORBA_TRUE : CORBA_FALSE;
   }
 
   BonoboObject private void
-    displayMainWindow (PortableServer_Servant servant, CORBA_Environment *env)
+    update (PortableServer_Servant servant, CORBA_Environment *env)
   {
-    g_return_if_fail(mn_shell != NULL);
-    mn_shell_display_main_window(mn_shell);
+    g_assert(mn_shell != NULL);
+    mn_mailboxes_check(mn_shell->mailboxes);
   }
 
   BonoboObject private void
     displayProperties (PortableServer_Servant servant, CORBA_Environment *env)
   {
-    g_return_if_fail(mn_shell != NULL);
-    mn_shell_display_properties_dialog(mn_shell, NULL);
+    g_assert(mn_shell != NULL);
+    mn_shell_display_properties_dialog(mn_shell);
   }
 
   BonoboObject private void
     displayAbout (PortableServer_Servant servant, CORBA_Environment *env)
   {
-    g_return_if_fail(mn_shell != NULL);
-    mn_shell_display_about_dialog(mn_shell, NULL);
+    g_assert(mn_shell != NULL);
+    mn_shell_display_about_dialog(mn_shell);
   }
 
   BonoboObject private void
     closePopup (PortableServer_Servant servant, CORBA_Environment *env)
   {
-    g_return_if_fail(mn_shell != NULL);
+    g_assert(mn_shell != NULL);
     mn_shell_close_mail_summary_popup(mn_shell);
   }
 
   BonoboObject private void
     quit (PortableServer_Servant servant, CORBA_Environment *env)
   {
-    g_return_if_fail(mn_shell != NULL);
+    g_assert(mn_shell != NULL);
     g_object_unref(mn_shell);
   }
 
diff --git a/src/mn-automation.gob.stamp b/src/mn-automation.gob.stamp
diff --git a/src/mn-automation.h b/src/mn-automation.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-blinking-image-private.h b/src/mn-blinking-image-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_BLINKING_IMAGE_PRIVATE_H__
 #define __MN_BLINKING_IMAGE_PRIVATE_H__
@@ -9,18 +9,24 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 25 "mn-blinking-image.gob"
+
+#include "mn-locked-callback.h"
+
+#line 18 "mn-blinking-image-private.h"
 struct _MNBlinkingImagePrivate {
-#line 32 "mn-blinking-image.gob"
+#line 36 "mn-blinking-image.gob"
 	gboolean blinking;
-#line 51 "mn-blinking-image.gob"
-	unsigned int timeout_id;
-#line 52 "mn-blinking-image.gob"
+#line 58 "mn-blinking-image.gob"
+	MNLockedGSource * timeout_source;
+#line 59 "mn-blinking-image.gob"
 	gboolean is_on;
-#line 54 "mn-blinking-image.gob"
+#line 61 "mn-blinking-image.gob"
 	char * stock_id;
-#line 55 "mn-blinking-image.gob"
+#line 62 "mn-blinking-image.gob"
 	GtkIconSize icon_size;
-#line 24 "mn-blinking-image-private.h"
+#line 30 "mn-blinking-image-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-blinking-image.c b/src/mn-blinking-image.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,12 +22,12 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-blinking-image.gob"
+#line 29 "mn-blinking-image.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
 
-#line 32 "mn-blinking-image.c"
+#line 31 "mn-blinking-image.c"
 /* self casting macros */
 #define SELF(x) MN_BLINKING_IMAGE(x)
 #define SELF_CONST(x) MN_BLINKING_IMAGE_CONST(x)
@@ -64,7 +63,8 @@ static GtkImageClass *parent_class = NULL;
 #define self_set_blinking mn_blinking_image_set_blinking
 #define self_update mn_blinking_image_update
 #define self_timeout_cb mn_blinking_image_timeout_cb
-#define self_new_from_stock mn_blinking_image_new_from_stock
+#define self_new mn_blinking_image_new
+#define self_set_from_stock mn_blinking_image_set_from_stock
 GType
 mn_blinking_image_get_type (void)
 {
@@ -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 57 "mn-blinking-image.gob"
+#line 64 "mn-blinking-image.gob"
 	___3_mn_blinking_image_finalize(obj_self);
 #line 120 "mn-blinking-image.c"
-#line 54 "mn-blinking-image.gob"
+#line 61 "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 47 "mn-blinking-image.gob"
+#line 54 "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 57 "mn-blinking-image.gob"
+#line 64 "mn-blinking-image.gob"
 	g_object_class->finalize = ___finalize;
 #line 149 "mn-blinking-image.c"
 	g_object_class->get_property = ___object_get_property;
@@ -178,19 +178,22 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_BLINKING:
 		{
-#line 35 "mn-blinking-image.gob"
+#line 39 "mn-blinking-image.gob"
 
-      if (selfp->blinking)
+      gboolean blinking = g_value_get_boolean(VAL);
+      if (blinking != selfp->blinking)
 	{
-	  g_source_remove(selfp->timeout_id);
-	  self_update(self, TRUE);
+	  selfp->blinking = blinking;
+	  if (blinking)
+	    selfp->timeout_source = mn_g_timeout_add_gdk_locked(500, self_timeout_cb, self);
+	  else
+	    {
+	      mn_locked_g_source_remove(selfp->timeout_source);
+	      self_update(self, TRUE);
+	    }
 	}
-
-      selfp->blinking = g_value_get_boolean(VAL);
-      if (selfp->blinking)
-	selfp->timeout_id = g_timeout_add(500, self_timeout_cb, self);
     
-#line 194 "mn-blinking-image.c"
+#line 197 "mn-blinking-image.c"
 		}
 		break;
 	default:
@@ -219,11 +222,11 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_BLINKING:
 		{
-#line 47 "mn-blinking-image.gob"
+#line 54 "mn-blinking-image.gob"
 
       g_value_set_boolean(VAL, selfp->blinking);
     
-#line 227 "mn-blinking-image.c"
+#line 230 "mn-blinking-image.c"
 		}
 		break;
 	default:
@@ -240,68 +243,68 @@ ___object_get_property (GObject *object,
 
 
 
-#line 47 "mn-blinking-image.gob"
+#line 54 "mn-blinking-image.gob"
 gboolean 
 mn_blinking_image_get_blinking (MNBlinkingImage * self)
-#line 247 "mn-blinking-image.c"
+#line 250 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::get_blinking"
 {
-#line 33 "mn-blinking-image.gob"
+#line 37 "mn-blinking-image.gob"
 		gboolean val; g_object_get (G_OBJECT (self), "blinking", &val, NULL); return val;
 }}
-#line 254 "mn-blinking-image.c"
+#line 257 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 35 "mn-blinking-image.gob"
+#line 39 "mn-blinking-image.gob"
 void 
 mn_blinking_image_set_blinking (MNBlinkingImage * self, gboolean val)
-#line 260 "mn-blinking-image.c"
+#line 263 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::set_blinking"
 {
-#line 33 "mn-blinking-image.gob"
+#line 37 "mn-blinking-image.gob"
 		g_object_set (G_OBJECT (self), "blinking", val, NULL);
 }}
-#line 267 "mn-blinking-image.c"
+#line 270 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 57 "mn-blinking-image.gob"
+#line 64 "mn-blinking-image.gob"
 static void 
 ___3_mn_blinking_image_finalize (GObject * object G_GNUC_UNUSED)
-#line 273 "mn-blinking-image.c"
+#line 276 "mn-blinking-image.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::finalize"
 {
-#line 59 "mn-blinking-image.gob"
+#line 66 "mn-blinking-image.gob"
 	
     Self *self = SELF(object);
 
-    if (selfp->timeout_id)
-      g_source_remove(selfp->timeout_id);
+    if (selfp->timeout_source)
+      mn_locked_g_source_remove(selfp->timeout_source);
 
     PARENT_HANDLER(object);
   }}
-#line 289 "mn-blinking-image.c"
+#line 292 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 68 "mn-blinking-image.gob"
+#line 75 "mn-blinking-image.gob"
 static void 
 mn_blinking_image_update (MNBlinkingImage * self, gboolean is_on)
-#line 296 "mn-blinking-image.c"
+#line 299 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::update"
-#line 68 "mn-blinking-image.gob"
+#line 75 "mn-blinking-image.gob"
 	g_return_if_fail (self != NULL);
-#line 68 "mn-blinking-image.gob"
+#line 75 "mn-blinking-image.gob"
 	g_return_if_fail (MN_IS_BLINKING_IMAGE (self));
-#line 303 "mn-blinking-image.c"
+#line 306 "mn-blinking-image.c"
 {
-#line 70 "mn-blinking-image.gob"
+#line 77 "mn-blinking-image.gob"
 	
     if (is_on)
       gtk_image_set_from_stock(GTK_IMAGE(self), selfp->stock_id, selfp->icon_size);
@@ -322,57 +325,69 @@ mn_blinking_image_update (MNBlinkingImage * self, gboolean is_on)
 
 	pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, width, height);
 	gdk_pixbuf_fill(pixbuf, 0); /* fill with transparency */
-	
+
 	gtk_image_set_from_pixbuf(GTK_IMAGE(self), pixbuf);
 	g_object_unref(pixbuf);
       }
 
     selfp->is_on = is_on;
   }}
-#line 333 "mn-blinking-image.c"
+#line 336 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 98 "mn-blinking-image.gob"
+#line 105 "mn-blinking-image.gob"
 static gboolean 
 mn_blinking_image_timeout_cb (gpointer data)
-#line 339 "mn-blinking-image.c"
+#line 342 "mn-blinking-image.c"
 {
 #define __GOB_FUNCTION__ "MN:Blinking:Image::timeout_cb"
 {
-#line 100 "mn-blinking-image.gob"
+#line 107 "mn-blinking-image.gob"
 	
     Self *self = data;
 
-    GDK_THREADS_ENTER();
     self_update(self, ! selfp->is_on);
-    GDK_THREADS_LEAVE();
 
     return TRUE;
   }}
-#line 353 "mn-blinking-image.c"
+#line 354 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
 
-#line 110 "mn-blinking-image.gob"
+#line 115 "mn-blinking-image.gob"
 GtkWidget * 
-mn_blinking_image_new_from_stock (const char * stock_id, GtkIconSize icon_size)
-#line 359 "mn-blinking-image.c"
+mn_blinking_image_new (void)
+#line 360 "mn-blinking-image.c"
 {
-#define __GOB_FUNCTION__ "MN:Blinking:Image::new_from_stock"
-#line 110 "mn-blinking-image.gob"
-	g_return_val_if_fail (stock_id != NULL, (GtkWidget * )0);
-#line 364 "mn-blinking-image.c"
+#define __GOB_FUNCTION__ "MN:Blinking:Image::new"
 {
-#line 113 "mn-blinking-image.gob"
+#line 117 "mn-blinking-image.gob"
 	
-    Self *self;
+    return GTK_WIDGET(GET_NEW);
+  }}
+#line 368 "mn-blinking-image.c"
+#undef __GOB_FUNCTION__
 
-    self = GET_NEW;
+#line 121 "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"
+	g_return_if_fail (self != NULL);
+#line 121 "mn-blinking-image.gob"
+	g_return_if_fail (MN_IS_BLINKING_IMAGE (self));
+#line 121 "mn-blinking-image.gob"
+	g_return_if_fail (stock_id != NULL);
+#line 383 "mn-blinking-image.c"
+{
+#line 125 "mn-blinking-image.gob"
+	
+    g_free(selfp->stock_id);
     selfp->stock_id = g_strdup(stock_id);
     selfp->icon_size = icon_size;
 
     self_update(self, selfp->is_on);
-
-    return GTK_WIDGET(self);
   }}
-#line 378 "mn-blinking-image.c"
+#line 393 "mn-blinking-image.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-blinking-image.gob b/src/mn-blinking-image.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,12 +16,16 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
 %}
 
+%privateheader{
+#include "mn-locked-callback.h"
+%}
+
 %{
 #include "config.h"
 #include <glib/gi18n.h>
@@ -33,22 +37,25 @@ class MN:Blinking:Image from Gtk:Image
   property BOOLEAN blinking (export)
     set
     {
-      if (selfp->blinking)
+      gboolean blinking = g_value_get_boolean(VAL);
+      if (blinking != selfp->blinking)
 	{
-	  g_source_remove(selfp->timeout_id);
-	  self_update(self, TRUE);
+	  selfp->blinking = blinking;
+	  if (blinking)
+	    selfp->timeout_source = mn_g_timeout_add_gdk_locked(500, self_timeout_cb, self);
+	  else
+	    {
+	      mn_locked_g_source_remove(selfp->timeout_source);
+	      self_update(self, TRUE);
+	    }
 	}
-
-      selfp->blinking = g_value_get_boolean(VAL);
-      if (selfp->blinking)
-	selfp->timeout_id = g_timeout_add(500, self_timeout_cb, self);
     }
     get
     {
       g_value_set_boolean(VAL, selfp->blinking);
     };
 
-  private unsigned int timeout_id;
+  private MNLockedGSource *timeout_source;
   private gboolean is_on = TRUE; /* is currently displaying the image? */
 
   private char *stock_id destroywith g_free;
@@ -59,12 +66,12 @@ class MN:Blinking:Image from Gtk:Image
   {
     Self *self = SELF(object);
 
-    if (selfp->timeout_id)
-      g_source_remove(selfp->timeout_id);
+    if (selfp->timeout_source)
+      mn_locked_g_source_remove(selfp->timeout_source);
 
     PARENT_HANDLER(object);
   }
-  
+
   private void
     update (self, gboolean is_on)
   {
@@ -87,7 +94,7 @@ class MN:Blinking:Image from Gtk:Image
 
 	pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, width, height);
 	gdk_pixbuf_fill(pixbuf, 0); /* fill with transparency */
-	
+
 	gtk_image_set_from_pixbuf(GTK_IMAGE(self), pixbuf);
 	g_object_unref(pixbuf);
       }
@@ -100,25 +107,26 @@ class MN:Blinking:Image from Gtk:Image
   {
     Self *self = data;
 
-    GDK_THREADS_ENTER();
     self_update(self, ! selfp->is_on);
-    GDK_THREADS_LEAVE();
 
     return TRUE;
   }
 
   public GtkWidget *
-    new_from_stock (const char *stock_id (check null),
-		    GtkIconSize icon_size)
+    new (void)
   {
-    Self *self;
+    return GTK_WIDGET(GET_NEW);
+  }
 
-    self = GET_NEW;
+  public void
+    set_from_stock (self,
+		    const char *stock_id (check null),
+		    GtkIconSize icon_size)
+  {
+    g_free(selfp->stock_id);
     selfp->stock_id = g_strdup(stock_id);
     selfp->icon_size = icon_size;
 
     self_update(self, selfp->is_on);
-
-    return GTK_WIDGET(self);
   }
 }
diff --git a/src/mn-blinking-image.gob.stamp b/src/mn-blinking-image.gob.stamp
diff --git a/src/mn-blinking-image.h b/src/mn-blinking-image.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -57,7 +57,9 @@ GType	mn_blinking_image_get_type	(void);
 gboolean 	mn_blinking_image_get_blinking	(MNBlinkingImage * self);
 void 	mn_blinking_image_set_blinking	(MNBlinkingImage * self,
 					gboolean val);
-GtkWidget * 	mn_blinking_image_new_from_stock	(const char * stock_id,
+GtkWidget * 	mn_blinking_image_new	(void);
+void 	mn_blinking_image_set_from_stock	(MNBlinkingImage * self,
+					const char * stock_id,
 					GtkIconSize icon_size);
 
 /*
diff --git a/src/mn-client-session.c b/src/mn-client-session.c
@@ -15,7 +15,7 @@
  *
  *
  *
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -47,12 +47,12 @@
 #include <errno.h>
 #include <glib.h>
 #include <glib/gi18n.h>
-#include <eel/eel-alert-dialog.h>
-#ifdef WITH_SSL
+#include <eel/eel.h>
+#if WITH_SSL
 #include <openssl/err.h>
 #include "mn-ssl.h"
 #endif /* WITH_SSL */
-#ifdef WITH_SASL
+#if WITH_SASL
 #include <sasl/sasl.h>
 #include <sasl/saslutil.h>
 #include "mn-sasl.h"
@@ -65,14 +65,14 @@
 /*** cpp *********************************************************************/
 
 #define READ_BUFSIZE			2048
-  
+
 /*** types *******************************************************************/
 
 struct _MNClientSession
 {
   MNClientSessionState		*states;
   MNClientSessionCallbacks	*callbacks;
-  char				*hostname;
+  const char			*hostname;
   int				port;
   int				s;
   MNClientSessionState		*state;
@@ -80,12 +80,12 @@ struct _MNClientSession
   MNClientSessionPrivate	*private;
   GByteArray			*input_buffer;
   unsigned int			bytes_to_remove;
-  
-#ifdef WITH_SSL
+
+#if WITH_SSL
   SSL				*ssl;
 #endif
 
-#ifdef WITH_SASL
+#if WITH_SASL
   sasl_conn_t			*sasl_conn;
   sasl_ssf_t			sasl_ssf;
   unsigned int			sasl_maxoutbuf;
@@ -94,7 +94,7 @@ struct _MNClientSession
 
 /*** variables ***************************************************************/
 
-#ifdef WITH_SASL
+#if WITH_SASL
 static sasl_callback_t sasl_callbacks[] = {
   { SASL_CB_USER, NULL, NULL },
   { SASL_CB_AUTHNAME, NULL, NULL },
@@ -113,7 +113,7 @@ G_LOCK_DEFINE_STATIC(resolver);
 static struct addrinfo *mn_client_session_resolve (MNClientSession *session);
 static int mn_client_session_connect (MNClientSession *session, struct addrinfo *addrinfo);
 
-#ifdef WITH_SSL
+#if WITH_SSL
 static gboolean mn_client_session_ssl_verify (MNClientSession *session);
 static gboolean mn_client_session_run_untrusted_dialog (const char *hostname,
 							const char *reason);
@@ -124,7 +124,7 @@ static gboolean mn_client_session_handle_input (MNClientSession *session, const 
 
 static void mn_client_session_prepare_input_buffer (MNClientSession *session);
 
-#ifdef WITH_SASL
+#if WITH_SASL
 static int mn_client_session_write_base64 (MNClientSession *session,
 					   const char *buf,
 					   unsigned int len);
@@ -157,7 +157,7 @@ static char *mn_client_session_sasl_get_ip_port (const struct sockaddr *addr);
 gboolean
 mn_client_session_run (MNClientSessionState *states,
 		       MNClientSessionCallbacks *callbacks,
-#ifdef WITH_SSL
+#if WITH_SSL
 		       gboolean use_ssl,
 #endif
 		       const char *hostname,
@@ -177,7 +177,7 @@ mn_client_session_run (MNClientSessionState *states,
   memset(&session, 0, sizeof(session));
   session.states = states;
   session.callbacks = callbacks;
-  session.hostname = g_strdup(hostname);
+  session.hostname = hostname;
   session.port = port;
   session.private = private;
 
@@ -190,7 +190,7 @@ mn_client_session_run (MNClientSessionState *states,
   if (session.s < 0)
     goto end;
 
-#ifdef WITH_SSL
+#if WITH_SSL
   if (use_ssl)
     {
       if (! mn_client_session_enable_ssl(&session))
@@ -205,16 +205,15 @@ mn_client_session_run (MNClientSessionState *states,
     if (! mn_client_session_handle_input(&session, line))
       break;
   g_byte_array_free(session.input_buffer, TRUE);
-  
+
  end:
-  g_free(session.hostname);
   if (session.s >= 0)
     while (close(session.s) < 0 && errno == EINTR);
-#ifdef WITH_SSL
+#if WITH_SSL
   if (session.ssl)
     SSL_free(session.ssl);
 #endif /* WITH_SSL */
-#ifdef WITH_SASL
+#if WITH_SASL
   if (session.sasl_conn)
     sasl_dispose(&session.sasl_conn);
 #endif /* WITH_SASL */
@@ -238,7 +237,7 @@ mn_client_session_resolve (MNClientSession *session)
   g_return_val_if_fail(session != NULL, NULL);
 
   memset(&hints, 0, sizeof(hints));
-#ifdef WITH_IPV6
+#if WITH_IPV6
   hints.ai_family = PF_UNSPEC;
 #else
   hints.ai_family = PF_INET;
@@ -261,7 +260,7 @@ mn_client_session_resolve (MNClientSession *session)
     return addrinfo;
   else
     {
-      mn_client_session_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->hostname, gai_strerror(status));
       return NULL;
     }
 }
@@ -270,24 +269,27 @@ static int
 mn_client_session_connect (MNClientSession *session, struct addrinfo *addrinfo)
 {
   struct addrinfo *a;
+  int n;
 
   g_return_val_if_fail(session != NULL, -1);
   g_return_val_if_fail(addrinfo != NULL, -1);
 
   /* iterate over addrinfo to find a working address (RFC 3484) */
-  for (a = addrinfo; a; a = a->ai_next)
+  for (a = addrinfo, n = 1; a; a = a->ai_next, n++)
     {
       int status;
       int s;
-      char ip[NI_MAXHOST];
+      char buf[NI_MAXHOST];
+      char *fail_str = NULL;
+      const char *ip;
 
 #ifndef HAVE_REENTRANT_RESOLVER
       G_LOCK(resolver);
 #endif
       status = getnameinfo(a->ai_addr,
 			   a->ai_addrlen,
-			   ip,
-			   sizeof(ip),
+			   buf,
+			   sizeof(buf),
 			   NULL,
 			   0,
 			   NI_NUMERICHOST);
@@ -295,25 +297,33 @@ mn_client_session_connect (MNClientSession *session, struct addrinfo *addrinfo)
       G_UNLOCK(resolver);
 #endif
 
-      g_return_val_if_fail(status == 0, -1);
-      
+      if (status == 0)
+	ip = buf;
+      else
+	{
+	  fail_str = g_strdup_printf(_("network address #%i"), n);
+	  ip = fail_str;
+
+	  mn_client_session_warning(session, _("unable to convert network address #%i into textual form: %s"), n, gai_strerror(status));
+	}
+
       if (a->ai_family == AF_INET)
 	((struct sockaddr_in *) a->ai_addr)->sin_port = g_htons(session->port);
-#ifdef WITH_IPV6
+#if WITH_IPV6
       else if (a->ai_family == AF_INET6)
 	((struct sockaddr_in6 *) a->ai_addr)->sin6_port = g_htons(session->port);
 #endif /* WITH_IPV6 */
       else
 	{
 	  mn_client_session_notice(session, _("%s: unsupported address family"), ip);
-	  continue;
+	  goto failure;
 	}
 
       s = socket(a->ai_family, SOCK_STREAM, 0);
       if (s < 0)
 	{
 	  mn_client_session_notice(session, _("%s: unable to create socket: %s"), ip, g_strerror(errno));
-	  continue;
+	  goto failure;
 	}
 
       mn_client_session_notice(session, _("connecting to %s (%s) port %i"), session->hostname, ip, session->port);
@@ -325,23 +335,31 @@ mn_client_session_connect (MNClientSession *session, struct addrinfo *addrinfo)
       else
 	{
 	  mn_client_session_notice(session, _("connected successfully"));
-	  return s;		/* success */
+	  goto success;
 	}
+
+    failure:
+      g_free(fail_str);
+      continue;
+
+    success:
+      g_free(fail_str);
+      return s;
     }
-  
+
   /* if reached, we couldn't find a working address */
-  mn_client_session_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->hostname);
   return -1;
 }
 
-#ifdef WITH_SSL
+#if WITH_SSL
 /**
  * mn_client_session_enable_ssl:
  * @session: a #MNClientSession
  *
  * Enables in-band SSL/TLS. Must not be used if the @use_ssl
  * mn_client_session_run() argument was %TRUE. If an error occurs,
- * mn_client_session_error() will be called on @session.
+ * mn_client_session_set_error() will be called on @session.
  *
  * Return value: %TRUE on success
  **/
@@ -350,43 +368,43 @@ mn_client_session_enable_ssl (MNClientSession *session)
 {
   SSL_CTX *ctx;
   GError *err = NULL;
-  
+
   g_return_val_if_fail(session != NULL, FALSE);
   g_return_val_if_fail(session->ssl == NULL, FALSE);
 
   ctx = mn_ssl_init(&err);
   if (! ctx)
     {
-      mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to initialize the OpenSSL library: %s"), err->message);
+      mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to initialize the OpenSSL library: %s"), err->message);
       g_error_free(err);
       return FALSE;
     }
-  
+
   session->ssl = SSL_new(ctx);
   if (! session->ssl)
     {
-      mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to create a SSL/TLS object: %s"), mn_ssl_get_error());
+      mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to create a SSL/TLS object: %s"), mn_ssl_get_error());
       return FALSE;
     }
 
   if (! SSL_set_fd(session->ssl, session->s))
     {
-      mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to set the SSL/TLS file descriptor: %s"), mn_ssl_get_error());
+      mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to set the SSL/TLS file descriptor: %s"), mn_ssl_get_error());
       return FALSE;
     }
 
   if (SSL_connect(session->ssl) != 1)
     {
-      mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to perform the SSL/TLS handshake: %s"), mn_ssl_get_error());
+      mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to perform the SSL/TLS handshake: %s"), mn_ssl_get_error());
       return FALSE;
     }
-  
+
   if (! mn_client_session_ssl_verify(session))
     {
-      mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("untrusted server"));
+      mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("untrusted server"));
       return FALSE;
     }
-  
+
   mn_client_session_notice(session, _("a SSL/TLS layer is now active (%s, %s %i-bit)"),
 			   SSL_get_version(session->ssl),
 			   SSL_get_cipher(session->ssl),
@@ -445,7 +463,7 @@ mn_client_session_ssl_verify (MNClientSession *session)
 		  eel_gconf_set_string_list(MN_CONF_TRUSTED_X509_CERTIFICATES, gconf_fingerprints);
 		}
 	    }
-	  
+
 	  eel_g_slist_free_deep(gconf_fingerprints);
 	}
 
@@ -499,24 +517,24 @@ mn_client_session_run_untrusted_dialog (const char *hostname,
 				"If you choose to connect to the server, this "
 				"message will not be shown again."),
 			      hostname, reason, hostname);
-  
+
   GDK_THREADS_ENTER();
 
   dialog = mn_alert_dialog_new(NULL,
 			       GTK_MESSAGE_WARNING,
 			       _("Connect to untrusted server?"),
 			       secondary);
+  g_free(secondary);
 
   gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
   gtk_dialog_add_button(GTK_DIALOG(dialog), MN_STOCK_CONNECT, GTK_RESPONSE_OK);
-			
+
   status = mn_dialog_run_nonmodal(GTK_DIALOG(dialog)) == GTK_RESPONSE_OK;
   gtk_widget_destroy(dialog);
-  
+
   gdk_flush();
   GDK_THREADS_LEAVE();
 
-  g_free(secondary);
   return status;
 }
 #endif /* WITH_SSL */
@@ -525,7 +543,7 @@ static int
 mn_client_session_enter_state (MNClientSession *session, int id)
 {
   int i;
-  
+
   g_return_val_if_fail(session != NULL, 0);
 
   for (i = 0; session->states[i].id; i++)
@@ -537,7 +555,8 @@ mn_client_session_enter_state (MNClientSession *session, int id)
 	  : MN_CLIENT_SESSION_RESULT_CONTINUE;
       }
 
-  g_return_val_if_reached(0);
+  g_assert_not_reached();
+  return 0;
 }
 
 static gboolean
@@ -554,7 +573,7 @@ mn_client_session_handle_input (MNClientSession *session, const char *input)
     {
       int result;
 
-      g_return_val_if_fail(session->state->handle_cb != NULL, FALSE);
+      g_assert(session->state->handle_cb != NULL);
       result = session->state->handle_cb(session, response, session->private);
 
     loop:
@@ -568,22 +587,23 @@ mn_client_session_handle_input (MNClientSession *session, const char *input)
 	    char *escaped;
 
 	    escaped = mn_utf8_escape(input);
-	    mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("response \"%s\" is not valid in current context"), escaped);
+	    mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("response \"%s\" is not valid in current context"), escaped);
 	    g_free(escaped);
 
 	    cont = FALSE;
 	  }
 	  break;
-	  
+
 	case MN_CLIENT_SESSION_RESULT_DISCONNECT:
 	  cont = FALSE;
 	  break;
-	  
+
 	case 0:			/* assertion failed somewhere */
-	  g_return_val_if_reached(FALSE);
+	  g_assert_not_reached();
+	  break;
 
 	default:
-	  g_return_val_if_fail(result > 0, FALSE);
+	  g_assert(result > 0);
 	  result = mn_client_session_enter_state(session, result);
 	  goto loop;
 	}
@@ -596,7 +616,7 @@ mn_client_session_handle_input (MNClientSession *session, const char *input)
       char *escaped;
 
       escaped = mn_utf8_escape(input);
-      mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to parse response \"%s\""), escaped);
+      mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to parse response \"%s\""), escaped);
       g_free(escaped);
 
       cont = FALSE;
@@ -624,13 +644,13 @@ mn_client_session_fill_input_buffer (MNClientSession *session)
   ssize_t bytes_read;
   const char *in = NULL;
   unsigned int inlen;
-  
+
   g_return_val_if_fail(session != NULL, FALSE);
 
   if (session->callbacks->pre_read)
     session->callbacks->pre_read(session, session->private);
 
-#ifdef WITH_SSL
+#if WITH_SSL
   if (session->ssl)
     bytes_read = SSL_read(session->ssl, buf, sizeof(buf));
   else
@@ -638,32 +658,32 @@ mn_client_session_fill_input_buffer (MNClientSession *session)
     do
       bytes_read = read(session->s, buf, sizeof(buf));
     while (bytes_read < 0 && errno == EINTR);
-	  
+
   if (session->callbacks->post_read)
     session->callbacks->post_read(session, session->private);
 
   if (bytes_read <= 0)
     {
-#ifdef WITH_SSL
+#if WITH_SSL
       if (session->ssl)
-	mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to read from server: %s"), mn_ssl_get_error());
+	mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to read from server: %s"), mn_ssl_get_error());
       else
 #endif /* WITH_SSL */
 	{
 	  if (bytes_read == 0)
-	    mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to read from server: EOF"));
+	    mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to read from server: EOF"));
 	  else
-	    mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to read from server: %s"), g_strerror(errno));
+	    mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to read from server: %s"), g_strerror(errno));
 	}
       return FALSE;
     }
 
-#ifdef WITH_SASL
+#if WITH_SASL
   if (session->sasl_ssf)
     {
       if (sasl_decode(session->sasl_conn, buf, bytes_read, &in, &inlen) != SASL_OK)
 	{
-	  mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to decode data using SASL: %s"), sasl_errdetail(session->sasl_conn));
+	  mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to decode data using SASL: %s"), sasl_errdetail(session->sasl_conn));
 	  return FALSE;
 	}
     }
@@ -685,7 +705,7 @@ mn_client_session_fill_input_buffer (MNClientSession *session)
  * @nbytes: the number of bytes to read
  *
  * Reads exactly @nbytes from @session. If an error occurs,
- * mn_client_session_error() will be called on @session.
+ * mn_client_session_set_error() will be called on @session.
  *
  * Return value: a pointer to a buffer containing @nbytes on success,
  * %NULL on failure. The pointer will be valid until the next call to
@@ -707,12 +727,12 @@ mn_client_session_read (MNClientSession *session, unsigned int nbytes)
       return FALSE;
 
   session->bytes_to_remove = nbytes;
-  
+
   str = g_strndup(session->input_buffer->data, nbytes);
   /* g_log() escapes unsafe and non UTF-8 characters, so this is safe */
   mn_client_session_notice(session, "< %s", str);
   g_free(str);
-  
+
   return session->input_buffer->data;
 }
 
@@ -721,7 +741,7 @@ mn_client_session_read (MNClientSession *session, unsigned int nbytes)
  * @session: a #MNClientSession object to read from
  *
  * Reads a crlf-terminated line from @session. If an error occurs,
- * mn_client_session_error() will be called on @session.
+ * mn_client_session_set_error() will be called on @session.
  *
  * Return value: the line read on success, %NULL on failure. The
  * pointer will be valid until the next call to
@@ -744,7 +764,7 @@ mn_client_session_read_line (MNClientSession *session)
 					  "\r\n"))))
     if (! mn_client_session_fill_input_buffer(session))
       return NULL;
-    
+
   *terminator = 0;
   session->bytes_to_remove = terminator - (char *) session->input_buffer->data + 2;
 
@@ -763,10 +783,10 @@ mn_client_session_read_line (MNClientSession *session)
  * @...: the arguments to the format string
  *
  * Writes a formatted crlf-terminated line to @session. If an error
- * occurs, mn_client_session_error() will be called on @session.
+ * occurs, mn_client_session_set_error() will be called on @session.
  *
  * Return value: %MN_CLIENT_SESSION_RESULT_CONTINUE on success, or the
- * return value of mn_client_session_error() on failure
+ * return value of mn_client_session_set_error() on failure
  **/
 int
 mn_client_session_write (MNClientSession *session,
@@ -780,10 +800,10 @@ mn_client_session_write (MNClientSession *session,
   GByteArray *array = NULL;
   ssize_t bytes_written;
   int result = MN_CLIENT_SESSION_RESULT_CONTINUE;
-  
+
   g_return_val_if_fail(session != NULL, 0);
   g_return_val_if_fail(format != NULL, 0);
-  
+
   va_start(args, format);
   str = g_strdup_vprintf(format, args);
   va_end(args);
@@ -793,7 +813,7 @@ mn_client_session_write (MNClientSession *session,
   g_free(str);
   len = strlen(full);
 
-#ifdef WITH_SASL
+#if WITH_SASL
   if (session->sasl_ssf)
     {
       unsigned int start = 0;
@@ -804,14 +824,14 @@ mn_client_session_write (MNClientSession *session,
 	  unsigned int chunk_len;
 	  const char *out;
 	  unsigned int outlen;
-	  
+
 	  chunk_len = MIN(len, session->sasl_maxoutbuf);
 	  if (sasl_encode(session->sasl_conn, full + start, chunk_len, &out, &outlen) != SASL_OK)
 	    {
-	      result = mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode data using SASL: %s"), sasl_errdetail(session->sasl_conn));
+	      result = mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode data using SASL: %s"), sasl_errdetail(session->sasl_conn));
 	      goto end;
 	    }
-	  
+
 	  g_byte_array_append(array, out, outlen);
 
 	  start += chunk_len;
@@ -825,8 +845,8 @@ mn_client_session_write (MNClientSession *session,
       array = g_byte_array_sized_new(len);
       g_byte_array_append(array, full, len);
     }
-  
-#ifdef WITH_SSL
+
+#if WITH_SSL
   if (session->ssl)
     bytes_written = SSL_write(session->ssl, array->data, array->len);
   else
@@ -837,20 +857,20 @@ mn_client_session_write (MNClientSession *session,
 
   if (bytes_written <= 0)
     {
-#ifdef WITH_SSL
+#if WITH_SSL
       if (session->ssl)
-	result = mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to write to server: %s"), mn_ssl_get_error());
+	result = mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to write to server: %s"), mn_ssl_get_error());
       else
 #endif /* WITH_SSL */
 	{
 	  if (bytes_written == 0)
-	    result = mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to write to server: EOF"));
+	    result = mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to write to server: EOF"));
 	  else
-	    result = mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to write to server: %s"), g_strerror(errno));
+	    result = mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST, _("unable to write to server: %s"), g_strerror(errno));
 	}
     }
 
-#ifdef WITH_SASL
+#if WITH_SASL
  end:
 #endif
   g_free(full);
@@ -859,7 +879,7 @@ mn_client_session_write (MNClientSession *session,
   return result;
 }
 
-#ifdef WITH_SASL
+#if WITH_SASL
 static int
 mn_client_session_write_base64 (MNClientSession *session,
 				const char *buf,
@@ -872,11 +892,11 @@ mn_client_session_write_base64 (MNClientSession *session,
 
   g_return_val_if_fail(session != NULL, 0);
   g_return_val_if_fail(buf != NULL, 0);
-  
+
   result = sasl_encode64(buf, len, buf64, sizeof(buf64), &outlen);
   if (result != SASL_OK)
-    return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode Base64: %s"), sasl_errstring(result, NULL, NULL));
-  
+    return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode Base64: %s"), sasl_errstring(result, NULL, NULL));
+
   str = g_strndup(buf64, outlen);
   result = mn_client_session_write(session, "%s", str);
   g_free(str);
@@ -905,7 +925,7 @@ mn_client_session_sasl_fill_interact (MNClientSession *session,
       case SASL_CB_AUTHNAME:
 	need_username = TRUE;
 	break;
-	
+
       case SASL_CB_PASS:
 	need_password = TRUE;
 	break;
@@ -917,15 +937,13 @@ mn_client_session_sasl_fill_interact (MNClientSession *session,
 
   if (need_username || need_password)
     {
-      session->callbacks->sasl_get_credentials(session,
-					       session->private,
-					       need_username ? &username : NULL,
-					       need_password ? &password : NULL);
-
-      if ((need_username && ! username) || (need_password && ! password))
+      if (! session->callbacks->sasl_get_credentials(session,
+						     session->private,
+						     need_username ? &username : NULL,
+						     need_password ? &password : NULL))
 	return FALSE;
     }
-  
+
   for (i = interact; i->id; i++)
     {
       const char *data;
@@ -936,16 +954,17 @@ mn_client_session_sasl_fill_interact (MNClientSession *session,
 	case SASL_CB_AUTHNAME:
 	  data = username;
 	  break;
-	  
+
 	case SASL_CB_PASS:
 	  data = password;
 	  break;
 
 	default:
-	  g_return_val_if_reached(FALSE);
+	  g_assert_not_reached();
+	  break;
 	};
 
-      g_return_val_if_fail(data != NULL, FALSE);
+      g_assert(data != NULL);
 
       i->result = data;
       i->len = strlen(data);
@@ -957,7 +976,7 @@ mn_client_session_sasl_fill_interact (MNClientSession *session,
 static char *
 mn_client_session_sasl_get_ip_port (const struct sockaddr *addr)
 {
-#ifdef WITH_IPV6
+#if WITH_IPV6
   char buf[INET6_ADDRSTRLEN];
 #else
   char buf[INET_ADDRSTRLEN];
@@ -974,7 +993,7 @@ mn_client_session_sasl_get_ip_port (const struct sockaddr *addr)
 	return NULL;
       port = g_ntohs(in->sin_port);
     }
-#ifdef WITH_IPV6
+#if WITH_IPV6
   else if (addr->sa_family == AF_INET6)
     {
       struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) addr;
@@ -986,7 +1005,7 @@ mn_client_session_sasl_get_ip_port (const struct sockaddr *addr)
 #endif
   else
     return NULL;
-  
+
   return g_strdup_printf("%s;%i", buf, port);
 }
 
@@ -1057,16 +1076,16 @@ mn_client_session_sasl_authentication_start (MNClientSession *session,
       g_error_free(err);
       return FALSE;
     }
-  
+
   /* make sure we do not leak the previous sasl_conn if any */
   mn_client_session_sasl_dispose(session);
-  
+
   namelen = sizeof(name);
   if (getsockname(session->s, &name, &namelen) >= 0)
     local_ip_port = mn_client_session_sasl_get_ip_port(&name);
   else
     mn_client_session_warning(session, _("unable to retrieve local address of socket: %s"), g_strerror(errno));
-  
+
   namelen = sizeof(name);
   if (getpeername(session->s, &name, &namelen) >= 0)
     remote_ip_port = mn_client_session_sasl_get_ip_port(&name);
@@ -1090,12 +1109,12 @@ mn_client_session_sasl_authentication_start (MNClientSession *session,
       sasl_interact_t *interact = NULL;
       GString *mechanisms_string;
       GSList *l;
-      
+
       security.min_ssf = 0;
       security.max_ssf = 256;
       security.maxbufsize = READ_BUFSIZE;
       /* only permit plaintext mechanisms if SSL is in use */
-#ifdef WITH_SSL
+#if WITH_SSL
       if (session->ssl)
 	security.security_flags = 0;
       else
@@ -1106,7 +1125,7 @@ mn_client_session_sasl_authentication_start (MNClientSession *session,
 
       if (sasl_setprop(session->sasl_conn, SASL_SEC_PROPS, &security) != SASL_OK)
 	mn_client_session_warning(session, _("unable to set SASL security properties: %s"), sasl_errdetail(session->sasl_conn));
-      
+
       mechanisms_string = g_string_new(NULL);
       if (forced_mechanism)
 	g_string_append(mechanisms_string, forced_mechanism);
@@ -1174,21 +1193,21 @@ mn_client_session_sasl_authentication_step (MNClientSession *session,
   g_return_val_if_fail(session != NULL, 0);
   g_return_val_if_fail(session->sasl_conn != NULL, 0);
   g_return_val_if_fail(input != NULL, 0);
-  
+
   {
     unsigned int inlen = strlen(input);
     char buf[inlen];
     unsigned int outlen;
     int result;
-	  
+
     result = sasl_decode64(input, inlen, buf, inlen, &outlen);
     if (result == SASL_OK)
       {
 	sasl_interact_t *interact = NULL;
 	const char *clientout;
 	unsigned int clientoutlen;
-	      
-	do 
+
+	do
 	  {
 	    result = sasl_client_step(session->sasl_conn,
 				      buf,
@@ -1196,7 +1215,7 @@ mn_client_session_sasl_authentication_step (MNClientSession *session,
 				      &interact,
 				      &clientout,
 				      &clientoutlen);
-		  
+
 	    if (result == SASL_INTERACT)
 	      {
 		if (! mn_client_session_sasl_fill_interact(session, interact, _("SASL asked for something we did not know, aborting SASL authentication")))
@@ -1204,24 +1223,24 @@ mn_client_session_sasl_authentication_step (MNClientSession *session,
 	      }
 	  }
 	while (result == SASL_INTERACT);
-	      
+
 	switch (result)
 	  {
 	  case SASL_OK:
 	  case SASL_CONTINUE:
 	    return mn_client_session_write_base64(session, clientout, clientoutlen);
-	      
+
 	  case SASL_INTERACT:
 	    /* could not fill interaction, abort */
 	    return mn_client_session_write(session, "*");
-	      
+
 	  default:
 	    mn_client_session_warning(session, _("%s, aborting SASL authentication"), sasl_errdetail(session->sasl_conn));
 	    return mn_client_session_write(session, "*");
 	  }
       }
     else			/* compliance error */
-      return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to decode Base64 input from server: %s"), sasl_errstring(result, NULL, NULL));
+      return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to decode Base64 input from server: %s"), sasl_errstring(result, NULL, NULL));
   }
 }
 
@@ -1262,7 +1281,7 @@ mn_client_session_sasl_authentication_done (MNClientSession *session)
 	  else
 	    {
 	      /* a security layer is active but we can't retrieve maxoutbuf -> fatal */
-	      mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to get SASL_MAXOUTBUF property: %s"), sasl_errdetail(session->sasl_conn));
+	      mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to get SASL_MAXOUTBUF property: %s"), sasl_errdetail(session->sasl_conn));
 	      return FALSE;
 	    }
 	}
@@ -1382,7 +1401,7 @@ mn_client_session_warning (MNClientSession *session,
 }
 
 /**
- * mn_client_session_error:
+ * mn_client_session_set_error:
  * @session: a #MNClientSession
  * @code: a #MNClientSessionError code
  * @format: a printf() format string
@@ -1394,10 +1413,10 @@ mn_client_session_warning (MNClientSession *session,
  * Return value: %MN_CLIENT_SESSION_RESULT_DISCONNECT
  **/
 int
-mn_client_session_error (MNClientSession *session,
-			 int code,
-			 const char *format,
-			 ...)
+mn_client_session_set_error (MNClientSession *session,
+			     int code,
+			     const char *format,
+			     ...)
 {
   g_return_val_if_fail(session != NULL, 0);
   g_return_val_if_fail(format != NULL, 0);
@@ -1418,6 +1437,18 @@ mn_client_session_error (MNClientSession *session,
   return MN_CLIENT_SESSION_RESULT_DISCONNECT;
 }
 
+int
+mn_client_session_set_error_from_response (MNClientSession *session,
+					   int code,
+					   const char *response)
+{
+  g_return_val_if_fail(session != NULL, 0);
+
+  return response
+    ? mn_client_session_set_error(session, code, "\"%s\"", response)
+    : mn_client_session_set_error(session, code, _("unknown server error"));
+}
+
 GQuark
 mn_client_session_error_quark (void)
 {
diff --git a/src/mn-client-session.h b/src/mn-client-session.h
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -21,7 +21,7 @@
 
 #include "config.h"
 #include <glib.h>
-#ifdef WITH_SASL
+#if WITH_SASL
 #include <sasl/sasl.h>
 #endif
 
@@ -44,9 +44,9 @@ enum
   /* signal an uncompliant response and disconnect */
   MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT	= -2,
   /* disconnect */
-  MN_CLIENT_SESSION_RESULT_DISCONNECT			= -3,
+  MN_CLIENT_SESSION_RESULT_DISCONNECT			= -3
 };
-    
+
 /*
  * In all the session callbacks below, @session is the session which
  * is being run, and @private is the opaque data pointer which was
@@ -67,7 +67,7 @@ typedef struct
    * %MN_CLIENT_SESSION_RESULT_CONTINUE.
    *
    * Return value: must return a state ID to switch to, or one of the
-   * MN_CLIENT_SESSION_RESULT_ codes above.
+   * MN_CLIENT_SESSION_RESULT_ codes above
    */
   int		(*enter_cb)	(MNClientSession	  *session,
 				 MNClientSessionPrivate	  *private);
@@ -80,7 +80,7 @@ typedef struct
    * Handles a response received while the state is active.
    *
    * Return value: must return a state ID to switch to, or one of the
-   * MN_CLIENT_SESSION_RESULT_ codes above.
+   * MN_CLIENT_SESSION_RESULT_ codes above
    */
   int		(*handle_cb)	(MNClientSession	  *session,
 				 MNClientSessionResponse  *response,
@@ -121,7 +121,7 @@ typedef struct
    * Parses server input.
    *
    * Return value: must return an opaque data pointer on success, or
-   * %NULL on failure.
+   * %NULL on failure
    */
   MNClientSessionResponse *(*response_new) (MNClientSession         *session,
 					    const char              *input,
@@ -153,7 +153,7 @@ typedef struct
   void      (*post_read)	(MNClientSession          *session,
 				 MNClientSessionPrivate   *private);
 
-#ifdef WITH_SASL
+#if WITH_SASL
   /*
    * sasl_get_credentials (required if
    * mn_client_session_sasl_authentication_start() is needed, optional
@@ -161,11 +161,13 @@ typedef struct
    * @username: a pointer to store the username, or %NULL
    * @password: a pointer to store the password, or %NULL
    *
-   * Fills in the requested credentials. If a requested credential
-   * cannot be provided, it must be set to %NULL. In such case, the
-   * SASL authentication exchange will be aborted.
+   * Fills in the requested credentials.
+   *
+   * Return value: must return %TRUE in case of success, or %FALSE if
+   * a requested credential cannot be provided (in such case, the SASL
+   * authentication exchange will be aborted)
    */
-  void      (*sasl_get_credentials)	(MNClientSession	*session,
+  gboolean  (*sasl_get_credentials)	(MNClientSession	*session,
 					 MNClientSessionPrivate	*priv,
 					 const char		**username,
 					 const char		**password);
@@ -174,7 +176,7 @@ typedef struct
 
 gboolean mn_client_session_run (MNClientSessionState *states,
 				MNClientSessionCallbacks *callbacks,
-#ifdef WITH_SSL
+#if WITH_SSL
 				gboolean use_ssl,
 #endif
 				const char *hostname,
@@ -189,11 +191,11 @@ int mn_client_session_write (MNClientSession *session,
 			     const char *format,
 			     ...) G_GNUC_PRINTF(2, 3);
 
-#ifdef WITH_SSL
+#if WITH_SSL
 gboolean mn_client_session_enable_ssl (MNClientSession *session);
 #endif
 
-#ifdef WITH_SASL
+#if WITH_SASL
 gboolean mn_client_session_sasl_authentication_start (MNClientSession *session,
 						      const char *service,
 						      GSList *mechanisms,
@@ -215,10 +217,14 @@ void mn_client_session_notice (MNClientSession *session,
 void mn_client_session_warning (MNClientSession *session,
 				const char *format,
 				...);
-int mn_client_session_error (MNClientSession *session,
-			     int code,
-			     const char *format,
-			     ...) G_GNUC_PRINTF(3, 4);
+
+int mn_client_session_set_error (MNClientSession *session,
+				 int code,
+				 const char *format,
+				 ...) G_GNUC_PRINTF(3, 4);
+int mn_client_session_set_error_from_response (MNClientSession *session,
+					       int code,
+					       const char *response);
 
 GQuark mn_client_session_error_quark (void);
 
diff --git a/src/mn-compact-message-view-private.h b/src/mn-compact-message-view-private.h
@@ -0,0 +1,17 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_COMPACT_MESSAGE_VIEW_PRIVATE_H__
+#define __MN_COMPACT_MESSAGE_VIEW_PRIVATE_H__
+
+#include "mn-compact-message-view.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-compact-message-view.c b/src/mn-compact-message-view.c
@@ -0,0 +1,255 @@
+/* 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-compact-message-view.h"
+
+#include "mn-compact-message-view-private.h"
+
+#ifdef G_LIKELY
+#define ___GOB_LIKELY(expr) G_LIKELY(expr)
+#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
+#else /* ! G_LIKELY */
+#define ___GOB_LIKELY(expr) (expr)
+#define ___GOB_UNLIKELY(expr) (expr)
+#endif /* G_LIKELY */
+
+#line 25 "mn-compact-message-view.gob"
+
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-message-view-private.h"
+#include "mn-message.h"
+#include "mn-util.h"
+#include "mn-text-table.h"
+
+#line 35 "mn-compact-message-view.c"
+/* self casting macros */
+#define SELF(x) MN_COMPACT_MESSAGE_VIEW(x)
+#define SELF_CONST(x) MN_COMPACT_MESSAGE_VIEW_CONST(x)
+#define IS_SELF(x) MN_IS_COMPACT_MESSAGE_VIEW(x)
+#define TYPE_SELF MN_TYPE_COMPACT_MESSAGE_VIEW
+#define SELF_CLASS(x) MN_COMPACT_MESSAGE_VIEW_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_COMPACT_MESSAGE_VIEW_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNCompactMessageView Self;
+typedef MNCompactMessageViewClass SelfClass;
+
+/* here are local prototypes */
+static void mn_compact_message_view_init (MNCompactMessageView * o) G_GNUC_UNUSED;
+static void mn_compact_message_view_class_init (MNCompactMessageViewClass * c) G_GNUC_UNUSED;
+static void ___1_mn_compact_message_view_update (MNMessageView * view, GSList * messages) G_GNUC_UNUSED;
+static void mn_compact_message_view_append_message (MNCompactMessageView * self, time_t now, MNMessage * message) G_GNUC_UNUSED;
+static void mn_compact_message_view_append_header (MNCompactMessageView * self, const char * name) G_GNUC_UNUSED;
+static void mn_compact_message_view_append_cell (MNCompactMessageView * self, const char * text) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static MNMessageViewClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_append_message mn_compact_message_view_append_message
+#define self_append_header mn_compact_message_view_append_header
+#define self_append_cell mn_compact_message_view_append_cell
+#define self_new mn_compact_message_view_new
+GType
+mn_compact_message_view_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNCompactMessageViewClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_compact_message_view_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNCompactMessageView),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_compact_message_view_init,
+			NULL
+		};
+
+		type = g_type_register_static (MN_TYPE_MESSAGE_VIEW, "MNCompactMessageView", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNCompactMessageView *)g_object_new(mn_compact_message_view_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNCompactMessageView * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNCompactMessageView *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNCompactMessageView *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNCompactMessageView *)g_object_new_valist (mn_compact_message_view_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+static void 
+mn_compact_message_view_init (MNCompactMessageView * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Compact:Message:View::init"
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_compact_message_view_class_init (MNCompactMessageViewClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Compact:Message:View::class_init"
+	MNMessageViewClass *mn_message_view_class = (MNMessageViewClass *)c;
+
+	parent_class = g_type_class_ref (MN_TYPE_MESSAGE_VIEW);
+
+#line 36 "mn-compact-message-view.gob"
+	mn_message_view_class->update = ___1_mn_compact_message_view_update;
+#line 123 "mn-compact-message-view.c"
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 36 "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"
+#define PARENT_HANDLER(___view,___messages) \
+	{ if(MN_MESSAGE_VIEW_CLASS(parent_class)->update) \
+		(* MN_MESSAGE_VIEW_CLASS(parent_class)->update)(___view,___messages); }
+{
+#define __GOB_FUNCTION__ "MN:Compact:Message:View::update"
+{
+#line 38 "mn-compact-message-view.gob"
+	
+    Self *self = SELF(view);
+    time_t now;
+    GSList *l;
+
+    mn_text_table_clear(MN_TEXT_TABLE(view));
+
+    self_append_header(self, _("Mailbox"));
+    self_append_header(self, _("From"));
+    self_append_header(self, _("Subject"));
+    self_append_header(self, _("Sent"));
+    mn_text_table_line_break(MN_TEXT_TABLE(self));
+
+    now = mn_time();
+    MN_LIST_FOREACH(l, messages)
+      self_append_message(self, now, l->data);
+
+    PARENT_HANDLER(view, messages);
+  }}
+#line 159 "mn-compact-message-view.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 58 "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"
+	g_return_if_fail (self != NULL);
+#line 58 "mn-compact-message-view.gob"
+	g_return_if_fail (MN_IS_COMPACT_MESSAGE_VIEW (self));
+#line 58 "mn-compact-message-view.gob"
+	g_return_if_fail (message != NULL);
+#line 58 "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"
+	
+    self_append_cell(self, message->mailbox_name);
+    if (message->error)
+      self_append_cell(self, message->error);
+    else
+      {
+	self_append_cell(self, message->from);
+	self_append_cell(self, message->subject);
+
+	if (message->sent_time > 0)
+	  mn_message_view_append_past_time_cell(MN_MESSAGE_VIEW(self), message->sent_time, now);
+      }
+
+    mn_text_table_line_break(MN_TEXT_TABLE(self));
+  }}
+#line 195 "mn-compact-message-view.c"
+#undef __GOB_FUNCTION__
+
+#line 76 "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"
+	g_return_if_fail (self != NULL);
+#line 76 "mn-compact-message-view.gob"
+	g_return_if_fail (MN_IS_COMPACT_MESSAGE_VIEW (self));
+#line 76 "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"
+	
+    char *markup;
+
+    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", name);
+    mn_text_table_append_text_cell_from_markup(MN_TEXT_TABLE(self), markup);
+    g_free(markup);
+  }}
+#line 220 "mn-compact-message-view.c"
+#undef __GOB_FUNCTION__
+
+#line 86 "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"
+	g_return_if_fail (self != NULL);
+#line 86 "mn-compact-message-view.gob"
+	g_return_if_fail (MN_IS_COMPACT_MESSAGE_VIEW (self));
+#line 86 "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"
+	
+    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"
+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"
+	
+    return GTK_WIDGET(GET_NEW);
+  }}
+#line 255 "mn-compact-message-view.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-compact-message-view.gob b/src/mn-compact-message-view.gob
@@ -0,0 +1,97 @@
+/* 
+ * 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 "mn-message-view.h"
+%}
+
+%{
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-message-view-private.h"
+#include "mn-message.h"
+#include "mn-util.h"
+#include "mn-text-table.h"
+%}
+
+class MN:Compact:Message:View from MN:Message:View
+{
+  override (MN:Message:View) void
+    update (MNMessageView *view, GSList *messages)
+  {
+    Self *self = SELF(view);
+    time_t now;
+    GSList *l;
+
+    mn_text_table_clear(MN_TEXT_TABLE(view));
+
+    self_append_header(self, _("Mailbox"));
+    self_append_header(self, _("From"));
+    self_append_header(self, _("Subject"));
+    self_append_header(self, _("Sent"));
+    mn_text_table_line_break(MN_TEXT_TABLE(self));
+
+    now = mn_time();
+    MN_LIST_FOREACH(l, messages)
+      self_append_message(self, now, l->data);
+
+    PARENT_HANDLER(view, messages);
+  }
+
+  private void
+    append_message (self, time_t now, MN:Message *message (check null type))
+  {
+    self_append_cell(self, message->mailbox_name);
+    if (message->error)
+      self_append_cell(self, message->error);
+    else
+      {
+	self_append_cell(self, message->from);
+	self_append_cell(self, message->subject);
+
+	if (message->sent_time > 0)
+	  mn_message_view_append_past_time_cell(MN_MESSAGE_VIEW(self), message->sent_time, now);
+      }
+
+    mn_text_table_line_break(MN_TEXT_TABLE(self));
+  }
+
+  private void
+    append_header (self, const char *name (check null))
+  {
+    char *markup;
+
+    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", name);
+    mn_text_table_append_text_cell_from_markup(MN_TEXT_TABLE(self), markup);
+    g_free(markup);
+  }
+
+  private void
+    append_cell (self, const char *text (check null))
+  {
+    mn_text_table_append_text_cell(MN_TEXT_TABLE(self), text);
+  }
+
+  public GtkWidget *
+    new (void)
+  {
+    return GTK_WIDGET(GET_NEW);
+  }
+}
diff --git a/src/mn-compact-message-view.gob.stamp b/src/mn-compact-message-view.gob.stamp
diff --git a/src/mn-compact-message-view.h b/src/mn-compact-message-view.h
@@ -0,0 +1,58 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include "mn-message-view.h"
+
+#ifndef __MN_COMPACT_MESSAGE_VIEW_H__
+#define __MN_COMPACT_MESSAGE_VIEW_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_COMPACT_MESSAGE_VIEW	(mn_compact_message_view_get_type())
+#define MN_COMPACT_MESSAGE_VIEW(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_compact_message_view_get_type(), MNCompactMessageView)
+#define MN_COMPACT_MESSAGE_VIEW_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_compact_message_view_get_type(), MNCompactMessageView const)
+#define MN_COMPACT_MESSAGE_VIEW_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_compact_message_view_get_type(), MNCompactMessageViewClass)
+#define MN_IS_COMPACT_MESSAGE_VIEW(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_compact_message_view_get_type ())
+
+#define MN_COMPACT_MESSAGE_VIEW_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_compact_message_view_get_type(), MNCompactMessageViewClass)
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_COMPACT_MESSAGE_VIEW__
+#define __TYPEDEF_MN_COMPACT_MESSAGE_VIEW__
+typedef struct _MNCompactMessageView MNCompactMessageView;
+#endif
+struct _MNCompactMessageView {
+	MNMessageView __parent__;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNCompactMessageViewClass MNCompactMessageViewClass;
+struct _MNCompactMessageViewClass {
+	MNMessageViewClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_compact_message_view_get_type	(void);
+GtkWidget * 	mn_compact_message_view_new	(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-conf.c b/src/mn-conf.c
@@ -1,6 +1,5 @@
 /* 
- * Copyright (C) 1999 Free Software Foundation, Inc.
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -18,6 +17,7 @@
  */
 
 #include "config.h"
+#include <string.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <errno.h>
@@ -59,6 +59,12 @@
   MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/enabled"
 #define MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_COMMAND	\
   MN_CONF_OBSOLETE_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/command"
+#define MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_NAMESPACE \
+  MN_CONF_COMMANDS_NAMESPACE "/mail-reader"
+#define MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_ENABLED \
+  MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_NAMESPACE "/enabled"
+#define MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_COMMAND \
+  MN_CONF_OBSOLETE_COMMANDS_MAIL_READER_NAMESPACE "/command"
 #define MN_CONF_OBSOLETE_PREFERENCES_DIALOG \
   MN_CONF_UI_NAMESPACE "/preferences-dialog"
 #define MN_CONF_OBSOLETE_SUMMARY_DIALOG \
@@ -71,6 +77,32 @@
   MN_CONF_NAMESPACE "/double-click-action"
 #define MN_CONF_OBSOLETE_ALREADY_RUN \
   MN_CONF_NAMESPACE "/already-run"
+#define MN_CONF_OBSOLETE_SUMMARY_TOOLTIP \
+  MN_CONF_NAMESPACE "/summary-tooltip"
+#define MN_CONF_OBSOLETE_DELAY_NAMESPACE \
+  MN_CONF_NAMESPACE "/delay"
+#define MN_CONF_OBSOLETE_DELAY_MINUTES \
+  MN_CONF_OBSOLETE_DELAY_NAMESPACE "/minutes"
+#define MN_CONF_OBSOLETE_DELAY_SECONDS \
+  MN_CONF_OBSOLETE_DELAY_NAMESPACE "/seconds"
+#define MN_CONF_OBSOLETE_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE \
+  MN_CONF_UI_NAMESPACE "/immediate-notification-error-dialog"
+#define MN_CONF_OBSOLETE_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW \
+  MN_CONF_OBSOLETE_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE "/do-not-show"
+#define MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION_2 \
+  MN_CONF_NAMESPACE "/double-click-action-2"
+#define MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE \
+  MN_CONF_UI_NAMESPACE "/main-window"
+#define MN_CONF_OBSOLETE_MAIN_WINDOW_DIMENSIONS \
+  MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/dimensions"
+#define MN_CONF_OBSOLETE_MAIN_WINDOW_VIEW_TOOLBARS \
+  MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/view-toolbars"
+#define MN_CONF_OBSOLETE_MAIN_WINDOW_VIEW_STATUSBAR \
+  MN_CONF_OBSOLETE_MAIN_WINDOW_NAMESPACE "/view-statusbar"
+#define MN_CONF_OBSOLETE_MAIN_WINDOW_TOOLBARS_STYLE \
+  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 BLOCK(info) \
   g_signal_handler_block((info)->object, (info)->handler_id)
@@ -136,12 +168,17 @@ const char *mn_conf_dot_dir = NULL;
 
 /*** functions ***************************************************************/
 
-static void mn_conf_handle_obsolete_key (const char *obsolete, const char *new);
+static void mn_conf_import_obsolete_key (const char *obsolete, const char *new);
+static void mn_conf_import_obsolete_string (const char *obsolete,
+					    const char *new,
+					    ...);
 
 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,
@@ -204,19 +241,6 @@ static void mn_conf_link_object_notify_cb (GConfClient *client,
 					   GConfEntry *entry,
 					   gpointer user_data);
 
-static void mn_conf_startup_client_free (StartupClient *client);
-static void mn_conf_startup_clients_free (GSList *list);
-
-static int mn_conf_startup_client_compare (gconstpointer a, gconstpointer b);
-
-static GSList *mn_conf_startup_list_read (const char *name);
-static void mn_conf_startup_list_write (GSList *list, const char *name);
-
-static GSList *mn_conf_get_autostart_elem (GSList *list);
-
-static void mn_conf_notification_add_weak_notify_cb (gpointer data,
-						     GObject *former_object);
-
 /*** implementation **********************************************************/
 
 void
@@ -235,8 +259,6 @@ mn_conf_init (void)
     {
       if (mkdir(mn_conf_dot_dir, 0755) < 0)
 	mn_error_dialog(NULL,
-			NULL,
-			NULL,
 			_("A directory creation error has occurred"),
 			_("Unable to create directory \"%s\": %s."),
 			mn_conf_dot_dir,
@@ -249,9 +271,9 @@ mn_conf_init (void)
 
   /* import obsolete keys */
 
-  mn_conf_handle_obsolete_key(MN_CONF_OBSOLETE_PREFERENCES_DIALOG "/height",
+  mn_conf_import_obsolete_key(MN_CONF_OBSOLETE_PREFERENCES_DIALOG "/height",
 			      MN_CONF_PROPERTIES_DIALOG "/height");
-  mn_conf_handle_obsolete_key(MN_CONF_OBSOLETE_PREFERENCES_DIALOG "/width",
+  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)
@@ -266,17 +288,30 @@ mn_conf_init (void)
       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_handle_obsolete_key(MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION,
-			      MN_CONF_DOUBLE_CLICK_ACTION_2);
+  mn_conf_import_obsolete_string(MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION_2,
+				 MN_CONF_CLICK_ACTION,
+				 "display-main-window", "display-properties-dialog",
+				 NULL);
+  mn_conf_import_obsolete_string(MN_CONF_OBSOLETE_DOUBLE_CLICK_ACTION,
+				 MN_CONF_CLICK_ACTION,
+				 "display-mail-summary", "display-properties-dialog",
+				 NULL);
+
+  if (! mn_conf_is_set(MN_CONF_TOOLTIP_MAIL_SUMMARY)
+      && mn_conf_is_set(MN_CONF_OBSOLETE_SUMMARY_TOOLTIP))
+    {
+      if (! eel_gconf_get_boolean(MN_CONF_OBSOLETE_SUMMARY_TOOLTIP))
+	eel_gconf_set_string(MN_CONF_TOOLTIP_MAIL_SUMMARY, "none");
+    }
 }
 
 static void
-mn_conf_handle_obsolete_key (const char *obsolete, const char *new)
+mn_conf_import_obsolete_key (const char *obsolete, const char *new)
 {
   g_return_if_fail(obsolete != NULL);
   g_return_if_fail(new != NULL);
@@ -294,6 +329,50 @@ mn_conf_handle_obsolete_key (const char *obsolete, const char *new)
     }
 }
 
+static void
+mn_conf_import_obsolete_string (const char *obsolete,
+				const char *new,
+				...)
+{
+  char *str;
+
+  g_return_if_fail(obsolete != NULL);
+  g_return_if_fail(new != NULL);
+
+  if (! mn_conf_is_set(new))
+    {
+      str = eel_gconf_get_string(obsolete);
+      if (str)
+	{
+	  va_list args;
+	  const char *old_value;
+	  gboolean set = FALSE;
+
+	  va_start(args, new);
+	  while ((old_value = va_arg(args, const char *)))
+	    {
+	      const char *new_value;
+
+	      new_value = va_arg(args, const char *);
+	      g_return_if_fail(new_value != NULL);
+
+	      if (! strcmp(str, old_value))
+		{
+		  eel_gconf_set_string(new, new_value);
+		  set = TRUE;
+		  break;
+		}
+	    }
+	  va_end(args);
+
+	  if (! set)
+	    eel_gconf_set_string(new, str);
+
+	  g_free(str);
+	}
+    }
+}
+
 void
 mn_conf_unset_obsolete (void)
 {
@@ -302,16 +381,22 @@ mn_conf_unset_obsolete (void)
     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,
-    MN_CONF_OBSOLETE_ALREADY_RUN
+    MN_CONF_OBSOLETE_ALREADY_RUN,
+    MN_CONF_OBSOLETE_SUMMARY_TOOLTIP,
+    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
   };
   int i;
-      
+
   for (i = 0; i < G_N_ELEMENTS(obsolete); i++)
     {
       g_message(_("recursively unsetting %s"), obsolete[i]);
@@ -320,7 +405,7 @@ mn_conf_unset_obsolete (void)
 
   g_message(_("syncing the GConf database"));
   eel_gconf_suggest_sync();
-  
+
   g_message(_("completed"));
 }
 
@@ -373,7 +458,7 @@ mn_conf_set_value (const char *key, const GConfValue *value)
 
   g_return_if_fail(key != NULL);
   g_return_if_fail(value != NULL);
-  
+
   client = eel_gconf_client_get_global();
   g_assert(client != NULL);
 
@@ -403,7 +488,7 @@ mn_conf_link (gpointer object, ...)
       if (GTK_IS_WINDOW(object))
 	{
 	  LinkWindowInfo *window_info;
-	  
+
 	  window_info = g_new0(LinkWindowInfo, 1);
 	  window_info->width_key = g_strdup_printf("%s/width", key);
 	  window_info->height_key = g_strdup_printf("%s/height", key);
@@ -445,7 +530,7 @@ mn_conf_link (gpointer object, ...)
       else if (GTK_IS_TOGGLE_ACTION(object))
 	{
 	  gtk_toggle_action_set_active(object, eel_gconf_get_boolean(key));
-	  
+
 	  signal_name = g_strdup("toggled");
 	  signal_handler = G_CALLBACK(mn_conf_link_toggle_action_h);
 	  notification_cb = mn_conf_link_toggle_action_notify_cb;
@@ -493,7 +578,7 @@ mn_conf_link (gpointer object, ...)
       g_free(info->key);
       info->key = g_strdup(key);
       info->handler_id = g_signal_connect(object, signal_name, signal_handler, info);
-      mn_conf_notification_add(object, key, notification_cb, info);
+      mn_g_object_gconf_notification_add_gdk_locked(object, key, notification_cb, info);
       g_object_weak_ref(object, mn_conf_link_weak_notify_cb, info);
 
       g_free(free_me);
@@ -534,7 +619,7 @@ mn_conf_link_combo_box_to_string (GtkComboBox *combo,
     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_conf_notification_add(combo, key, mn_conf_link_combo_box_to_string_notify_cb, 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);
 }
 
@@ -542,38 +627,59 @@ static void
 mn_conf_link_combo_box_to_string_set (LinkComboBoxToStringInfo *info,
 				      const GConfValue *value)
 {
-  const char *str;
-
   g_return_if_fail(info != NULL);
 
-  str = value ? gconf_value_get_string(value) : NULL;
-  if (str)
+  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);
 
-      while (valid)
+      if (found)
 	{
-	  char *this_str;
-	  gboolean found;
-	  
-	  gtk_tree_model_get(model, &iter, info->string_column, &this_str, -1);
-	  found = this_str && ! strcmp(this_str, str);
-	  g_free(this_str);
-	  
-	  if (found)
-	    {
-	      gtk_combo_box_set_active_iter(LINK_INFO(info)->object, &iter);
-	      break;
-	    }
-	  
-	  valid = gtk_tree_model_iter_next(model, &iter);
+	  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
@@ -602,11 +708,9 @@ mn_conf_link_combo_box_to_string_notify_cb (GConfClient *client,
 {
   LinkComboBoxToStringInfo *info = user_data;
 
-  GDK_THREADS_ENTER();
   BLOCK(LINK_INFO(info));
   mn_conf_link_combo_box_to_string_set(info, gconf_entry_get_value(entry));
   UNBLOCK(LINK_INFO(info));
-  GDK_THREADS_LEAVE();
 }
 
 void
@@ -662,7 +766,7 @@ mn_conf_link_radio_button_to_string (GtkRadioButton *radio,
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(radio), TRUE);
       g_free(current_str);
     }
-  
+
   info = g_new0(LinkRadioButtonToStringInfo, 1);
   info->str = g_strdup(str);
   LINK_INFO(info)->object = radio;
@@ -670,7 +774,7 @@ mn_conf_link_radio_button_to_string (GtkRadioButton *radio,
   LINK_INFO(info)->finalize = (GDestroyNotify) mn_conf_link_radio_button_to_string_free_info;
 
   LINK_INFO(info)->handler_id = g_signal_connect(radio, "toggled", G_CALLBACK(mn_conf_link_radio_button_to_string_h), info);
-  mn_conf_notification_add(radio, key, mn_conf_link_radio_button_to_string_notify_cb, info);
+  mn_g_object_gconf_notification_add_gdk_locked(radio, key, mn_conf_link_radio_button_to_string_notify_cb, info);
   g_object_weak_ref(G_OBJECT(radio), mn_conf_link_weak_notify_cb, info);
 }
 
@@ -698,11 +802,9 @@ mn_conf_link_radio_button_to_string_notify_cb (GConfClient *client,
 
   if (str && ! strcmp(str, info->str))
     {
-      GDK_THREADS_ENTER();
       BLOCK(LINK_INFO(info));
       gtk_toggle_button_set_active(LINK_INFO(info)->object, TRUE);
       UNBLOCK(LINK_INFO(info));
-      GDK_THREADS_LEAVE();
     }
 }
 
@@ -733,13 +835,11 @@ mn_conf_link_window_notify_cb (GConfClient *client,
 {
   LinkWindowInfo *info = user_data;
 
-  GDK_THREADS_ENTER();
   BLOCK(LINK_INFO(info));
   gtk_window_resize(LINK_INFO(info)->object,
 		    eel_gconf_get_integer(info->width_key),
 		    eel_gconf_get_integer(info->height_key));
   UNBLOCK(LINK_INFO(info));
-  GDK_THREADS_LEAVE();
 }
 
 static void
@@ -795,7 +895,7 @@ mn_conf_link_radio_action_h (GtkRadioAction *action,
   g_object_get(current, "value", &current_value, NULL);
 
   enum_value = g_enum_get_value(info->enum_class, current_value);
-  g_return_if_fail(enum_value != NULL);
+  g_assert(enum_value != NULL);
 
   eel_gconf_set_string(LINK_INFO(info)->key, enum_value->value_nick);
 }
@@ -808,11 +908,9 @@ mn_conf_link_radio_action_notify_cb (GConfClient *client,
 {
   LinkRadioActionInfo *info = user_data;
 
-  GDK_THREADS_ENTER();
   BLOCK(LINK_INFO(info));
   mn_conf_link_radio_action_set(info, gconf_entry_get_value(entry));
   UNBLOCK(LINK_INFO(info));
-  GDK_THREADS_LEAVE();
 }
 
 static void
@@ -838,12 +936,10 @@ mn_conf_link_toggle_action_notify_cb (GConfClient *client,
 {
   LinkInfo *info = user_data;
   GConfValue *value = gconf_entry_get_value(entry);
-  
-  GDK_THREADS_ENTER();
+
   BLOCK(info);
   gtk_toggle_action_set_active(info->object, value ? gconf_value_get_bool(value) : FALSE);
   UNBLOCK(info);
-  GDK_THREADS_LEAVE();
 }
 
 static void
@@ -863,11 +959,9 @@ mn_conf_link_spin_button_notify_cb (GConfClient *client,
   GConfValue *value = gconf_entry_get_value(entry);
   LinkInfo *info = user_data;
 
-  GDK_THREADS_ENTER();
   BLOCK(info);
   gtk_spin_button_set_value(info->object, value ? gconf_value_get_int(value) : 0);
   UNBLOCK(info);
-  GDK_THREADS_LEAVE();
 }
 
 static void
@@ -881,7 +975,7 @@ mn_conf_link_object_set (LinkObjectInfo *info, const GConfValue *value)
     return;
 
   g_value_init(&gvalue, G_PARAM_SPEC_VALUE_TYPE(info->pspec));
-  
+
   if (G_PARAM_SPEC_VALUE_TYPE(info->pspec) == G_TYPE_BOOLEAN)
     g_value_set_boolean(&gvalue, gconf_value_get_bool(value));
   else if (G_PARAM_SPEC_VALUE_TYPE(info->pspec) == G_TYPE_STRING)
@@ -923,199 +1017,9 @@ mn_conf_link_object_notify_cb (GConfClient *client,
 {
   LinkObjectInfo *info = user_data;
 
-  GDK_THREADS_ENTER();
   BLOCK(LINK_INFO(info));
   mn_conf_link_object_set(info, gconf_entry_get_value(entry));
   UNBLOCK(LINK_INFO(info));
-  GDK_THREADS_LEAVE();
-}
-
-/*
- * The mn_conf_startup_* functions are based on code taken from
- * startup-programs.c in gnome-session, written by Owen Taylor.
- */
-
-static void
-mn_conf_startup_client_free (StartupClient *client)
-{
-  int i;
-
-  g_return_if_fail(client != NULL);
-
-  for (i = 0; i < client->argc; i++)
-    g_free(client->argv[i]);
-
-  g_free(client->argv);
-  g_free(client);
-}
-
-static void
-mn_conf_startup_clients_free (GSList *list)
-{
-  eel_g_slist_free_deep_custom(list, (GFunc) mn_conf_startup_client_free, NULL);
-}
-
-static int
-mn_conf_startup_client_compare (gconstpointer a, gconstpointer b)
-{
-  const StartupClient *client_a = a;
-  const StartupClient *client_b = b;
-
-  return client_a->order - client_b->order;
-}
-
-static GSList *
-mn_conf_startup_list_read (const char *name)
-{
-  GSList *list = NULL;
-  gpointer iterator;
-  char *p;
-  StartupClient *client = NULL;
-  char *handle = NULL;
-
-  g_return_val_if_fail(name != NULL, NULL);
-  
-  gnome_config_push_prefix(SESSION_MANUAL_CONFIG_PREFIX);
-
-  iterator = gnome_config_init_iterator(name);
-  while (iterator)
-    {
-      char *key;
-      char *value;
-
-      iterator = gnome_config_iterator_next(iterator, &key, &value);
-      if (! iterator)
-	break;
-
-      p = strchr(key, ',');
-      if (p)
-	{
-	  *p = 0;
-
-	  if (! client || strcmp(handle, key))
-	    {
-	      g_free(handle);
-	      handle = g_strdup(key);
-
-	      client = g_new0(StartupClient, 1);
-	      list = g_slist_append(list, client);
-	    }
-
-	  if (! strcmp(p + 1, "Priority"))
-	    client->order = atoi(value);
-	  else if (! strcmp(p + 1, "RestartCommand"))
-	    gnome_config_make_vector(value, &client->argc, &client->argv);
-	}
-
-      g_free(key);
-      g_free(value);
-    }
-
-  g_free(handle);
-  gnome_config_pop_prefix();
-
-  return g_slist_sort(list, mn_conf_startup_client_compare);
-}
-
-static void
-mn_conf_startup_list_write (GSList *list, const char *name)
-{
-  char *prefix;
-  int i = 0;
-  GSList *l;
-
-  g_return_if_fail(name != NULL);
-
-  gnome_config_push_prefix(SESSION_MANUAL_CONFIG_PREFIX);
-  gnome_config_clean_section(name);
-  gnome_config_pop_prefix();
-
-  prefix = g_strconcat(SESSION_MANUAL_CONFIG_PREFIX, name, "/", NULL);
-  gnome_config_push_prefix(prefix);
-  g_free(prefix);
-  
-  gnome_config_set_int("num_clients", g_slist_length(list));
-
-  MN_LIST_FOREACH(l, list)
-    {
-      StartupClient *client = l->data;
-      char *key;
-
-      key = g_strdup_printf("%d,%s", i, "RestartStyleHint");
-      gnome_config_set_int(key, 3); /* RestartNever */
-      g_free(key);
-
-      key = g_strdup_printf("%d,%s", i, "Priority");
-      gnome_config_set_int(key, client->order);
-      g_free(key);
-
-      key = g_strdup_printf("%d,%s", i, "RestartCommand");
-      gnome_config_set_vector(key, client->argc, (const char * const *) client->argv);
-      g_free(key);
-
-      i++;
-    }
-  
-  gnome_config_pop_prefix();
-  gnome_config_sync();
-}
-
-static GSList *
-mn_conf_get_autostart_elem (GSList *list)
-{
-  GSList *l;
-
-  MN_LIST_FOREACH(l, list)
-    {
-      StartupClient *client = l->data;
-
-      if (client->argc > 0 && ! strcmp(client->argv[0], "mail-notification"))
-	return l;
-    }
-
-  return NULL;
-}
-
-gboolean
-mn_conf_get_autostart (void)
-{
-  GSList *clients;
-  gboolean autostart;
-
-  clients = mn_conf_startup_list_read(SESSION_MANUAL_NAME);
-  autostart = mn_conf_get_autostart_elem(clients) != NULL;
-  mn_conf_startup_clients_free(clients);
-
-  return autostart;
-}
-
-void
-mn_conf_set_autostart (gboolean autostart)
-{
-  GSList *clients;
-  GSList *elem;
-
-  clients = mn_conf_startup_list_read(SESSION_MANUAL_NAME);
-  elem = mn_conf_get_autostart_elem(clients);
-  if ((elem != NULL) != autostart)
-    {
-      if (autostart)
-	{
-	  StartupClient *client;
-
-	  client = g_new0(StartupClient, 1);
-	  client->order = 50;
-	  gnome_config_make_vector("mail-notification", &client->argc, &client->argv);
-
-	  clients = g_slist_append(clients, client);
-	  clients = g_slist_sort(clients, mn_conf_startup_client_compare);
-	}
-      else
-	clients = mn_g_slist_delete_link_deep_custom(clients, elem, (GFunc) mn_conf_startup_client_free, NULL);
-
-      mn_conf_startup_list_write(clients, SESSION_MANUAL_NAME);
-    }
-  mn_conf_startup_clients_free(clients);
 }
 
 int
@@ -1142,51 +1046,34 @@ mn_conf_get_enum_value (GType enum_type, const char *key)
   return enum_value ? enum_value->value : 0;
 }
 
-void
-mn_conf_notification_add (gpointer object,
-			  const char *key,
-			  GConfClientNotifyFunc callback,
-			  gpointer user_data)
+unsigned int
+mn_conf_notification_add_full (const char *key,
+			       GConfClientNotifyFunc callback,
+			       gpointer user_data,
+			       GFreeFunc destroy_notify)
 {
+  GConfClient *client;
   unsigned int notification_id;
+  GError *err = NULL;
 
-  g_return_if_fail(G_IS_OBJECT(object));
-  g_return_if_fail(key != NULL);
-  g_return_if_fail(callback != NULL);
-
-  notification_id = eel_gconf_notification_add(key, callback, user_data);
-  g_object_weak_ref(G_OBJECT(object), mn_conf_notification_add_weak_notify_cb, GUINT_TO_POINTER(notification_id));
-}
-
-static void
-mn_conf_notification_add_weak_notify_cb (gpointer data, GObject *former_object)
-{
-  unsigned int notification_id = GPOINTER_TO_UINT(data);
-  eel_gconf_notification_remove(notification_id);
-}
+  g_return_val_if_fail(key != NULL, 0);
+  g_return_val_if_fail(callback != NULL, 0);
 
-void
-mn_conf_notifications_add (gpointer object, ...)
-{
-  va_list args;
-  const char *key;
+  client = eel_gconf_client_get_global();
+  g_return_val_if_fail(client != NULL, 0);
 
-  g_return_if_fail(G_IS_OBJECT(object));
+  notification_id = gconf_client_notify_add(client, key, callback, user_data, destroy_notify, &err);
 
-  va_start(args, object);
-  while ((key = va_arg(args, const char *)))
+  if (eel_gconf_handle_error(&err))
     {
-      GConfClientNotifyFunc callback;
-      gpointer user_data;
-
-      callback = va_arg(args, GConfClientNotifyFunc);
-      g_return_if_fail(callback != NULL);
-
-      user_data = va_arg(args, gpointer);
-
-      mn_conf_notification_add(object, key, callback, user_data);
+      if (notification_id)
+	{
+	  gconf_client_notify_remove(client, notification_id);
+	  notification_id = 0;
+	}
     }
-  va_end(args);
+
+  return notification_id;
 }
 
 gboolean
@@ -1218,3 +1105,58 @@ mn_conf_has_command (const char *namespace)
 
   return has;
 }
+
+void
+mn_conf_execute_command (const char *conf_key, gboolean strip_format)
+{
+  char *command;
+
+  g_return_if_fail(conf_key != NULL);
+
+  command = eel_gconf_get_string(conf_key);
+  g_return_if_fail(command != NULL && *command != 0);
+
+  if (strip_format)
+    {
+      GString *stripped;
+      char *start;
+      char *p;
+
+      stripped = g_string_new(NULL);
+
+      for (start = command; (p = strstr(start, "%s")); start = p + 2)
+	g_string_append_len(stripped, start, p - start);
+      g_string_append(stripped, start);
+
+      g_free(command);
+      command = g_string_free(stripped, FALSE);
+    }
+
+  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));
+  g_free(command);
+}
+
+MNLockedGSource *
+mn_conf_timeout_add_gdk_locked (const char *minutes_key,
+				const char *seconds_key,
+				GSourceFunc function,
+				gpointer data)
+{
+  int minutes;
+  int seconds;
+
+  g_return_val_if_fail(minutes_key != NULL, 0);
+  g_return_val_if_fail(seconds_key != NULL, 0);
+
+  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;
+}
diff --git a/src/mn-conf.h b/src/mn-conf.h
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -22,15 +22,11 @@
 #include <stdarg.h>
 #include <gtk/gtk.h>
 #include <eel/eel.h>
+#include "mn-util.h"
+#include "mn-locked-callback.h"
 
 #define MN_CONF_NAMESPACE \
   "/apps/mail-notification"
-#define MN_CONF_DELAY_NAMESPACE \
-  MN_CONF_NAMESPACE "/delay"
-#define MN_CONF_DELAY_MINUTES \
-  MN_CONF_DELAY_NAMESPACE "/minutes"
-#define MN_CONF_DELAY_SECONDS \
-  MN_CONF_DELAY_NAMESPACE "/seconds"
 #define MN_CONF_COMMANDS_NAMESPACE \
   MN_CONF_NAMESPACE "/commands"
 #define MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE \
@@ -45,32 +41,10 @@
   MN_CONF_COMMANDS_MAIL_READ_NAMESPACE "/enabled"
 #define MN_CONF_COMMANDS_MAIL_READ_COMMAND \
   MN_CONF_COMMANDS_MAIL_READ_NAMESPACE "/command"
-#define MN_CONF_COMMANDS_MAIL_READER_NAMESPACE \
-  MN_CONF_COMMANDS_NAMESPACE "/mail-reader"
-#define MN_CONF_COMMANDS_MAIL_READER_ENABLED \
-  MN_CONF_COMMANDS_MAIL_READER_NAMESPACE "/enabled"
-#define MN_CONF_COMMANDS_MAIL_READER_COMMAND \
-  MN_CONF_COMMANDS_MAIL_READER_NAMESPACE "/command"
 #define MN_CONF_UI_NAMESPACE \
   MN_CONF_NAMESPACE "/ui"
 #define MN_CONF_PROPERTIES_DIALOG \
   MN_CONF_UI_NAMESPACE "/properties-dialog"
-#define MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE \
-  MN_CONF_UI_NAMESPACE "/immediate-notification-error-dialog"
-#define MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW \
-  MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE "/do-not-show"
-#define MN_CONF_MAIN_WINDOW_NAMESPACE \
-  MN_CONF_UI_NAMESPACE "/main-window"
-#define MN_CONF_MAIN_WINDOW_DIMENSIONS \
-  MN_CONF_MAIN_WINDOW_NAMESPACE "/dimensions"
-#define MN_CONF_MAIN_WINDOW_VIEW_TOOLBARS \
-  MN_CONF_MAIN_WINDOW_NAMESPACE "/view-toolbars"
-#define MN_CONF_MAIN_WINDOW_VIEW_STATUSBAR \
-  MN_CONF_MAIN_WINDOW_NAMESPACE "/view-statusbar"
-#define MN_CONF_MAIN_WINDOW_TOOLBARS_STYLE \
-  MN_CONF_MAIN_WINDOW_NAMESPACE "/toolbars-style"
-#define MN_CONF_MAIN_WINDOW_EDIT_TOOLBARS_DIALOG \
-  MN_CONF_MAIN_WINDOW_NAMESPACE "/edit-toolbars-dialog"
 #define MN_CONF_BLINK_ON_ERRORS \
   MN_CONF_NAMESPACE "/blink-on-errors"
 #define MN_CONF_TRUSTED_X509_CERTIFICATES \
@@ -89,6 +63,8 @@
   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 \
@@ -111,15 +87,25 @@
   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_DOUBLE_CLICK_ACTION_2 \
-  MN_CONF_NAMESPACE "/double-click-action-2"
-#define MN_CONF_SUMMARY_TOOLTIP \
-  MN_CONF_NAMESPACE "/summary-tooltip"
+#define MN_CONF_DISPLAY_SEEN_MAIL \
+  MN_CONF_NAMESPACE "/display-seen-mail"
+#define MN_CONF_TOOLTIP_MAIL_SUMMARY \
+  MN_CONF_NAMESPACE "/tooltip-mail-summary"
+#define MN_CONF_ALWAYS_DISPLAY_ICON \
+  MN_CONF_NAMESPACE "/always-display-icon"
+#define MN_CONF_CLICK_ACTION \
+  MN_CONF_NAMESPACE "/click-action"
 
 /* obsolete keys */
 #define MN_CONF_OBSOLETE_MAILBOXES \
   MN_CONF_NAMESPACE "/mailboxes"
 
+/* foreign keys */
+#define MN_CONF_GNOME_MAIL_READER_NAMESPACE \
+  "/desktop/gnome/url-handlers/mailto"
+#define MN_CONF_GNOME_MAIL_READER_COMMAND \
+  MN_CONF_GNOME_MAIL_READER_NAMESPACE "/command"
+
 extern const char *mn_conf_dot_dir;
 
 void		mn_conf_init		(void);
@@ -142,19 +128,21 @@ void		mn_conf_link_radio_group_to_enum (GType		enum_type,
 						  const char	*key,
 						  ...);
 
-gboolean	mn_conf_get_autostart	(void);
-void		mn_conf_set_autostart	(gboolean	autostart);
-
 int		mn_conf_get_enum_value	(GType		enum_type,
 					 const char	*key);
 
-void		mn_conf_notification_add (gpointer		object,
-					  const char		*key,
-					  GConfClientNotifyFunc	callback,
-					  gpointer		user_data);
-void		mn_conf_notifications_add (gpointer		object,
-					   ...);
+unsigned int	mn_conf_notification_add_full	(const char		*key,
+						 GConfClientNotifyFunc	callback,
+						 gpointer		user_data,
+						 GFreeFunc		destroy_notify);
+
+gboolean	mn_conf_has_command		(const char	*namespace);
+void		mn_conf_execute_command		(const char	*conf_key,
+						 gboolean	strip_format);
 
-gboolean	mn_conf_has_command	(const char	*namespace);
+MNLockedGSource *mn_conf_timeout_add_gdk_locked	(const char	*minutes_key,
+						 const char	*seconds_key,
+						 GSourceFunc	function,
+						 gpointer	data);
 
 #endif /* _MN_CONF_H */
diff --git a/src/mn-corba-object-private.h b/src/mn-corba-object-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_CORBA_OBJECT_PRIVATE_H__
 #define __MN_CORBA_OBJECT_PRIVATE_H__
@@ -9,14 +9,20 @@
 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 31 "mn-corba-object.gob"
+#line 35 "mn-corba-object.gob"
 	CORBA_Object object;
-#line 52 "mn-corba-object.gob"
+#line 56 "mn-corba-object.gob"
 	char * iid;
-#line 55 "mn-corba-object.gob"
-	unsigned int monitor_id;
-#line 20 "mn-corba-object-private.h"
+#line 59 "mn-corba-object.gob"
+	MNLockedGSource * monitor_source;
+#line 26 "mn-corba-object-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-corba-object.c b/src/mn-corba-object.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,11 +22,11 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-corba-object.gob"
+#line 29 "mn-corba-object.gob"
 
 #include <gtk/gtk.h>
 
-#line 31 "mn-corba-object.c"
+#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)
@@ -113,21 +112,21 @@ ___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 76 "mn-corba-object.gob"
+#line 83 "mn-corba-object.gob"
 	___4_mn_corba_object_finalize(obj_self);
-#line 119 "mn-corba-object.c"
+#line 118 "mn-corba-object.c"
 #define object (self->_priv->object)
 #define VAR object
 	{
-#line 32 "mn-corba-object.gob"
-	 if (VAR) CORBA_Object_release(VAR, NULL); }
-#line 125 "mn-corba-object.c"
+#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 52 "mn-corba-object.gob"
+#line 56 "mn-corba-object.gob"
 	if(self->_priv->iid) { g_free ((gpointer) self->_priv->iid); self->_priv->iid = NULL; }
-#line 131 "mn-corba-object.c"
+#line 130 "mn-corba-object.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -136,9 +135,9 @@ 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 25 "mn-corba-object.gob"
+#line 29 "mn-corba-object.gob"
 	o->_priv->object = CORBA_OBJECT_NIL;
-#line 142 "mn-corba-object.c"
+#line 141 "mn-corba-object.c"
 }
 #undef __GOB_FUNCTION__
 static void 
@@ -151,11 +150,11 @@ mn_corba_object_class_init (MNCORBAObjectClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 57 "mn-corba-object.gob"
+#line 61 "mn-corba-object.gob"
 	g_object_class->constructor = ___3_mn_corba_object_constructor;
-#line 76 "mn-corba-object.gob"
+#line 83 "mn-corba-object.gob"
 	g_object_class->finalize = ___finalize;
-#line 159 "mn-corba-object.c"
+#line 158 "mn-corba-object.c"
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
     {
@@ -196,7 +195,7 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_OBJECT:
 		{
-#line 35 "mn-corba-object.gob"
+#line 39 "mn-corba-object.gob"
 
       if (selfp->object != CORBA_OBJECT_NIL)
 	CORBA_Object_release(selfp->object, NULL);
@@ -206,14 +205,14 @@ ___object_set_property (GObject *object,
       if (selfp->object != CORBA_OBJECT_NIL)
 	CORBA_Object_duplicate(selfp->object, NULL);
     
-#line 210 "mn-corba-object.c"
+#line 209 "mn-corba-object.c"
 		}
 		break;
 	case PROP_IID:
 		{
-#line 53 "mn-corba-object.gob"
+#line 57 "mn-corba-object.gob"
 { char *old = self->_priv->iid; self->_priv->iid = g_value_dup_string (VAL); g_free (old); }
-#line 217 "mn-corba-object.c"
+#line 216 "mn-corba-object.c"
 		}
 		break;
 	default:
@@ -242,21 +241,21 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_OBJECT:
 		{
-#line 45 "mn-corba-object.gob"
+#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 253 "mn-corba-object.c"
+#line 252 "mn-corba-object.c"
 		}
 		break;
 	case PROP_IID:
 		{
-#line 53 "mn-corba-object.gob"
+#line 57 "mn-corba-object.gob"
 g_value_set_string (VAL, self->_priv->iid);
-#line 260 "mn-corba-object.c"
+#line 259 "mn-corba-object.c"
 		}
 		break;
 	default:
@@ -273,36 +272,36 @@ g_value_set_string (VAL, self->_priv->iid);
 
 
 
-#line 45 "mn-corba-object.gob"
+#line 49 "mn-corba-object.gob"
 CORBA_Object 
 mn_corba_object_get_object (MNCORBAObject * self)
-#line 280 "mn-corba-object.c"
+#line 279 "mn-corba-object.c"
 {
 #define __GOB_FUNCTION__ "MN:CORBA:Object::get_object"
 {
-#line 33 "mn-corba-object.gob"
+#line 37 "mn-corba-object.gob"
 		CORBA_Object val; g_object_get (G_OBJECT (self), "object", &val, NULL); return val;
 }}
-#line 287 "mn-corba-object.c"
+#line 286 "mn-corba-object.c"
 #undef __GOB_FUNCTION__
 
-#line 35 "mn-corba-object.gob"
+#line 39 "mn-corba-object.gob"
 void 
 mn_corba_object_set_object (MNCORBAObject * self, CORBA_Object val)
-#line 293 "mn-corba-object.c"
+#line 292 "mn-corba-object.c"
 {
 #define __GOB_FUNCTION__ "MN:CORBA:Object::set_object"
 {
-#line 33 "mn-corba-object.gob"
+#line 37 "mn-corba-object.gob"
 		g_object_set (G_OBJECT (self), "object", val, NULL);
 }}
-#line 300 "mn-corba-object.c"
+#line 299 "mn-corba-object.c"
 #undef __GOB_FUNCTION__
 
-#line 57 "mn-corba-object.gob"
+#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 306 "mn-corba-object.c"
+#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): \
@@ -310,7 +309,7 @@ ___3_mn_corba_object_constructor (GType type G_GNUC_UNUSED, unsigned int n_const
 {
 #define __GOB_FUNCTION__ "MN:CORBA:Object::constructor"
 {
-#line 59 "mn-corba-object.gob"
+#line 63 "mn-corba-object.gob"
 	
     GObject *object;
     Self *self;
@@ -321,57 +320,56 @@ ___3_mn_corba_object_constructor (GType type G_GNUC_UNUSED, unsigned int n_const
 
     corba_object = bonobo_activation_activate_from_id(selfp->iid, 0, NULL, NULL);
     if (corba_object != CORBA_OBJECT_NIL)
-      self_set_object(self, corba_object);
+      {
+	self_set_object(self, corba_object);
+	CORBA_Object_release(corba_object, NULL);
+      }
 
-    selfp->monitor_id = g_timeout_add(1000, self_monitor_cb, self);
+    selfp->monitor_source = mn_g_timeout_add_gdk_locked(1000, self_monitor_cb, self);
 
     return object;
   }}
-#line 331 "mn-corba-object.c"
+#line 333 "mn-corba-object.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 76 "mn-corba-object.gob"
+#line 83 "mn-corba-object.gob"
 static void 
 ___4_mn_corba_object_finalize (GObject * object G_GNUC_UNUSED)
-#line 338 "mn-corba-object.c"
+#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 78 "mn-corba-object.gob"
+#line 85 "mn-corba-object.gob"
 	
     Self *self = SELF(object);
 
-    g_source_remove(selfp->monitor_id);
+    mn_locked_g_source_remove(selfp->monitor_source);
 
     PARENT_HANDLER(object);
   }}
-#line 353 "mn-corba-object.c"
+#line 355 "mn-corba-object.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 86 "mn-corba-object.gob"
+#line 93 "mn-corba-object.gob"
 static gboolean 
 mn_corba_object_monitor_cb (gpointer data)
-#line 360 "mn-corba-object.c"
+#line 362 "mn-corba-object.c"
 {
 #define __GOB_FUNCTION__ "MN:CORBA:Object::monitor_cb"
 {
-#line 88 "mn-corba-object.gob"
+#line 95 "mn-corba-object.gob"
 	
     Self *self = data;
 
     if (selfp->object != CORBA_OBJECT_NIL)
       {
 	if (! bonobo_unknown_ping(selfp->object, NULL))
-	  {
-	    GDK_THREADS_ENTER();
-	    self_set_object(self, CORBA_OBJECT_NIL);
-	    GDK_THREADS_LEAVE();
-	  }
+	  self_set_object(self, CORBA_OBJECT_NIL);
       }
     else
       {
@@ -380,27 +378,26 @@ mn_corba_object_monitor_cb (gpointer data)
 	object = bonobo_activation_activate_from_id(selfp->iid, 0, NULL, NULL);
 	if (object != CORBA_OBJECT_NIL)
 	  {
-	    GDK_THREADS_ENTER();
 	    self_set_object(self, object);
-	    GDK_THREADS_LEAVE();
+	    CORBA_Object_release(object, NULL);
 	  }
       }
 
     return TRUE;		/* keep source */
   }}
-#line 392 "mn-corba-object.c"
+#line 389 "mn-corba-object.c"
 #undef __GOB_FUNCTION__
 
-#line 116 "mn-corba-object.gob"
+#line 118 "mn-corba-object.gob"
 MNCORBAObject * 
 mn_corba_object_new (const char * iid)
-#line 398 "mn-corba-object.c"
+#line 395 "mn-corba-object.c"
 {
 #define __GOB_FUNCTION__ "MN:CORBA:Object::new"
 {
-#line 118 "mn-corba-object.gob"
+#line 120 "mn-corba-object.gob"
 	
     return GET_NEW_VARG(MN_CORBA_OBJECT_PROP_IID((char *) iid), NULL);
   }}
-#line 406 "mn-corba-object.c"
+#line 403 "mn-corba-object.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-corba-object.gob b/src/mn-corba-object.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,12 +16,16 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <libbonobo.h>
 %}
 
+%privateheader{
+#include "mn-locked-callback.h"
+%}
+
 %{
 #include <gtk/gtk.h>
 %}
@@ -29,7 +33,7 @@ requires 2.0.12
 class MN:CORBA:Object from G:Object
 {
   private CORBA_Object object = CORBA_OBJECT_NIL
-    destroy { if (VAR) CORBA_Object_release(VAR, NULL); };
+    destroy { if (VAR != CORBA_OBJECT_NIL) CORBA_Object_release(VAR, NULL); };
   property POINTER object (export, type = CORBA_Object)
     set
     {
@@ -48,11 +52,11 @@ class MN:CORBA:Object from G:Object
 
       g_value_set_pointer(VAL, selfp->object);
     };
-  
+
   private char *iid destroywith g_free;
   property STRING iid (link, flags = CONSTRUCT_ONLY);
 
-  private unsigned int monitor_id;
+  private MNLockedGSource *monitor_source;
 
   override (G:Object) GObject *
     constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
@@ -66,9 +70,12 @@ class MN:CORBA:Object from G: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);
+      {
+	self_set_object(self, corba_object);
+	CORBA_Object_release(corba_object, NULL);
+      }
 
-    selfp->monitor_id = g_timeout_add(1000, self_monitor_cb, self);
+    selfp->monitor_source = mn_g_timeout_add_gdk_locked(1000, self_monitor_cb, self);
 
     return object;
   }
@@ -78,7 +85,7 @@ class MN:CORBA:Object from G:Object
   {
     Self *self = SELF(object);
 
-    g_source_remove(selfp->monitor_id);
+    mn_locked_g_source_remove(selfp->monitor_source);
 
     PARENT_HANDLER(object);
   }
@@ -91,11 +98,7 @@ class MN:CORBA:Object from G:Object
     if (selfp->object != CORBA_OBJECT_NIL)
       {
 	if (! bonobo_unknown_ping(selfp->object, NULL))
-	  {
-	    GDK_THREADS_ENTER();
-	    self_set_object(self, CORBA_OBJECT_NIL);
-	    GDK_THREADS_LEAVE();
-	  }
+	  self_set_object(self, CORBA_OBJECT_NIL);
       }
     else
       {
@@ -104,9 +107,8 @@ class MN:CORBA:Object from G:Object
 	object = bonobo_activation_activate_from_id(selfp->iid, 0, NULL, NULL);
 	if (object != CORBA_OBJECT_NIL)
 	  {
-	    GDK_THREADS_ENTER();
 	    self_set_object(self, object);
-	    GDK_THREADS_LEAVE();
+	    CORBA_Object_release(object, NULL);
 	  }
       }
 
diff --git a/src/mn-corba-object.gob.stamp b/src/mn-corba-object.gob.stamp
diff --git a/src/mn-corba-object.h b/src/mn-corba-object.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-custom-vfs-mailbox-private.h b/src/mn-custom-vfs-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_CUSTOM_VFS_MAILBOX_PRIVATE_H__
 #define __MN_CUSTOM_VFS_MAILBOX_PRIVATE_H__
diff --git a/src/mn-custom-vfs-mailbox.c b/src/mn-custom-vfs-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -30,7 +29,7 @@
 #include "mn-mailbox-private.h"
 #include "mn-stock.h"
 
-#line 34 "mn-custom-vfs-mailbox.c"
+#line 33 "mn-custom-vfs-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_CUSTOM_VFS_MAILBOX(x)
 #define SELF_CONST(x) MN_CUSTOM_VFS_MAILBOX_CONST(x)
@@ -113,7 +112,7 @@ ___finalize(GObject *obj_self)
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
 #line 34 "mn-custom-vfs-mailbox.gob"
 	if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; }
-#line 117 "mn-custom-vfs-mailbox.c"
+#line 116 "mn-custom-vfs-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -126,7 +125,7 @@ mn_custom_vfs_mailbox_init (MNCustomVFSMailbox * o G_GNUC_UNUSED)
 #line 37 "mn-custom-vfs-mailbox.gob"
 static void 
 mn_custom_vfs_mailbox_class_init (MNCustomVFSMailboxClass * class G_GNUC_UNUSED)
-#line 130 "mn-custom-vfs-mailbox.c"
+#line 129 "mn-custom-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Custom:VFS:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -140,7 +139,7 @@ mn_custom_vfs_mailbox_class_init (MNCustomVFSMailboxClass * class G_GNUC_UNUSED)
 	mn_mailbox_class->parse_uri = ___3_mn_custom_vfs_mailbox_parse_uri;
 #line 66 "mn-custom-vfs-mailbox.gob"
 	mn_mailbox_class->check = ___4_mn_custom_vfs_mailbox_check;
-#line 144 "mn-custom-vfs-mailbox.c"
+#line 143 "mn-custom-vfs-mailbox.c"
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
@@ -162,7 +161,7 @@ mn_custom_vfs_mailbox_class_init (MNCustomVFSMailboxClass * class G_GNUC_UNUSED)
 
     MN_MAILBOX_CLASS(class)->type = "custom-vfs";
   
-#line 166 "mn-custom-vfs-mailbox.c"
+#line 165 "mn-custom-vfs-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -183,7 +182,7 @@ ___object_set_property (GObject *object,
 		{
 #line 35 "mn-custom-vfs-mailbox.gob"
 { char *old = self->uri; self->uri = g_value_dup_string (VAL); g_free (old); }
-#line 187 "mn-custom-vfs-mailbox.c"
+#line 186 "mn-custom-vfs-mailbox.c"
 		}
 		break;
 	default:
@@ -214,7 +213,7 @@ ___object_get_property (GObject *object,
 		{
 #line 35 "mn-custom-vfs-mailbox.gob"
 g_value_set_string (VAL, self->uri);
-#line 218 "mn-custom-vfs-mailbox.c"
+#line 217 "mn-custom-vfs-mailbox.c"
 		}
 		break;
 	default:
@@ -234,7 +233,7 @@ g_value_set_string (VAL, self->uri);
 #line 42 "mn-custom-vfs-mailbox.gob"
 static void 
 ___2_mn_custom_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 238 "mn-custom-vfs-mailbox.c"
+#line 237 "mn-custom-vfs-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->seal) \
 		(* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); }
@@ -244,17 +243,17 @@ ___2_mn_custom_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 #line 44 "mn-custom-vfs-mailbox.gob"
 	
     MN_VFS_MAILBOX(mailbox)->uri = gnome_vfs_make_uri_canonical(SELF(mailbox)->uri);
-    
+
     PARENT_HANDLER(mailbox);
   }}
-#line 251 "mn-custom-vfs-mailbox.c"
+#line 250 "mn-custom-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 50 "mn-custom-vfs-mailbox.gob"
 static MNMailbox * 
 ___3_mn_custom_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri)
-#line 258 "mn-custom-vfs-mailbox.c"
+#line 257 "mn-custom-vfs-mailbox.c"
 #define PARENT_HANDLER(___dummy,___uri) \
 	((MN_MAILBOX_CLASS(parent_class)->parse_uri)? \
 		(* MN_MAILBOX_CLASS(parent_class)->parse_uri)(___dummy,___uri): \
@@ -276,14 +275,14 @@ ___3_mn_custom_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const cha
 
     return mailbox;
   }}
-#line 280 "mn-custom-vfs-mailbox.c"
+#line 279 "mn-custom-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 66 "mn-custom-vfs-mailbox.gob"
 static void 
 ___4_mn_custom_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 287 "mn-custom-vfs-mailbox.c"
+#line 286 "mn-custom-vfs-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->check) \
 		(* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); }
@@ -300,9 +299,9 @@ ___4_mn_custom_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
       {
 	mn_mailbox_set_stock_id(mailbox, MN_STOCK_UNKNOWN);
 	mn_mailbox_set_error(mailbox, _("invalid location"));
-	mn_mailbox_set_must_poll(mailbox, FALSE); /* disable the mailbox */
+	mn_mailbox_set_poll(mailbox, FALSE); /* disable the mailbox */
       }
   }}
-#line 307 "mn-custom-vfs-mailbox.c"
+#line 306 "mn-custom-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-custom-vfs-mailbox.gob b/src/mn-custom-vfs-mailbox.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-vfs-mailbox.h"
@@ -43,7 +43,7 @@ class MN:Custom:VFS:Mailbox from MN:VFS:Mailbox
     seal (MNMailbox *mailbox)
   {
     MN_VFS_MAILBOX(mailbox)->uri = gnome_vfs_make_uri_canonical(SELF(mailbox)->uri);
-    
+
     PARENT_HANDLER(mailbox);
   }
 
@@ -74,7 +74,7 @@ class MN:Custom:VFS:Mailbox from MN:VFS:Mailbox
       {
 	mn_mailbox_set_stock_id(mailbox, MN_STOCK_UNKNOWN);
 	mn_mailbox_set_error(mailbox, _("invalid location"));
-	mn_mailbox_set_must_poll(mailbox, FALSE); /* disable the mailbox */
+	mn_mailbox_set_poll(mailbox, FALSE); /* disable the mailbox */
       }
   }
 }
diff --git a/src/mn-custom-vfs-mailbox.gob.stamp b/src/mn-custom-vfs-mailbox.gob.stamp
diff --git a/src/mn-custom-vfs-mailbox.h b/src/mn-custom-vfs-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-dialog-private.h b/src/mn-dialog-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_DIALOG_PRIVATE_H__
 #define __MN_DIALOG_PRIVATE_H__
diff --git a/src/mn-dialog.c b/src/mn-dialog.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -61,7 +60,7 @@ mn_dialog_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (GTK_TYPE_DIALOG, "MNDialog", &info, (GTypeFlags)0);
+		type = g_type_register_static (GTK_TYPE_DIALOG, "MNDialog", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -96,7 +95,7 @@ mn_dialog_class_init (MNDialogClass * c G_GNUC_UNUSED)
 #line 27 "mn-dialog.gob"
 static void 
 mn_dialog_init (MNDialog * self G_GNUC_UNUSED)
-#line 100 "mn-dialog.c"
+#line 99 "mn-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Dialog::init"
  {
@@ -106,7 +105,7 @@ mn_dialog_init (MNDialog * self G_GNUC_UNUSED)
     gtk_dialog_set_has_separator(GTK_DIALOG(self), FALSE);
     gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(self)->vbox), 2);
   
-#line 110 "mn-dialog.c"
+#line 109 "mn-dialog.c"
  }
 }
 #undef __GOB_FUNCTION__
diff --git a/src/mn-dialog.gob b/src/mn-dialog.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,13 +16,13 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
 %}
 
-class MN:Dialog from Gtk:Dialog
+class MN:Dialog from Gtk:Dialog (abstract)
 {
   init (self)
   {
diff --git a/src/mn-dialog.gob.stamp b/src/mn-dialog.gob.stamp
diff --git a/src/mn-dialog.h b/src/mn-dialog.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-evolution-folder-tree-control.c b/src/mn-evolution-folder-tree-control.c
@@ -21,9 +21,14 @@
 #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"
 
@@ -71,7 +76,7 @@ mn_evolution_folder_tree_control_factory_cb (BonoboGenericFactory *factory,
   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,
diff --git a/src/mn-evolution-glue-private.h b/src/mn-evolution-glue-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_EVOLUTION_GLUE_PRIVATE_H__
 #define __MN_EVOLUTION_GLUE_PRIVATE_H__
diff --git a/src/mn-evolution-glue.c b/src/mn-evolution-glue.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:55 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -28,10 +27,14 @@
 #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/mail-tools.h>
+#endif
 
-#line 35 "mn-evolution-glue.c"
+#line 38 "mn-evolution-glue.c"
 /* self casting macros */
 #define SELF(x) MN_EVOLUTION_GLUE(x)
 #define SELF_CONST(x) MN_EVOLUTION_GLUE_CONST(x)
@@ -117,24 +120,24 @@ mn_evolution_glue_class_init (MNEvolutionGlueClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT);
 
-#line 36 "mn-evolution-glue.gob"
+#line 40 "mn-evolution-glue.gob"
 	c->_epv.getUnseenMessages = self_getUnseenMessages;
-#line 100 "mn-evolution-glue.gob"
+#line 108 "mn-evolution-glue.gob"
 	c->_epv.getFolderName = self_getFolderName;
-#line 125 "mn-evolution-glue.c"
+#line 128 "mn-evolution-glue.c"
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 36 "mn-evolution-glue.gob"
+#line 40 "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 134 "mn-evolution-glue.c"
+#line 137 "mn-evolution-glue.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Glue::getUnseenMessages"
 {
-#line 40 "mn-evolution-glue.gob"
+#line 44 "mn-evolution-glue.gob"
 	
     CamelFolder *folder;
     GPtrArray *summary;
@@ -151,17 +154,20 @@ mn_evolution_glue_getUnseenMessages (PortableServer_Servant servant, const CORBA
 
     summary = camel_folder_get_summary(folder);
 
+    seq = GNOME_MailNotification_Evolution_MessageSeq__alloc();
+    seq->_length = 0;
+
     for (i = 0; i < summary->len; i++)
       {
 	CamelMessageInfo *info = summary->pdata[i];
 
 	if ((camel_message_info_flags(info) & CAMEL_MESSAGE_SEEN) == 0)
-	  infos = g_slist_append(infos, info);
+	  {
+	    infos = g_slist_prepend(infos, info);
+	    seq->_length++;
+	  }
       }
 
-    seq = GNOME_MailNotification_Evolution_MessageSeq__alloc();
-    seq->_length = g_slist_length(infos);
-
     if (seq->_length > 0)
       {
 	GSList *l;
@@ -177,8 +183,9 @@ mn_evolution_glue_getUnseenMessages (PortableServer_Servant servant, const CORBA
 	    id = camel_message_info_message_id(info);
 	    for (j = 0; j < sizeof(id->id.hash); j++)
 	      sprintf(hexhash + j * 2, "%.2x", id->id.hash[j]);
-	    
+
 	    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);
 	    seq->_buffer[i].from = CORBA_string_dup(camel_message_info_from(info));
 	    seq->_buffer[i].subject = CORBA_string_dup(camel_message_info_subject(info));
@@ -194,17 +201,17 @@ mn_evolution_glue_getUnseenMessages (PortableServer_Servant servant, const CORBA
 
     return seq;
   }}
-#line 198 "mn-evolution-glue.c"
+#line 205 "mn-evolution-glue.c"
 #undef __GOB_FUNCTION__
 
-#line 100 "mn-evolution-glue.gob"
+#line 108 "mn-evolution-glue.gob"
 static CORBA_string 
 mn_evolution_glue_getFolderName (PortableServer_Servant servant, const CORBA_char * folder_uri, CORBA_Environment * env)
-#line 204 "mn-evolution-glue.c"
+#line 211 "mn-evolution-glue.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Glue::getFolderName"
 {
-#line 104 "mn-evolution-glue.gob"
+#line 112 "mn-evolution-glue.gob"
 	
     CamelFolder *folder;
     CORBA_string name = NULL;
@@ -220,19 +227,19 @@ mn_evolution_glue_getFolderName (PortableServer_Servant servant, const CORBA_cha
 
     return name;
   }}
-#line 224 "mn-evolution-glue.c"
+#line 231 "mn-evolution-glue.c"
 #undef __GOB_FUNCTION__
 
-#line 120 "mn-evolution-glue.gob"
+#line 128 "mn-evolution-glue.gob"
 MNEvolutionGlue * 
 mn_evolution_glue_new (void)
-#line 230 "mn-evolution-glue.c"
+#line 237 "mn-evolution-glue.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Glue::new"
 {
-#line 122 "mn-evolution-glue.gob"
+#line 130 "mn-evolution-glue.gob"
 	
     return GET_NEW;
   }}
-#line 238 "mn-evolution-glue.c"
+#line 245 "mn-evolution-glue.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-evolution-glue.gob b/src/mn-evolution-glue.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <libbonobo.h>
@@ -27,8 +27,12 @@ requires 2.0.12
 #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/mail-tools.h>
+#endif
 %}
 
 class MN:Evolution:Glue from Bonobo:Object (BonoboObject GNOME_MailNotification_Evolution_Glue)
@@ -53,17 +57,20 @@ class MN:Evolution:Glue from Bonobo:Object (BonoboObject GNOME_MailNotification_
 
     summary = camel_folder_get_summary(folder);
 
+    seq = GNOME_MailNotification_Evolution_MessageSeq__alloc();
+    seq->_length = 0;
+
     for (i = 0; i < summary->len; i++)
       {
 	CamelMessageInfo *info = summary->pdata[i];
 
 	if ((camel_message_info_flags(info) & CAMEL_MESSAGE_SEEN) == 0)
-	  infos = g_slist_append(infos, info);
+	  {
+	    infos = g_slist_prepend(infos, info);
+	    seq->_length++;
+	  }
       }
 
-    seq = GNOME_MailNotification_Evolution_MessageSeq__alloc();
-    seq->_length = g_slist_length(infos);
-
     if (seq->_length > 0)
       {
 	GSList *l;
@@ -79,8 +86,9 @@ class MN:Evolution:Glue from Bonobo:Object (BonoboObject GNOME_MailNotification_
 	    id = camel_message_info_message_id(info);
 	    for (j = 0; j < sizeof(id->id.hash); j++)
 	      sprintf(hexhash + j * 2, "%.2x", id->id.hash[j]);
-	    
+
 	    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);
 	    seq->_buffer[i].from = CORBA_string_dup(camel_message_info_from(info));
 	    seq->_buffer[i].subject = CORBA_string_dup(camel_message_info_subject(info));
@@ -116,7 +124,7 @@ class MN:Evolution:Glue from Bonobo:Object (BonoboObject GNOME_MailNotification_
 
     return name;
   }
-  
+
   public MNEvolutionGlue *
     new (void)
   {
diff --git a/src/mn-evolution-glue.gob.stamp b/src/mn-evolution-glue.gob.stamp
diff --git a/src/mn-evolution-glue.h b/src/mn-evolution-glue.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-evolution-mailbox-private.h b/src/mn-evolution-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_EVOLUTION_MAILBOX_PRIVATE_H__
 #define __MN_EVOLUTION_MAILBOX_PRIVATE_H__
@@ -12,16 +12,20 @@ extern "C" {
 
 #line 25 "mn-evolution-mailbox.gob"
 
+#include <time.h>
 #include "GNOME_MailNotification_Evolution.h"
 #include "mn-corba-object.h"
+#include "mn-locked-callback.h"
 
-#line 19 "mn-evolution-mailbox-private.h"
+#line 21 "mn-evolution-mailbox-private.h"
 struct _MNEvolutionMailboxPrivate {
-#line 54 "mn-evolution-mailbox.gob"
+#line 58 "mn-evolution-mailbox.gob"
 	MNCORBAObject * glue;
-#line 55 "mn-evolution-mailbox.gob"
-	Bonobo_Listener listener;
-#line 25 "mn-evolution-mailbox-private.h"
+#line 59 "mn-evolution-mailbox.gob"
+	MNLockedBonoboListener * listener;
+#line 61 "mn-evolution-mailbox.gob"
+	time_t last_browsed;
+#line 29 "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
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_EVOLUTION_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_EVOLUTION_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-evolution-mailbox-properties.c b/src/mn-evolution-mailbox-properties.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -32,7 +31,7 @@
 #include "mn-evolution-mailbox.h"
 #include "mn-stock.h"
 
-#line 36 "mn-evolution-mailbox-properties.c"
+#line 35 "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)
@@ -122,15 +121,24 @@ ___dispose (GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::dispose"
 	MNEvolutionMailboxProperties *self G_GNUC_UNUSED = MN_EVOLUTION_MAILBOX_PROPERTIES (obj_self);
-#line 81 "mn-evolution-mailbox-properties.gob"
+#line 82 "mn-evolution-mailbox-properties.gob"
 	___3_mn_evolution_mailbox_properties_dispose(obj_self);
-#line 128 "mn-evolution-mailbox-properties.c"
+#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 131 "mn-evolution-mailbox-properties.c"
+#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 134 "mn-evolution-mailbox-properties.c"
+#line 133 "mn-evolution-mailbox-properties.c"
+#define pbag (self->_priv->pbag)
+#define VAR pbag
+	{
+#line 51 "mn-evolution-mailbox-properties.gob"
+	 bonobo_object_release_unref(VAR, NULL); }
+#line 139 "mn-evolution-mailbox-properties.c"
+	memset(&pbag, 0, sizeof(pbag));
+#undef VAR
+#undef pbag
 }
 #undef __GOB_FUNCTION__
 
@@ -145,26 +153,17 @@ ___finalize(GObject *obj_self)
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
 #line 44 "mn-evolution-mailbox-properties.gob"
 	if(self->_priv->uri) { g_free ((gpointer) self->_priv->uri); self->_priv->uri = NULL; }
-#line 149 "mn-evolution-mailbox-properties.c"
+#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 152 "mn-evolution-mailbox-properties.c"
-#define pbag (self->_priv->pbag)
-#define VAR pbag
-	{
-#line 51 "mn-evolution-mailbox-properties.gob"
-	 CORBA_Object_release(VAR, NULL); }
-#line 158 "mn-evolution-mailbox-properties.c"
-	memset(&pbag, 0, sizeof(pbag));
-#undef VAR
-#undef pbag
+#line 160 "mn-evolution-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
 #line 60 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_class_init (MNEvolutionMailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 168 "mn-evolution-mailbox-properties.c"
+#line 167 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -174,13 +173,13 @@ mn_evolution_mailbox_properties_class_init (MNEvolutionMailboxPropertiesClass * 
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX_PROPERTIES);
 
-#line 81 "mn-evolution-mailbox-properties.gob"
+#line 82 "mn-evolution-mailbox-properties.gob"
 	g_object_class->dispose = ___dispose;
-#line 249 "mn-evolution-mailbox-properties.gob"
+#line 240 "mn-evolution-mailbox-properties.gob"
 	mn_mailbox_properties_class->set_mailbox = ___9_mn_evolution_mailbox_properties_set_mailbox;
-#line 265 "mn-evolution-mailbox-properties.gob"
+#line 256 "mn-evolution-mailbox-properties.gob"
 	mn_mailbox_properties_class->get_mailbox = ___a_mn_evolution_mailbox_properties_get_mailbox;
-#line 184 "mn-evolution-mailbox-properties.c"
+#line 183 "mn-evolution-mailbox-properties.c"
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
     {
@@ -199,13 +198,14 @@ mn_evolution_mailbox_properties_class_init (MNEvolutionMailboxPropertiesClass * 
     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"
  }
 }
 #undef __GOB_FUNCTION__
-#line 70 "mn-evolution-mailbox-properties.gob"
+#line 71 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_init (MNEvolutionMailboxProperties * self G_GNUC_UNUSED)
 #line 212 "mn-evolution-mailbox-properties.c"
@@ -219,7 +219,7 @@ mn_evolution_mailbox_properties_init (MNEvolutionMailboxProperties * self G_GNUC
 	self->_priv->listener = CORBA_OBJECT_NIL;
 #line 221 "mn-evolution-mailbox-properties.c"
  {
-#line 71 "mn-evolution-mailbox-properties.gob"
+#line 72 "mn-evolution-mailbox-properties.gob"
 
     selfp->glue = mn_corba_object_new(MN_EVOLUTION_GLUE_IID);
     g_signal_connect_swapped(selfp->glue, "notify::object", G_CALLBACK(self_update_contents), self);
@@ -274,7 +274,7 @@ ___object_get_property (GObject *object,
 
 
 
-#line 81 "mn-evolution-mailbox-properties.gob"
+#line 82 "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"
@@ -284,7 +284,7 @@ ___3_mn_evolution_mailbox_properties_dispose (GObject * object G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::dispose"
 {
-#line 83 "mn-evolution-mailbox-properties.gob"
+#line 84 "mn-evolution-mailbox-properties.gob"
 	
     Self *self = SELF(object);
 
@@ -297,30 +297,28 @@ ___3_mn_evolution_mailbox_properties_dispose (GObject * object G_GNUC_UNUSED)
 	g_assert(selfp->pbag != CORBA_OBJECT_NIL);
 
 	bonobo_event_source_client_remove_listener(selfp->pbag, selfp->listener, NULL);
-
-	CORBA_Object_release(selfp->listener, NULL);
-	selfp->listener = CORBA_OBJECT_NIL;
+	selfp->listener = bonobo_object_release_unref(selfp->listener, NULL);
       }
 
     PARENT_HANDLER(object);
   }}
-#line 308 "mn-evolution-mailbox-properties.c"
+#line 306 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 103 "mn-evolution-mailbox-properties.gob"
+#line 102 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_update_contents (MNEvolutionMailboxProperties * self)
-#line 315 "mn-evolution-mailbox-properties.c"
+#line 313 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::update_contents"
-#line 103 "mn-evolution-mailbox-properties.gob"
+#line 102 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 103 "mn-evolution-mailbox-properties.gob"
+#line 102 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_EVOLUTION_MAILBOX_PROPERTIES (self));
-#line 322 "mn-evolution-mailbox-properties.c"
+#line 320 "mn-evolution-mailbox-properties.c"
 {
-#line 105 "mn-evolution-mailbox-properties.gob"
+#line 104 "mn-evolution-mailbox-properties.gob"
 	
     GNOME_MailNotification_Evolution_Glue glue;
     Bonobo_Control control;
@@ -356,7 +354,7 @@ mn_evolution_mailbox_properties_update_contents (MNEvolutionMailboxProperties * 
 	      }
 	  }
       }
-    
+
     /* failure */
 
     if (tree)
@@ -367,67 +365,59 @@ mn_evolution_mailbox_properties_update_contents (MNEvolutionMailboxProperties * 
     CORBA_Object_release(glue, NULL);
     CORBA_Object_release(control, NULL);
   }}
-#line 371 "mn-evolution-mailbox-properties.c"
+#line 369 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 152 "mn-evolution-mailbox-properties.gob"
+#line 151 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_contact_error (MNEvolutionMailboxProperties * self)
-#line 377 "mn-evolution-mailbox-properties.c"
+#line 375 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::contact_error"
-#line 152 "mn-evolution-mailbox-properties.gob"
+#line 151 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 152 "mn-evolution-mailbox-properties.gob"
+#line 151 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_EVOLUTION_MAILBOX_PROPERTIES (self));
-#line 384 "mn-evolution-mailbox-properties.c"
+#line 382 "mn-evolution-mailbox-properties.c"
 {
-#line 154 "mn-evolution-mailbox-properties.gob"
+#line 153 "mn-evolution-mailbox-properties.gob"
 	
     GtkWidget *label;
 
-    if (selfp->pbag != CORBA_OBJECT_NIL)
-      {
-	CORBA_Object_release(selfp->pbag, NULL);
-	selfp->pbag = CORBA_OBJECT_NIL;
-      }
-
-    if (selfp->listener != CORBA_OBJECT_NIL)
-      {
-	CORBA_Object_release(selfp->listener, NULL);
-	selfp->listener = CORBA_OBJECT_NIL;
-      }
+    selfp->pbag = bonobo_object_release_unref(selfp->pbag, NULL);
+    selfp->listener = bonobo_object_release_unref(selfp->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."));
 
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
     gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+    gtk_label_set_selectable(GTK_LABEL(label), TRUE);
 
     self_set_widget(self, label);
     selfp->tree = NULL;
 
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 412 "mn-evolution-mailbox-properties.c"
+#line 402 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 180 "mn-evolution-mailbox-properties.gob"
+#line 171 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_set_widget (MNEvolutionMailboxProperties * self, GtkWidget * widget)
-#line 418 "mn-evolution-mailbox-properties.c"
+#line 408 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::set_widget"
-#line 180 "mn-evolution-mailbox-properties.gob"
+#line 171 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 180 "mn-evolution-mailbox-properties.gob"
+#line 171 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_EVOLUTION_MAILBOX_PROPERTIES (self));
-#line 180 "mn-evolution-mailbox-properties.gob"
+#line 171 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (widget != NULL);
-#line 180 "mn-evolution-mailbox-properties.gob"
+#line 171 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 429 "mn-evolution-mailbox-properties.c"
+#line 419 "mn-evolution-mailbox-properties.c"
 {
-#line 182 "mn-evolution-mailbox-properties.gob"
+#line 173 "mn-evolution-mailbox-properties.gob"
 	
     if (selfp->child)
       gtk_widget_destroy(selfp->child);
@@ -437,17 +427,17 @@ mn_evolution_mailbox_properties_set_widget (MNEvolutionMailboxProperties * self,
 
     selfp->child = widget;
   }}
-#line 441 "mn-evolution-mailbox-properties.c"
+#line 431 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 192 "mn-evolution-mailbox-properties.gob"
+#line 183 "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 447 "mn-evolution-mailbox-properties.c"
+#line 437 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::selected_uri_changed_cb"
 {
-#line 198 "mn-evolution-mailbox-properties.gob"
+#line 189 "mn-evolution-mailbox-properties.gob"
 	
     Self *self = user_data;
     const char *uri;
@@ -483,48 +473,48 @@ mn_evolution_mailbox_properties_selected_uri_changed_cb (BonoboListener * listen
 
     g_free(selfp->name);
     selfp->name = g_strdup(name);
-    
+
     CORBA_free(name);
 
     g_object_notify(G_OBJECT(self), "complete");
     g_object_notify(G_OBJECT(self), "default-name");
   }}
-#line 493 "mn-evolution-mailbox-properties.c"
+#line 483 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 240 "mn-evolution-mailbox-properties.gob"
+#line 231 "mn-evolution-mailbox-properties.gob"
 static void 
 mn_evolution_mailbox_properties_sync (MNEvolutionMailboxProperties * self)
-#line 499 "mn-evolution-mailbox-properties.c"
+#line 489 "mn-evolution-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::sync"
-#line 240 "mn-evolution-mailbox-properties.gob"
+#line 231 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 240 "mn-evolution-mailbox-properties.gob"
+#line 231 "mn-evolution-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_EVOLUTION_MAILBOX_PROPERTIES (self));
-#line 506 "mn-evolution-mailbox-properties.c"
+#line 496 "mn-evolution-mailbox-properties.c"
 {
-#line 242 "mn-evolution-mailbox-properties.gob"
+#line 233 "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 515 "mn-evolution-mailbox-properties.c"
+#line 505 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 249 "mn-evolution-mailbox-properties.gob"
+#line 240 "mn-evolution-mailbox-properties.gob"
 static void 
 ___9_mn_evolution_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 521 "mn-evolution-mailbox-properties.c"
+#line 511 "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 251 "mn-evolution-mailbox-properties.gob"
+#line 242 "mn-evolution-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNEvolutionMailbox *evolution_mailbox = MN_EVOLUTION_MAILBOX(mailbox);
@@ -538,14 +528,14 @@ ___9_mn_evolution_mailbox_properties_set_mailbox (MNMailboxProperties * properti
     if (selfp->tree)
       self_sync(self);
   }}
-#line 542 "mn-evolution-mailbox-properties.c"
+#line 532 "mn-evolution-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 265 "mn-evolution-mailbox-properties.gob"
+#line 256 "mn-evolution-mailbox-properties.gob"
 static MNMailbox * 
 ___a_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
-#line 549 "mn-evolution-mailbox-properties.c"
+#line 539 "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): \
@@ -553,7 +543,7 @@ ___a_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properti
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox:Properties::get_mailbox"
 {
-#line 267 "mn-evolution-mailbox-properties.gob"
+#line 258 "mn-evolution-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNMailbox *mailbox;
@@ -561,12 +551,12 @@ ___a_mn_evolution_mailbox_properties_get_mailbox (MNMailboxProperties * properti
     mailbox = PARENT_HANDLER(properties);
 
     g_object_set(mailbox,
-		 "uri", selfp->uri,
-		 "folder-name", selfp->name,
+		 MN_EVOLUTION_MAILBOX_PROP_URI(selfp->uri),
+		 MN_EVOLUTION_MAILBOX_PROP_FOLDER_NAME(selfp->name),
 		 NULL);
 
     return mailbox;
   }}
-#line 571 "mn-evolution-mailbox-properties.c"
+#line 561 "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,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-mailbox-properties.h"
@@ -48,7 +48,7 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
   private MNCORBAObject *control unrefwith g_object_unref;
 
   private Bonobo_PropertyBag pbag = CORBA_OBJECT_NIL
-    destroy { CORBA_Object_release(VAR, NULL); };
+    unref { bonobo_object_release_unref(VAR, NULL); };
   private Bonobo_Listener listener = CORBA_OBJECT_NIL;
 
   property BOOLEAN complete (override)
@@ -64,6 +64,7 @@ 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");
   }
 
@@ -92,9 +93,7 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
 	g_assert(selfp->pbag != CORBA_OBJECT_NIL);
 
 	bonobo_event_source_client_remove_listener(selfp->pbag, selfp->listener, NULL);
-
-	CORBA_Object_release(selfp->listener, NULL);
-	selfp->listener = CORBA_OBJECT_NIL;
+	selfp->listener = bonobo_object_release_unref(selfp->listener, NULL);
       }
 
     PARENT_HANDLER(object);
@@ -137,7 +136,7 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
 	      }
 	  }
       }
-    
+
     /* failure */
 
     if (tree)
@@ -148,28 +147,20 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
     CORBA_Object_release(glue, NULL);
     CORBA_Object_release(control, NULL);
   }
-  
+
   private void
     contact_error (self)
   {
     GtkWidget *label;
 
-    if (selfp->pbag != CORBA_OBJECT_NIL)
-      {
-	CORBA_Object_release(selfp->pbag, NULL);
-	selfp->pbag = CORBA_OBJECT_NIL;
-      }
-
-    if (selfp->listener != CORBA_OBJECT_NIL)
-      {
-	CORBA_Object_release(selfp->listener, NULL);
-	selfp->listener = CORBA_OBJECT_NIL;
-      }
+    selfp->pbag = bonobo_object_release_unref(selfp->pbag, NULL);
+    selfp->listener = bonobo_object_release_unref(selfp->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."));
 
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
     gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+    gtk_label_set_selectable(GTK_LABEL(label), TRUE);
 
     self_set_widget(self, label);
     selfp->tree = NULL;
@@ -230,7 +221,7 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
 
     g_free(selfp->name);
     selfp->name = g_strdup(name);
-    
+
     CORBA_free(name);
 
     g_object_notify(G_OBJECT(self), "complete");
@@ -271,8 +262,8 @@ class MN:Evolution:Mailbox:Properties from MN:Mailbox:Properties
     mailbox = PARENT_HANDLER(properties);
 
     g_object_set(mailbox,
-		 "uri", selfp->uri,
-		 "folder-name", selfp->name,
+		 MN_EVOLUTION_MAILBOX_PROP_URI(selfp->uri),
+		 MN_EVOLUTION_MAILBOX_PROP_FOLDER_NAME(selfp->name),
 		 NULL);
 
     return mailbox;
diff --git a/src/mn-evolution-mailbox-properties.gob.stamp b/src/mn-evolution-mailbox-properties.gob.stamp
diff --git a/src/mn-evolution-mailbox-properties.h b/src/mn-evolution-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-evolution-mailbox.c b/src/mn-evolution-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 30 "mn-evolution-mailbox.gob"
+#line 32 "mn-evolution-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
@@ -35,7 +34,9 @@
 #include "mn-util.h"
 #include "mn-stock.h"
 
-#line 39 "mn-evolution-mailbox.c"
+static GStaticMutex listeners_mutex = G_STATIC_MUTEX_INIT;
+
+#line 40 "mn-evolution-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_EVOLUTION_MAILBOX(x)
 #define SELF_CONST(x) MN_EVOLUTION_MAILBOX_CONST(x)
@@ -52,13 +53,12 @@ typedef MNEvolutionMailboxClass 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_mailbox_init (MNEvolutionMailbox * o) G_GNUC_UNUSED;
 static void mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class) G_GNUC_UNUSED;
-static GObject * ___2_mn_evolution_mailbox_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void mn_evolution_mailbox_init (MNEvolutionMailbox * self) G_GNUC_UNUSED;
 static void ___3_mn_evolution_mailbox_seal (MNMailbox * mailbox) G_GNUC_UNUSED;
 static void ___4_mn_evolution_mailbox_dispose (GObject * object) G_GNUC_UNUSED;
-static void mn_evolution_mailbox_folder_changed_cb (BonoboListener * listener, const char * event_name, const CORBA_any * any, CORBA_Environment * env, gpointer user_data) G_GNUC_UNUSED;
-static void ___6_mn_evolution_mailbox_impl_check (MNReentrantMailbox * mailbox, unsigned long check_id) G_GNUC_UNUSED;
+static void mn_evolution_mailbox_listener_cb (BonoboListener * listener, const char * event_name, const CORBA_any * any, CORBA_Environment * env, gpointer user_data) G_GNUC_UNUSED;
+static void ___6_mn_evolution_mailbox_reentrant_check (MNReentrantMailbox * mailbox, unsigned long check_id) G_GNUC_UNUSED;
 
 enum {
 	PROP_0,
@@ -70,7 +70,7 @@ enum {
 static MNReentrantMailboxClass *parent_class = NULL;
 
 /* Short form macros */
-#define self_folder_changed_cb mn_evolution_mailbox_folder_changed_cb
+#define self_listener_cb mn_evolution_mailbox_listener_cb
 GType
 mn_evolution_mailbox_get_type (void)
 {
@@ -119,10 +119,10 @@ ___dispose (GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::dispose"
 	MNEvolutionMailbox *self G_GNUC_UNUSED = MN_EVOLUTION_MAILBOX (obj_self);
-#line 89 "mn-evolution-mailbox.gob"
+#line 96 "mn-evolution-mailbox.gob"
 	___4_mn_evolution_mailbox_dispose(obj_self);
 #line 125 "mn-evolution-mailbox.c"
-#line 54 "mn-evolution-mailbox.gob"
+#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"
 }
@@ -137,29 +137,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.gob"
+#line 48 "mn-evolution-mailbox.gob"
 	if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; }
 #line 143 "mn-evolution-mailbox.c"
-#line 51 "mn-evolution-mailbox.gob"
+#line 55 "mn-evolution-mailbox.gob"
 	if(self->folder_name) { g_free ((gpointer) self->folder_name); self->folder_name = NULL; }
 #line 146 "mn-evolution-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
-static void 
-mn_evolution_mailbox_init (MNEvolutionMailbox * o G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:Evolution:Mailbox::init"
-	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_EVOLUTION_MAILBOX,MNEvolutionMailboxPrivate);
-#line 30 "mn-evolution-mailbox.gob"
-	o->_priv->listener = CORBA_OBJECT_NIL;
-#line 157 "mn-evolution-mailbox.c"
-}
-#undef __GOB_FUNCTION__
-#line 57 "mn-evolution-mailbox.gob"
+#line 63 "mn-evolution-mailbox.gob"
 static void 
 mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class G_GNUC_UNUSED)
-#line 163 "mn-evolution-mailbox.c"
+#line 153 "mn-evolution-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Evolution:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -170,15 +160,13 @@ mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_REENTRANT_MAILBOX);
 
-#line 64 "mn-evolution-mailbox.gob"
-	g_object_class->constructor = ___2_mn_evolution_mailbox_constructor;
-#line 80 "mn-evolution-mailbox.gob"
+#line 87 "mn-evolution-mailbox.gob"
 	mn_mailbox_class->seal = ___3_mn_evolution_mailbox_seal;
-#line 89 "mn-evolution-mailbox.gob"
+#line 96 "mn-evolution-mailbox.gob"
 	g_object_class->dispose = ___dispose;
-#line 133 "mn-evolution-mailbox.gob"
-	mn_reentrant_mailbox_class->impl_check = ___6_mn_evolution_mailbox_impl_check;
-#line 182 "mn-evolution-mailbox.c"
+#line 160 "mn-evolution-mailbox.gob"
+	mn_reentrant_mailbox_class->reentrant_check = ___6_mn_evolution_mailbox_reentrant_check;
+#line 170 "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;
@@ -205,13 +193,41 @@ mn_evolution_mailbox_class_init (MNEvolutionMailboxClass * class G_GNUC_UNUSED)
 		param_spec);
     }
  {
-#line 58 "mn-evolution-mailbox.gob"
+#line 64 "mn-evolution-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "evolution";
 
+    /*
+     * The mailbox is only polled if the folder was not found. Since
+     * this is unlikely, and since Evolution is probably running on
+     * the local machine, we choose a small default check delay (1
+     * minute).
+     */
+    MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 1;
+
     bonobo_exception_add_handler_str(ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound, _("folder not found"));
   
-#line 215 "mn-evolution-mailbox.c"
+#line 211 "mn-evolution-mailbox.c"
+ }
+}
+#undef __GOB_FUNCTION__
+#line 78 "mn-evolution-mailbox.gob"
+static void 
+mn_evolution_mailbox_init (MNEvolutionMailbox * self G_GNUC_UNUSED)
+#line 218 "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"
+
+    mn_mailbox_set_format(MN_MAILBOX(self), "Evolution");
+    mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_EVOLUTION_MAILBOX);
+
+    /* we receive notifications from Evolution, no need to poll */
+    mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
+  
+#line 231 "mn-evolution-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -230,16 +246,16 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_URI:
 		{
-#line 45 "mn-evolution-mailbox.gob"
+#line 49 "mn-evolution-mailbox.gob"
 { char *old = self->uri; self->uri = g_value_dup_string (VAL); g_free (old); }
-#line 236 "mn-evolution-mailbox.c"
+#line 252 "mn-evolution-mailbox.c"
 		}
 		break;
 	case PROP_FOLDER_NAME:
 		{
-#line 52 "mn-evolution-mailbox.gob"
+#line 56 "mn-evolution-mailbox.gob"
 { char *old = self->folder_name; self->folder_name = g_value_dup_string (VAL); g_free (old); }
-#line 243 "mn-evolution-mailbox.c"
+#line 259 "mn-evolution-mailbox.c"
 		}
 		break;
 	default:
@@ -268,16 +284,16 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_URI:
 		{
-#line 45 "mn-evolution-mailbox.gob"
+#line 49 "mn-evolution-mailbox.gob"
 g_value_set_string (VAL, self->uri);
-#line 274 "mn-evolution-mailbox.c"
+#line 290 "mn-evolution-mailbox.c"
 		}
 		break;
 	case PROP_FOLDER_NAME:
 		{
-#line 52 "mn-evolution-mailbox.gob"
+#line 56 "mn-evolution-mailbox.gob"
 g_value_set_string (VAL, self->folder_name);
-#line 281 "mn-evolution-mailbox.c"
+#line 297 "mn-evolution-mailbox.c"
 		}
 		break;
 	default:
@@ -294,67 +310,38 @@ g_value_set_string (VAL, self->folder_name);
 
 
 
-#line 64 "mn-evolution-mailbox.gob"
-static GObject * 
-___2_mn_evolution_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 301 "mn-evolution-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): \
-		((GObject * )0))
-{
-#define __GOB_FUNCTION__ "MN:Evolution:Mailbox::constructor"
-{
-#line 66 "mn-evolution-mailbox.gob"
-	
-    GObject *object;
-    MNMailbox *mailbox;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
-
-    mn_mailbox_set_format(mailbox, "Evolution");
-    mn_mailbox_set_stock_id(mailbox, MN_STOCK_EVOLUTION_MAILBOX);
-    mn_mailbox_set_must_poll(mailbox, FALSE);
-
-    return object;
-  }}
-#line 323 "mn-evolution-mailbox.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 80 "mn-evolution-mailbox.gob"
+#line 87 "mn-evolution-mailbox.gob"
 static void 
 ___3_mn_evolution_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 330 "mn-evolution-mailbox.c"
+#line 317 "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 82 "mn-evolution-mailbox.gob"
+#line 89 "mn-evolution-mailbox.gob"
 	
     PARENT_HANDLER(mailbox);
 
     if (! mailbox->runtime_name)
       mailbox->runtime_name = g_strdup(SELF(mailbox)->folder_name);
   }}
-#line 344 "mn-evolution-mailbox.c"
+#line 331 "mn-evolution-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 89 "mn-evolution-mailbox.gob"
+#line 96 "mn-evolution-mailbox.gob"
 static void 
 ___4_mn_evolution_mailbox_dispose (GObject * object G_GNUC_UNUSED)
-#line 351 "mn-evolution-mailbox.c"
+#line 338 "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 91 "mn-evolution-mailbox.gob"
+#line 98 "mn-evolution-mailbox.gob"
 	
     Self *self = SELF(object);
 
@@ -362,7 +349,7 @@ ___4_mn_evolution_mailbox_dispose (GObject * object G_GNUC_UNUSED)
      * We are no longer operational after dispose (see unrefwith
      * above), so we must remove our listener.
      */
-    if (selfp->listener != CORBA_OBJECT_NIL)
+    if (selfp->listener)
       {
 	GNOME_MailNotification_Evolution_Glue glue;
 
@@ -371,55 +358,76 @@ ___4_mn_evolution_mailbox_dispose (GObject * object G_GNUC_UNUSED)
 	glue = mn_corba_object_get_object(selfp->glue);
 	if (glue != CORBA_OBJECT_NIL)
 	  {
-	    bonobo_event_source_client_remove_listener(glue, selfp->listener, NULL);
+	    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);
 	  }
 
-	CORBA_Object_release(selfp->listener, NULL);
-	selfp->listener = CORBA_OBJECT_NIL;
+	bonobo_object_release_unref(mn_locked_bonobo_listener_get_listener(selfp->listener), NULL);
+	selfp->listener = NULL;
       }
 
     PARENT_HANDLER(object);
   }}
-#line 385 "mn-evolution-mailbox.c"
+#line 375 "mn-evolution-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 118 "mn-evolution-mailbox.gob"
+#line 128 "mn-evolution-mailbox.gob"
 static void 
-mn_evolution_mailbox_folder_changed_cb (BonoboListener * listener, const char * event_name, const CORBA_any * any, CORBA_Environment * env, gpointer user_data)
-#line 392 "mn-evolution-mailbox.c"
+mn_evolution_mailbox_listener_cb (BonoboListener * listener, const char * event_name, const CORBA_any * any, CORBA_Environment * env, gpointer user_data)
+#line 382 "mn-evolution-mailbox.c"
 {
-#define __GOB_FUNCTION__ "MN:Evolution:Mailbox::folder_changed_cb"
+#define __GOB_FUNCTION__ "MN:Evolution:Mailbox::listener_cb"
 {
-#line 124 "mn-evolution-mailbox.gob"
+#line 134 "mn-evolution-mailbox.gob"
 	
     Self *self = user_data;
     const char *uri;
 
-    uri = BONOBO_ARG_GET_STRING(any);
-    if (! strcmp(uri, self->uri))
-      mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
+    if (! strcmp(event_name, MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_MESSAGE_READING))
+      {
+	uri = BONOBO_ARG_GET_STRING(any);
+	if (! strcmp(uri, self->uri))
+	  {
+	    time_t now = mn_time();
+
+	    mn_reentrant_mailbox_lock(MN_REENTRANT_MAILBOX(self));
+	    selfp->last_browsed = now;
+	    mn_reentrant_mailbox_unlock(MN_REENTRANT_MAILBOX(self));
+
+	    mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
+	  }
+      }
+    else if (! strcmp(event_name, MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_FOLDER_CHANGED))
+      {
+	uri = BONOBO_ARG_GET_STRING(any);
+	if (! strcmp(uri, self->uri))
+	  mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
+      }
   }}
-#line 405 "mn-evolution-mailbox.c"
+#line 412 "mn-evolution-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 133 "mn-evolution-mailbox.gob"
+#line 160 "mn-evolution-mailbox.gob"
 static void 
-___6_mn_evolution_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsigned long check_id)
-#line 411 "mn-evolution-mailbox.c"
+___6_mn_evolution_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsigned long check_id)
+#line 418 "mn-evolution-mailbox.c"
 #define PARENT_HANDLER(___mailbox,___check_id) \
-	{ if(MN_REENTRANT_MAILBOX_CLASS(parent_class)->impl_check) \
-		(* MN_REENTRANT_MAILBOX_CLASS(parent_class)->impl_check)(___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::impl_check"
+#define __GOB_FUNCTION__ "MN:Evolution:Mailbox::reentrant_check"
 {
-#line 135 "mn-evolution-mailbox.gob"
+#line 162 "mn-evolution-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     GNOME_MailNotification_Evolution_Glue glue;
     CORBA_Environment env;
     CORBA_sequence_GNOME_MailNotification_Evolution_Message *message_seq;
+    time_t last_browsed;
 
     mn_reentrant_mailbox_lock(mailbox);
 
@@ -433,27 +441,33 @@ ___6_mn_evolution_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED
 
     if (glue == CORBA_OBJECT_NIL)
       {
-	if (selfp->listener != CORBA_OBJECT_NIL)
+	if (selfp->listener)
 	  {
-	    CORBA_Object_release(selfp->listener, NULL);
-	    selfp->listener = CORBA_OBJECT_NIL;
+	    bonobo_object_release_unref(mn_locked_bonobo_listener_get_listener(selfp->listener), NULL);
+	    selfp->listener = NULL;
 	  }
       }
     else
       {
-	if (selfp->listener == CORBA_OBJECT_NIL)
-	  selfp->listener = bonobo_event_source_client_add_listener_full(glue,
-									 g_cclosure_new(G_CALLBACK(self_folder_changed_cb), self, NULL),
-									 MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_FOLDER_CHANGED,
-									 NULL);
+	if (! selfp->listener)
+	  selfp->listener = mn_bonobo_event_source_client_add_listener_full_locked(glue,
+										   self_listener_cb,
+										   MN_EVOLUTION_EVENT_PREFIX,
+										   NULL,
+										   self,
+										   (MNLockFunc) mn_g_static_mutex_lock,
+										   (MNUnlockFunc) mn_g_static_mutex_unlock,
+										   &listeners_mutex);
       }
 
-    if (selfp->listener == CORBA_OBJECT_NIL && glue != CORBA_OBJECT_NIL)
+    if (! selfp->listener && glue != CORBA_OBJECT_NIL)
       {
 	CORBA_Object_release(glue, NULL);
 	glue = CORBA_OBJECT_NIL;
       }
 
+    last_browsed = selfp->last_browsed;
+
     mn_reentrant_mailbox_unlock(mailbox);
 
     if (glue == CORBA_OBJECT_NIL)
@@ -464,8 +478,8 @@ ___6_mn_evolution_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED
 	  {
 	    mn_mailbox_set_error(MN_MAILBOX(self), _("unable to contact Evolution"));
 
-	    if (MN_MAILBOX(self)->must_poll)
-	      mn_mailbox_set_must_poll(MN_MAILBOX(self), FALSE);
+	    if (mn_mailbox_get_poll(MN_MAILBOX(self)))
+	      mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
 	  }
 
 	gdk_flush();
@@ -485,15 +499,20 @@ ___6_mn_evolution_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED
 	if (! mn_reentrant_mailbox_check_aborted_unlocked(mailbox, check_id))
 	  {
 	    char *errmsg;
-		
+
 	    errmsg = bonobo_exception_get_text(&env);
 	    mn_mailbox_set_error(MN_MAILBOX(self), "%s", errmsg);
 	    g_free(errmsg);
 
-	    if (! MN_MAILBOX(self)->must_poll)
-	      mn_mailbox_set_must_poll(MN_MAILBOX(self), TRUE);
+	    if (! mn_mailbox_get_poll(MN_MAILBOX(self)))
+	      /*
+	       * If the folder was not found, we will no longer
+	       * receive events from Evolution, and we must therefore
+	       * re-enable polling.
+	       */
+	      mn_mailbox_set_poll(MN_MAILBOX(self), TRUE);
 	  }
-	    
+
 	gdk_flush();
 	GDK_THREADS_LEAVE();
       }
@@ -504,12 +523,18 @@ ___6_mn_evolution_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED
 
 	for (i = 0; i < message_seq->_length; i++)
 	  {
-	    messages = g_slist_append(messages, mn_message_new(MN_MAILBOX(mailbox),
-							       NULL,
-							       message_seq->_buffer[i].sent_time,
-							       message_seq->_buffer[i].id,
-							       message_seq->_buffer[i].from,
-							       message_seq->_buffer[i].subject));
+	    MNMessageFlags flags = 0;
+
+	    if (message_seq->_buffer[i].received_time > last_browsed)
+	      flags |= MN_MESSAGE_NEW;
+
+	    messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(mailbox),
+								NULL,
+								message_seq->_buffer[i].sent_time,
+								message_seq->_buffer[i].id,
+								message_seq->_buffer[i].from,
+								message_seq->_buffer[i].subject,
+								flags));
 
 	    if (mn_reentrant_mailbox_check_aborted(mailbox, check_id))
 	      break;
@@ -521,10 +546,10 @@ ___6_mn_evolution_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED
 	  {
 	    mn_mailbox_set_messages(MN_MAILBOX(self), messages);
 
-	    if (MN_MAILBOX(self)->must_poll)
-	      mn_mailbox_set_must_poll(MN_MAILBOX(self), FALSE);
+	    if (mn_mailbox_get_poll(MN_MAILBOX(self)))
+	      mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
 	  }
-    
+
 	mn_g_object_slist_free(messages);
 
 	gdk_flush();
@@ -536,6 +561,6 @@ ___6_mn_evolution_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED
     CORBA_exception_free(&env);
     CORBA_Object_release(glue, NULL);
   }}
-#line 540 "mn-evolution-mailbox.c"
+#line 565 "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,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,15 +16,17 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-reentrant-mailbox.h"
 %}
 
 %privateheader{
+#include <time.h>
 #include "GNOME_MailNotification_Evolution.h"
 #include "mn-corba-object.h"
+#include "mn-locked-callback.h"
 %}
 
 %{
@@ -37,6 +39,8 @@ requires 2.0.12
 #include "mn-message.h"
 #include "mn-util.h"
 #include "mn-stock.h"
+
+static GStaticMutex listeners_mutex = G_STATIC_MUTEX_INIT;
 %}
 
 class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
@@ -52,29 +56,32 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
   property STRING folder_name (link, flags = MN_MAILBOX_PARAM_PERMANENT | MN_MAILBOX_PARAM_REQUIRED);
 
   private MNCORBAObject *glue unrefwith g_object_unref;
-  private Bonobo_Listener listener = CORBA_OBJECT_NIL;
+  private MNLockedBonoboListener *listener;
+
+  private time_t last_browsed;
 
   class_init (class)
   {
     MN_MAILBOX_CLASS(class)->type = "evolution";
 
+    /*
+     * The mailbox is only polled if the folder was not found. Since
+     * this is unlikely, and since Evolution is probably running on
+     * the local machine, we choose a small default check delay (1
+     * minute).
+     */
+    MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 1;
+
     bonobo_exception_add_handler_str(ex_GNOME_MailNotification_Evolution_Glue_FolderNotFound, _("folder not found"));
   }
 
-  override (G:Object) GObject *
-    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  init (self)
   {
-    GObject *object;
-    MNMailbox *mailbox;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
+    mn_mailbox_set_format(MN_MAILBOX(self), "Evolution");
+    mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_EVOLUTION_MAILBOX);
 
-    mn_mailbox_set_format(mailbox, "Evolution");
-    mn_mailbox_set_stock_id(mailbox, MN_STOCK_EVOLUTION_MAILBOX);
-    mn_mailbox_set_must_poll(mailbox, FALSE);
-
-    return object;
+    /* we receive notifications from Evolution, no need to poll */
+    mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
   }
 
   override (MN:Mailbox) void
@@ -95,7 +102,7 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
      * We are no longer operational after dispose (see unrefwith
      * above), so we must remove our listener.
      */
-    if (selfp->listener != CORBA_OBJECT_NIL)
+    if (selfp->listener)
       {
 	GNOME_MailNotification_Evolution_Glue glue;
 
@@ -104,39 +111,60 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 	glue = mn_corba_object_get_object(selfp->glue);
 	if (glue != CORBA_OBJECT_NIL)
 	  {
-	    bonobo_event_source_client_remove_listener(glue, selfp->listener, NULL);
+	    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);
 	  }
 
-	CORBA_Object_release(selfp->listener, NULL);
-	selfp->listener = CORBA_OBJECT_NIL;
+	bonobo_object_release_unref(mn_locked_bonobo_listener_get_listener(selfp->listener), NULL);
+	selfp->listener = NULL;
       }
 
     PARENT_HANDLER(object);
   }
 
   private void
-    folder_changed_cb (BonoboListener *listener,
-		       const char *event_name,
-		       const CORBA_any *any,
-		       CORBA_Environment *env,
-		       gpointer user_data)
+    listener_cb (BonoboListener *listener,
+		 const char *event_name,
+		 const CORBA_any *any,
+		 CORBA_Environment *env,
+		 gpointer user_data)
   {
     Self *self = user_data;
     const char *uri;
 
-    uri = BONOBO_ARG_GET_STRING(any);
-    if (! strcmp(uri, self->uri))
-      mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
+    if (! strcmp(event_name, MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_MESSAGE_READING))
+      {
+	uri = BONOBO_ARG_GET_STRING(any);
+	if (! strcmp(uri, self->uri))
+	  {
+	    time_t now = mn_time();
+
+	    mn_reentrant_mailbox_lock(MN_REENTRANT_MAILBOX(self));
+	    selfp->last_browsed = now;
+	    mn_reentrant_mailbox_unlock(MN_REENTRANT_MAILBOX(self));
+
+	    mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
+	  }
+      }
+    else if (! strcmp(event_name, MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_FOLDER_CHANGED))
+      {
+	uri = BONOBO_ARG_GET_STRING(any);
+	if (! strcmp(uri, self->uri))
+	  mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
+      }
   }
 
   override (MN:Reentrant:Mailbox) void
-    impl_check (MNReentrantMailbox *mailbox, unsigned long check_id)
+    reentrant_check (MNReentrantMailbox *mailbox, unsigned long check_id)
   {
     Self *self = SELF(mailbox);
     GNOME_MailNotification_Evolution_Glue glue;
     CORBA_Environment env;
     CORBA_sequence_GNOME_MailNotification_Evolution_Message *message_seq;
+    time_t last_browsed;
 
     mn_reentrant_mailbox_lock(mailbox);
 
@@ -150,27 +178,33 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 
     if (glue == CORBA_OBJECT_NIL)
       {
-	if (selfp->listener != CORBA_OBJECT_NIL)
+	if (selfp->listener)
 	  {
-	    CORBA_Object_release(selfp->listener, NULL);
-	    selfp->listener = CORBA_OBJECT_NIL;
+	    bonobo_object_release_unref(mn_locked_bonobo_listener_get_listener(selfp->listener), NULL);
+	    selfp->listener = NULL;
 	  }
       }
     else
       {
-	if (selfp->listener == CORBA_OBJECT_NIL)
-	  selfp->listener = bonobo_event_source_client_add_listener_full(glue,
-									 g_cclosure_new(G_CALLBACK(self_folder_changed_cb), self, NULL),
-									 MN_EVOLUTION_EVENT_PREFIX ":" MN_EVOLUTION_EVENT_FOLDER_CHANGED,
-									 NULL);
+	if (! selfp->listener)
+	  selfp->listener = mn_bonobo_event_source_client_add_listener_full_locked(glue,
+										   self_listener_cb,
+										   MN_EVOLUTION_EVENT_PREFIX,
+										   NULL,
+										   self,
+										   (MNLockFunc) mn_g_static_mutex_lock,
+										   (MNUnlockFunc) mn_g_static_mutex_unlock,
+										   &listeners_mutex);
       }
 
-    if (selfp->listener == CORBA_OBJECT_NIL && glue != CORBA_OBJECT_NIL)
+    if (! selfp->listener && glue != CORBA_OBJECT_NIL)
       {
 	CORBA_Object_release(glue, NULL);
 	glue = CORBA_OBJECT_NIL;
       }
 
+    last_browsed = selfp->last_browsed;
+
     mn_reentrant_mailbox_unlock(mailbox);
 
     if (glue == CORBA_OBJECT_NIL)
@@ -181,8 +215,8 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 	  {
 	    mn_mailbox_set_error(MN_MAILBOX(self), _("unable to contact Evolution"));
 
-	    if (MN_MAILBOX(self)->must_poll)
-	      mn_mailbox_set_must_poll(MN_MAILBOX(self), FALSE);
+	    if (mn_mailbox_get_poll(MN_MAILBOX(self)))
+	      mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
 	  }
 
 	gdk_flush();
@@ -202,15 +236,20 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 	if (! mn_reentrant_mailbox_check_aborted_unlocked(mailbox, check_id))
 	  {
 	    char *errmsg;
-		
+
 	    errmsg = bonobo_exception_get_text(&env);
 	    mn_mailbox_set_error(MN_MAILBOX(self), "%s", errmsg);
 	    g_free(errmsg);
 
-	    if (! MN_MAILBOX(self)->must_poll)
-	      mn_mailbox_set_must_poll(MN_MAILBOX(self), TRUE);
+	    if (! mn_mailbox_get_poll(MN_MAILBOX(self)))
+	      /*
+	       * If the folder was not found, we will no longer
+	       * receive events from Evolution, and we must therefore
+	       * re-enable polling.
+	       */
+	      mn_mailbox_set_poll(MN_MAILBOX(self), TRUE);
 	  }
-	    
+
 	gdk_flush();
 	GDK_THREADS_LEAVE();
       }
@@ -221,12 +260,18 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 
 	for (i = 0; i < message_seq->_length; i++)
 	  {
-	    messages = g_slist_append(messages, mn_message_new(MN_MAILBOX(mailbox),
-							       NULL,
-							       message_seq->_buffer[i].sent_time,
-							       message_seq->_buffer[i].id,
-							       message_seq->_buffer[i].from,
-							       message_seq->_buffer[i].subject));
+	    MNMessageFlags flags = 0;
+
+	    if (message_seq->_buffer[i].received_time > last_browsed)
+	      flags |= MN_MESSAGE_NEW;
+
+	    messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(mailbox),
+								NULL,
+								message_seq->_buffer[i].sent_time,
+								message_seq->_buffer[i].id,
+								message_seq->_buffer[i].from,
+								message_seq->_buffer[i].subject,
+								flags));
 
 	    if (mn_reentrant_mailbox_check_aborted(mailbox, check_id))
 	      break;
@@ -238,10 +283,10 @@ class MN:Evolution:Mailbox from MN:Reentrant:Mailbox
 	  {
 	    mn_mailbox_set_messages(MN_MAILBOX(self), messages);
 
-	    if (MN_MAILBOX(self)->must_poll)
-	      mn_mailbox_set_must_poll(MN_MAILBOX(self), FALSE);
+	    if (mn_mailbox_get_poll(MN_MAILBOX(self)))
+	      mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
 	  }
-    
+
 	mn_g_object_slist_free(messages);
 
 	gdk_flush();
diff --git a/src/mn-evolution-mailbox.gob.stamp b/src/mn-evolution-mailbox.gob.stamp
diff --git a/src/mn-evolution-mailbox.h b/src/mn-evolution-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-evolution-plugin.c b/src/mn-evolution-plugin.c
@@ -24,8 +24,14 @@
 #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"
@@ -111,14 +117,14 @@ mn_evolution_plugin_factory_create (const char *factory_iid,
   BonoboGenericFactory *factory;
   GClosure *closure;
   Bonobo_RegistrationResult result;
-  
+
   g_return_val_if_fail(factory_iid != NULL, FALSE);
   g_return_val_if_fail(factory_cb != NULL, FALSE);
 
   factory = g_object_new(bonobo_generic_factory_get_type(), NULL);
   closure = g_cclosure_new(G_CALLBACK(factory_cb), user_data, NULL);
   bonobo_generic_factory_construct_noreg(factory, factory_iid, closure);
-  
+
   result = bonobo_activation_register_active_server(factory_iid, BONOBO_OBJREF(factory), NULL);
   switch (result)
     {
@@ -135,7 +141,8 @@ mn_evolution_plugin_factory_create (const char *factory_iid,
       return FALSE;
 
     default:
-      g_return_val_if_reached(FALSE);
+      g_assert_not_reached();
+      return FALSE;
     }
 }
 
@@ -189,3 +196,31 @@ org_gnome_mail_notification_folder_changed (EPlugin *plugin,
       bonobo_arg_release(arg);
     }
 }
+
+void
+org_gnome_mail_notification_message_reading (EPlugin *plugin,
+					     EMEventTargetMessage *message)
+{
+  if (glue_event_sources)
+    {
+      BonoboArg *arg;
+      char *url;
+      GSList *l;
+
+      arg = bonobo_arg_new(BONOBO_ARG_STRING);
+
+      url = mail_tools_folder_to_url(message->folder);
+      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);
+
+      bonobo_arg_release(arg);
+    }
+}
diff --git a/src/mn-evolution.h b/src/mn-evolution.h
@@ -24,5 +24,6 @@
 
 #define MN_EVOLUTION_EVENT_PREFIX		"GNOME/MailNotification/Evolution"
 #define MN_EVOLUTION_EVENT_FOLDER_CHANGED	"folder-changed"
+#define MN_EVOLUTION_EVENT_MESSAGE_READING	"message-reading"
 
 #endif /* _MN_EVOLUTION_H */
diff --git a/src/mn-gmail-mailbox-private.h b/src/mn-gmail-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_GMAIL_MAILBOX_PRIVATE_H__
 #define __MN_GMAIL_MAILBOX_PRIVATE_H__
@@ -16,7 +16,7 @@ extern "C" {
 
 #line 18 "mn-gmail-mailbox-private.h"
 struct _MNGmailMailboxPrivate {
-#line 59 "mn-gmail-mailbox.gob"
+#line 58 "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
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-gmail-mailbox-properties.c b/src/mn-gmail-mailbox-properties.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -35,7 +34,7 @@
 #include "mn-gmail-mailbox.h"
 #include "mn-stock.h"
 
-#line 39 "mn-gmail-mailbox-properties.c"
+#line 38 "mn-gmail-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_GMAIL_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_GMAIL_MAILBOX_PROPERTIES_CONST(x)
@@ -117,14 +116,14 @@ ___finalize(GObject *obj_self)
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
 #line 44 "mn-gmail-mailbox-properties.gob"
 	if(self->_priv->location) { g_free ((gpointer) self->_priv->location); self->_priv->location = NULL; }
-#line 121 "mn-gmail-mailbox-properties.c"
+#line 120 "mn-gmail-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
 #line 56 "mn-gmail-mailbox-properties.gob"
 static void 
 mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 128 "mn-gmail-mailbox-properties.c"
+#line 127 "mn-gmail-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -138,7 +137,7 @@ mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * class G_
 	mn_mailbox_properties_class->set_mailbox = ___3_mn_gmail_mailbox_properties_set_mailbox;
 #line 92 "mn-gmail-mailbox-properties.gob"
 	mn_mailbox_properties_class->get_mailbox = ___4_mn_gmail_mailbox_properties_get_mailbox;
-#line 142 "mn-gmail-mailbox-properties.c"
+#line 141 "mn-gmail-mailbox-properties.c"
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
     {
@@ -155,14 +154,14 @@ mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * class G_
     p_class->stock_id = MN_STOCK_GMAIL;
     p_class->combo_label = "Gmail";
   
-#line 159 "mn-gmail-mailbox-properties.c"
+#line 158 "mn-gmail-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
 #line 65 "mn-gmail-mailbox-properties.gob"
 static void 
 mn_gmail_mailbox_properties_init (MNGmailMailboxProperties * self G_GNUC_UNUSED)
-#line 166 "mn-gmail-mailbox-properties.c"
+#line 165 "mn-gmail-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_GMAIL_MAILBOX_PROPERTIES,MNGmailMailboxPropertiesPrivate);
@@ -175,14 +174,14 @@ mn_gmail_mailbox_properties_init (MNGmailMailboxProperties * self G_GNUC_UNUSED)
     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);
 
-    mn_mailbox_properties_add_entries(properties,
-				      GTK_ENTRY(auth->username_entry),
-				      GTK_ENTRY(auth->password_entry),
-				      NULL);
+    properties->entries = mn_g_slist_append_elements(properties->entries,
+						     auth->username_entry,
+						     auth->password_entry,
+						     NULL);
 
-    g_signal_connect(auth->username_entry, "changed", G_CALLBACK(mn_mailbox_properties_notify_default_name), self);
+    g_signal_connect_swapped(auth->username_entry, "changed", G_CALLBACK(mn_mailbox_properties_notify_default_name), self);
   
-#line 186 "mn-gmail-mailbox-properties.c"
+#line 185 "mn-gmail-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -209,7 +208,7 @@ ___object_get_property (GObject *object,
 
       g_value_take_string(VAL, mn_gmail_mailbox_build_name(*username ? username : NULL));
     
-#line 213 "mn-gmail-mailbox-properties.c"
+#line 212 "mn-gmail-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -229,7 +228,7 @@ ___object_get_property (GObject *object,
 #line 81 "mn-gmail-mailbox-properties.gob"
 static void 
 ___3_mn_gmail_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 233 "mn-gmail-mailbox-properties.c"
+#line 232 "mn-gmail-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); }
@@ -245,14 +244,14 @@ ___3_mn_gmail_mailbox_properties_set_mailbox (MNMailboxProperties * properties G
 
     selfp->location = g_strdup(gmail_mailbox->location);
   }}
-#line 249 "mn-gmail-mailbox-properties.c"
+#line 248 "mn-gmail-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 92 "mn-gmail-mailbox-properties.gob"
 static MNMailbox * 
 ___4_mn_gmail_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GNUC_UNUSED)
-#line 256 "mn-gmail-mailbox-properties.c"
+#line 255 "mn-gmail-mailbox-properties.c"
 #define PARENT_HANDLER(___properties) \
 	((MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)? \
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->get_mailbox)(___properties): \
@@ -267,7 +266,8 @@ ___4_mn_gmail_mailbox_properties_get_mailbox (MNMailboxProperties * properties G
 
     mailbox = PARENT_HANDLER(properties);
 
-    g_object_set(mailbox, "location", selfp->location, NULL);
+    if (selfp->location)
+      g_object_set(mailbox, MN_GMAIL_MAILBOX_PROP_LOCATION(selfp->location), NULL);
 
     return mailbox;
   }}
diff --git a/src/mn-gmail-mailbox-properties.gob b/src/mn-gmail-mailbox-properties.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
@@ -52,7 +52,7 @@ class MN:Gmail:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
 
       g_value_take_string(VAL, mn_gmail_mailbox_build_name(*username ? username : NULL));
     };
-  
+
   class_init (class)
   {
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
@@ -70,12 +70,12 @@ class MN:Gmail:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
     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);
 
-    mn_mailbox_properties_add_entries(properties,
-				      GTK_ENTRY(auth->username_entry),
-				      GTK_ENTRY(auth->password_entry),
-				      NULL);
+    properties->entries = mn_g_slist_append_elements(properties->entries,
+						     auth->username_entry,
+						     auth->password_entry,
+						     NULL);
 
-    g_signal_connect(auth->username_entry, "changed", G_CALLBACK(mn_mailbox_properties_notify_default_name), self);
+    g_signal_connect_swapped(auth->username_entry, "changed", G_CALLBACK(mn_mailbox_properties_notify_default_name), self);
   }
 
   override (MN:Mailbox:Properties) void
@@ -97,7 +97,8 @@ class MN:Gmail:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
 
     mailbox = PARENT_HANDLER(properties);
 
-    g_object_set(mailbox, "location", selfp->location, NULL);
+    if (selfp->location)
+      g_object_set(mailbox, MN_GMAIL_MAILBOX_PROP_LOCATION(selfp->location), NULL);
 
     return mailbox;
   }
diff --git a/src/mn-gmail-mailbox-properties.gob.stamp b/src/mn-gmail-mailbox-properties.gob.stamp
diff --git a/src/mn-gmail-mailbox-properties.h b/src/mn-gmail-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-gmail-mailbox.c b/src/mn-gmail-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -42,9 +41,7 @@
 #include "mn-message.h"
 #include "mn-util.h"
 
-#define DEFAULT_LOCATION	"https://mail.google.com/mail/feed/atom"
-
-#line 48 "mn-gmail-mailbox.c"
+#line 45 "mn-gmail-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_GMAIL_MAILBOX(x)
 #define SELF_CONST(x) MN_GMAIL_MAILBOX_CONST(x)
@@ -61,11 +58,10 @@ typedef MNGmailMailboxClass 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_gmail_mailbox_init (MNGmailMailbox * o) G_GNUC_UNUSED;
 static void mn_gmail_mailbox_class_init (MNGmailMailboxClass * class) G_GNUC_UNUSED;
-static GObject * ___2_mn_gmail_mailbox_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+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_impl_check (MNAuthenticatedMailbox * 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 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;
@@ -133,9 +129,9 @@ ___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 59 "mn-gmail-mailbox.gob"
+#line 58 "mn-gmail-mailbox.gob"
 	if(self->_priv->uri) { gnome_vfs_uri_unref ((gpointer) self->_priv->uri); self->_priv->uri = NULL; }
-#line 139 "mn-gmail-mailbox.c"
+#line 135 "mn-gmail-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -148,26 +144,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 54 "mn-gmail-mailbox.gob"
+#line 52 "mn-gmail-mailbox.gob"
 	if(self->location) { g_free ((gpointer) self->location); self->location = NULL; }
-#line 154 "mn-gmail-mailbox.c"
-#line 57 "mn-gmail-mailbox.gob"
-	if(self->runtime_location) { g_free ((gpointer) self->runtime_location); self->runtime_location = NULL; }
-#line 157 "mn-gmail-mailbox.c"
+#line 150 "mn-gmail-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
-static void 
-mn_gmail_mailbox_init (MNGmailMailbox * o G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::init"
-	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_GMAIL_MAILBOX,MNGmailMailboxPrivate);
-}
-#undef __GOB_FUNCTION__
-#line 61 "mn-gmail-mailbox.gob"
+#line 60 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
-#line 171 "mn-gmail-mailbox.c"
+#line 157 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -178,13 +164,11 @@ mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX);
 
-#line 66 "mn-gmail-mailbox.gob"
-	g_object_class->constructor = ___2_mn_gmail_mailbox_constructor;
-#line 81 "mn-gmail-mailbox.gob"
+#line 77 "mn-gmail-mailbox.gob"
 	mn_mailbox_class->seal = ___3_mn_gmail_mailbox_seal;
-#line 94 "mn-gmail-mailbox.gob"
-	mn_authenticated_mailbox_class->impl_check = ___4_mn_gmail_mailbox_impl_check;
-#line 188 "mn-gmail-mailbox.c"
+#line 86 "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;
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
@@ -196,18 +180,41 @@ mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
 		("location" /* name */,
 		 NULL /* nick */,
 		 NULL /* blurb */,
-		 NULL /* default_value */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_PERMANENT));
+		 "https://mail.google.com/mail/feed/atom" /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_PERMANENT | G_PARAM_CONSTRUCT));
 	g_object_class_install_property (g_object_class,
 		PROP_LOCATION,
 		param_spec);
     }
  {
-#line 62 "mn-gmail-mailbox.gob"
+#line 61 "mn-gmail-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "gmail";
+
+    /*
+     * 5 minutes is a good default check delay for remote Gmail
+     * mailboxes.
+     */
+    MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5;
+  
+#line 201 "mn-gmail-mailbox.c"
+ }
+}
+#undef __GOB_FUNCTION__
+#line 71 "mn-gmail-mailbox.gob"
+static void 
+mn_gmail_mailbox_init (MNGmailMailbox * self G_GNUC_UNUSED)
+#line 208 "mn-gmail-mailbox.c"
+{
+#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"
+
+    mn_mailbox_set_format(MN_MAILBOX(self), "Gmail");
+    mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_GMAIL);
   
-#line 211 "mn-gmail-mailbox.c"
+#line 218 "mn-gmail-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -226,9 +233,9 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_LOCATION:
 		{
-#line 55 "mn-gmail-mailbox.gob"
+#line 53 "mn-gmail-mailbox.gob"
 { char *old = self->location; self->location = g_value_dup_string (VAL); g_free (old); }
-#line 232 "mn-gmail-mailbox.c"
+#line 239 "mn-gmail-mailbox.c"
 		}
 		break;
 	default:
@@ -257,9 +264,9 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_LOCATION:
 		{
-#line 55 "mn-gmail-mailbox.gob"
+#line 53 "mn-gmail-mailbox.gob"
 g_value_set_string (VAL, self->location);
-#line 263 "mn-gmail-mailbox.c"
+#line 270 "mn-gmail-mailbox.c"
 		}
 		break;
 	default:
@@ -276,70 +283,38 @@ g_value_set_string (VAL, self->location);
 
 
 
-#line 66 "mn-gmail-mailbox.gob"
-static GObject * 
-___2_mn_gmail_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 283 "mn-gmail-mailbox.c"
-#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
-	((G_OBJECT_CLASS(parent_class)->constructor)? \
-		(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
-		((GObject * )0))
-{
-#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::constructor"
-{
-#line 68 "mn-gmail-mailbox.gob"
-	
-    GObject *object;
-    MNMailbox *mailbox;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
-
-    mn_mailbox_set_format(mailbox, "Gmail");
-    mn_mailbox_set_stock_id(mailbox, MN_STOCK_GMAIL);
-
-    return object;
-  }}
-#line 304 "mn-gmail-mailbox.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 81 "mn-gmail-mailbox.gob"
+#line 77 "mn-gmail-mailbox.gob"
 static void 
 ___3_mn_gmail_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 311 "mn-gmail-mailbox.c"
+#line 290 "mn-gmail-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->seal) \
 		(* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::seal"
 {
-#line 83 "mn-gmail-mailbox.gob"
+#line 79 "mn-gmail-mailbox.gob"
 	
-    Self *self = SELF(mailbox);
-
     PARENT_HANDLER(mailbox);
 
-    self->runtime_location = g_strdup(self->location ? self->location : DEFAULT_LOCATION);
-
     if (! mailbox->runtime_name)
       mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username);
   }}
-#line 329 "mn-gmail-mailbox.c"
+#line 304 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 94 "mn-gmail-mailbox.gob"
+#line 86 "mn-gmail-mailbox.gob"
 static void 
-___4_mn_gmail_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
-#line 336 "mn-gmail-mailbox.c"
+___4_mn_gmail_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
+#line 311 "mn-gmail-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
-	{ if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_check) \
-		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_check)(___mailbox); }
+	{ if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \
+		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); }
 {
-#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::impl_check"
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::authenticated_check"
 {
-#line 96 "mn-gmail-mailbox.gob"
+#line 88 "mn-gmail-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     GnomeVFSResult result;
@@ -350,14 +325,14 @@ ___4_mn_gmail_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 
     if (! selfp->uri)
       {
-	selfp->uri = gnome_vfs_uri_new(self->runtime_location);
+	selfp->uri = gnome_vfs_uri_new(self->location);
 	if (! selfp->uri)
 	  {
 	    GDK_THREADS_ENTER();
 
 	    mn_mailbox_set_error(MN_MAILBOX(self), _("invalid feed location"));
 	    /* error is not recoverable, disable the mailbox */
-	    mn_mailbox_set_must_poll(MN_MAILBOX(self), FALSE);
+	    mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
 
 	    gdk_flush();
 	    GDK_THREADS_LEAVE();
@@ -369,7 +344,7 @@ ___4_mn_gmail_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 	gnome_vfs_uri_set_password(selfp->uri, mailbox->password);
       }
 
-    mn_mailbox_notice(MN_MAILBOX(self), _("retrieving feed from %s"), self->runtime_location);
+    mn_mailbox_notice(MN_MAILBOX(self), _("retrieving feed from %s"), self->location);
 
     result = mn_vfs_read_entire_file_uri(selfp->uri, &atom_size, &atom);
     if (result != GNOME_VFS_OK)
@@ -383,7 +358,7 @@ ___4_mn_gmail_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 
 	return;
       }
-    
+
     doc = xmlParseMemory(atom, atom_size);
     g_free(atom);
 
@@ -414,12 +389,13 @@ ___4_mn_gmail_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 
 	      self_parse_entry(node, &sent_time, &id, &from, &subject);
 
-	      messages = g_slist_append(messages, mn_message_new(MN_MAILBOX(self),
-								 NULL,
-								 sent_time,
-								 id,
-								 from,
-								 subject));
+	      messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(self),
+								  NULL,
+								  sent_time,
+								  id,
+								  from,
+								  subject,
+								  MN_MESSAGE_NEW));
 
 	      g_free(id);
 	      g_free(from);
@@ -446,29 +422,29 @@ ___4_mn_gmail_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 
     xmlFreeDoc(doc);
   }}
-#line 450 "mn-gmail-mailbox.c"
+#line 426 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 203 "mn-gmail-mailbox.gob"
+#line 196 "mn-gmail-mailbox.gob"
 static void 
 mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, char ** from, char ** subject)
-#line 457 "mn-gmail-mailbox.c"
+#line 433 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_entry"
-#line 203 "mn-gmail-mailbox.gob"
+#line 196 "mn-gmail-mailbox.gob"
 	g_return_if_fail (node != NULL);
-#line 203 "mn-gmail-mailbox.gob"
+#line 196 "mn-gmail-mailbox.gob"
 	g_return_if_fail (sent_time != NULL);
-#line 203 "mn-gmail-mailbox.gob"
+#line 196 "mn-gmail-mailbox.gob"
 	g_return_if_fail (id != NULL);
-#line 203 "mn-gmail-mailbox.gob"
+#line 196 "mn-gmail-mailbox.gob"
 	g_return_if_fail (from != NULL);
-#line 203 "mn-gmail-mailbox.gob"
+#line 196 "mn-gmail-mailbox.gob"
 	g_return_if_fail (subject != NULL);
-#line 470 "mn-gmail-mailbox.c"
+#line 446 "mn-gmail-mailbox.c"
 {
-#line 209 "mn-gmail-mailbox.gob"
+#line 202 "mn-gmail-mailbox.gob"
 	
     *sent_time = 0;
     *id = NULL;
@@ -508,25 +484,25 @@ mn_gmail_mailbox_parse_entry (xmlNode * node, time_t * sent_time, char ** id, ch
 #endif
 	}
   }}
-#line 512 "mn-gmail-mailbox.c"
+#line 488 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 249 "mn-gmail-mailbox.gob"
+#line 242 "mn-gmail-mailbox.gob"
 static char * 
 mn_gmail_mailbox_parse_author (xmlNode * node)
-#line 518 "mn-gmail-mailbox.c"
+#line 494 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_author"
-#line 249 "mn-gmail-mailbox.gob"
+#line 242 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (node != NULL, (char * )0);
-#line 523 "mn-gmail-mailbox.c"
+#line 499 "mn-gmail-mailbox.c"
 {
-#line 251 "mn-gmail-mailbox.gob"
+#line 244 "mn-gmail-mailbox.gob"
 	
     char *from;
     char *name = NULL;
     char *email = NULL;
-	      
+
     for (node = node->children; node != NULL; node = node->next)
       if (node->type == XML_ELEMENT_NODE)
 	{
@@ -548,23 +524,23 @@ mn_gmail_mailbox_parse_author (xmlNode * node)
 
     g_free(name);
     g_free(email);
-    
+
     return from;
   }}
-#line 555 "mn-gmail-mailbox.c"
+#line 531 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 281 "mn-gmail-mailbox.gob"
+#line 274 "mn-gmail-mailbox.gob"
 static time_t 
 mn_gmail_mailbox_parse_date (const char * w3c_datetime)
-#line 561 "mn-gmail-mailbox.c"
+#line 537 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_date"
-#line 281 "mn-gmail-mailbox.gob"
+#line 274 "mn-gmail-mailbox.gob"
 	g_return_val_if_fail (w3c_datetime != NULL, (time_t )0);
-#line 566 "mn-gmail-mailbox.c"
+#line 542 "mn-gmail-mailbox.c"
 {
-#line 283 "mn-gmail-mailbox.gob"
+#line 276 "mn-gmail-mailbox.gob"
 	
 #ifdef HAVE_TIMEGM
     time_t t = 0;
@@ -599,20 +575,21 @@ mn_gmail_mailbox_parse_date (const char * w3c_datetime)
 
     return t;
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif
   }}
-#line 606 "mn-gmail-mailbox.c"
+#line 583 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 321 "mn-gmail-mailbox.gob"
+#line 315 "mn-gmail-mailbox.gob"
 char * 
 mn_gmail_mailbox_build_name (const char * username)
-#line 612 "mn-gmail-mailbox.c"
+#line 589 "mn-gmail-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_name"
 {
-#line 323 "mn-gmail-mailbox.gob"
+#line 317 "mn-gmail-mailbox.gob"
 	
     if (username)
       return g_str_has_suffix(username, "@gmail.com")
@@ -621,5 +598,5 @@ mn_gmail_mailbox_build_name (const char * username)
     else
       return g_strdup("gmail.com");
   }}
-#line 625 "mn-gmail-mailbox.c"
+#line 602 "mn-gmail-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-gmail-mailbox.gob b/src/mn-gmail-mailbox.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-authenticated-mailbox.h"
@@ -45,54 +45,46 @@ requires 2.0.12
 #include "mn-stock.h"
 #include "mn-message.h"
 #include "mn-util.h"
-
-#define DEFAULT_LOCATION	"https://mail.google.com/mail/feed/atom"
 %}
 
 class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 {
   public char *location destroywith g_free;
-  property STRING location (link, flags = MN_MAILBOX_PARAM_PERMANENT);
-
-  public char *runtime_location destroywith g_free;
+  property STRING location (link, flags = CONSTRUCT
+			    | MN_MAILBOX_PARAM_PERMANENT
+			    | MN_MAILBOX_PARAM_REQUIRED,
+			    default_value = "https://mail.google.com/mail/feed/atom");
 
   private GnomeVFSURI *uri unrefwith gnome_vfs_uri_unref;
 
   class_init (class)
   {
     MN_MAILBOX_CLASS(class)->type = "gmail";
+
+    /*
+     * 5 minutes is a good default check delay for remote Gmail
+     * mailboxes.
+     */
+    MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5;
   }
 
-  override (G:Object) GObject *
-    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  init (self)
   {
-    GObject *object;
-    MNMailbox *mailbox;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
-
-    mn_mailbox_set_format(mailbox, "Gmail");
-    mn_mailbox_set_stock_id(mailbox, MN_STOCK_GMAIL);
-
-    return object;
+    mn_mailbox_set_format(MN_MAILBOX(self), "Gmail");
+    mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_GMAIL);
   }
 
   override (MN:Mailbox) void
     seal (MNMailbox *mailbox)
   {
-    Self *self = SELF(mailbox);
-
     PARENT_HANDLER(mailbox);
 
-    self->runtime_location = g_strdup(self->location ? self->location : DEFAULT_LOCATION);
-
     if (! mailbox->runtime_name)
       mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username);
   }
 
   override (MN:Authenticated:Mailbox) void
-    impl_check (MNAuthenticatedMailbox *mailbox)
+    authenticated_check (MNAuthenticatedMailbox *mailbox)
   {
     Self *self = SELF(mailbox);
     GnomeVFSResult result;
@@ -103,14 +95,14 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 
     if (! selfp->uri)
       {
-	selfp->uri = gnome_vfs_uri_new(self->runtime_location);
+	selfp->uri = gnome_vfs_uri_new(self->location);
 	if (! selfp->uri)
 	  {
 	    GDK_THREADS_ENTER();
 
 	    mn_mailbox_set_error(MN_MAILBOX(self), _("invalid feed location"));
 	    /* error is not recoverable, disable the mailbox */
-	    mn_mailbox_set_must_poll(MN_MAILBOX(self), FALSE);
+	    mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
 
 	    gdk_flush();
 	    GDK_THREADS_LEAVE();
@@ -122,7 +114,7 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 	gnome_vfs_uri_set_password(selfp->uri, mailbox->password);
       }
 
-    mn_mailbox_notice(MN_MAILBOX(self), _("retrieving feed from %s"), self->runtime_location);
+    mn_mailbox_notice(MN_MAILBOX(self), _("retrieving feed from %s"), self->location);
 
     result = mn_vfs_read_entire_file_uri(selfp->uri, &atom_size, &atom);
     if (result != GNOME_VFS_OK)
@@ -136,7 +128,7 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 
 	return;
       }
-    
+
     doc = xmlParseMemory(atom, atom_size);
     g_free(atom);
 
@@ -167,12 +159,13 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 
 	      self_parse_entry(node, &sent_time, &id, &from, &subject);
 
-	      messages = g_slist_append(messages, mn_message_new(MN_MAILBOX(self),
-								 NULL,
-								 sent_time,
-								 id,
-								 from,
-								 subject));
+	      messages = g_slist_prepend(messages, mn_message_new(MN_MAILBOX(self),
+								  NULL,
+								  sent_time,
+								  id,
+								  from,
+								  subject,
+								  MN_MESSAGE_NEW));
 
 	      g_free(id);
 	      g_free(from);
@@ -199,7 +192,7 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 
     xmlFreeDoc(doc);
   }
-  
+
   private void
     parse_entry (xmlNode *node (check null),
 		 time_t *sent_time (check null),
@@ -245,14 +238,14 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 #endif
 	}
   }
-  
+
   private char *
     parse_author (xmlNode *node (check null))
   {
     char *from;
     char *name = NULL;
     char *email = NULL;
-	      
+
     for (node = node->children; node != NULL; node = node->next)
       if (node->type == XML_ELEMENT_NODE)
 	{
@@ -274,10 +267,10 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 
     g_free(name);
     g_free(email);
-    
+
     return from;
   }
-  
+
   private time_t
     parse_date (const char *w3c_datetime (check null))
   {
@@ -314,10 +307,11 @@ class MN:Gmail:Mailbox from MN:Authenticated:Mailbox
 
     return t;
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif
   }
-  
+
   public char *
     build_name (const char *username)
   {
diff --git a/src/mn-gmail-mailbox.gob.stamp b/src/mn-gmail-mailbox.gob.stamp
diff --git a/src/mn-gmail-mailbox.h b/src/mn-gmail-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -39,7 +39,6 @@ struct _MNGmailMailbox {
 	MNAuthenticatedMailbox __parent__;
 	/*< public >*/
 	char * location;
-	char * runtime_location;
 	/*< private >*/
 	MNGmailMailboxPrivate *_priv;
 };
diff --git a/src/mn-gmime-stream-vfs-private.h b/src/mn-gmime-stream-vfs-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_GMIME_STREAM_VFS_PRIVATE_H__
 #define __MN_GMIME_STREAM_VFS_PRIVATE_H__
diff --git a/src/mn-gmime-stream-vfs.c b/src/mn-gmime-stream-vfs.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -58,7 +57,7 @@
 #define VFS_CLOSE(stream, fail_retval) \
   VFS_CALL((stream), gnome_vfs_close((stream)->_priv->handle), _("unable to close %s: %s"), (fail_retval))
 
-#line 62 "mn-gmime-stream-vfs.c"
+#line 61 "mn-gmime-stream-vfs.c"
 /* self casting macros */
 #define SELF(x) MN_GMIME_STREAM_VFS(x)
 #define SELF_CONST(x) MN_GMIME_STREAM_VFS_CONST(x)
@@ -144,7 +143,7 @@ ___finalize(GObject *obj_self)
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
 #line 64 "mn-gmime-stream-vfs.gob"
 	if(self->_priv->uri) { g_free ((gpointer) self->_priv->uri); self->_priv->uri = NULL; }
-#line 148 "mn-gmime-stream-vfs.c"
+#line 147 "mn-gmime-stream-vfs.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -186,7 +185,7 @@ mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c G_GNUC_UNUSED)
 	gmime_stream_class->length = ___9_mn_gmime_stream_vfs_length;
 #line 219 "mn-gmime-stream-vfs.gob"
 	gmime_stream_class->substream = ___a_mn_gmime_stream_vfs_substream;
-#line 190 "mn-gmime-stream-vfs.c"
+#line 189 "mn-gmime-stream-vfs.c"
 	g_object_class->finalize = ___finalize;
 }
 #undef __GOB_FUNCTION__
@@ -196,7 +195,7 @@ mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c G_GNUC_UNUSED)
 #line 67 "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 200 "mn-gmime-stream-vfs.c"
+#line 199 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream,___buf,___len) \
 	((GMIME_STREAM_CLASS(parent_class)->read)? \
 		(* GMIME_STREAM_CLASS(parent_class)->read)(___stream,___buf,___len): \
@@ -219,17 +218,17 @@ ___1_mn_gmime_stream_vfs_read (GMimeStream * stream G_GNUC_UNUSED, char * buf, s
 
     VFS_READ(self, buf, len, &bytes_read, -1);
     stream->position += bytes_read;
-    
+
     return bytes_read;
   }}
-#line 226 "mn-gmime-stream-vfs.c"
+#line 225 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 87 "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 233 "mn-gmime-stream-vfs.c"
+#line 232 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream,___buf,___len) \
 	((GMIME_STREAM_CLASS(parent_class)->write)? \
 		(* GMIME_STREAM_CLASS(parent_class)->write)(___stream,___buf,___len): \
@@ -255,14 +254,14 @@ ___2_mn_gmime_stream_vfs_write (GMimeStream * stream G_GNUC_UNUSED, const char *
 
     return bytes_written;
   }}
-#line 259 "mn-gmime-stream-vfs.c"
+#line 258 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 107 "mn-gmime-stream-vfs.gob"
 static int 
 ___3_mn_gmime_stream_vfs_flush (GMimeStream * stream G_GNUC_UNUSED)
-#line 266 "mn-gmime-stream-vfs.c"
+#line 265 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream) \
 	((GMIME_STREAM_CLASS(parent_class)->flush)? \
 		(* GMIME_STREAM_CLASS(parent_class)->flush)(___stream): \
@@ -275,14 +274,14 @@ ___3_mn_gmime_stream_vfs_flush (GMimeStream * stream G_GNUC_UNUSED)
     /* nop */
     return 0;			/* success */
   }}
-#line 279 "mn-gmime-stream-vfs.c"
+#line 278 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 114 "mn-gmime-stream-vfs.gob"
 static int 
 ___4_mn_gmime_stream_vfs_close (GMimeStream * stream G_GNUC_UNUSED)
-#line 286 "mn-gmime-stream-vfs.c"
+#line 285 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream) \
 	((GMIME_STREAM_CLASS(parent_class)->close)? \
 		(* GMIME_STREAM_CLASS(parent_class)->close)(___stream): \
@@ -298,14 +297,14 @@ ___4_mn_gmime_stream_vfs_close (GMimeStream * stream G_GNUC_UNUSED)
 
     return 0;			/* success */
   }}
-#line 302 "mn-gmime-stream-vfs.c"
+#line 301 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 124 "mn-gmime-stream-vfs.gob"
 static gboolean 
 ___5_mn_gmime_stream_vfs_eos (GMimeStream * stream G_GNUC_UNUSED)
-#line 309 "mn-gmime-stream-vfs.c"
+#line 308 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream) \
 	((GMIME_STREAM_CLASS(parent_class)->eos)? \
 		(* GMIME_STREAM_CLASS(parent_class)->eos)(___stream): \
@@ -322,14 +321,14 @@ ___5_mn_gmime_stream_vfs_eos (GMimeStream * stream G_GNUC_UNUSED)
     else
       return stream->position >= stream->bound_end;
   }}
-#line 326 "mn-gmime-stream-vfs.c"
+#line 325 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 135 "mn-gmime-stream-vfs.gob"
 static int 
 ___6_mn_gmime_stream_vfs_reset (GMimeStream * stream G_GNUC_UNUSED)
-#line 333 "mn-gmime-stream-vfs.c"
+#line 332 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream) \
 	((GMIME_STREAM_CLASS(parent_class)->reset)? \
 		(* GMIME_STREAM_CLASS(parent_class)->reset)(___stream): \
@@ -349,14 +348,14 @@ ___6_mn_gmime_stream_vfs_reset (GMimeStream * stream G_GNUC_UNUSED)
 
     return 0;
   }}
-#line 353 "mn-gmime-stream-vfs.c"
+#line 352 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 149 "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 360 "mn-gmime-stream-vfs.c"
+#line 359 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream,___offset,___whence) \
 	((GMIME_STREAM_CLASS(parent_class)->seek)? \
 		(* GMIME_STREAM_CLASS(parent_class)->seek)(___stream,___offset,___whence): \
@@ -391,13 +390,13 @@ ___7_mn_gmime_stream_vfs_seek (GMimeStream * stream G_GNUC_UNUSED, off_t offset,
 	    if (real < stream->bound_start)
 	      real = stream->bound_start;
 	    stream->position = real;
-	    
+
 	    return real;
 	  }
 	real = stream->bound_end + offset;
 	break;
       }
-    
+
     if (stream->bound_end != -1)
       real = MIN(real, stream->bound_end);
     real = MAX(real, stream->bound_start);
@@ -407,14 +406,14 @@ ___7_mn_gmime_stream_vfs_seek (GMimeStream * stream G_GNUC_UNUSED, off_t offset,
 
     return real;
   }}
-#line 411 "mn-gmime-stream-vfs.c"
+#line 410 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 194 "mn-gmime-stream-vfs.gob"
 static off_t 
 ___8_mn_gmime_stream_vfs_tell (GMimeStream * stream G_GNUC_UNUSED)
-#line 418 "mn-gmime-stream-vfs.c"
+#line 417 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream) \
 	((GMIME_STREAM_CLASS(parent_class)->tell)? \
 		(* GMIME_STREAM_CLASS(parent_class)->tell)(___stream): \
@@ -426,14 +425,14 @@ ___8_mn_gmime_stream_vfs_tell (GMimeStream * stream G_GNUC_UNUSED)
 	
     return stream->position;
   }}
-#line 430 "mn-gmime-stream-vfs.c"
+#line 429 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 200 "mn-gmime-stream-vfs.gob"
 static ssize_t 
 ___9_mn_gmime_stream_vfs_length (GMimeStream * stream G_GNUC_UNUSED)
-#line 437 "mn-gmime-stream-vfs.c"
+#line 436 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream) \
 	((GMIME_STREAM_CLASS(parent_class)->length)? \
 		(* GMIME_STREAM_CLASS(parent_class)->length)(___stream): \
@@ -452,20 +451,20 @@ ___9_mn_gmime_stream_vfs_length (GMimeStream * stream G_GNUC_UNUSED)
     VFS_SEEK(self, GNOME_VFS_SEEK_END, 0, -1);
     VFS_TELL(self, &bound_end, -1);
     VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
-    
+
     if (bound_end < stream->bound_start)
       return -1;
-    
+
     return bound_end - stream->bound_start;
   }}
-#line 462 "mn-gmime-stream-vfs.c"
+#line 461 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 219 "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 469 "mn-gmime-stream-vfs.c"
+#line 468 "mn-gmime-stream-vfs.c"
 #define PARENT_HANDLER(___stream,___start,___end) \
 	((GMIME_STREAM_CLASS(parent_class)->substream)? \
 		(* GMIME_STREAM_CLASS(parent_class)->substream)(___stream,___start,___end): \
@@ -484,21 +483,21 @@ ___a_mn_gmime_stream_vfs_substream (GMimeStream * stream G_GNUC_UNUSED, off_t st
 
     return GMIME_STREAM(self);
   }}
-#line 488 "mn-gmime-stream-vfs.c"
+#line 487 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 232 "mn-gmime-stream-vfs.gob"
 GMimeStream * 
 mn_gmime_stream_vfs_new (GnomeVFSHandle * handle, GnomeVFSURI * uri, GnomeVFSResult * result)
-#line 495 "mn-gmime-stream-vfs.c"
+#line 494 "mn-gmime-stream-vfs.c"
 {
 #define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::new"
 #line 232 "mn-gmime-stream-vfs.gob"
 	g_return_val_if_fail (handle != NULL, (GMimeStream * )0);
 #line 232 "mn-gmime-stream-vfs.gob"
 	g_return_val_if_fail (uri != NULL, (GMimeStream * )0);
-#line 502 "mn-gmime-stream-vfs.c"
+#line 501 "mn-gmime-stream-vfs.c"
 {
 #line 236 "mn-gmime-stream-vfs.gob"
 	
@@ -532,10 +531,10 @@ mn_gmime_stream_vfs_new (GnomeVFSHandle * handle, GnomeVFSURI * uri, GnomeVFSRes
 	self = GET_NEW;
 	selfp->handle = handle;
 	selfp->uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE);
-    
+
 	stream = GMIME_STREAM(self);
 	g_mime_stream_construct(stream, current_position, -1);
-    
+
 	/* check for EOF */
 	if (g_mime_stream_length(stream) <= 0)
 	  selfp->eof = TRUE;
@@ -546,5 +545,5 @@ mn_gmime_stream_vfs_new (GnomeVFSHandle * handle, GnomeVFSURI * uri, GnomeVFSRes
 
     return stream;
   }}
-#line 550 "mn-gmime-stream-vfs.c"
+#line 549 "mn-gmime-stream-vfs.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-gmime-stream-vfs.gob b/src/mn-gmime-stream-vfs.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <libgnomevfs/gnome-vfs.h>
@@ -80,7 +80,7 @@ class MN:GMime:Stream:VFS from GMime:Stream
 
     VFS_READ(self, buf, len, &bytes_read, -1);
     stream->position += bytes_read;
-    
+
     return bytes_read;
   }
 
@@ -110,7 +110,7 @@ class MN:GMime:Stream:VFS from GMime:Stream
     /* nop */
     return 0;			/* success */
   }
-  
+
   override (GMime:Stream) int
     close (GMimeStream *stream)
   {
@@ -174,13 +174,13 @@ class MN:GMime:Stream:VFS from GMime:Stream
 	    if (real < stream->bound_start)
 	      real = stream->bound_start;
 	    stream->position = real;
-	    
+
 	    return real;
 	  }
 	real = stream->bound_end + offset;
 	break;
       }
-    
+
     if (stream->bound_end != -1)
       real = MIN(real, stream->bound_end);
     real = MAX(real, stream->bound_start);
@@ -190,13 +190,13 @@ class MN:GMime:Stream:VFS from GMime:Stream
 
     return real;
   }
-  
+
   override (GMime:Stream) off_t
     tell (GMimeStream *stream)
   {
     return stream->position;
   }
-  
+
   override (GMime:Stream) ssize_t
     length (GMimeStream *stream)
   {
@@ -209,10 +209,10 @@ class MN:GMime:Stream:VFS from GMime:Stream
     VFS_SEEK(self, GNOME_VFS_SEEK_END, 0, -1);
     VFS_TELL(self, &bound_end, -1);
     VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
-    
+
     if (bound_end < stream->bound_start)
       return -1;
-    
+
     return bound_end - stream->bound_start;
   }
 
@@ -264,10 +264,10 @@ class MN:GMime:Stream:VFS from GMime:Stream
 	self = GET_NEW;
 	selfp->handle = handle;
 	selfp->uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE);
-    
+
 	stream = GMIME_STREAM(self);
 	g_mime_stream_construct(stream, current_position, -1);
-    
+
 	/* check for EOF */
 	if (g_mime_stream_length(stream) <= 0)
 	  selfp->eof = TRUE;
diff --git a/src/mn-gmime-stream-vfs.gob.stamp b/src/mn-gmime-stream-vfs.gob.stamp
diff --git a/src/mn-gmime-stream-vfs.h b/src/mn-gmime-stream-vfs.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-imap-mailbox-private.h b/src/mn-imap-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_IMAP_MAILBOX_PRIVATE_H__
 #define __MN_IMAP_MAILBOX_PRIVATE_H__
@@ -16,12 +16,12 @@ extern "C" {
 
 #line 18 "mn-imap-mailbox-private.h"
 struct _MNIMAPMailboxPrivate {
-#line 153 "mn-imap-mailbox.gob"
+#line 160 "mn-imap-mailbox.gob"
 	int removed;
-#line 155 "mn-imap-mailbox.gob"
+#line 163 "mn-imap-mailbox.gob"
+	GMutex * mutex;
+#line 165 "mn-imap-mailbox.gob"
 	MNClientSessionPrivate * idle_session;
-#line 156 "mn-imap-mailbox.gob"
-	GMutex * idle_session_mutex;
 #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
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-imap-mailbox-properties.c b/src/mn-imap-mailbox-properties.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -35,7 +34,7 @@
 #include "mn-util.h"
 #include "mn-properties-dialog.h"
 
-#line 39 "mn-imap-mailbox-properties.c"
+#line 38 "mn-imap-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_IMAP_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_IMAP_MAILBOX_PROPERTIES_CONST(x)
@@ -127,7 +126,7 @@ ___finalize(GObject *obj_self)
 #line 98 "mn-imap-mailbox-properties.gob"
 static void 
 mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 131 "mn-imap-mailbox-properties.c"
+#line 130 "mn-imap-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -137,11 +136,11 @@ mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GN
 
 	parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX_PROPERTIES);
 
-#line 205 "mn-imap-mailbox-properties.gob"
+#line 206 "mn-imap-mailbox-properties.gob"
 	mn_mailbox_properties_class->set_mailbox = ___5_mn_imap_mailbox_properties_set_mailbox;
-#line 224 "mn-imap-mailbox-properties.gob"
+#line 225 "mn-imap-mailbox-properties.gob"
 	mn_mailbox_properties_class->get_mailbox = ___6_mn_imap_mailbox_properties_get_mailbox;
-#line 145 "mn-imap-mailbox-properties.c"
+#line 144 "mn-imap-mailbox-properties.c"
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
     {
@@ -160,31 +159,32 @@ mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GN
     p_class->type = "imap";
     p_class->combo_label = "IMAP";
   
-#line 164 "mn-imap-mailbox-properties.c"
+#line 163 "mn-imap-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
 #line 106 "mn-imap-mailbox-properties.gob"
 static void 
 mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * self G_GNUC_UNUSED)
-#line 171 "mn-imap-mailbox-properties.c"
+#line 170 "mn-imap-mailbox-properties.c"
 {
 #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"
 
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
     GtkWidget *hbox;
     GtkWidget *label;
     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);
 
     selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("in_box"));
-    
+
     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);
@@ -204,11 +204,11 @@ mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * self G_GNUC_UNUSED)
     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);
-    
+
     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"));
-    
+
     /* by default, autodetect is enabled */
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT]), TRUE);
 
@@ -217,7 +217,7 @@ mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * self G_GNUC_UNUSED)
     for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
       gtk_spin_button_set_value(GTK_SPIN_BUTTON(pi->port_spin[i]), mn_imap_mailbox_default_ports[i]);
 
-    mn_mailbox_properties_add_entry(MN_MAILBOX_PROPERTIES(self), GTK_ENTRY(selfp->mailbox_entry));
+    properties->entries = g_slist_append(properties->entries, selfp->mailbox_entry);
 
     g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
     g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
@@ -253,13 +253,13 @@ ___object_get_property (GObject *object,
       const char *hostname;
       gboolean other_active;
       const char *mailbox;
-      
+
       mn_pi_mailbox_properties_get_contents(pi,
 					    NULL,
 					    NULL,
 					    &hostname,
 					    NULL);
-      
+
       other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio));
       mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry));
 
@@ -314,21 +314,21 @@ ___object_get_property (GObject *object,
 
 
 
-#line 162 "mn-imap-mailbox-properties.gob"
+#line 163 "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"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::add_idle_usage"
-#line 162 "mn-imap-mailbox-properties.gob"
+#line 163 "mn-imap-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 162 "mn-imap-mailbox-properties.gob"
+#line 163 "mn-imap-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_IMAP_MAILBOX_PROPERTIES (self));
-#line 162 "mn-imap-mailbox-properties.gob"
+#line 163 "mn-imap-mailbox-properties.gob"
 	g_return_if_fail (mnemonic != NULL);
 #line 330 "mn-imap-mailbox-properties.c"
 {
-#line 166 "mn-imap-mailbox-properties.gob"
+#line 167 "mn-imap-mailbox-properties.gob"
 	
     MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
     GtkWidget *label;
@@ -359,14 +359,14 @@ mn_imap_mailbox_properties_add_idle_usage (MNIMAPMailboxProperties * self, MNIMA
 #line 360 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 194 "mn-imap-mailbox-properties.gob"
+#line 195 "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"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::radio_toggled_h"
 {
-#line 196 "mn-imap-mailbox-properties.gob"
+#line 197 "mn-imap-mailbox-properties.gob"
 	
     Self *self = user_data;
 
@@ -378,7 +378,7 @@ mn_imap_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpoi
 #line 379 "mn-imap-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 205 "mn-imap-mailbox-properties.gob"
+#line 206 "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"
@@ -388,19 +388,19 @@ ___5_mn_imap_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::set_mailbox"
 {
-#line 207 "mn-imap-mailbox-properties.gob"
+#line 208 "mn-imap-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNIMAPMailbox *imap_mailbox = MN_IMAP_MAILBOX(mailbox);
 
     PARENT_HANDLER(properties, mailbox);
 
-    if (! mn_utf8_strcasecmp(imap_mailbox->runtime_mailbox, "INBOX"))
+    if (! mn_utf8_strcasecmp(imap_mailbox->mailbox, "INBOX"))
       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->inbox_radio), TRUE);
     else
       {
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->other_radio), TRUE);
-	gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_entry), imap_mailbox->runtime_mailbox);
+	gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_entry), imap_mailbox->mailbox);
       }
 
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[imap_mailbox->use_idle_extension]), TRUE);
@@ -409,7 +409,7 @@ ___5_mn_imap_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 224 "mn-imap-mailbox-properties.gob"
+#line 225 "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"
@@ -420,7 +420,7 @@ ___6_mn_imap_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::get_mailbox"
 {
-#line 226 "mn-imap-mailbox-properties.gob"
+#line 227 "mn-imap-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNIMAPMailboxUseIDLE use_idle;
@@ -431,11 +431,11 @@ ___6_mn_imap_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_
     for (use_idle = 0; use_idle < MN_IMAP_MAILBOX_N_USE_IDLE; use_idle++)
       if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[use_idle])))
 	break;
-    
-    g_object_set(mailbox, "use-idle-extension", use_idle, NULL);
+
+    g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(use_idle), NULL);
 
     if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)))
-      g_object_set(mailbox, "mailbox", gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry)), NULL);
+      g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_MAILBOX((char *) gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry))), NULL);
 
     return mailbox;
   }}
diff --git a/src/mn-imap-mailbox-properties.gob b/src/mn-imap-mailbox-properties.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-pi-mailbox-properties.h"
@@ -53,13 +53,13 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
       const char *hostname;
       gboolean other_active;
       const char *mailbox;
-      
+
       mn_pi_mailbox_properties_get_contents(pi,
 					    NULL,
 					    NULL,
 					    &hostname,
 					    NULL);
-      
+
       other_active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio));
       mailbox = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry));
 
@@ -71,7 +71,7 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
 
       g_value_set_boolean(VAL, complete);
     };
-  
+
   property STRING default_name (override)
     get
     {
@@ -105,17 +105,18 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
 
   init (self)
   {
+    MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
     GtkWidget *hbox;
     GtkWidget *label;
     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);
 
     selfp->inbox_radio = gtk_radio_button_new_with_mnemonic(NULL, _("in_box"));
-    
+
     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);
@@ -135,11 +136,11 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
     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);
-    
+
     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"));
-    
+
     /* by default, autodetect is enabled */
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT]), TRUE);
 
@@ -148,7 +149,7 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
     for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
       gtk_spin_button_set_value(GTK_SPIN_BUTTON(pi->port_spin[i]), mn_imap_mailbox_default_ports[i]);
 
-    mn_mailbox_properties_add_entry(MN_MAILBOX_PROPERTIES(self), GTK_ENTRY(selfp->mailbox_entry));
+    properties->entries = g_slist_append(properties->entries, selfp->mailbox_entry);
 
     g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
     g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
@@ -158,7 +159,7 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
 		     "swapped-signal::changed", mn_mailbox_properties_notify_default_name, self,
 		     NULL);
   }
-  
+
   private void
     add_idle_usage (self,
 		    MNIMAPMailboxUseIDLE usage,
@@ -190,7 +191,7 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
 
     gtk_size_group_add_widget(pi->details_size_group, label);
   }
-  
+
   private void
     radio_toggled_h (GtkToggleButton *togglebutton, gpointer user_data)
   {
@@ -201,7 +202,7 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
     g_object_notify(G_OBJECT(self), "complete");
     g_object_notify(G_OBJECT(self), "default-name");
   }
-  
+
   override (MN:Mailbox:Properties) void
     set_mailbox (MNMailboxProperties *properties, MN:Mailbox *mailbox)
   {
@@ -210,12 +211,12 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
 
     PARENT_HANDLER(properties, mailbox);
 
-    if (! mn_utf8_strcasecmp(imap_mailbox->runtime_mailbox, "INBOX"))
+    if (! mn_utf8_strcasecmp(imap_mailbox->mailbox, "INBOX"))
       gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->inbox_radio), TRUE);
     else
       {
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->other_radio), TRUE);
-	gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_entry), imap_mailbox->runtime_mailbox);
+	gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_entry), imap_mailbox->mailbox);
       }
 
     gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[imap_mailbox->use_idle_extension]), TRUE);
@@ -233,11 +234,11 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties
     for (use_idle = 0; use_idle < MN_IMAP_MAILBOX_N_USE_IDLE; use_idle++)
       if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->use_idle_radio[use_idle])))
 	break;
-    
-    g_object_set(mailbox, "use-idle-extension", use_idle, NULL);
+
+    g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(use_idle), NULL);
 
     if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)))
-      g_object_set(mailbox, "mailbox", gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry)), NULL);
+      g_object_set(mailbox, MN_IMAP_MAILBOX_PROP_MAILBOX((char *) gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_entry))), NULL);
 
     return mailbox;
   }
diff --git a/src/mn-imap-mailbox-properties.gob.stamp b/src/mn-imap-mailbox-properties.gob.stamp
diff --git a/src/mn-imap-mailbox-properties.h b/src/mn-imap-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-imap-mailbox.c b/src/mn-imap-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -50,64 +49,65 @@ enum
 {
   STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE,
   STATE_CAPABILITY,
-#ifdef WITH_SSL
+#if WITH_SSL
   STATE_STARTTLS,
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
   STATE_AUTHENTICATE,
 #endif
   STATE_LOGIN,
   STATE_EXAMINE,
-  STATE_SEARCH,
+  STATE_SEARCH_UNSEEN,
+  STATE_SEARCH_RECENT,
   STATE_FETCH,
   STATE_IDLE,
   STATE_LOGOUT
 };
-  
+
 typedef enum
 {
-  IDLE_STATE_NORMAL,
-  IDLE_STATE_IDLING,
-  IDLE_STATE_WAS_IDLING
+  IDLE_STATE_PRE_IDLE,
+  IDLE_STATE_IDLE,
+  IDLE_STATE_POST_IDLE
 } IdleState;
 
 struct _MNClientSessionPrivate
 {
-  MNMailbox			*mailbox;
-  MNAuthenticatedMailbox	*authenticated_mailbox;
-  MNPIMailbox			*pi_mailbox;
+  MN_PI_MAILBOX_SESSION_PRIVATE;
   MNIMAPMailbox			*self;
-  MNClientSession		*session;
 
   const char			*server_software;
   gboolean			server_software_supports_idle;
-  
+
   int				numeric_tag;
   char				tag[5];
 
   char				**capabilities;
   GSList			*auth_mechanisms;
   gboolean			authenticated;
-  
+
   gboolean			search_received;
-  GSList			*fetch_numbers;
-  char				*fetch_set;
-  
-  GSList			*received_numbers;
+
+  GHashTable			*unseen_numbers;
+  GHashTable			*recent_numbers;
+  GHashTable			*received_numbers;
+
   GSList			*messages;
 
-#ifdef WITH_SSL
+#if WITH_SSL
   gboolean			starttls_completed;
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
   GSList			*sasl_remaining_mechanisms;
   const char			*sasl_mechanism;
 #endif
 
   IdleState			idle_state;
+  unsigned int			idle_inactivity_timeout_id;
+  gboolean			idle_inactivity;
   gboolean			could_idle;	/* could idle at least once */
 };
-  
+
 struct _MNClientSessionResponse
 {
   char		*continuation;
@@ -117,12 +117,18 @@ struct _MNClientSessionResponse
   char		*arguments;
 };
 
+typedef struct
+{
+  MNClientSessionPrivate	*priv;
+  gboolean			error;
+} CheckReceivedInfo;
+
 int mn_imap_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES] = { 143, 143, 993 };
 
 /* variable taken from Evolution (camel-utf8.c) */
 static char *utf7_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+,";
 
-#line 126 "mn-imap-mailbox.c"
+#line 132 "mn-imap-mailbox.c"
 static const GEnumValue _mn_imap_mailbox_use_idle_values[] = {
 	{ MN_IMAP_MAILBOX_USE_IDLE_NEVER, (char *)"MN_IMAP_MAILBOX_USE_IDLE_NEVER", (char *)"never" },
 	{ MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT, (char *)"MN_IMAP_MAILBOX_USE_IDLE_AUTODETECT", (char *)"autodetect" },
@@ -155,9 +161,8 @@ typedef MNIMAPMailboxClass 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_imap_mailbox_init (MNIMAPMailbox * o) G_GNUC_UNUSED;
 static void mn_imap_mailbox_class_init (MNIMAPMailboxClass * class) G_GNUC_UNUSED;
-static GObject * ___2_mn_imap_mailbox_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void mn_imap_mailbox_init (MNIMAPMailbox * self) G_GNUC_UNUSED;
 static void ___3_mn_imap_mailbox_seal (MNMailbox * mailbox) G_GNUC_UNUSED;
 static MNMailbox * ___4_mn_imap_mailbox_parse_uri (MNMailbox * dummy, const char * uri) G_GNUC_UNUSED;
 static gboolean mn_imap_mailbox_split_uri_location (const char * location, int maxlen, char * hostport, char * path, gboolean * has_path) G_GNUC_UNUSED;
@@ -167,30 +172,31 @@ static int mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNCli
 static int mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void mn_imap_mailbox_sasl_get_credentials_cb (MNClientSession * session, MNClientSessionPrivate * priv, const char ** username, const char ** password) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static int mn_imap_mailbox_enter_search_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static int mn_imap_mailbox_handle_search_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_enter_search_unseen_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_handle_search_unseen_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_enter_search_recent_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_handle_search_recent_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static void mn_imap_mailbox_build_fetch_set_cb (gpointer key, gpointer value, gpointer user_data) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static void mn_imap_mailbox_check_received_cb (gpointer key, gpointer value, gpointer user_data) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void ___1b_mn_imap_mailbox_impl_check (MNAuthenticatedMailbox * mailbox) G_GNUC_UNUSED;
-static void mn_imap_mailbox_notice_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void mn_imap_mailbox_warning_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static void ___1e_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox) G_GNUC_UNUSED;
 static MNClientSessionResponse * mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static void mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_default_handler (MNClientSessionResponse * response, MNClientSessionPrivate * priv, int error_code_when_bye) G_GNUC_UNUSED;
 static void mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static void mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void mn_imap_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, int code, MNClientSessionResponse * response) G_GNUC_UNUSED;
+static gboolean mn_imap_mailbox_idle_inactivity_timeout_cb (gpointer data) G_GNUC_UNUSED;
 static int mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...) G_GNUC_UNUSED;
 static gboolean mn_imap_mailbox_handle_capability_code (MNClientSessionPrivate * priv, MNClientSessionResponse * response) G_GNUC_UNUSED;
 static void mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities) G_GNUC_UNUSED;
@@ -199,6 +205,8 @@ static int mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * pr
 static int mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_login) G_GNUC_UNUSED;
 static void mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSessionResponse * greeting_response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_session_enter_search (MNClientSession * session, MNClientSessionPrivate * priv, const char * what, GHashTable ** numbers) G_GNUC_UNUSED;
+static int mn_imap_mailbox_session_handle_search (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv, GHashTable * numbers) G_GNUC_UNUSED;
 static char * mn_imap_mailbox_quote (const char * str) G_GNUC_UNUSED;
 static char * mn_imap_mailbox_utf8_to_imap_utf7 (const char * str) G_GNUC_UNUSED;
 static void mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i) G_GNUC_UNUSED;
@@ -219,29 +227,30 @@ static MNPIMailboxClass *parent_class = NULL;
 #define self_handle_capability_cb mn_imap_mailbox_handle_capability_cb
 #define self_enter_starttls_cb mn_imap_mailbox_enter_starttls_cb
 #define self_handle_starttls_cb mn_imap_mailbox_handle_starttls_cb
-#define self_sasl_get_credentials_cb mn_imap_mailbox_sasl_get_credentials_cb
 #define self_enter_authenticate_cb mn_imap_mailbox_enter_authenticate_cb
 #define self_handle_authenticate_cb mn_imap_mailbox_handle_authenticate_cb
 #define self_enter_login_cb mn_imap_mailbox_enter_login_cb
 #define self_handle_login_cb mn_imap_mailbox_handle_login_cb
 #define self_enter_examine_cb mn_imap_mailbox_enter_examine_cb
 #define self_handle_examine_cb mn_imap_mailbox_handle_examine_cb
-#define self_enter_search_cb mn_imap_mailbox_enter_search_cb
-#define self_handle_search_cb mn_imap_mailbox_handle_search_cb
+#define self_enter_search_unseen_cb mn_imap_mailbox_enter_search_unseen_cb
+#define self_handle_search_unseen_cb mn_imap_mailbox_handle_search_unseen_cb
+#define self_enter_search_recent_cb mn_imap_mailbox_enter_search_recent_cb
+#define self_handle_search_recent_cb mn_imap_mailbox_handle_search_recent_cb
 #define self_enter_fetch_cb mn_imap_mailbox_enter_fetch_cb
+#define self_build_fetch_set_cb mn_imap_mailbox_build_fetch_set_cb
 #define self_handle_fetch_cb mn_imap_mailbox_handle_fetch_cb
+#define self_check_received_cb mn_imap_mailbox_check_received_cb
 #define self_enter_idle_cb mn_imap_mailbox_enter_idle_cb
 #define self_handle_idle_cb mn_imap_mailbox_handle_idle_cb
 #define self_enter_logout_cb mn_imap_mailbox_enter_logout_cb
 #define self_handle_logout_cb mn_imap_mailbox_handle_logout_cb
-#define self_notice_cb mn_imap_mailbox_notice_cb
-#define self_warning_cb mn_imap_mailbox_warning_cb
 #define self_response_new_cb mn_imap_mailbox_response_new_cb
 #define self_response_free_cb mn_imap_mailbox_response_free_cb
 #define self_default_handler mn_imap_mailbox_default_handler
 #define self_pre_read_cb mn_imap_mailbox_pre_read_cb
 #define self_post_read_cb mn_imap_mailbox_post_read_cb
-#define self_session_set_error_from_arguments mn_imap_mailbox_session_set_error_from_arguments
+#define self_idle_inactivity_timeout_cb mn_imap_mailbox_idle_inactivity_timeout_cb
 #define self_session_write mn_imap_mailbox_session_write
 #define self_handle_capability_code mn_imap_mailbox_handle_capability_code
 #define self_session_parse_capabilities mn_imap_mailbox_session_parse_capabilities
@@ -250,6 +259,8 @@ static MNPIMailboxClass *parent_class = NULL;
 #define self_session_authenticate mn_imap_mailbox_session_authenticate
 #define self_session_authenticate_fallback mn_imap_mailbox_session_authenticate_fallback
 #define self_session_detect_imapd mn_imap_mailbox_session_detect_imapd
+#define self_session_enter_search mn_imap_mailbox_session_enter_search
+#define self_session_handle_search mn_imap_mailbox_session_handle_search
 #define self_quote mn_imap_mailbox_quote
 #define self_utf8_to_imap_utf7 mn_imap_mailbox_utf8_to_imap_utf7
 #define self_imap_utf7_closeb64 mn_imap_mailbox_imap_utf7_closeb64
@@ -305,32 +316,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 156 "mn-imap-mailbox.gob"
-	if(self->_priv->idle_session_mutex) { g_mutex_free ((gpointer) self->_priv->idle_session_mutex); self->_priv->idle_session_mutex = NULL; }
-#line 311 "mn-imap-mailbox.c"
-#line 158 "mn-imap-mailbox.gob"
+#line 163 "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"
 	if(self->mailbox) { g_free ((gpointer) self->mailbox); self->mailbox = NULL; }
-#line 314 "mn-imap-mailbox.c"
-#line 165 "mn-imap-mailbox.gob"
-	if(self->runtime_mailbox) { g_free ((gpointer) self->runtime_mailbox); self->runtime_mailbox = NULL; }
-#line 317 "mn-imap-mailbox.c"
+#line 325 "mn-imap-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
-static void 
-mn_imap_mailbox_init (MNIMAPMailbox * o G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::init"
-	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_IMAP_MAILBOX,MNIMAPMailboxPrivate);
-#line 156 "mn-imap-mailbox.gob"
-	o->_priv->idle_session_mutex = g_mutex_new();
-#line 328 "mn-imap-mailbox.c"
-}
-#undef __GOB_FUNCTION__
-#line 174 "mn-imap-mailbox.gob"
+#line 182 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
-#line 334 "mn-imap-mailbox.c"
+#line 332 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -341,17 +339,15 @@ mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX);
 
-#line 180 "mn-imap-mailbox.gob"
-	g_object_class->constructor = ___2_mn_imap_mailbox_constructor;
-#line 194 "mn-imap-mailbox.gob"
+#line 193 "mn-imap-mailbox.gob"
 	mn_mailbox_class->seal = ___3_mn_imap_mailbox_seal;
-#line 216 "mn-imap-mailbox.gob"
+#line 213 "mn-imap-mailbox.gob"
 	mn_mailbox_class->parse_uri = ___4_mn_imap_mailbox_parse_uri;
-#line 317 "mn-imap-mailbox.gob"
+#line 314 "mn-imap-mailbox.gob"
 	mn_mailbox_class->removed = ___6_mn_imap_mailbox_removed;
-#line 1012 "mn-imap-mailbox.gob"
-	mn_authenticated_mailbox_class->impl_check = ___1b_mn_imap_mailbox_impl_check;
-#line 355 "mn-imap-mailbox.c"
+#line 1008 "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;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
@@ -363,7 +359,7 @@ mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
 		 NULL /* nick */,
 		 NULL /* blurb */,
 		 "INBOX" /* default_value */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_IGNORE_CASE | MN_MAILBOX_PARAM_PERMANENT | G_PARAM_CONSTRUCT));
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_IGNORE_CASE | MN_MAILBOX_PARAM_REQUIRED | MN_MAILBOX_PARAM_PERMANENT | G_PARAM_CONSTRUCT));
 	g_object_class_install_property (g_object_class,
 		PROP_MAILBOX,
 		param_spec);
@@ -379,12 +375,31 @@ mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
 		param_spec);
     }
  {
-#line 175 "mn-imap-mailbox.gob"
+#line 183 "mn-imap-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "imap";
     MN_PI_MAILBOX_CLASS(class)->default_ports = mn_imap_mailbox_default_ports;
   
-#line 388 "mn-imap-mailbox.c"
+#line 384 "mn-imap-mailbox.c"
+ }
+}
+#undef __GOB_FUNCTION__
+#line 188 "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"
+	self->_priv->mutex = g_mutex_new();
+#line 397 "mn-imap-mailbox.c"
+ {
+#line 189 "mn-imap-mailbox.gob"
+
+    mn_mailbox_set_format(MN_MAILBOX(self), "IMAP");
+  
+#line 403 "mn-imap-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -403,16 +418,16 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX:
 		{
-#line 159 "mn-imap-mailbox.gob"
+#line 168 "mn-imap-mailbox.gob"
 { char *old = self->mailbox; self->mailbox = g_value_dup_string (VAL); g_free (old); }
-#line 409 "mn-imap-mailbox.c"
+#line 424 "mn-imap-mailbox.c"
 		}
 		break;
 	case PROP_USE_IDLE_EXTENSION:
 		{
-#line 168 "mn-imap-mailbox.gob"
+#line 176 "mn-imap-mailbox.gob"
 self->use_idle_extension = g_value_get_enum (VAL);
-#line 416 "mn-imap-mailbox.c"
+#line 431 "mn-imap-mailbox.c"
 		}
 		break;
 	default:
@@ -441,16 +456,16 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX:
 		{
-#line 159 "mn-imap-mailbox.gob"
+#line 168 "mn-imap-mailbox.gob"
 g_value_set_string (VAL, self->mailbox);
-#line 447 "mn-imap-mailbox.c"
+#line 462 "mn-imap-mailbox.c"
 		}
 		break;
 	case PROP_USE_IDLE_EXTENSION:
 		{
-#line 168 "mn-imap-mailbox.gob"
+#line 176 "mn-imap-mailbox.gob"
 g_value_set_enum (VAL, self->use_idle_extension);
-#line 454 "mn-imap-mailbox.c"
+#line 469 "mn-imap-mailbox.c"
 		}
 		break;
 	default:
@@ -467,64 +482,35 @@ g_value_set_enum (VAL, self->use_idle_extension);
 
 
 
-#line 180 "mn-imap-mailbox.gob"
-static GObject * 
-___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 474 "mn-imap-mailbox.c"
-#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
-	((G_OBJECT_CLASS(parent_class)->constructor)? \
-		(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
-		((GObject * )0))
-{
-#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::constructor"
-{
-#line 182 "mn-imap-mailbox.gob"
-	
-    GObject *object;
-    MNMailbox *mailbox;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
-    
-    mn_mailbox_set_format(mailbox, "IMAP");
-
-    return object;
-  }}
-#line 494 "mn-imap-mailbox.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 194 "mn-imap-mailbox.gob"
+#line 193 "mn-imap-mailbox.gob"
 static void 
 ___3_mn_imap_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 501 "mn-imap-mailbox.c"
+#line 489 "mn-imap-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->seal) \
 		(* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::seal"
 {
-#line 196 "mn-imap-mailbox.gob"
+#line 195 "mn-imap-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
     PARENT_HANDLER(mailbox);
 
-    self->runtime_mailbox = g_strdup(self->mailbox ? self->mailbox : "INBOX");
-
     if (! mailbox->runtime_name)
       mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username,
 					      MN_PI_MAILBOX(mailbox)->hostname,
-					      self->runtime_mailbox);
+					      self->mailbox);
   }}
-#line 521 "mn-imap-mailbox.c"
+#line 507 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 216 "mn-imap-mailbox.gob"
+#line 213 "mn-imap-mailbox.gob"
 static MNMailbox * 
 ___4_mn_imap_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri)
-#line 528 "mn-imap-mailbox.c"
+#line 514 "mn-imap-mailbox.c"
 #define PARENT_HANDLER(___dummy,___uri) \
 	((MN_MAILBOX_CLASS(parent_class)->parse_uri)? \
 		(* MN_MAILBOX_CLASS(parent_class)->parse_uri)(___dummy,___uri): \
@@ -532,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 218 "mn-imap-mailbox.gob"
+#line 215 "mn-imap-mailbox.gob"
 	
     int len;
     int buflen;
@@ -545,7 +531,7 @@ ___4_mn_imap_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * ur
 
     len = strlen(uri);
     buflen = len + 1;
-    
+
     {
       char scheme_buf[buflen];
       char auth_buf[buflen];
@@ -604,27 +590,27 @@ ___4_mn_imap_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * ur
 
     return mailbox;
   }}
-#line 608 "mn-imap-mailbox.c"
+#line 594 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 290 "mn-imap-mailbox.gob"
+#line 287 "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 615 "mn-imap-mailbox.c"
+#line 601 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::split_uri_location"
-#line 290 "mn-imap-mailbox.gob"
+#line 287 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (location != NULL, (gboolean )0);
-#line 290 "mn-imap-mailbox.gob"
+#line 287 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (hostport != NULL, (gboolean )0);
-#line 290 "mn-imap-mailbox.gob"
+#line 287 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (path != NULL, (gboolean )0);
-#line 290 "mn-imap-mailbox.gob"
+#line 287 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (has_path != NULL, (gboolean )0);
-#line 626 "mn-imap-mailbox.c"
+#line 612 "mn-imap-mailbox.c"
 {
-#line 296 "mn-imap-mailbox.gob"
+#line 293 "mn-imap-mailbox.gob"
 	
     char *pat;
     int n;
@@ -632,7 +618,7 @@ mn_imap_mailbox_split_uri_location (const char * location, int maxlen, char * ho
     pat = g_strdup_printf("%%%i[^/]/%%%is", maxlen, maxlen);
     n = sscanf(location, pat, hostport, path);
     g_free(pat);
-    
+
     g_return_val_if_fail(n >= 1, FALSE);
 
     *has_path = n == 2;
@@ -645,47 +631,47 @@ mn_imap_mailbox_split_uri_location (const char * location, int maxlen, char * ho
 
     return TRUE;
   }}
-#line 649 "mn-imap-mailbox.c"
+#line 635 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 317 "mn-imap-mailbox.gob"
+#line 314 "mn-imap-mailbox.gob"
 static void 
 ___6_mn_imap_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 655 "mn-imap-mailbox.c"
+#line 641 "mn-imap-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->removed) \
 		(* MN_MAILBOX_CLASS(parent_class)->removed)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::removed"
 {
-#line 319 "mn-imap-mailbox.gob"
+#line 316 "mn-imap-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
     g_atomic_int_inc(&selfp->removed);
 
-    g_mutex_lock(selfp->idle_session_mutex);
+    g_mutex_lock(selfp->mutex);
     if (selfp->idle_session)
       {
 	mn_client_session_write(selfp->idle_session->session, "DONE");
-	selfp->idle_session->idle_state = IDLE_STATE_WAS_IDLING;
+	selfp->idle_session->idle_state = IDLE_STATE_POST_IDLE;
       }
-    g_mutex_unlock(selfp->idle_session_mutex);
+    g_mutex_unlock(selfp->mutex);
 
     PARENT_HANDLER(mailbox);
   }}
-#line 678 "mn-imap-mailbox.c"
+#line 664 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 335 "mn-imap-mailbox.gob"
+#line 332 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 685 "mn-imap-mailbox.c"
+#line 671 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_greeting_cb"
 {
-#line 339 "mn-imap-mailbox.gob"
+#line 336 "mn-imap-mailbox.gob"
 	
     priv->session = session;
 
@@ -707,38 +693,35 @@ mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionRe
 	  : STATE_CAPABILITY;
       }
     else if (! response->tag && IS_BYE(response))
-      {
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
-      }
+      return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
     else
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
   }}
-#line 718 "mn-imap-mailbox.c"
+#line 701 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 368 "mn-imap-mailbox.gob"
+#line 362 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 724 "mn-imap-mailbox.c"
+#line 707 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_capability_cb"
 {
-#line 371 "mn-imap-mailbox.gob"
+#line 365 "mn-imap-mailbox.gob"
 	
     return self_session_write(priv, "CAPABILITY");
   }}
-#line 732 "mn-imap-mailbox.c"
+#line 715 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 375 "mn-imap-mailbox.gob"
+#line 369 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 738 "mn-imap-mailbox.c"
+#line 721 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_capability_cb"
 {
-#line 379 "mn-imap-mailbox.gob"
+#line 373 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -750,11 +733,11 @@ mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSession
 	      {
 		return priv->capabilities
 		  ? self_session_after_capability(priv)
-		  : mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send capabilities"));
+		  : mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send capabilities"));
 	      }
 	    else if (IS_BAD(response))
 	      {
-		self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 		return STATE_LOGOUT;
 	      }
 	    else
@@ -766,40 +749,41 @@ mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSession
 	self_session_parse_capabilities(priv, response->arguments);
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
       }
-    
+
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }}
-#line 773 "mn-imap-mailbox.c"
+#line 756 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 410 "mn-imap-mailbox.gob"
+#line 404 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 779 "mn-imap-mailbox.c"
+#line 762 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_starttls_cb"
 {
-#line 413 "mn-imap-mailbox.gob"
+#line 407 "mn-imap-mailbox.gob"
 	
-#ifdef WITH_SSL
+#if WITH_SSL
     return self_session_write(priv, "STARTTLS");
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SSL */
   }}
-#line 791 "mn-imap-mailbox.c"
+#line 775 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 421 "mn-imap-mailbox.gob"
+#line 416 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 797 "mn-imap-mailbox.c"
+#line 781 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_starttls_cb"
 {
-#line 425 "mn-imap-mailbox.gob"
+#line 420 "mn-imap-mailbox.gob"
 	
-#ifdef WITH_SSL
+#if WITH_SSL
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
     else if (response->tag)
@@ -814,7 +798,10 @@ mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionRe
 		  : MN_CLIENT_SESSION_RESULT_DISCONNECT;
 	      }
 	    else if (IS_BAD(response))
-	      return self_session_authenticate(priv);
+	      {
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
+		return STATE_LOGOUT;
+	      }
 	    else
 	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 	  }
@@ -822,50 +809,23 @@ mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionRe
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SSL */
   }}
-#line 829 "mn-imap-mailbox.c"
+#line 817 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 453 "mn-imap-mailbox.gob"
-static void 
-mn_imap_mailbox_sasl_get_credentials_cb (MNClientSession * session, MNClientSessionPrivate * priv, const char ** username, const char ** password)
-#line 835 "mn-imap-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::sasl_get_credentials_cb"
-{
-#line 458 "mn-imap-mailbox.gob"
-	
-#ifdef WITH_SASL
-    g_return_if_fail(username != NULL || password != NULL);
-
-    mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox,
-					      username != NULL,
-					      password != NULL);
-
-    if (username)
-      *username = priv->authenticated_mailbox->runtime_username;
-
-    if (password)
-      *password = priv->authenticated_mailbox->runtime_password;
-#else
-    g_return_if_reached();
-#endif /* WITH_SASL */
-  }}
-#line 857 "mn-imap-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 476 "mn-imap-mailbox.gob"
+#line 452 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 863 "mn-imap-mailbox.c"
+#line 823 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_authenticate_cb"
 {
-#line 479 "mn-imap-mailbox.gob"
+#line 455 "mn-imap-mailbox.gob"
 	
-#ifdef WITH_SASL
+#if WITH_SASL
     priv->sasl_mechanism = NULL;
 
     if (mn_client_session_sasl_authentication_start(priv->session,
@@ -876,11 +836,11 @@ mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessio
 						    NULL,	/* [1] */
 						    NULL))	/* [1] */
       {
-	g_return_val_if_fail(priv->sasl_mechanism != NULL, 0);
+	g_assert(priv->sasl_mechanism != NULL);
 	return self_session_write(priv, "AUTHENTICATE %s", priv->sasl_mechanism);
       }
     else
-      return priv->authenticated_mailbox->cancelled
+      return priv->pi_mailbox->auth_cancelled
 	? STATE_LOGOUT
 	: self_session_authenticate_fallback(priv, FALSE);
 
@@ -889,22 +849,23 @@ mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessio
      * support the initial client response feature of SASL.
      */
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SASL */
   }}
-#line 896 "mn-imap-mailbox.c"
+#line 857 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 508 "mn-imap-mailbox.gob"
+#line 485 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 902 "mn-imap-mailbox.c"
+#line 863 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_authenticate_cb"
 {
-#line 512 "mn-imap-mailbox.gob"
+#line 489 "mn-imap-mailbox.gob"
 	
-#ifdef WITH_SASL
+#if WITH_SASL
     if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
@@ -941,7 +902,7 @@ mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessi
 	      }
 	    else if (IS_NO(response) || IS_BAD(response))
 	      {
-		return priv->authenticated_mailbox->cancelled
+		return priv->pi_mailbox->auth_cancelled
 		  ? STATE_LOGOUT
 		  : self_session_authenticate_fallback(priv, FALSE);
 	      }
@@ -951,28 +912,29 @@ mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessi
       }
     else if (response->continuation)
       return mn_client_session_sasl_authentication_step(session, response->continuation);
-    
+
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SASL */
   }}
-#line 961 "mn-imap-mailbox.c"
+#line 923 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 567 "mn-imap-mailbox.gob"
+#line 545 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 967 "mn-imap-mailbox.c"
+#line 929 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_login_cb"
 {
-#line 570 "mn-imap-mailbox.gob"
+#line 548 "mn-imap-mailbox.gob"
 	
     if (self_session_has_capability(priv, "LOGINDISABLED"))
       {
 	mn_client_session_notice(session, _("server advertised LOGINDISABLED, not using LOGIN authentication"));
-	mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to login"));
+	mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to login"));
 	return STATE_LOGOUT;
       }
     else
@@ -981,14 +943,11 @@ mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivat
 	char *quoted_password;
 	int result;
 
-	mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox, TRUE, TRUE);
-
-	if (! priv->authenticated_mailbox->runtime_username
-	    || ! priv->authenticated_mailbox->runtime_password)
+	if (! mn_pi_mailbox_fill_credentials(priv->pi_mailbox, TRUE, TRUE))
 	  return STATE_LOGOUT;
 
-	quoted_username = self_quote(priv->authenticated_mailbox->runtime_username);
-	quoted_password = self_quote(priv->authenticated_mailbox->runtime_password);
+	quoted_username = self_quote(priv->pi_mailbox->runtime_username);
+	quoted_password = self_quote(priv->pi_mailbox->runtime_password);
 	result = self_session_write(priv, "LOGIN %s %s", quoted_username, quoted_password);
 	g_free(quoted_username);
 	g_free(quoted_password);
@@ -996,17 +955,17 @@ mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivat
 	return result;
       }
   }}
-#line 1000 "mn-imap-mailbox.c"
+#line 959 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 599 "mn-imap-mailbox.gob"
+#line 574 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1006 "mn-imap-mailbox.c"
+#line 965 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_login_cb"
 {
-#line 603 "mn-imap-mailbox.gob"
+#line 578 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1027,45 +986,45 @@ mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionRespo
 	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 	  }
       }
-    
+
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }}
-#line 1034 "mn-imap-mailbox.c"
+#line 993 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 627 "mn-imap-mailbox.gob"
+#line 602 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1040 "mn-imap-mailbox.c"
+#line 999 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_examine_cb"
 {
-#line 630 "mn-imap-mailbox.gob"
+#line 605 "mn-imap-mailbox.gob"
 	
     char *utf7_mailbox;
     char *quoted_mailbox;
     int result;
 
-    utf7_mailbox = self_utf8_to_imap_utf7(priv->self->runtime_mailbox);
+    utf7_mailbox = self_utf8_to_imap_utf7(priv->self->mailbox);
     quoted_mailbox = self_quote(utf7_mailbox);
     g_free(utf7_mailbox);
-    
+
     result = self_session_write(priv, "EXAMINE %s", quoted_mailbox);
     g_free(quoted_mailbox);
 
     return result;
   }}
-#line 1059 "mn-imap-mailbox.c"
+#line 1018 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 645 "mn-imap-mailbox.gob"
+#line 620 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1065 "mn-imap-mailbox.c"
+#line 1024 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_examine_cb"
 {
-#line 649 "mn-imap-mailbox.gob"
+#line 624 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1074,10 +1033,10 @@ mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionRes
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
 	    if (IS_OK(response))
-	      return STATE_SEARCH;
+	      return STATE_SEARCH_UNSEEN;
 	    else if (IS_NO(response) || IS_BAD(response))
 	      {
-		self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 		return STATE_LOGOUT;
 	      }
 	    else
@@ -1087,140 +1046,147 @@ mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionRes
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }}
-#line 1091 "mn-imap-mailbox.c"
+#line 1050 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 671 "mn-imap-mailbox.gob"
+#line 646 "mn-imap-mailbox.gob"
 static int 
-mn_imap_mailbox_enter_search_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1097 "mn-imap-mailbox.c"
+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_cb"
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_search_unseen_cb"
 {
-#line 674 "mn-imap-mailbox.gob"
+#line 649 "mn-imap-mailbox.gob"
 	
-    priv->search_received = FALSE;
-
-    g_slist_free(priv->fetch_numbers);
-    priv->fetch_numbers = NULL;
-
-    g_free(priv->fetch_set);
-    priv->fetch_set = NULL;
-    
-    return self_session_write(priv, "SEARCH UNSEEN");
+    return self_session_enter_search(session, priv, "UNSEEN", &priv->unseen_numbers);
   }}
-#line 1113 "mn-imap-mailbox.c"
+#line 1064 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 686 "mn-imap-mailbox.gob"
+#line 653 "mn-imap-mailbox.gob"
 static int 
-mn_imap_mailbox_handle_search_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1119 "mn-imap-mailbox.c"
+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_cb"
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_search_unseen_cb"
 {
-#line 690 "mn-imap-mailbox.gob"
+#line 657 "mn-imap-mailbox.gob"
 	
-    if (response->continuation)
-      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
-    else if (response->tag)
+    int result = self_session_handle_search(session, response, priv, priv->unseen_numbers);
+
+    if (result == 0)
       {
-	if (HAS_CURRENT_TAG(response, priv))
+	/* finished successfully */
+	if (g_hash_table_size(priv->unseen_numbers) > 0)
+	  result = STATE_SEARCH_RECENT;
+	else
 	  {
-	    if (IS_OK(response))
-	      {
-		if (priv->search_received)
-		  {
-		    if (priv->fetch_set)
-		      return STATE_FETCH;
-		    else
-		      {
-			GDK_THREADS_ENTER();
-			mn_mailbox_set_messages(priv->mailbox, NULL);
-			gdk_flush();
-			GDK_THREADS_LEAVE();
-
-			return STATE_IDLE;
-		      }
-		  }
-		else		/* compliance error */
-		  return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send search results"));
-	      }
-	    else if (IS_NO(response) || IS_BAD(response))
-	      {
-		self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-		return STATE_LOGOUT;
-	      }
-	    else
-	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	    GDK_THREADS_ENTER();
+	    mn_mailbox_set_messages(priv->mailbox, NULL);
+	    gdk_flush();
+	    GDK_THREADS_LEAVE();
+
+	    result = STATE_IDLE;
 	  }
       }
-    else if (IS(response, "SEARCH"))
-      {
-	if (response->arguments)
-	  {
-	    char **numbers;
-	    GString *string;
-	    int i;
-
-	    numbers = g_strsplit(response->arguments, " ", 0);
-	    string = g_string_new(NULL);
 
-	    for (i = 0; numbers[i]; i++)
-	      if (mn_str_isnumeric(numbers[i]))
-		{
-		  int n = atoi(numbers[i]);
-
-		  if (*string->str)
-		    g_string_append_c(string, ',');
-		  g_string_append(string, numbers[i]);
+    return result;
+  }}
+#line 1096 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
 
-		  priv->fetch_numbers = g_slist_append(priv->fetch_numbers, GINT_TO_POINTER(n));
-		}
+#line 679 "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"
+	
+    return self_session_enter_search(session, priv, "RECENT", &priv->recent_numbers);
+  }}
+#line 1110 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
 
-	    g_strfreev(numbers);
-	    priv->fetch_set = g_string_free(string, FALSE);
-	  }
+#line 686 "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"
+	
+    int result = self_session_handle_search(session, response, priv, priv->recent_numbers);
 
-	priv->search_received = TRUE;
-	return MN_CLIENT_SESSION_RESULT_CONTINUE;
-      }
+    if (result == 0)
+      /* finished successfully */
+      result = STATE_FETCH;
 
-    return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
+    return result;
   }}
-#line 1192 "mn-imap-mailbox.c"
+#line 1130 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 759 "mn-imap-mailbox.gob"
+#line 700 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1198 "mn-imap-mailbox.c"
+#line 1136 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_fetch_cb"
 {
-#line 762 "mn-imap-mailbox.gob"
+#line 702 "mn-imap-mailbox.gob"
 	
-    g_return_val_if_fail(priv->fetch_set != NULL, 0);
+    GString *string;
+    int result;
+
+    g_assert(priv->unseen_numbers != NULL);
+    g_assert(g_hash_table_size(priv->unseen_numbers) > 0);
+
+    if (priv->received_numbers)
+      g_hash_table_destroy(priv->received_numbers);
+    priv->received_numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
+
+    mn_g_object_slist_clear(&priv->messages);
 
-    g_slist_free(priv->received_numbers);
-    priv->received_numbers = NULL;
+    string = g_string_new(NULL);
+    g_hash_table_foreach(priv->unseen_numbers, self_build_fetch_set_cb, string);
 
-    mn_g_object_slist_free(priv->messages);
-    priv->messages = NULL;
+    result = self_session_write(priv, "FETCH %s BODY.PEEK[HEADER]", string->str);
+    g_string_free(string, TRUE);
 
-    return self_session_write(priv, "FETCH %s BODY[HEADER]", priv->fetch_set);
+    return result;
+  }}
+#line 1162 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 724 "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"
+	
+    GString *string = user_data;
+
+    if (*string->str)
+      g_string_append_c(string, ',');
+    g_string_append_printf(string, "%i", GPOINTER_TO_INT(key));
   }}
-#line 1214 "mn-imap-mailbox.c"
+#line 1180 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 774 "mn-imap-mailbox.gob"
+#line 734 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1220 "mn-imap-mailbox.c"
+#line 1186 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_fetch_cb"
 {
-#line 778 "mn-imap-mailbox.gob"
+#line 738 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1230,35 +1196,34 @@ mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionRespo
 	  {
 	    if (IS_OK(response))
 	      {
-		GSList *l;
+		CheckReceivedInfo info = { priv, FALSE };
+
+		g_hash_table_foreach(priv->unseen_numbers, self_check_received_cb, &info);
+		if (info.error)
+		  /* compliance error */
+		  return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send all the messages we requested"));
 
-		MN_LIST_FOREACH(l, priv->fetch_numbers)
-		  if (! g_slist_find(priv->received_numbers, l->data))
-		    /* compliance error */
-		    return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send all the messages we requested"));
-		    
 		GDK_THREADS_ENTER();
 
 		mn_mailbox_set_messages(priv->mailbox, priv->messages);
 
 		/*
-		 * In impl_check(), we do not hold the GDK lock while
-		 * unreffing the message list. We have just exposed
-		 * the list to other threads through our
+		 * In authenticated_check(), we do not hold the GDK
+		 * lock while unreffing the message list. We have just
+		 * exposed the list to other threads through our
 		 * mn_mailbox_set_messages() call, so unref it here,
 		 * while we hold the GDK lock.
 		 */
-		mn_g_object_slist_free(priv->messages);
-		priv->messages = NULL;
+		mn_g_object_slist_clear(&priv->messages);
 
 		gdk_flush();
 		GDK_THREADS_LEAVE();
-		
+
 		return STATE_IDLE;
 	      }
 	    else if (IS_NO(response) || IS_BAD(response))
 	      {
-		self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 		return STATE_LOGOUT;
 	      }
 	    else
@@ -1277,12 +1242,16 @@ mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionRespo
 
 	int n = atoi(response->response);
 
-	if (g_slist_find(priv->fetch_numbers, GINT_TO_POINTER(n)))
+	if (g_hash_table_lookup(priv->unseen_numbers, GINT_TO_POINTER(n)))
 	  {
 	    char *p;
 	    int len;
+	    MNMessageFlags flags = 0;
+
+	    if (g_hash_table_lookup(priv->recent_numbers, GINT_TO_POINTER(n)))
+	      flags |= MN_MESSAGE_NEW;
 
-	    priv->received_numbers = g_slist_append(priv->received_numbers, GINT_TO_POINTER(n));
+	    g_hash_table_insert(priv->received_numbers, GINT_TO_POINTER(n), GINT_TO_POINTER(TRUE));
 
 	    /* we assume the header string will be in literal form */
 
@@ -1290,37 +1259,54 @@ mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionRespo
 	    if (p && sscanf(p, "{%d}", &len) == 1 && len >= 0)
 	      {
 		gconstpointer buf;
-		
+
 		buf = mn_client_session_read(session, len);
 		if (! buf)
 		  return MN_CLIENT_SESSION_RESULT_DISCONNECT;
-		
-		priv->messages = g_slist_append(priv->messages, mn_message_new_from_buffer(priv->mailbox, buf, len));
-		
+
+		priv->messages = g_slist_prepend(priv->messages, mn_message_new_from_buffer(priv->mailbox, buf, len, flags, FALSE));
+
 		/* read end of line (after literal) */
 		if (! mn_client_session_read_line(session))
 		  return MN_CLIENT_SESSION_RESULT_DISCONNECT;
 	      }
 	    else
-	      priv->messages = g_slist_append(priv->messages, mn_message_new_from_error(priv->mailbox, _("unable to fetch message")));
+	      priv->messages = g_slist_prepend(priv->messages, mn_message_new_from_error(priv->mailbox, _("unable to fetch message"), flags));
 
 	    return MN_CLIENT_SESSION_RESULT_CONTINUE;
 	  }
       }
-	
+
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }}
-#line 1314 "mn-imap-mailbox.c"
+#line 1283 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 868 "mn-imap-mailbox.gob"
+#line 831 "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"
+	
+    CheckReceivedInfo *info = user_data;
+
+    if (! info->error && ! g_hash_table_lookup(info->priv->received_numbers, key))
+      info->error = TRUE;
+  }}
+#line 1300 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 840 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1320 "mn-imap-mailbox.c"
+#line 1306 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_idle_cb"
 {
-#line 871 "mn-imap-mailbox.gob"
+#line 843 "mn-imap-mailbox.gob"
 	
     if (! REMOVED(priv->self))
       {
@@ -1338,15 +1324,15 @@ mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate
 		    else
 		      mn_client_session_notice(session, _("the remote server runs %s, not using the IDLE extension"), priv->server_software);
 		    break;
-		    
+
 		  case MN_IMAP_MAILBOX_USE_IDLE_ALWAYS:
 		    if (! priv->server_software_supports_idle)
 		      mn_client_session_warning(session, _("the remote server runs %s, the IDLE extension might not function properly"), priv->server_software);
 		    goto idle;
 		    break;
-		    
+
 		  default:
-		    g_return_val_if_reached(0);
+		    g_assert_not_reached();
 		  }
 	      }
 	    else
@@ -1357,29 +1343,65 @@ mn_imap_mailbox_enter_idle_cb (MNClientSession * session, MNClientSessionPrivate
     return STATE_LOGOUT;
 
   idle:
-    priv->idle_state = IDLE_STATE_NORMAL;
+    priv->idle_state = IDLE_STATE_PRE_IDLE;
     return self_session_write(priv, "IDLE");
   }}
-#line 1364 "mn-imap-mailbox.c"
+#line 1350 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 911 "mn-imap-mailbox.gob"
+#line 883 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1370 "mn-imap-mailbox.c"
+#line 1356 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_idle_cb"
 {
-#line 915 "mn-imap-mailbox.gob"
+#line 887 "mn-imap-mailbox.gob"
 	
-    if (priv->idle_state == IDLE_STATE_IDLING)
+    switch (priv->idle_state)
       {
+      case IDLE_STATE_PRE_IDLE:
+	if (response->tag)
+	  {
+	    if (HAS_CURRENT_TAG(response, priv))
+	      {
+		if (IS_NO(response) || IS_BAD(response))
+		  /*
+		   * The server advertised IDLE but does not actually
+		   * support it.
+		   *
+		   * Although strictly speaking this can be considered a
+		   * compliance fault, we'll be tolerant and just logout
+		   * without setting an error.
+		   */
+		  return STATE_LOGOUT;
+		else
+		  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	      }
+	  }
+	else if (response->continuation)
+	  {
+	    /* we're now in the idle loop */
+	    priv->idle_state = IDLE_STATE_IDLE;
+	    priv->idle_inactivity = FALSE;
+	    priv->could_idle = TRUE;
+
+	    GDK_THREADS_ENTER();
+	    mn_mailbox_set_poll(priv->mailbox, FALSE);
+	    gdk_flush();
+	    GDK_THREADS_LEAVE();
+
+	    return MN_CLIENT_SESSION_RESULT_CONTINUE;
+	  }
+	break;
+
+      case IDLE_STATE_IDLE:
 	if (response->continuation || response->tag)
 	  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 
 	if (IS_BYE(response))
 	  {
-	    priv->idle_state = IDLE_STATE_WAS_IDLING;
+	    priv->idle_state = IDLE_STATE_POST_IDLE;
 	    return MN_CLIENT_SESSION_RESULT_DISCONNECT; /* we'll reconnect */
 	  }
 	else if (response->arguments
@@ -1389,79 +1411,70 @@ mn_imap_mailbox_handle_idle_cb (MNClientSession * session, MNClientSessionRespon
 		     || ! g_ascii_strcasecmp(response->arguments, "EXPUNGE")
 		     || mn_ascii_str_case_has_prefix(response->arguments, "FETCH ")))
 	  {
-	    priv->idle_state = IDLE_STATE_WAS_IDLING;
+	    priv->idle_state = IDLE_STATE_POST_IDLE;
 	    return mn_client_session_write(session, "DONE"); /* wake up */
 	  }
-      }
-    else
-      {
-	if (response->continuation)
-	  {
-	    if (priv->idle_state == IDLE_STATE_WAS_IDLING)
-	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
-	    else
-	      {
-		/* we're now in the idle loop */
-		priv->idle_state = IDLE_STATE_IDLING;
-		priv->could_idle = TRUE;
-		
-		GDK_THREADS_ENTER();
-		mn_mailbox_set_must_poll(priv->mailbox, FALSE);
-		gdk_flush();
-		GDK_THREADS_LEAVE();
+	break;
 
-		return MN_CLIENT_SESSION_RESULT_CONTINUE;
-	      }
-	  }
-	else if (response->tag)
+      case IDLE_STATE_POST_IDLE:
+	if (response->tag)
 	  {
 	    if (HAS_CURRENT_TAG(response, priv))
 	      {
 		if (IS_OK(response))
-		  return REMOVED(priv->self) ? STATE_LOGOUT : STATE_SEARCH;
+		  {
+		    if (REMOVED(priv->self))
+		      return STATE_LOGOUT;
+		    else if (priv->idle_inactivity)
+		      return STATE_IDLE; /* anti-inactivity, re-enter */
+		    else
+		      return STATE_SEARCH_UNSEEN;
+		  }
 		else if (IS_NO(response) || IS_BAD(response))
-		  /*
-		   * The server advertised IDLE but does not actually
-		   * support it.
-		   *
-		   * Although strictly speaking this can be considered
-		   * a compliance fault, we'll be tolerant and just
-		   * logout without setting an error.
-		   */
-		  return STATE_LOGOUT;
+		  {
+		    mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
+		    return STATE_LOGOUT;
+		  }
 		else
 		  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 	      }
 	  }
+	else if (response->continuation)
+	  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	break;
+
+      default:
+	g_assert_not_reached();
+	break;
       }
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }}
-#line 1441 "mn-imap-mailbox.c"
+#line 1454 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 982 "mn-imap-mailbox.gob"
+#line 981 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1447 "mn-imap-mailbox.c"
+#line 1460 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_logout_cb"
 {
-#line 985 "mn-imap-mailbox.gob"
+#line 984 "mn-imap-mailbox.gob"
 	
     return self_session_write(priv, "LOGOUT");
   }}
-#line 1455 "mn-imap-mailbox.c"
+#line 1468 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 989 "mn-imap-mailbox.gob"
+#line 988 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1461 "mn-imap-mailbox.c"
+#line 1474 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_logout_cb"
 {
-#line 993 "mn-imap-mailbox.gob"
+#line 992 "mn-imap-mailbox.gob"
 	
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -1470,59 +1483,57 @@ mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResp
 	if (IS_OK(response))
 	  return MN_CLIENT_SESSION_RESULT_DISCONNECT;
 	else if (IS_BAD(response))
-	  {
-	    self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	    return MN_CLIENT_SESSION_RESULT_DISCONNECT;
-	  }
+	  return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 	else
 	  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
     else
       return MN_CLIENT_SESSION_RESULT_CONTINUE;
   }}
-#line 1484 "mn-imap-mailbox.c"
+#line 1494 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1012 "mn-imap-mailbox.gob"
+#line 1008 "mn-imap-mailbox.gob"
 static void 
-___1b_mn_imap_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
-#line 1490 "mn-imap-mailbox.c"
+___1e_mn_imap_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
+#line 1500 "mn-imap-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
-	{ if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_check) \
-		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_check)(___mailbox); }
+	{ if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \
+		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); }
 {
-#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::impl_check"
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::authenticated_check"
 {
-#line 1014 "mn-imap-mailbox.gob"
+#line 1010 "mn-imap-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     MNClientSessionState states[] = {
       { STATE_GREETING,		NULL,				self_handle_greeting_cb },
       { STATE_CAPABILITY,	self_enter_capability_cb,	self_handle_capability_cb },
-#ifdef WITH_SSL
+#if WITH_SSL
       { STATE_STARTTLS,		self_enter_starttls_cb,		self_handle_starttls_cb },
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
       { STATE_AUTHENTICATE,	self_enter_authenticate_cb,	self_handle_authenticate_cb },
 #endif
       { STATE_LOGIN,		self_enter_login_cb,		self_handle_login_cb },
       { STATE_EXAMINE,		self_enter_examine_cb,		self_handle_examine_cb },
-      { STATE_SEARCH,		self_enter_search_cb,		self_handle_search_cb },
+      { STATE_SEARCH_UNSEEN,	self_enter_search_unseen_cb,	self_handle_search_unseen_cb },
+      { STATE_SEARCH_RECENT,	self_enter_search_recent_cb,	self_handle_search_recent_cb },
       { STATE_FETCH,		self_enter_fetch_cb,		self_handle_fetch_cb },
       { STATE_IDLE,		self_enter_idle_cb,		self_handle_idle_cb },
       { STATE_LOGOUT,		self_enter_logout_cb,		self_handle_logout_cb },
-      
+
       MN_CLIENT_SESSION_STATES_END
     };
     MNClientSessionCallbacks callbacks = {
-      self_notice_cb,
-      self_warning_cb,
+      mn_pi_mailbox_notice_cb,
+      mn_pi_mailbox_warning_cb,
       self_response_new_cb,
       self_response_free_cb,
       self_pre_read_cb,
       self_post_read_cb,
-#ifdef WITH_SASL
-      self_sasl_get_credentials_cb,
+#if WITH_SASL
+      mn_pi_mailbox_sasl_get_credentials_cb,
 #endif
     };
     MNClientSessionPrivate priv;
@@ -1533,7 +1544,7 @@ ___1b_mn_imap_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
     PARENT_HANDLER(mailbox);
 
     /* check if the parent handler has disabled the mailbox */
-    if (! MN_MAILBOX(self)->must_poll)
+    if (! mn_mailbox_get_poll(MN_MAILBOX(self)))
       return;
 
     do
@@ -1542,32 +1553,33 @@ ___1b_mn_imap_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 	again = FALSE;
 
 	memset(&priv, 0, sizeof(priv));
-	priv.mailbox = MN_MAILBOX(self);
-	priv.authenticated_mailbox = mailbox;
-	priv.pi_mailbox = MN_PI_MAILBOX(self);
+	mn_pi_mailbox_session_private_init(MN_PI_MAILBOX(self), &priv);
 	priv.self = self;
 	priv.server_software_supports_idle = TRUE; /* assume it does */
-    
+
 	status = mn_client_session_run(states,
 				       &callbacks,
-#ifdef WITH_SSL
+#if WITH_SSL
 				       priv.pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL,
 #endif
 				       priv.pi_mailbox->hostname,
 				       priv.pi_mailbox->runtime_port,
 				       &priv,
 				       &err);
-    
+
 	g_strfreev(priv.capabilities);
 	eel_g_slist_free_deep(priv.auth_mechanisms);
 
-	g_slist_free(priv.fetch_numbers);
-	g_free(priv.fetch_set);
+	if (priv.unseen_numbers)
+	  g_hash_table_destroy(priv.unseen_numbers);
+	if (priv.recent_numbers)
+	  g_hash_table_destroy(priv.recent_numbers);
+	if (priv.received_numbers)
+	  g_hash_table_destroy(priv.received_numbers);
 
-	g_slist_free(priv.received_numbers);
 	mn_g_object_slist_free(priv.messages);
 
-#ifdef WITH_SASL
+#if WITH_SASL
 	g_slist_free(priv.sasl_remaining_mechanisms);
 #endif
 
@@ -1578,6 +1590,7 @@ ___1b_mn_imap_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 	    /* some servers abruptly disconnect for inactivity */
 	    else if (g_error_matches(err, MN_CLIENT_SESSION_ERROR, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST))
 	      {
+		/* g_log() escapes unsafe and non UTF-8 characters, so this is safe */
 		mn_mailbox_notice(priv.mailbox, "%s", err->message);
 		again = TRUE;
 	      }
@@ -1587,120 +1600,115 @@ ___1b_mn_imap_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 
     GDK_THREADS_ENTER();
 
-    mn_mailbox_set_must_poll(MN_MAILBOX(self), TRUE);
+    mn_mailbox_set_poll(MN_MAILBOX(self), TRUE);
     if (! status)
       {
-	mn_mailbox_set_error(MN_MAILBOX(self), "%s", err->message);
+	char *escaped;
+
+	escaped = mn_utf8_escape(err->message);
 	g_error_free(err);
+
+	mn_mailbox_set_error(MN_MAILBOX(self), "%s", escaped);
+	g_free(escaped);
       }
 
     gdk_flush();
     GDK_THREADS_LEAVE();
   }}
-#line 1601 "mn-imap-mailbox.c"
+#line 1619 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 1118 "mn-imap-mailbox.gob"
-static void 
-mn_imap_mailbox_notice_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv)
-#line 1608 "mn-imap-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::notice_cb"
-{
 #line 1122 "mn-imap-mailbox.gob"
-	
-    mn_mailbox_notice(priv->mailbox, "%s", message);
-  }}
-#line 1616 "mn-imap-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 1126 "mn-imap-mailbox.gob"
-static void 
-mn_imap_mailbox_warning_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv)
-#line 1622 "mn-imap-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::warning_cb"
-{
-#line 1130 "mn-imap-mailbox.gob"
-	
-    mn_mailbox_warning(priv->mailbox, "%s", message);
-  }}
-#line 1630 "mn-imap-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 1134 "mn-imap-mailbox.gob"
 static MNClientSessionResponse * 
 mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
-#line 1636 "mn-imap-mailbox.c"
+#line 1626 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_new_cb"
 {
-#line 1138 "mn-imap-mailbox.gob"
+#line 1126 "mn-imap-mailbox.gob"
 	
     MNClientSessionResponse *response = NULL;
 
     /*
-     * RFC 3501 1.2: "Characters are 7-bit US-ASCII unless otherwise
-     * specified."
+     * About character set handling:
+     *
+     * RFC 3501 section 1.2 specifies that "characters are 7-bit
+     * US-ASCII unless otherwise specified", and the ABNF formal
+     * syntax found in section 9 confirms it. However, we follow the
+     * RFC 793 robustness principle ("be liberal in what you accept")
+     * and do not require responses to be valid 7-bit US-ASCII.
+     *
+     * Safety:
+     *   - we ensure that GTK+ will only receive UTF-8 data by
+     *     escaping error messages in authenticated_check()
+     *   - responses ending up in mn_mailbox_notice() need not be
+     *     valid UTF-8, since g_log() escapes unsafe and non UTF-8
+     *     characters
+     *   - messages do not go through this function; they are handled
+     *     in handle_fetch_cb() and passed to our mn-message-mime
+     *     implementation, which handles character set conversions
      */
-    if (mn_ascii_validate(input))
+
+    if (! strcmp(input, "+"))
       {
-	if (g_str_has_prefix(input, "+ "))
-	  {
-	    response = g_new0(MNClientSessionResponse, 1);
-	    response->continuation = g_strdup(input + 2);
-	  }
-	else
+	response = g_new0(MNClientSessionResponse, 1);
+	response->continuation = g_strdup("");
+      }
+    else if (g_str_has_prefix(input, "+ "))
+      {
+	response = g_new0(MNClientSessionResponse, 1);
+	response->continuation = g_strdup(input + 2);
+      }
+    else
+      {
+	char **tokens;
+
+	tokens = g_strsplit(input, " ", 3);
+	if (tokens[0] && tokens[1])
 	  {
-	    char **tokens;
-	    
-	    tokens = g_strsplit(input, " ", 3);
-	    if (tokens[0] && tokens[1])
+	    if (tokens[2] && tokens[2][0] == '[')
 	      {
-		if (tokens[2] && tokens[2][0] == '[')
-		  {
-		    char *code_start;
-		    char *code_end;
-		    
-		    code_start = tokens[2] + 1;
-		    code_end = strchr(code_start, ']');
-		    if (code_end)
-		      {
-			response = g_new0(MNClientSessionResponse, 1);
-			response->code = g_strndup(code_start, code_end - code_start);
-			response->arguments = code_end[1] ? g_strdup(code_end + 2) : NULL;
-		      }
-		  }
-		else
+		char *code_start;
+		char *code_end;
+
+		code_start = tokens[2] + 1;
+		code_end = strchr(code_start, ']');
+		if (code_end)
 		  {
 		    response = g_new0(MNClientSessionResponse, 1);
-		    response->arguments = g_strdup(tokens[2]);
-		  }
-		
-		if (response)
-		  {
-		    response->tag = ! strcmp(tokens[0], "*") ? NULL : g_strdup(tokens[0]);
-		    response->response = g_strdup(tokens[1]);
+		    response->code = g_strndup(code_start, code_end - code_start);
+		    response->arguments = code_end[1] ? g_strdup(code_end + 2) : NULL;
 		  }
 	      }
-	    g_strfreev(tokens);
+	    else
+	      {
+		response = g_new0(MNClientSessionResponse, 1);
+		response->arguments = g_strdup(tokens[2]);
+	      }
+
+	    if (response)
+	      {
+		response->tag = ! strcmp(tokens[0], "*") ? NULL : g_strdup(tokens[0]);
+		response->response = g_strdup(tokens[1]);
+	      }
 	  }
+	g_strfreev(tokens);
       }
-	
+
     return response;
   }}
-#line 1694 "mn-imap-mailbox.c"
+#line 1702 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1192 "mn-imap-mailbox.gob"
+#line 1198 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1700 "mn-imap-mailbox.c"
+#line 1708 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_free_cb"
 {
-#line 1196 "mn-imap-mailbox.gob"
+#line 1202 "mn-imap-mailbox.gob"
 	
     g_free(response->continuation);
     g_free(response->tag);
@@ -1709,107 +1717,120 @@ mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResp
     g_free(response->arguments);
     g_free(response);
   }}
-#line 1713 "mn-imap-mailbox.c"
+#line 1721 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1205 "mn-imap-mailbox.gob"
+#line 1211 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_default_handler (MNClientSessionResponse * response, MNClientSessionPrivate * priv, int error_code_when_bye)
-#line 1719 "mn-imap-mailbox.c"
+#line 1727 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::default_handler"
-#line 1205 "mn-imap-mailbox.gob"
+#line 1211 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 1205 "mn-imap-mailbox.gob"
+#line 1211 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1726 "mn-imap-mailbox.c"
+#line 1734 "mn-imap-mailbox.c"
 {
-#line 1209 "mn-imap-mailbox.gob"
+#line 1215 "mn-imap-mailbox.gob"
 	
     if (! response->tag && IS_BYE(response))
-      {
-	self_session_set_error_from_arguments(priv, error_code_when_bye, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
-      }
+      return mn_client_session_set_error_from_response(priv->session, error_code_when_bye, response->arguments);
     else
       return MN_CLIENT_SESSION_RESULT_CONTINUE;
   }}
-#line 1738 "mn-imap-mailbox.c"
+#line 1743 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1219 "mn-imap-mailbox.gob"
+#line 1222 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_pre_read_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1744 "mn-imap-mailbox.c"
+#line 1749 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::pre_read_cb"
 {
-#line 1222 "mn-imap-mailbox.gob"
+#line 1225 "mn-imap-mailbox.gob"
 	
-    if (priv->idle_state == IDLE_STATE_IDLING)
+    if (priv->idle_state == IDLE_STATE_IDLE)
       {
-	g_mutex_lock(priv->self->_priv->idle_session_mutex);
-	priv->self->_priv->idle_session = priv;
-	g_mutex_unlock(priv->self->_priv->idle_session_mutex);
+	Self *self = priv->self;
+
+	g_mutex_lock(selfp->mutex);
+
+	selfp->idle_session = priv;
+
+	/* cycle IDLE in 29 minutes, as advised by RFC 2177 */
+
+	g_assert(priv->idle_inactivity_timeout_id == 0);
+	priv->idle_inactivity_timeout_id = g_timeout_add(60 * 29 * 1000, self_idle_inactivity_timeout_cb, self);
+
+	g_mutex_unlock(selfp->mutex);
       }
   }}
-#line 1757 "mn-imap-mailbox.c"
+#line 1771 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1231 "mn-imap-mailbox.gob"
+#line 1243 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_post_read_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1763 "mn-imap-mailbox.c"
+#line 1777 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::post_read_cb"
 {
-#line 1234 "mn-imap-mailbox.gob"
+#line 1246 "mn-imap-mailbox.gob"
 	
-    if (priv->idle_state == IDLE_STATE_IDLING)
+    Self *self = priv->self;
+
+    g_mutex_lock(selfp->mutex);
+    if (priv->idle_state >= IDLE_STATE_IDLE)
       {
-	g_mutex_lock(priv->self->_priv->idle_session_mutex);
-	priv->self->_priv->idle_session = NULL;
-	g_mutex_unlock(priv->self->_priv->idle_session_mutex);
+	selfp->idle_session = NULL;
+	mn_source_clear(&priv->idle_inactivity_timeout_id);
       }
+    g_mutex_unlock(selfp->mutex);
   }}
-#line 1776 "mn-imap-mailbox.c"
+#line 1793 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1243 "mn-imap-mailbox.gob"
-static void 
-mn_imap_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, int code, MNClientSessionResponse * response)
-#line 1782 "mn-imap-mailbox.c"
+#line 1258 "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::session_set_error_from_arguments"
-#line 1243 "mn-imap-mailbox.gob"
-	g_return_if_fail (priv != NULL);
-#line 1243 "mn-imap-mailbox.gob"
-	g_return_if_fail (response != NULL);
-#line 1789 "mn-imap-mailbox.c"
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::idle_inactivity_timeout_cb"
 {
-#line 1247 "mn-imap-mailbox.gob"
+#line 1260 "mn-imap-mailbox.gob"
 	
-    if (response->arguments)
-      mn_client_session_error(priv->session, code, "\"%s\"", response->arguments);
-    else
-      mn_client_session_error(priv->session, code, _("unknown server error"));
+    Self *self = data;
+
+    g_mutex_lock(selfp->mutex);
+    if (selfp->idle_session)
+      {
+	mn_client_session_write(selfp->idle_session->session, "DONE");
+	selfp->idle_session->idle_state = IDLE_STATE_POST_IDLE;
+	selfp->idle_session->idle_inactivity = TRUE;
+      }
+    selfp->idle_session->idle_inactivity_timeout_id = 0;
+    g_mutex_unlock(selfp->mutex);
+
+    return FALSE;
   }}
-#line 1798 "mn-imap-mailbox.c"
+#line 1819 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1254 "mn-imap-mailbox.gob"
+#line 1276 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...)
-#line 1804 "mn-imap-mailbox.c"
+#line 1825 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_write"
-#line 1254 "mn-imap-mailbox.gob"
+#line 1276 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1254 "mn-imap-mailbox.gob"
+#line 1276 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (format != NULL, (int )0);
-#line 1811 "mn-imap-mailbox.c"
+#line 1832 "mn-imap-mailbox.c"
 {
-#line 1258 "mn-imap-mailbox.gob"
+#line 1280 "mn-imap-mailbox.gob"
 	
     va_list args;
     char *command;
@@ -1818,7 +1839,7 @@ mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * forma
     va_start(args, format);
     command = g_strdup_vprintf(format, args);
     va_end(args);
-    
+
     if (priv->numeric_tag == 1000)
       priv->numeric_tag = 0;
     sprintf(priv->tag, "a%03i", priv->numeric_tag++);
@@ -1828,22 +1849,22 @@ mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * forma
 
     return result;
   }}
-#line 1832 "mn-imap-mailbox.c"
+#line 1853 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1277 "mn-imap-mailbox.gob"
+#line 1299 "mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_handle_capability_code (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
-#line 1838 "mn-imap-mailbox.c"
+#line 1859 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_capability_code"
-#line 1277 "mn-imap-mailbox.gob"
+#line 1299 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (gboolean )0);
-#line 1277 "mn-imap-mailbox.gob"
+#line 1299 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (gboolean )0);
-#line 1845 "mn-imap-mailbox.c"
+#line 1866 "mn-imap-mailbox.c"
 {
-#line 1280 "mn-imap-mailbox.gob"
+#line 1302 "mn-imap-mailbox.gob"
 	
     if (response->code)
       {
@@ -1861,38 +1882,36 @@ mn_imap_mailbox_handle_capability_code (MNClientSessionPrivate * priv, MNClientS
 
     return FALSE;
   }}
-#line 1865 "mn-imap-mailbox.c"
+#line 1886 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1298 "mn-imap-mailbox.gob"
+#line 1320 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities)
-#line 1871 "mn-imap-mailbox.c"
+#line 1892 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_parse_capabilities"
-#line 1298 "mn-imap-mailbox.gob"
+#line 1320 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1876 "mn-imap-mailbox.c"
+#line 1897 "mn-imap-mailbox.c"
 {
-#line 1301 "mn-imap-mailbox.gob"
+#line 1323 "mn-imap-mailbox.gob"
 	
     g_strfreev(priv->capabilities);
     priv->capabilities = NULL;
 
-    eel_g_slist_free_deep(priv->auth_mechanisms);
-    priv->auth_mechanisms = NULL;
+    mn_g_slist_clear_deep(&priv->auth_mechanisms);
 
-#ifdef WITH_SASL
-    g_slist_free(priv->sasl_remaining_mechanisms);
-    priv->sasl_remaining_mechanisms = NULL;
+#if WITH_SASL
+    mn_g_slist_clear(&priv->sasl_remaining_mechanisms);
 #endif
 
     if (capabilities)
       {
 	int i;
-	
+
 	priv->capabilities = g_strsplit(capabilities, " ", 0);
-	
+
 	for (i = 0; priv->capabilities[i]; i++)
 	  if (g_str_has_prefix(priv->capabilities[i], "AUTH="))
 	    priv->auth_mechanisms = g_slist_append(priv->auth_mechanisms, g_strdup(priv->capabilities[i] + 5));
@@ -1900,22 +1919,22 @@ mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const
     else
       priv->capabilities = g_new0(char *, 1);
   }}
-#line 1904 "mn-imap-mailbox.c"
+#line 1923 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1327 "mn-imap-mailbox.gob"
+#line 1347 "mn-imap-mailbox.gob"
 static gboolean 
 mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const char * capability)
-#line 1910 "mn-imap-mailbox.c"
+#line 1929 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_has_capability"
-#line 1327 "mn-imap-mailbox.gob"
+#line 1347 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (gboolean )0);
-#line 1327 "mn-imap-mailbox.gob"
+#line 1347 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (capability != NULL, (gboolean )0);
-#line 1917 "mn-imap-mailbox.c"
+#line 1936 "mn-imap-mailbox.c"
 {
-#line 1330 "mn-imap-mailbox.gob"
+#line 1350 "mn-imap-mailbox.gob"
 	
     int i;
 
@@ -1924,29 +1943,29 @@ mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const cha
     for (i = 0; priv->capabilities[i]; i++)
       if (! g_ascii_strcasecmp(priv->capabilities[i], capability))
 	return TRUE;
-    
+
     return FALSE;
   }}
-#line 1931 "mn-imap-mailbox.c"
+#line 1950 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1342 "mn-imap-mailbox.gob"
+#line 1362 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
-#line 1937 "mn-imap-mailbox.c"
+#line 1956 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_after_capability"
-#line 1342 "mn-imap-mailbox.gob"
+#line 1362 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1942 "mn-imap-mailbox.c"
+#line 1961 "mn-imap-mailbox.c"
 {
-#line 1344 "mn-imap-mailbox.gob"
+#line 1364 "mn-imap-mailbox.gob"
 	
     if (priv->authenticated)
       return STATE_EXAMINE;
     else
       {
-#ifdef WITH_SSL
+#if WITH_SSL
 	if (priv->pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL
 	    && ! priv->starttls_completed)
 	  {
@@ -1954,7 +1973,7 @@ mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
 	      return STATE_STARTTLS;
 	    else
 	      {
-		mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS"));
+		mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS"));
 		return STATE_LOGOUT;
 	      }
 	  }
@@ -1962,22 +1981,22 @@ mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
 	return self_session_authenticate(priv);
       }
   }}
-#line 1966 "mn-imap-mailbox.c"
+#line 1985 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1366 "mn-imap-mailbox.gob"
+#line 1386 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
-#line 1972 "mn-imap-mailbox.c"
+#line 1991 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate"
-#line 1366 "mn-imap-mailbox.gob"
+#line 1386 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1977 "mn-imap-mailbox.c"
+#line 1996 "mn-imap-mailbox.c"
 {
-#line 1368 "mn-imap-mailbox.gob"
+#line 1388 "mn-imap-mailbox.gob"
 	
-#ifdef WITH_SASL
+#if WITH_SASL
     g_slist_free(priv->sasl_remaining_mechanisms);
     priv->sasl_remaining_mechanisms = g_slist_copy(priv->auth_mechanisms);
 #endif /* WITH_SASL */
@@ -1986,10 +2005,10 @@ mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
       {
 	if (*priv->pi_mailbox->authmech != '+')
 	  {
-#ifdef WITH_SASL
+#if WITH_SASL
 	    return STATE_AUTHENTICATE;
 #else
-	    mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in"));
+	    mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in"));
 	    return STATE_LOGOUT;
 #endif /* WITH_SASL */
 	  }
@@ -1999,38 +2018,38 @@ mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 	      return STATE_LOGIN;
 	    else
 	      {
-		mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech);
+		mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech);
 		return STATE_LOGOUT;
 	      }
 	  }
       }
     else
       {
-#ifdef WITH_SASL
+#if WITH_SASL
 	if (priv->sasl_remaining_mechanisms)
 	  return STATE_AUTHENTICATE;
 #endif /* WITH_SASL */
 	return STATE_LOGIN;
       }
   }}
-#line 2017 "mn-imap-mailbox.c"
+#line 2036 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1406 "mn-imap-mailbox.gob"
+#line 1426 "mn-imap-mailbox.gob"
 static int 
 mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_login)
-#line 2023 "mn-imap-mailbox.c"
+#line 2042 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate_fallback"
-#line 1406 "mn-imap-mailbox.gob"
+#line 1426 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 2028 "mn-imap-mailbox.c"
+#line 2047 "mn-imap-mailbox.c"
 {
-#line 1409 "mn-imap-mailbox.gob"
+#line 1429 "mn-imap-mailbox.gob"
 	
     if (! priv->pi_mailbox->authmech)
       {
-#ifdef WITH_SASL
+#if WITH_SASL
 	if (priv->sasl_mechanism)
 	  {
 	    GSList *elem;
@@ -2058,35 +2077,35 @@ mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gb
 	  }
       }
 
-    if (priv->authenticated_mailbox->prompted)
+    if (priv->pi_mailbox->auth_prompted)
       {
-	mn_authenticated_mailbox_authentication_failed(priv->authenticated_mailbox);
+	mn_pi_mailbox_auth_failed(priv->pi_mailbox);
 	return self_session_authenticate(priv);
       }
     else
       {
-	mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed"));
+	mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed"));
 	return STATE_LOGOUT;
       }
   }}
-#line 2073 "mn-imap-mailbox.c"
+#line 2092 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1452 "mn-imap-mailbox.gob"
+#line 1472 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSessionResponse * greeting_response, MNClientSessionPrivate * priv)
-#line 2079 "mn-imap-mailbox.c"
+#line 2098 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_detect_imapd"
-#line 1452 "mn-imap-mailbox.gob"
+#line 1472 "mn-imap-mailbox.gob"
 	g_return_if_fail (session != NULL);
-#line 1452 "mn-imap-mailbox.gob"
+#line 1472 "mn-imap-mailbox.gob"
 	g_return_if_fail (greeting_response != NULL);
-#line 1452 "mn-imap-mailbox.gob"
+#line 1472 "mn-imap-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 2088 "mn-imap-mailbox.c"
+#line 2107 "mn-imap-mailbox.c"
 {
-#line 1456 "mn-imap-mailbox.gob"
+#line 1476 "mn-imap-mailbox.gob"
 	
     if (greeting_response->arguments)
       {
@@ -2095,7 +2114,7 @@ mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSession
 	/*
 	 * Try to detect UW imapd by looking for " IMAP4rev1 YEAR."
 	 */
-	
+
 	if ((str = mn_strstr_span(greeting_response->arguments, " IMAP4rev1 "))
 	    && strspn(str, "0123456789") == 4
 	    && str[4] == '.')
@@ -2106,7 +2125,104 @@ mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSession
 	  }
       }
   }}
-#line 2110 "mn-imap-mailbox.c"
+#line 2129 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 1496 "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"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 1496 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 1496 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (what != NULL, (int )0);
+#line 1496 "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"
+	
+    priv->search_received = FALSE;
+
+    if (*numbers)
+      g_hash_table_destroy(*numbers);
+    *numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
+
+    return self_session_write(priv, "SEARCH %s", what);
+  }}
+#line 2158 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 1511 "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"
+	g_return_val_if_fail (session != NULL, (int )0);
+#line 1511 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (response != NULL, (int )0);
+#line 1511 "mn-imap-mailbox.gob"
+	g_return_val_if_fail (priv != NULL, (int )0);
+#line 1511 "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"
+	
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
+      {
+	if (HAS_CURRENT_TAG(response, priv))
+	  {
+	    if (IS_OK(response))
+	      {
+		if (priv->search_received)
+		  return 0;	/* success; caller must switch state itself */
+		else		/* compliance error */
+		  return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send search results"));
+	      }
+	    else if (IS_NO(response) || IS_BAD(response))
+	      {
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
+		return STATE_LOGOUT;
+	      }
+	    else
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	  }
+      }
+    else if (IS(response, "SEARCH"))
+      {
+	if (response->arguments)
+	  {
+	    char **strings;
+	    int i;
+
+	    strings = g_strsplit(response->arguments, " ", 0);
+
+	    for (i = 0; strings[i]; i++)
+	      if (mn_str_isnumeric(strings[i]))
+		{
+		  int n = atoi(strings[i]);
+		  g_hash_table_insert(numbers, GINT_TO_POINTER(n), GINT_TO_POINTER(TRUE));
+		}
+
+	    g_strfreev(strings);
+	  }
+
+	priv->search_received = TRUE;
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+      }
+
+    return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
+  }}
+#line 2226 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -2117,17 +2233,17 @@ mn_imap_mailbox_session_detect_imapd (MNClientSession * session, MNClientSession
  *
  * Return value: the quoted string.
  **/
-#line 1484 "mn-imap-mailbox.gob"
+#line 1573 "mn-imap-mailbox.gob"
 static char * 
 mn_imap_mailbox_quote (const char * str)
-#line 2124 "mn-imap-mailbox.c"
+#line 2240 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::quote"
-#line 1484 "mn-imap-mailbox.gob"
+#line 1573 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
-#line 2129 "mn-imap-mailbox.c"
+#line 2245 "mn-imap-mailbox.c"
 {
-#line 1486 "mn-imap-mailbox.gob"
+#line 1575 "mn-imap-mailbox.gob"
 	
     GString *quoted;
     int i;
@@ -2142,7 +2258,7 @@ mn_imap_mailbox_quote (const char * str)
 
     return g_string_free(quoted, FALSE);
   }}
-#line 2146 "mn-imap-mailbox.c"
+#line 2262 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
 /**
@@ -2153,17 +2269,17 @@ mn_imap_mailbox_quote (const char * str)
  *
  * Return value: the string converted to modified UTF-7.
  **/
-#line 1509 "mn-imap-mailbox.gob"
+#line 1598 "mn-imap-mailbox.gob"
 static char * 
 mn_imap_mailbox_utf8_to_imap_utf7 (const char * str)
-#line 2160 "mn-imap-mailbox.c"
+#line 2276 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::utf8_to_imap_utf7"
-#line 1509 "mn-imap-mailbox.gob"
+#line 1598 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (char * )0);
-#line 2165 "mn-imap-mailbox.c"
+#line 2281 "mn-imap-mailbox.c"
 {
-#line 1511 "mn-imap-mailbox.gob"
+#line 1600 "mn-imap-mailbox.gob"
 	
     gunichar c;
     guint32 x, v = 0;
@@ -2173,7 +2289,7 @@ mn_imap_mailbox_utf8_to_imap_utf7 (const char * str)
 
     /*
      * Taken from the Ximian Evolution sources (camel-utf8.c) and
-     * edited for tyle.
+     * edited for style.
      */
 
     out = g_string_new(NULL);
@@ -2220,24 +2336,24 @@ mn_imap_mailbox_utf8_to_imap_utf7 (const char * str)
 
     return g_string_free(out, FALSE);
   }}
-#line 2224 "mn-imap-mailbox.c"
+#line 2340 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1568 "mn-imap-mailbox.gob"
+#line 1657 "mn-imap-mailbox.gob"
 static void 
 mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i)
-#line 2230 "mn-imap-mailbox.c"
+#line 2346 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::imap_utf7_closeb64"
-#line 1568 "mn-imap-mailbox.gob"
+#line 1657 "mn-imap-mailbox.gob"
 	g_return_if_fail (out != NULL);
-#line 2235 "mn-imap-mailbox.c"
+#line 2351 "mn-imap-mailbox.c"
 {
-#line 1570 "mn-imap-mailbox.gob"
+#line 1659 "mn-imap-mailbox.gob"
 	
     /*
      * Taken from the Ximian Evolution sources (camel-utf8.c) and
-     * edited for tyle.
+     * edited for style.
      */
 
     if (i > 0)
@@ -2250,20 +2366,20 @@ mn_imap_mailbox_imap_utf7_closeb64 (GString * out, guint32 v, guint32 i)
 
     g_string_append_c(out, '-');
   }}
-#line 2254 "mn-imap-mailbox.c"
+#line 2370 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1587 "mn-imap-mailbox.gob"
+#line 1676 "mn-imap-mailbox.gob"
 char * 
 mn_imap_mailbox_build_name (const char * username, const char * hostname, const char * mailbox)
-#line 2260 "mn-imap-mailbox.c"
+#line 2376 "mn-imap-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:IMAP:Mailbox::build_name"
-#line 1587 "mn-imap-mailbox.gob"
+#line 1676 "mn-imap-mailbox.gob"
 	g_return_val_if_fail (hostname != NULL, (char * )0);
-#line 2265 "mn-imap-mailbox.c"
+#line 2381 "mn-imap-mailbox.c"
 {
-#line 1591 "mn-imap-mailbox.gob"
+#line 1680 "mn-imap-mailbox.gob"
 	
     GString *name;
 
@@ -2271,7 +2387,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);
 
     if (mailbox && mn_utf8_strcasecmp(mailbox, "INBOX"))
@@ -2279,5 +2395,5 @@ mn_imap_mailbox_build_name (const char * username, const char * hostname, const 
 
     return g_string_free(name, FALSE);
   }}
-#line 2283 "mn-imap-mailbox.c"
+#line 2399 "mn-imap-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-imap-mailbox.gob b/src/mn-imap-mailbox.gob
@@ -7,7 +7,7 @@
  *	- RFC 2177
  *	- RFC 2192 (subset)
  *
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -24,7 +24,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-pi-mailbox.h"
@@ -68,64 +68,65 @@ enum
 {
   STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE,
   STATE_CAPABILITY,
-#ifdef WITH_SSL
+#if WITH_SSL
   STATE_STARTTLS,
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
   STATE_AUTHENTICATE,
 #endif
   STATE_LOGIN,
   STATE_EXAMINE,
-  STATE_SEARCH,
+  STATE_SEARCH_UNSEEN,
+  STATE_SEARCH_RECENT,
   STATE_FETCH,
   STATE_IDLE,
   STATE_LOGOUT
 };
-  
+
 typedef enum
 {
-  IDLE_STATE_NORMAL,
-  IDLE_STATE_IDLING,
-  IDLE_STATE_WAS_IDLING
+  IDLE_STATE_PRE_IDLE,
+  IDLE_STATE_IDLE,
+  IDLE_STATE_POST_IDLE
 } IdleState;
 
 struct _MNClientSessionPrivate
 {
-  MNMailbox			*mailbox;
-  MNAuthenticatedMailbox	*authenticated_mailbox;
-  MNPIMailbox			*pi_mailbox;
+  MN_PI_MAILBOX_SESSION_PRIVATE;
   MNIMAPMailbox			*self;
-  MNClientSession		*session;
 
   const char			*server_software;
   gboolean			server_software_supports_idle;
-  
+
   int				numeric_tag;
   char				tag[5];
 
   char				**capabilities;
   GSList			*auth_mechanisms;
   gboolean			authenticated;
-  
+
   gboolean			search_received;
-  GSList			*fetch_numbers;
-  char				*fetch_set;
-  
-  GSList			*received_numbers;
+
+  GHashTable			*unseen_numbers;
+  GHashTable			*recent_numbers;
+  GHashTable			*received_numbers;
+
   GSList			*messages;
 
-#ifdef WITH_SSL
+#if WITH_SSL
   gboolean			starttls_completed;
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
   GSList			*sasl_remaining_mechanisms;
   const char			*sasl_mechanism;
 #endif
 
   IdleState			idle_state;
+  unsigned int			idle_inactivity_timeout_id;
+  gboolean			idle_inactivity;
   gboolean			could_idle;	/* could idle at least once */
 };
-  
+
 struct _MNClientSessionResponse
 {
   char		*continuation;
@@ -135,6 +136,12 @@ struct _MNClientSessionResponse
   char		*arguments;
 };
 
+typedef struct
+{
+  MNClientSessionPrivate	*priv;
+  gboolean			error;
+} CheckReceivedInfo;
+
 int mn_imap_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES] = { 143, 143, 993 };
 
 /* variable taken from Evolution (camel-utf8.c) */
@@ -152,18 +159,19 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 {
   private int removed;		/* boolean, access with g_atomic_int_ API */
 
+  /* lock for synchronization between main thread and check thread */
+  private GMutex *mutex = {g_mutex_new()} destroywith g_mutex_free;
+
   private MNClientSessionPrivate *idle_session;
-  private GMutex *idle_session_mutex = {g_mutex_new()} destroywith g_mutex_free;
-  
+
   public char *mailbox destroywith g_free;
   property STRING mailbox (link,
 			   flags = CONSTRUCT
 			   | MN_MAILBOX_PARAM_PERMANENT
+			   | MN_MAILBOX_PARAM_REQUIRED
 			   | MN_MAILBOX_PARAM_IGNORE_CASE,
 			   default_value = "INBOX");
 
-  public char *runtime_mailbox destroywith g_free;
-
   public MNIMAPMailboxUseIDLE use_idle_extension;
   property ENUM use_idle_extension (link,
 				    enum_type = MN:IMAP:Mailbox:Use:IDLE,
@@ -177,18 +185,9 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     MN_PI_MAILBOX_CLASS(class)->default_ports = mn_imap_mailbox_default_ports;
   }
 
-  override (G:Object) GObject *
-    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  init (self)
   {
-    GObject *object;
-    MNMailbox *mailbox;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
-    
-    mn_mailbox_set_format(mailbox, "IMAP");
-
-    return object;
+    mn_mailbox_set_format(MN_MAILBOX(self), "IMAP");
   }
 
   override (MN:Mailbox) void
@@ -198,14 +197,12 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     PARENT_HANDLER(mailbox);
 
-    self->runtime_mailbox = g_strdup(self->mailbox ? self->mailbox : "INBOX");
-
     if (! mailbox->runtime_name)
       mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username,
 					      MN_PI_MAILBOX(mailbox)->hostname,
-					      self->runtime_mailbox);
+					      self->mailbox);
   }
-  
+
   /*
    * Parses a RFC 2192 IMAP URL.
    *
@@ -227,7 +224,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     len = strlen(uri);
     buflen = len + 1;
-    
+
     {
       char scheme_buf[buflen];
       char auth_buf[buflen];
@@ -286,7 +283,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     return mailbox;
   }
-  
+
   private gboolean
     split_uri_location (const char *location (check null),
 			int maxlen,
@@ -300,7 +297,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     pat = g_strdup_printf("%%%i[^/]/%%%is", maxlen, maxlen);
     n = sscanf(location, pat, hostport, path);
     g_free(pat);
-    
+
     g_return_val_if_fail(n >= 1, FALSE);
 
     *has_path = n == 2;
@@ -313,7 +310,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     return TRUE;
   }
-  
+
   override (MN:Mailbox) void
     removed (MNMailbox *mailbox)
   {
@@ -321,13 +318,13 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     g_atomic_int_inc(&selfp->removed);
 
-    g_mutex_lock(selfp->idle_session_mutex);
+    g_mutex_lock(selfp->mutex);
     if (selfp->idle_session)
       {
 	mn_client_session_write(selfp->idle_session->session, "DONE");
-	selfp->idle_session->idle_state = IDLE_STATE_WAS_IDLING;
+	selfp->idle_session->idle_state = IDLE_STATE_POST_IDLE;
       }
-    g_mutex_unlock(selfp->idle_session_mutex);
+    g_mutex_unlock(selfp->mutex);
 
     PARENT_HANDLER(mailbox);
   }
@@ -357,10 +354,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	  : STATE_CAPABILITY;
       }
     else if (! response->tag && IS_BYE(response))
-      {
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
-      }
+      return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
     else
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
   }
@@ -387,11 +381,11 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	      {
 		return priv->capabilities
 		  ? self_session_after_capability(priv)
-		  : mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send capabilities"));
+		  : mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send capabilities"));
 	      }
 	    else if (IS_BAD(response))
 	      {
-		self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 		return STATE_LOGOUT;
 	      }
 	    else
@@ -403,27 +397,28 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	self_session_parse_capabilities(priv, response->arguments);
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
       }
-    
+
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }
-  
+
   private int
     enter_starttls_cb (MNClientSession *session,
 		       MNClientSessionPrivate *priv)
   {
-#ifdef WITH_SSL
+#if WITH_SSL
     return self_session_write(priv, "STARTTLS");
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SSL */
   }
-  
+
   private int
     handle_starttls_cb (MNClientSession *session,
 			MNClientSessionResponse *response,
 			MNClientSessionPrivate *priv)
   {
-#ifdef WITH_SSL
+#if WITH_SSL
     if (response->continuation)
       return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
     else if (response->tag)
@@ -438,7 +433,10 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 		  : MN_CLIENT_SESSION_RESULT_DISCONNECT;
 	      }
 	    else if (IS_BAD(response))
-	      return self_session_authenticate(priv);
+	      {
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
+		return STATE_LOGOUT;
+	      }
 	    else
 	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 	  }
@@ -446,38 +444,16 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SSL */
   }
-  
-  private void
-    sasl_get_credentials_cb (MNClientSession *session,
-			     MNClientSessionPrivate *priv,
-			     const char **username,
-			     const char **password)
-  {
-#ifdef WITH_SASL
-    g_return_if_fail(username != NULL || password != NULL);
-
-    mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox,
-					      username != NULL,
-					      password != NULL);
-
-    if (username)
-      *username = priv->authenticated_mailbox->runtime_username;
-
-    if (password)
-      *password = priv->authenticated_mailbox->runtime_password;
-#else
-    g_return_if_reached();
-#endif /* WITH_SASL */
-  }
 
   private int
     enter_authenticate_cb (MNClientSession *session,
 			   MNClientSessionPrivate *priv)
   {
-#ifdef WITH_SASL
+#if WITH_SASL
     priv->sasl_mechanism = NULL;
 
     if (mn_client_session_sasl_authentication_start(priv->session,
@@ -488,11 +464,11 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 						    NULL,	/* [1] */
 						    NULL))	/* [1] */
       {
-	g_return_val_if_fail(priv->sasl_mechanism != NULL, 0);
+	g_assert(priv->sasl_mechanism != NULL);
 	return self_session_write(priv, "AUTHENTICATE %s", priv->sasl_mechanism);
       }
     else
-      return priv->authenticated_mailbox->cancelled
+      return priv->pi_mailbox->auth_cancelled
 	? STATE_LOGOUT
 	: self_session_authenticate_fallback(priv, FALSE);
 
@@ -501,16 +477,17 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
      * support the initial client response feature of SASL.
      */
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SASL */
   }
-  
+
   private int
     handle_authenticate_cb (MNClientSession *session,
 			    MNClientSessionResponse *response,
 			    MNClientSessionPrivate *priv)
   {
-#ifdef WITH_SASL
+#if WITH_SASL
     if (response->tag)
       {
 	if (HAS_CURRENT_TAG(response, priv))
@@ -547,7 +524,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	      }
 	    else if (IS_NO(response) || IS_BAD(response))
 	      {
-		return priv->authenticated_mailbox->cancelled
+		return priv->pi_mailbox->auth_cancelled
 		  ? STATE_LOGOUT
 		  : self_session_authenticate_fallback(priv, FALSE);
 	      }
@@ -557,13 +534,14 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
       }
     else if (response->continuation)
       return mn_client_session_sasl_authentication_step(session, response->continuation);
-    
+
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SASL */
   }
-  
+
   private int
     enter_login_cb (MNClientSession *session,
 		    MNClientSessionPrivate *priv)
@@ -571,7 +549,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     if (self_session_has_capability(priv, "LOGINDISABLED"))
       {
 	mn_client_session_notice(session, _("server advertised LOGINDISABLED, not using LOGIN authentication"));
-	mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to login"));
+	mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to login"));
 	return STATE_LOGOUT;
       }
     else
@@ -580,14 +558,11 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	char *quoted_password;
 	int result;
 
-	mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox, TRUE, TRUE);
-
-	if (! priv->authenticated_mailbox->runtime_username
-	    || ! priv->authenticated_mailbox->runtime_password)
+	if (! mn_pi_mailbox_fill_credentials(priv->pi_mailbox, TRUE, TRUE))
 	  return STATE_LOGOUT;
 
-	quoted_username = self_quote(priv->authenticated_mailbox->runtime_username);
-	quoted_password = self_quote(priv->authenticated_mailbox->runtime_password);
+	quoted_username = self_quote(priv->pi_mailbox->runtime_username);
+	quoted_password = self_quote(priv->pi_mailbox->runtime_password);
 	result = self_session_write(priv, "LOGIN %s %s", quoted_username, quoted_password);
 	g_free(quoted_username);
 	g_free(quoted_password);
@@ -595,7 +570,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	return result;
       }
   }
-  
+
   private int
     handle_login_cb (MNClientSession *session,
 		     MNClientSessionResponse *response,
@@ -620,10 +595,10 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 	  }
       }
-    
+
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }
-  
+
   private int
     enter_examine_cb (MNClientSession *session,
 		      MNClientSessionPrivate *priv)
@@ -632,16 +607,16 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     char *quoted_mailbox;
     int result;
 
-    utf7_mailbox = self_utf8_to_imap_utf7(priv->self->runtime_mailbox);
+    utf7_mailbox = self_utf8_to_imap_utf7(priv->self->mailbox);
     quoted_mailbox = self_quote(utf7_mailbox);
     g_free(utf7_mailbox);
-    
+
     result = self_session_write(priv, "EXAMINE %s", quoted_mailbox);
     g_free(quoted_mailbox);
 
     return result;
   }
-  
+
   private int
     handle_examine_cb (MNClientSession *session,
 		       MNClientSessionResponse *response,
@@ -654,10 +629,10 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	if (HAS_CURRENT_TAG(response, priv))
 	  {
 	    if (IS_OK(response))
-	      return STATE_SEARCH;
+	      return STATE_SEARCH_UNSEEN;
 	    else if (IS_NO(response) || IS_BAD(response))
 	      {
-		self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 		return STATE_LOGOUT;
 	      }
 	    else
@@ -667,110 +642,95 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }
-  
+
   private int
-    enter_search_cb (MNClientSession *session,
-		     MNClientSessionPrivate *priv)
+    enter_search_unseen_cb (MNClientSession *session,
+			    MNClientSessionPrivate *priv)
   {
-    priv->search_received = FALSE;
-
-    g_slist_free(priv->fetch_numbers);
-    priv->fetch_numbers = NULL;
-
-    g_free(priv->fetch_set);
-    priv->fetch_set = NULL;
-    
-    return self_session_write(priv, "SEARCH UNSEEN");
+    return self_session_enter_search(session, priv, "UNSEEN", &priv->unseen_numbers);
   }
-  
+
   private int
-    handle_search_cb (MNClientSession *session,
-		      MNClientSessionResponse *response,
-		      MNClientSessionPrivate *priv)
+    handle_search_unseen_cb (MNClientSession *session,
+			     MNClientSessionResponse *response,
+			     MNClientSessionPrivate *priv)
   {
-    if (response->continuation)
-      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
-    else if (response->tag)
+    int result = self_session_handle_search(session, response, priv, priv->unseen_numbers);
+
+    if (result == 0)
       {
-	if (HAS_CURRENT_TAG(response, priv))
+	/* finished successfully */
+	if (g_hash_table_size(priv->unseen_numbers) > 0)
+	  result = STATE_SEARCH_RECENT;
+	else
 	  {
-	    if (IS_OK(response))
-	      {
-		if (priv->search_received)
-		  {
-		    if (priv->fetch_set)
-		      return STATE_FETCH;
-		    else
-		      {
-			GDK_THREADS_ENTER();
-			mn_mailbox_set_messages(priv->mailbox, NULL);
-			gdk_flush();
-			GDK_THREADS_LEAVE();
-
-			return STATE_IDLE;
-		      }
-		  }
-		else		/* compliance error */
-		  return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send search results"));
-	      }
-	    else if (IS_NO(response) || IS_BAD(response))
-	      {
-		self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-		return STATE_LOGOUT;
-	      }
-	    else
-	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	    GDK_THREADS_ENTER();
+	    mn_mailbox_set_messages(priv->mailbox, NULL);
+	    gdk_flush();
+	    GDK_THREADS_LEAVE();
+
+	    result = STATE_IDLE;
 	  }
       }
-    else if (IS(response, "SEARCH"))
-      {
-	if (response->arguments)
-	  {
-	    char **numbers;
-	    GString *string;
-	    int i;
-
-	    numbers = g_strsplit(response->arguments, " ", 0);
-	    string = g_string_new(NULL);
 
-	    for (i = 0; numbers[i]; i++)
-	      if (mn_str_isnumeric(numbers[i]))
-		{
-		  int n = atoi(numbers[i]);
-
-		  if (*string->str)
-		    g_string_append_c(string, ',');
-		  g_string_append(string, numbers[i]);
+    return result;
+  }
 
-		  priv->fetch_numbers = g_slist_append(priv->fetch_numbers, GINT_TO_POINTER(n));
-		}
+  private int
+    enter_search_recent_cb (MNClientSession *session,
+			    MNClientSessionPrivate *priv)
+  {
+    return self_session_enter_search(session, priv, "RECENT", &priv->recent_numbers);
+  }
 
-	    g_strfreev(numbers);
-	    priv->fetch_set = g_string_free(string, FALSE);
-	  }
+  private int
+    handle_search_recent_cb (MNClientSession *session,
+			     MNClientSessionResponse *response,
+			     MNClientSessionPrivate *priv)
+  {
+    int result = self_session_handle_search(session, response, priv, priv->recent_numbers);
 
-	priv->search_received = TRUE;
-	return MN_CLIENT_SESSION_RESULT_CONTINUE;
-      }
+    if (result == 0)
+      /* finished successfully */
+      result = STATE_FETCH;
 
-    return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
+    return result;
   }
-  
+
   private int
-    enter_fetch_cb (MNClientSession *session,
-		    MNClientSessionPrivate *priv)
+    enter_fetch_cb (MNClientSession *session, MNClientSessionPrivate *priv)
   {
-    g_return_val_if_fail(priv->fetch_set != NULL, 0);
+    GString *string;
+    int result;
+
+    g_assert(priv->unseen_numbers != NULL);
+    g_assert(g_hash_table_size(priv->unseen_numbers) > 0);
+
+    if (priv->received_numbers)
+      g_hash_table_destroy(priv->received_numbers);
+    priv->received_numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
+
+    mn_g_object_slist_clear(&priv->messages);
 
-    g_slist_free(priv->received_numbers);
-    priv->received_numbers = NULL;
+    string = g_string_new(NULL);
+    g_hash_table_foreach(priv->unseen_numbers, self_build_fetch_set_cb, string);
+
+    result = self_session_write(priv, "FETCH %s BODY.PEEK[HEADER]", string->str);
+    g_string_free(string, TRUE);
+
+    return result;
+  }
 
-    mn_g_object_slist_free(priv->messages);
-    priv->messages = NULL;
+  private void
+    build_fetch_set_cb (gpointer key, gpointer value, gpointer user_data)
+  {
+    GString *string = user_data;
 
-    return self_session_write(priv, "FETCH %s BODY[HEADER]", priv->fetch_set);
+    if (*string->str)
+      g_string_append_c(string, ',');
+    g_string_append_printf(string, "%i", GPOINTER_TO_INT(key));
   }
-  
+
   private int
     handle_fetch_cb (MNClientSession *session,
 		     MNClientSessionResponse *response,
@@ -784,35 +744,34 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	  {
 	    if (IS_OK(response))
 	      {
-		GSList *l;
+		CheckReceivedInfo info = { priv, FALSE };
+
+		g_hash_table_foreach(priv->unseen_numbers, self_check_received_cb, &info);
+		if (info.error)
+		  /* compliance error */
+		  return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send all the messages we requested"));
 
-		MN_LIST_FOREACH(l, priv->fetch_numbers)
-		  if (! g_slist_find(priv->received_numbers, l->data))
-		    /* compliance error */
-		    return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send all the messages we requested"));
-		    
 		GDK_THREADS_ENTER();
 
 		mn_mailbox_set_messages(priv->mailbox, priv->messages);
 
 		/*
-		 * In impl_check(), we do not hold the GDK lock while
-		 * unreffing the message list. We have just exposed
-		 * the list to other threads through our
+		 * In authenticated_check(), we do not hold the GDK
+		 * lock while unreffing the message list. We have just
+		 * exposed the list to other threads through our
 		 * mn_mailbox_set_messages() call, so unref it here,
 		 * while we hold the GDK lock.
 		 */
-		mn_g_object_slist_free(priv->messages);
-		priv->messages = NULL;
+		mn_g_object_slist_clear(&priv->messages);
 
 		gdk_flush();
 		GDK_THREADS_LEAVE();
-		
+
 		return STATE_IDLE;
 	      }
 	    else if (IS_NO(response) || IS_BAD(response))
 	      {
-		self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 		return STATE_LOGOUT;
 	      }
 	    else
@@ -831,12 +790,16 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
 	int n = atoi(response->response);
 
-	if (g_slist_find(priv->fetch_numbers, GINT_TO_POINTER(n)))
+	if (g_hash_table_lookup(priv->unseen_numbers, GINT_TO_POINTER(n)))
 	  {
 	    char *p;
 	    int len;
+	    MNMessageFlags flags = 0;
 
-	    priv->received_numbers = g_slist_append(priv->received_numbers, GINT_TO_POINTER(n));
+	    if (g_hash_table_lookup(priv->recent_numbers, GINT_TO_POINTER(n)))
+	      flags |= MN_MESSAGE_NEW;
+
+	    g_hash_table_insert(priv->received_numbers, GINT_TO_POINTER(n), GINT_TO_POINTER(TRUE));
 
 	    /* we assume the header string will be in literal form */
 
@@ -844,27 +807,36 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	    if (p && sscanf(p, "{%d}", &len) == 1 && len >= 0)
 	      {
 		gconstpointer buf;
-		
+
 		buf = mn_client_session_read(session, len);
 		if (! buf)
 		  return MN_CLIENT_SESSION_RESULT_DISCONNECT;
-		
-		priv->messages = g_slist_append(priv->messages, mn_message_new_from_buffer(priv->mailbox, buf, len));
-		
+
+		priv->messages = g_slist_prepend(priv->messages, mn_message_new_from_buffer(priv->mailbox, buf, len, flags, FALSE));
+
 		/* read end of line (after literal) */
 		if (! mn_client_session_read_line(session))
 		  return MN_CLIENT_SESSION_RESULT_DISCONNECT;
 	      }
 	    else
-	      priv->messages = g_slist_append(priv->messages, mn_message_new_from_error(priv->mailbox, _("unable to fetch message")));
+	      priv->messages = g_slist_prepend(priv->messages, mn_message_new_from_error(priv->mailbox, _("unable to fetch message"), flags));
 
 	    return MN_CLIENT_SESSION_RESULT_CONTINUE;
 	  }
       }
-	
+
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
   }
-  
+
+  private void
+    check_received_cb (gpointer key, gpointer value, gpointer user_data)
+  {
+    CheckReceivedInfo *info = user_data;
+
+    if (! info->error && ! g_hash_table_lookup(info->priv->received_numbers, key))
+      info->error = TRUE;
+  }
+
   private int
     enter_idle_cb (MNClientSession *session,
 		   MNClientSessionPrivate *priv)
@@ -885,15 +857,15 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 		    else
 		      mn_client_session_notice(session, _("the remote server runs %s, not using the IDLE extension"), priv->server_software);
 		    break;
-		    
+
 		  case MN_IMAP_MAILBOX_USE_IDLE_ALWAYS:
 		    if (! priv->server_software_supports_idle)
 		      mn_client_session_warning(session, _("the remote server runs %s, the IDLE extension might not function properly"), priv->server_software);
 		    goto idle;
 		    break;
-		    
+
 		  default:
-		    g_return_val_if_reached(0);
+		    g_assert_not_reached();
 		  }
 	      }
 	    else
@@ -904,23 +876,59 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     return STATE_LOGOUT;
 
   idle:
-    priv->idle_state = IDLE_STATE_NORMAL;
+    priv->idle_state = IDLE_STATE_PRE_IDLE;
     return self_session_write(priv, "IDLE");
   }
-  
+
   private int
     handle_idle_cb (MNClientSession *session,
 		    MNClientSessionResponse *response,
 		    MNClientSessionPrivate *priv)
   {
-    if (priv->idle_state == IDLE_STATE_IDLING)
+    switch (priv->idle_state)
       {
+      case IDLE_STATE_PRE_IDLE:
+	if (response->tag)
+	  {
+	    if (HAS_CURRENT_TAG(response, priv))
+	      {
+		if (IS_NO(response) || IS_BAD(response))
+		  /*
+		   * The server advertised IDLE but does not actually
+		   * support it.
+		   *
+		   * Although strictly speaking this can be considered a
+		   * compliance fault, we'll be tolerant and just logout
+		   * without setting an error.
+		   */
+		  return STATE_LOGOUT;
+		else
+		  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	      }
+	  }
+	else if (response->continuation)
+	  {
+	    /* we're now in the idle loop */
+	    priv->idle_state = IDLE_STATE_IDLE;
+	    priv->idle_inactivity = FALSE;
+	    priv->could_idle = TRUE;
+
+	    GDK_THREADS_ENTER();
+	    mn_mailbox_set_poll(priv->mailbox, FALSE);
+	    gdk_flush();
+	    GDK_THREADS_LEAVE();
+
+	    return MN_CLIENT_SESSION_RESULT_CONTINUE;
+	  }
+	break;
+
+      case IDLE_STATE_IDLE:
 	if (response->continuation || response->tag)
 	  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 
 	if (IS_BYE(response))
 	  {
-	    priv->idle_state = IDLE_STATE_WAS_IDLING;
+	    priv->idle_state = IDLE_STATE_POST_IDLE;
 	    return MN_CLIENT_SESSION_RESULT_DISCONNECT; /* we'll reconnect */
 	  }
 	else if (response->arguments
@@ -930,50 +938,41 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 		     || ! g_ascii_strcasecmp(response->arguments, "EXPUNGE")
 		     || mn_ascii_str_case_has_prefix(response->arguments, "FETCH ")))
 	  {
-	    priv->idle_state = IDLE_STATE_WAS_IDLING;
+	    priv->idle_state = IDLE_STATE_POST_IDLE;
 	    return mn_client_session_write(session, "DONE"); /* wake up */
 	  }
-      }
-    else
-      {
-	if (response->continuation)
-	  {
-	    if (priv->idle_state == IDLE_STATE_WAS_IDLING)
-	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
-	    else
-	      {
-		/* we're now in the idle loop */
-		priv->idle_state = IDLE_STATE_IDLING;
-		priv->could_idle = TRUE;
-		
-		GDK_THREADS_ENTER();
-		mn_mailbox_set_must_poll(priv->mailbox, FALSE);
-		gdk_flush();
-		GDK_THREADS_LEAVE();
+	break;
 
-		return MN_CLIENT_SESSION_RESULT_CONTINUE;
-	      }
-	  }
-	else if (response->tag)
+      case IDLE_STATE_POST_IDLE:
+	if (response->tag)
 	  {
 	    if (HAS_CURRENT_TAG(response, priv))
 	      {
 		if (IS_OK(response))
-		  return REMOVED(priv->self) ? STATE_LOGOUT : STATE_SEARCH;
+		  {
+		    if (REMOVED(priv->self))
+		      return STATE_LOGOUT;
+		    else if (priv->idle_inactivity)
+		      return STATE_IDLE; /* anti-inactivity, re-enter */
+		    else
+		      return STATE_SEARCH_UNSEEN;
+		  }
 		else if (IS_NO(response) || IS_BAD(response))
-		  /*
-		   * The server advertised IDLE but does not actually
-		   * support it.
-		   *
-		   * Although strictly speaking this can be considered
-		   * a compliance fault, we'll be tolerant and just
-		   * logout without setting an error.
-		   */
-		  return STATE_LOGOUT;
+		  {
+		    mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
+		    return STATE_LOGOUT;
+		  }
 		else
 		  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 	      }
 	  }
+	else if (response->continuation)
+	  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	break;
+
+      default:
+	g_assert_not_reached();
+	break;
       }
 
     return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
@@ -998,48 +997,46 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	if (IS_OK(response))
 	  return MN_CLIENT_SESSION_RESULT_DISCONNECT;
 	else if (IS_BAD(response))
-	  {
-	    self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	    return MN_CLIENT_SESSION_RESULT_DISCONNECT;
-	  }
+	  return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 	else
 	  return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
     else
       return MN_CLIENT_SESSION_RESULT_CONTINUE;
   }
-  
+
   override (MN:Authenticated:Mailbox) void
-    impl_check (MNAuthenticatedMailbox *mailbox)
+    authenticated_check (MNAuthenticatedMailbox *mailbox)
   {
     Self *self = SELF(mailbox);
     MNClientSessionState states[] = {
       { STATE_GREETING,		NULL,				self_handle_greeting_cb },
       { STATE_CAPABILITY,	self_enter_capability_cb,	self_handle_capability_cb },
-#ifdef WITH_SSL
+#if WITH_SSL
       { STATE_STARTTLS,		self_enter_starttls_cb,		self_handle_starttls_cb },
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
       { STATE_AUTHENTICATE,	self_enter_authenticate_cb,	self_handle_authenticate_cb },
 #endif
       { STATE_LOGIN,		self_enter_login_cb,		self_handle_login_cb },
       { STATE_EXAMINE,		self_enter_examine_cb,		self_handle_examine_cb },
-      { STATE_SEARCH,		self_enter_search_cb,		self_handle_search_cb },
+      { STATE_SEARCH_UNSEEN,	self_enter_search_unseen_cb,	self_handle_search_unseen_cb },
+      { STATE_SEARCH_RECENT,	self_enter_search_recent_cb,	self_handle_search_recent_cb },
       { STATE_FETCH,		self_enter_fetch_cb,		self_handle_fetch_cb },
       { STATE_IDLE,		self_enter_idle_cb,		self_handle_idle_cb },
       { STATE_LOGOUT,		self_enter_logout_cb,		self_handle_logout_cb },
-      
+
       MN_CLIENT_SESSION_STATES_END
     };
     MNClientSessionCallbacks callbacks = {
-      self_notice_cb,
-      self_warning_cb,
+      mn_pi_mailbox_notice_cb,
+      mn_pi_mailbox_warning_cb,
       self_response_new_cb,
       self_response_free_cb,
       self_pre_read_cb,
       self_post_read_cb,
-#ifdef WITH_SASL
-      self_sasl_get_credentials_cb,
+#if WITH_SASL
+      mn_pi_mailbox_sasl_get_credentials_cb,
 #endif
     };
     MNClientSessionPrivate priv;
@@ -1050,7 +1047,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     PARENT_HANDLER(mailbox);
 
     /* check if the parent handler has disabled the mailbox */
-    if (! MN_MAILBOX(self)->must_poll)
+    if (! mn_mailbox_get_poll(MN_MAILBOX(self)))
       return;
 
     do
@@ -1059,32 +1056,33 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	again = FALSE;
 
 	memset(&priv, 0, sizeof(priv));
-	priv.mailbox = MN_MAILBOX(self);
-	priv.authenticated_mailbox = mailbox;
-	priv.pi_mailbox = MN_PI_MAILBOX(self);
+	mn_pi_mailbox_session_private_init(MN_PI_MAILBOX(self), &priv);
 	priv.self = self;
 	priv.server_software_supports_idle = TRUE; /* assume it does */
-    
+
 	status = mn_client_session_run(states,
 				       &callbacks,
-#ifdef WITH_SSL
+#if WITH_SSL
 				       priv.pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL,
 #endif
 				       priv.pi_mailbox->hostname,
 				       priv.pi_mailbox->runtime_port,
 				       &priv,
 				       &err);
-    
+
 	g_strfreev(priv.capabilities);
 	eel_g_slist_free_deep(priv.auth_mechanisms);
 
-	g_slist_free(priv.fetch_numbers);
-	g_free(priv.fetch_set);
+	if (priv.unseen_numbers)
+	  g_hash_table_destroy(priv.unseen_numbers);
+	if (priv.recent_numbers)
+	  g_hash_table_destroy(priv.recent_numbers);
+	if (priv.received_numbers)
+	  g_hash_table_destroy(priv.received_numbers);
 
-	g_slist_free(priv.received_numbers);
 	mn_g_object_slist_free(priv.messages);
 
-#ifdef WITH_SASL
+#if WITH_SASL
 	g_slist_free(priv.sasl_remaining_mechanisms);
 #endif
 
@@ -1095,6 +1093,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	    /* some servers abruptly disconnect for inactivity */
 	    else if (g_error_matches(err, MN_CLIENT_SESSION_ERROR, MN_CLIENT_SESSION_ERROR_CONNECTION_LOST))
 	      {
+		/* g_log() escapes unsafe and non UTF-8 characters, so this is safe */
 		mn_mailbox_notice(priv.mailbox, "%s", err->message);
 		again = TRUE;
 	      }
@@ -1104,32 +1103,21 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     GDK_THREADS_ENTER();
 
-    mn_mailbox_set_must_poll(MN_MAILBOX(self), TRUE);
+    mn_mailbox_set_poll(MN_MAILBOX(self), TRUE);
     if (! status)
       {
-	mn_mailbox_set_error(MN_MAILBOX(self), "%s", err->message);
+	char *escaped;
+
+	escaped = mn_utf8_escape(err->message);
 	g_error_free(err);
+
+	mn_mailbox_set_error(MN_MAILBOX(self), "%s", escaped);
+	g_free(escaped);
       }
 
     gdk_flush();
     GDK_THREADS_LEAVE();
   }
-  
-  private void
-    notice_cb (MNClientSession *session,
-	       const char *message,
-	       MNClientSessionPrivate *priv)
-  {
-    mn_mailbox_notice(priv->mailbox, "%s", message);
-  }
-  
-  private void
-    warning_cb (MNClientSession *session,
-		const char *message,
-		MNClientSessionPrivate *priv)
-  {
-    mn_mailbox_warning(priv->mailbox, "%s", message);
-  }
 
   private MNClientSessionResponse *
     response_new_cb (MNClientSession *session,
@@ -1139,53 +1127,71 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     MNClientSessionResponse *response = NULL;
 
     /*
-     * RFC 3501 1.2: "Characters are 7-bit US-ASCII unless otherwise
-     * specified."
+     * About character set handling:
+     *
+     * RFC 3501 section 1.2 specifies that "characters are 7-bit
+     * US-ASCII unless otherwise specified", and the ABNF formal
+     * syntax found in section 9 confirms it. However, we follow the
+     * RFC 793 robustness principle ("be liberal in what you accept")
+     * and do not require responses to be valid 7-bit US-ASCII.
+     *
+     * Safety:
+     *   - we ensure that GTK+ will only receive UTF-8 data by
+     *     escaping error messages in authenticated_check()
+     *   - responses ending up in mn_mailbox_notice() need not be
+     *     valid UTF-8, since g_log() escapes unsafe and non UTF-8
+     *     characters
+     *   - messages do not go through this function; they are handled
+     *     in handle_fetch_cb() and passed to our mn-message-mime
+     *     implementation, which handles character set conversions
      */
-    if (mn_ascii_validate(input))
+
+    if (! strcmp(input, "+"))
       {
-	if (g_str_has_prefix(input, "+ "))
-	  {
-	    response = g_new0(MNClientSessionResponse, 1);
-	    response->continuation = g_strdup(input + 2);
-	  }
-	else
+	response = g_new0(MNClientSessionResponse, 1);
+	response->continuation = g_strdup("");
+      }
+    else if (g_str_has_prefix(input, "+ "))
+      {
+	response = g_new0(MNClientSessionResponse, 1);
+	response->continuation = g_strdup(input + 2);
+      }
+    else
+      {
+	char **tokens;
+
+	tokens = g_strsplit(input, " ", 3);
+	if (tokens[0] && tokens[1])
 	  {
-	    char **tokens;
-	    
-	    tokens = g_strsplit(input, " ", 3);
-	    if (tokens[0] && tokens[1])
+	    if (tokens[2] && tokens[2][0] == '[')
 	      {
-		if (tokens[2] && tokens[2][0] == '[')
-		  {
-		    char *code_start;
-		    char *code_end;
-		    
-		    code_start = tokens[2] + 1;
-		    code_end = strchr(code_start, ']');
-		    if (code_end)
-		      {
-			response = g_new0(MNClientSessionResponse, 1);
-			response->code = g_strndup(code_start, code_end - code_start);
-			response->arguments = code_end[1] ? g_strdup(code_end + 2) : NULL;
-		      }
-		  }
-		else
+		char *code_start;
+		char *code_end;
+
+		code_start = tokens[2] + 1;
+		code_end = strchr(code_start, ']');
+		if (code_end)
 		  {
 		    response = g_new0(MNClientSessionResponse, 1);
-		    response->arguments = g_strdup(tokens[2]);
-		  }
-		
-		if (response)
-		  {
-		    response->tag = ! strcmp(tokens[0], "*") ? NULL : g_strdup(tokens[0]);
-		    response->response = g_strdup(tokens[1]);
+		    response->code = g_strndup(code_start, code_end - code_start);
+		    response->arguments = code_end[1] ? g_strdup(code_end + 2) : NULL;
 		  }
 	      }
-	    g_strfreev(tokens);
+	    else
+	      {
+		response = g_new0(MNClientSessionResponse, 1);
+		response->arguments = g_strdup(tokens[2]);
+	      }
+
+	    if (response)
+	      {
+		response->tag = ! strcmp(tokens[0], "*") ? NULL : g_strdup(tokens[0]);
+		response->response = g_strdup(tokens[1]);
+	      }
 	  }
+	g_strfreev(tokens);
       }
-	
+
     return response;
   }
 
@@ -1201,30 +1207,36 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     g_free(response->arguments);
     g_free(response);
   }
-  
+
   private int
     default_handler (MNClientSessionResponse *response (check null),
 		     MNClientSessionPrivate *priv (check null),
 		     int error_code_when_bye)
   {
     if (! response->tag && IS_BYE(response))
-      {
-	self_session_set_error_from_arguments(priv, error_code_when_bye, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
-      }
+      return mn_client_session_set_error_from_response(priv->session, error_code_when_bye, response->arguments);
     else
       return MN_CLIENT_SESSION_RESULT_CONTINUE;
   }
-  
+
   private void
     pre_read_cb (MNClientSession *session,
 		 MNClientSessionPrivate *priv)
   {
-    if (priv->idle_state == IDLE_STATE_IDLING)
+    if (priv->idle_state == IDLE_STATE_IDLE)
       {
-	g_mutex_lock(priv->self->_priv->idle_session_mutex);
-	priv->self->_priv->idle_session = priv;
-	g_mutex_unlock(priv->self->_priv->idle_session_mutex);
+	Self *self = priv->self;
+
+	g_mutex_lock(selfp->mutex);
+
+	selfp->idle_session = priv;
+
+	/* cycle IDLE in 29 minutes, as advised by RFC 2177 */
+
+	g_assert(priv->idle_inactivity_timeout_id == 0);
+	priv->idle_inactivity_timeout_id = g_timeout_add(60 * 29 * 1000, self_idle_inactivity_timeout_cb, self);
+
+	g_mutex_unlock(selfp->mutex);
       }
   }
 
@@ -1232,23 +1244,33 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     post_read_cb (MNClientSession *session,
 		  MNClientSessionPrivate *priv)
   {
-    if (priv->idle_state == IDLE_STATE_IDLING)
+    Self *self = priv->self;
+
+    g_mutex_lock(selfp->mutex);
+    if (priv->idle_state >= IDLE_STATE_IDLE)
       {
-	g_mutex_lock(priv->self->_priv->idle_session_mutex);
-	priv->self->_priv->idle_session = NULL;
-	g_mutex_unlock(priv->self->_priv->idle_session_mutex);
+	selfp->idle_session = NULL;
+	mn_source_clear(&priv->idle_inactivity_timeout_id);
       }
+    g_mutex_unlock(selfp->mutex);
   }
-  
-  private void
-    session_set_error_from_arguments (MNClientSessionPrivate *priv (check null),
-				      int code,
-				      MNClientSessionResponse *response (check null))
+
+  private gboolean
+    idle_inactivity_timeout_cb (gpointer data)
   {
-    if (response->arguments)
-      mn_client_session_error(priv->session, code, "\"%s\"", response->arguments);
-    else
-      mn_client_session_error(priv->session, code, _("unknown server error"));
+    Self *self = data;
+
+    g_mutex_lock(selfp->mutex);
+    if (selfp->idle_session)
+      {
+	mn_client_session_write(selfp->idle_session->session, "DONE");
+	selfp->idle_session->idle_state = IDLE_STATE_POST_IDLE;
+	selfp->idle_session->idle_inactivity = TRUE;
+      }
+    selfp->idle_session->idle_inactivity_timeout_id = 0;
+    g_mutex_unlock(selfp->mutex);
+
+    return FALSE;
   }
 
   private int
@@ -1263,7 +1285,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     va_start(args, format);
     command = g_strdup_vprintf(format, args);
     va_end(args);
-    
+
     if (priv->numeric_tag == 1000)
       priv->numeric_tag = 0;
     sprintf(priv->tag, "a%03i", priv->numeric_tag++);
@@ -1294,7 +1316,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     return FALSE;
   }
-  
+
   private void
     session_parse_capabilities (MNClientSessionPrivate *priv (check null),
 				const char *capabilities)
@@ -1302,20 +1324,18 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     g_strfreev(priv->capabilities);
     priv->capabilities = NULL;
 
-    eel_g_slist_free_deep(priv->auth_mechanisms);
-    priv->auth_mechanisms = NULL;
+    mn_g_slist_clear_deep(&priv->auth_mechanisms);
 
-#ifdef WITH_SASL
-    g_slist_free(priv->sasl_remaining_mechanisms);
-    priv->sasl_remaining_mechanisms = NULL;
+#if WITH_SASL
+    mn_g_slist_clear(&priv->sasl_remaining_mechanisms);
 #endif
 
     if (capabilities)
       {
 	int i;
-	
+
 	priv->capabilities = g_strsplit(capabilities, " ", 0);
-	
+
 	for (i = 0; priv->capabilities[i]; i++)
 	  if (g_str_has_prefix(priv->capabilities[i], "AUTH="))
 	    priv->auth_mechanisms = g_slist_append(priv->auth_mechanisms, g_strdup(priv->capabilities[i] + 5));
@@ -1335,10 +1355,10 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
     for (i = 0; priv->capabilities[i]; i++)
       if (! g_ascii_strcasecmp(priv->capabilities[i], capability))
 	return TRUE;
-    
+
     return FALSE;
   }
-  
+
   private int
     session_after_capability (MNClientSessionPrivate *priv (check null))
   {
@@ -1346,7 +1366,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
       return STATE_EXAMINE;
     else
       {
-#ifdef WITH_SSL
+#if WITH_SSL
 	if (priv->pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL
 	    && ! priv->starttls_completed)
 	  {
@@ -1354,7 +1374,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	      return STATE_STARTTLS;
 	    else
 	      {
-		mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS"));
+		mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS"));
 		return STATE_LOGOUT;
 	      }
 	  }
@@ -1362,11 +1382,11 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	return self_session_authenticate(priv);
       }
   }
-  
+
   private int
     session_authenticate (MNClientSessionPrivate *priv (check null))
   {
-#ifdef WITH_SASL
+#if WITH_SASL
     g_slist_free(priv->sasl_remaining_mechanisms);
     priv->sasl_remaining_mechanisms = g_slist_copy(priv->auth_mechanisms);
 #endif /* WITH_SASL */
@@ -1375,10 +1395,10 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
       {
 	if (*priv->pi_mailbox->authmech != '+')
 	  {
-#ifdef WITH_SASL
+#if WITH_SASL
 	    return STATE_AUTHENTICATE;
 #else
-	    mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in"));
+	    mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in"));
 	    return STATE_LOGOUT;
 #endif /* WITH_SASL */
 	  }
@@ -1388,14 +1408,14 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	      return STATE_LOGIN;
 	    else
 	      {
-		mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech);
+		mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech);
 		return STATE_LOGOUT;
 	      }
 	  }
       }
     else
       {
-#ifdef WITH_SASL
+#if WITH_SASL
 	if (priv->sasl_remaining_mechanisms)
 	  return STATE_AUTHENTICATE;
 #endif /* WITH_SASL */
@@ -1409,7 +1429,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
   {
     if (! priv->pi_mailbox->authmech)
       {
-#ifdef WITH_SASL
+#if WITH_SASL
 	if (priv->sasl_mechanism)
 	  {
 	    GSList *elem;
@@ -1437,14 +1457,14 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	  }
       }
 
-    if (priv->authenticated_mailbox->prompted)
+    if (priv->pi_mailbox->auth_prompted)
       {
-	mn_authenticated_mailbox_authentication_failed(priv->authenticated_mailbox);
+	mn_pi_mailbox_auth_failed(priv->pi_mailbox);
 	return self_session_authenticate(priv);
       }
     else
       {
-	mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed"));
+	mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed"));
 	return STATE_LOGOUT;
       }
   }
@@ -1461,7 +1481,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	/*
 	 * Try to detect UW imapd by looking for " IMAP4rev1 YEAR."
 	 */
-	
+
 	if ((str = mn_strstr_span(greeting_response->arguments, " IMAP4rev1 "))
 	    && strspn(str, "0123456789") == 4
 	    && str[4] == '.')
@@ -1472,7 +1492,76 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 	  }
       }
   }
-  
+
+  private int
+    session_enter_search (MNClientSession *session (check null),
+			  MNClientSessionPrivate *priv (check null),
+			  const char *what (check null),
+			  GHashTable **numbers (check null))
+  {
+    priv->search_received = FALSE;
+
+    if (*numbers)
+      g_hash_table_destroy(*numbers);
+    *numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
+
+    return self_session_write(priv, "SEARCH %s", what);
+  }
+
+  private int
+    session_handle_search (MNClientSession *session (check null),
+			   MNClientSessionResponse *response (check null),
+			   MNClientSessionPrivate *priv (check null),
+			   GHashTable *numbers (check null))
+  {
+    if (response->continuation)
+      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+    else if (response->tag)
+      {
+	if (HAS_CURRENT_TAG(response, priv))
+	  {
+	    if (IS_OK(response))
+	      {
+		if (priv->search_received)
+		  return 0;	/* success; caller must switch state itself */
+		else		/* compliance error */
+		  return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("server did not send search results"));
+	      }
+	    else if (IS_NO(response) || IS_BAD(response))
+	      {
+		mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
+		return STATE_LOGOUT;
+	      }
+	    else
+	      return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+	  }
+      }
+    else if (IS(response, "SEARCH"))
+      {
+	if (response->arguments)
+	  {
+	    char **strings;
+	    int i;
+
+	    strings = g_strsplit(response->arguments, " ", 0);
+
+	    for (i = 0; strings[i]; i++)
+	      if (mn_str_isnumeric(strings[i]))
+		{
+		  int n = atoi(strings[i]);
+		  g_hash_table_insert(numbers, GINT_TO_POINTER(n), GINT_TO_POINTER(TRUE));
+		}
+
+	    g_strfreev(strings);
+	  }
+
+	priv->search_received = TRUE;
+	return MN_CLIENT_SESSION_RESULT_CONTINUE;
+      }
+
+    return self_default_handler(response, priv, MN_CLIENT_SESSION_ERROR_OTHER);
+  }
+
   /**
    * quote:
    * @str: the string to quote
@@ -1517,7 +1606,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     /*
      * Taken from the Ximian Evolution sources (camel-utf8.c) and
-     * edited for tyle.
+     * edited for style.
      */
 
     out = g_string_new(NULL);
@@ -1564,13 +1653,13 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     return g_string_free(out, FALSE);
   }
-  
+
   private void
     imap_utf7_closeb64 (GString *out (check null), guint32 v, guint32 i)
   {
     /*
      * Taken from the Ximian Evolution sources (camel-utf8.c) and
-     * edited for tyle.
+     * edited for style.
      */
 
     if (i > 0)
@@ -1583,7 +1672,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     g_string_append_c(out, '-');
   }
-  
+
   public char *
     build_name (const char *username,
 		const char *hostname (check null),
@@ -1595,7 +1684,7 @@ class MN:IMAP:Mailbox from MN:PI:Mailbox
 
     if (username)
       g_string_append_printf(name, "%s@", username);
-    
+
     g_string_append(name, hostname);
 
     if (mailbox && mn_utf8_strcasecmp(mailbox, "INBOX"))
diff --git a/src/mn-imap-mailbox.gob.stamp b/src/mn-imap-mailbox.gob.stamp
diff --git a/src/mn-imap-mailbox.h b/src/mn-imap-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -54,7 +54,6 @@ struct _MNIMAPMailbox {
 	MNPIMailbox __parent__;
 	/*< public >*/
 	char * mailbox;
-	char * runtime_mailbox;
 	MNIMAPMailboxUseIDLE use_idle_extension;
 	/*< private >*/
 	MNIMAPMailboxPrivate *_priv;
diff --git a/src/mn-locked-callback.c b/src/mn-locked-callback.c
@@ -0,0 +1,625 @@
+/* 
+ * 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.
+ */
+
+#include <glib.h>
+#include <libgnomevfs/gnome-vfs.h>
+#include <eel/eel.h>
+#include "mn-locked-callback.h"
+#include "mn-conf.h"
+#include "mn-util.h"
+
+/*
+ * About MNLockedCallback:
+ *
+ * Consider the following construct:
+ *
+ *   static gboolean idle_cb (gpointer data)
+ *   {
+ *     MyObject *object = data;
+ *
+ *     GDK_THREADS_ENTER();
+ *     ...do something with object
+ *     GDK_THREADS_LEAVE();
+ *
+ *     return TRUE;
+ *   }
+ *
+ *   static void my_object_init (MyObject *object)
+ *   {
+ *     object->idle_id = g_idle_add(idle_cb, object);
+ *   }
+ *
+ *   static void my_object_finalize (GObject *object)
+ *   {
+ *     g_source_remove(MY_OBJECT(object)->idle_id);
+ *     G_OBJECT_CLASS(parent_class)->finalize(object);
+ *   }
+ *
+ * Timeline of events:
+ *
+ *   1) in thread x: we grab the GDK lock
+ *   2) in the main_thread: idle_cb() is executed and waits to acquire
+ *      the lock
+ *   3) in thread x: we do something which causes the object instance
+ *      to be finalized, and we release the lock
+ *   4) in the main thread: idle_cb() acquires the lock and crashes
+ *      because the object instance has been destroyed while it was
+ *      waiting for the lock
+ *
+ * The construct is therefore unsafe if MyObject can be destroyed from
+ * another thread than the thread running the GLib main
+ * loop. MNLockedCallback provides a solution.
+ *
+ * GTK+ and most GTK+-based libraries (libgnomeui, libeel, ...) are
+ * also affected by the problem. Bugzilla entry for GTK+:
+ *
+ *   http://bugzilla.gnome.org/show_bug.cgi?id=321886
+ *
+ * Note that throughout Mail Notification, we always use our
+ * _gdk_locked variants (except of course for callbacks which do not
+ * need to hold the GDK lock), even in objects which cannot be
+ * destroyed from a thread and are therefore not affected by the
+ * problem. It is safer and more maintainable than having to follow
+ * the code path to decide whether the GLib functions can safely be
+ * used or not, and the _gdk_locked overhead is neglectible.
+ */
+
+/*** types *******************************************************************/
+
+typedef enum
+{
+  CALLBACK_TYPE_G_SOURCE,
+  CALLBACK_TYPE_GCONF_NOTIFICATION,
+  CALLBACK_TYPE_BONOBO_LISTENER
+} CallbackType;
+
+typedef struct _MNLockedCallback MNLockedCallback;
+
+struct _MNLockedCallback
+{
+  CallbackType	type;
+  gboolean	removed;
+  gpointer	function;
+  gpointer	data;
+  MNLockFunc	lock;
+  MNUnlockFunc	unlock;
+  gpointer	lock_data;
+  gpointer	handle;
+};
+
+/*** variables ***************************************************************/
+
+static GHashTable *vfs_monitors = NULL;
+G_LOCK_DEFINE_STATIC(vfs_monitors);
+
+/*** functions ***************************************************************/
+
+static gboolean mn_locked_g_source_cb (gpointer data);
+
+static void mn_gdk_locked_g_object_gconf_notification_cb (GConfClient *client,
+							  unsigned int cnxn_id,
+							  GConfEntry *entry,
+							  gpointer user_data);
+static void mn_gdk_locked_g_object_gconf_notification_weak_notify_cb (gpointer data,
+								      GObject *former_object);
+
+static void mn_locked_callback_free (MNLockedCallback *callback);
+
+static void mn_locked_gnome_vfs_monitor_cb (GnomeVFSMonitorHandle *handle,
+					    const char *monitor_uri,
+					    const char *info_uri,
+					    GnomeVFSMonitorEventType event_type,
+					    gpointer user_data);
+
+static void mn_locked_bonobo_listener_cb (BonoboListener *listener,
+					  const char *event_name,
+					  const CORBA_any *any,
+					  CORBA_Environment *ev,
+					  gpointer user_data);
+
+/*** implementation **********************************************************/
+
+void
+mn_locked_callback_init (void)
+{
+  vfs_monitors = g_hash_table_new(g_direct_hash, g_direct_equal);
+}
+
+/**
+ * mn_g_idle_add_locked:
+ * @function: function to call
+ * @data: data to pass to @function
+ * @lock_func: lock function
+ * @unlock_func: unlock function
+ * @lock_data: data to pass to @lock_func and @unlock_func
+ *
+ * Adds a locked idle callback. The @function invocation will be
+ * wrapped with @lock_func and @unlock_func invocations. If after
+ * invoking @lock_func, the source has been removed, @function will
+ * not be executed.
+ *
+ * Return value: an opaque event source handle
+ **/
+MNLockedGSource *
+mn_g_idle_add_locked (GSourceFunc function,
+		      gpointer data,
+		      MNLockFunc lock_func,
+		      MNUnlockFunc unlock_func,
+		      gpointer lock_data)
+{
+  MNLockedCallback *callback;
+
+  g_return_val_if_fail(function != NULL, NULL);
+  g_return_val_if_fail(lock_func != NULL, NULL);
+  g_return_val_if_fail(unlock_func != NULL, NULL);
+
+  callback = g_new0(MNLockedCallback, 1);
+  callback->type = CALLBACK_TYPE_G_SOURCE;
+  callback->function = function;
+  callback->data = data;
+  callback->lock = lock_func;
+  callback->unlock = unlock_func;
+  callback->lock_data = lock_data;
+  callback->handle = GUINT_TO_POINTER(g_idle_add_full(G_PRIORITY_DEFAULT_IDLE, mn_locked_g_source_cb, callback, (GDestroyNotify) mn_locked_callback_free));
+
+  return callback;
+}
+
+/**
+ * mn_g_idle_add_gdk_locked:
+ * @function: function to call
+ * @data: data to pass to @function
+ *
+ * Adds a GDK-locked idle callback. The @function invocation will be
+ * wrapped with GDK_THREADS_ENTER() and GDK_THREADS_LEAVE(). If after
+ * acquiring the GDK lock, the source has been removed, @function will
+ * not be executed.
+ *
+ * Return value: an opaque event source handle
+ **/
+MNLockedGSource *
+mn_g_idle_add_gdk_locked (GSourceFunc function, gpointer data)
+{
+  g_return_val_if_fail(function != NULL, NULL);
+
+  return mn_g_idle_add_locked(function, data,
+			      (MNLockFunc) mn_gdk_threads_enter,
+			      (MNUnlockFunc) mn_gdk_threads_leave,
+			      NULL);
+}
+
+/**
+ * mn_g_timeout_add_locked:
+ * @interval: the time between calls to the function, in milliseconds
+ * @function: function to call
+ * @data: data to pass to @function
+ * @lock_func: lock function
+ * @unlock_func: unlock function
+ * @lock_data: data to pass to @lock_func and @unlock_func
+ *
+ * Adds a locked timeout callback. The @function invocation will be
+ * wrapped with @lock_func and @unlock_func invocations. If after
+ * invoking @lock_func, the source has been removed, @function will
+ * not be executed.
+ *
+ * Return value: an opaque event source handle
+ **/
+MNLockedGSource *
+mn_g_timeout_add_locked (unsigned int interval,
+			 GSourceFunc function,
+			 gpointer data,
+			 MNLockFunc lock_func,
+			 MNUnlockFunc unlock_func,
+			 gpointer lock_data)
+{
+  MNLockedCallback *callback;
+
+  g_return_val_if_fail(function != NULL, NULL);
+  g_return_val_if_fail(lock_func != NULL, NULL);
+  g_return_val_if_fail(unlock_func != NULL, NULL);
+
+  callback = g_new0(MNLockedCallback, 1);
+  callback->type = CALLBACK_TYPE_G_SOURCE;
+  callback->function = function;
+  callback->data = data;
+  callback->lock = lock_func;
+  callback->unlock = unlock_func;
+  callback->lock_data = lock_data;
+  callback->handle = GUINT_TO_POINTER(g_timeout_add_full(G_PRIORITY_DEFAULT, interval, mn_locked_g_source_cb, callback, (GDestroyNotify) mn_locked_callback_free));
+
+  return callback;
+}
+
+/**
+ * mn_g_timeout_add_gdk_locked:
+ * @interval: the time between calls to the function, in milliseconds
+ * @function: function to call
+ * @data: data to pass to @function
+ *
+ * Adds a GDK-locked timeout callback. The @function invocation will
+ * be wrapped with GDK_THREADS_ENTER() and GDK_THREADS_LEAVE(). If
+ * after acquiring the GDK lock, the source has been removed,
+ * @function will not be executed.
+ *
+ * Return value: an opaque event source handle
+ **/
+MNLockedGSource *
+mn_g_timeout_add_gdk_locked (unsigned int interval,
+			     GSourceFunc function,
+			     gpointer data)
+{
+  g_return_val_if_fail(function != NULL, NULL);
+
+  return mn_g_timeout_add_locked(interval, function, data,
+				 (MNLockFunc) mn_gdk_threads_enter,
+				 (MNUnlockFunc) mn_gdk_threads_leave,
+				 NULL);
+}
+
+static gboolean
+mn_locked_g_source_cb (gpointer data)
+{
+  MNLockedCallback *callback = data;
+  gboolean result;
+
+  callback->lock(callback->lock_data);
+
+  result = callback->removed
+    ? FALSE			/* the returned value does not matter */
+    : ((GSourceFunc) callback->function)(callback->data);
+
+  callback->unlock(callback->lock_data);
+
+  return result;
+}
+
+/**
+ * mn_locked_g_source_remove:
+ * @source: an event source handle
+ *
+ * Removes @source from the default main context. The callback
+ * function will no longer be executed. The source lock must be held
+ * while calling this function.
+ **/
+void
+mn_locked_g_source_remove (MNLockedGSource *source)
+{
+  g_return_if_fail(source != NULL);
+  g_return_if_fail(source->type == CALLBACK_TYPE_G_SOURCE);
+  g_return_if_fail(source->removed == FALSE);
+
+  source->removed = TRUE;
+  g_source_remove(GPOINTER_TO_UINT(source->handle));
+}
+
+/**
+ * mn_locked_g_source_clear:
+ * @source: a pointer to an event source handle
+ *
+ * If *@source is not %NULL, removes it using
+ * mn_locked_g_source_remove(), and sets it to %NULL.
+ **/
+void
+mn_locked_g_source_clear (MNLockedGSource **source)
+{
+  g_return_if_fail(source != NULL);
+
+  if (*source)
+    {
+      mn_locked_g_source_remove(*source);
+      *source = NULL;
+    }
+}
+
+/**
+ * mn_g_object_gconf_notification_add_gdk_locked:
+ * @object: a GObject-derived instance
+ * @key: a GConf key or namespace section
+ * @function: function to call when changes occur
+ * @user_data: data to pass to @function
+ *
+ * Monitors the GConf key or namespace @key for changes. The @function
+ * invocation will be wrapped with GDK_THREADS_ENTER() and
+ * GDK_THREADS_LEAVE().  The notification will be removed when @object
+ * is finalized. If after acquiring the GDK lock, the object has been
+ * removed, @function will not be executed.
+ **/
+void
+mn_g_object_gconf_notification_add_gdk_locked (gpointer object,
+					       const char *key,
+					       GConfClientNotifyFunc function,
+					       gpointer user_data)
+{
+  MNLockedCallback *callback;
+
+  g_return_if_fail(G_IS_OBJECT(object));
+  g_return_if_fail(key != NULL);
+  g_return_if_fail(function != NULL);
+
+  callback = g_new0(MNLockedCallback, 1);
+  callback->type = CALLBACK_TYPE_GCONF_NOTIFICATION;
+  callback->function = function;
+  callback->data = user_data;
+  callback->handle = GUINT_TO_POINTER(mn_conf_notification_add_full(key, mn_gdk_locked_g_object_gconf_notification_cb, callback, (GDestroyNotify) mn_locked_callback_free));
+
+  g_object_weak_ref(G_OBJECT(object), mn_gdk_locked_g_object_gconf_notification_weak_notify_cb, callback);
+}
+
+/**
+ * mn_g_object_gconf_notifications_add_gdk_locked:
+ * @object: a GObject-derived instance
+ * @...: a %NULL-terminated list of key/function/user_data tuples
+ *
+ * Adds multiple GConf notifications with
+ * mn_g_object_gconf_notification_add_gdk_locked().
+ **/
+void
+mn_g_object_gconf_notifications_add_gdk_locked (gpointer object, ...)
+{
+  va_list args;
+  const char *key;
+
+  g_return_if_fail(G_IS_OBJECT(object));
+
+  va_start(args, object);
+  while ((key = va_arg(args, const char *)))
+    {
+      GConfClientNotifyFunc function;
+      gpointer user_data;
+
+      function = va_arg(args, GConfClientNotifyFunc);
+      g_return_if_fail(function != NULL);
+
+      user_data = va_arg(args, gpointer);
+
+      mn_g_object_gconf_notification_add_gdk_locked(object, key, function, user_data);
+    }
+  va_end(args);
+}
+
+static void
+mn_gdk_locked_g_object_gconf_notification_cb (GConfClient *client,
+					      unsigned int cnxn_id,
+					      GConfEntry *entry,
+					      gpointer user_data)
+{
+  MNLockedCallback *callback = user_data;
+
+  GDK_THREADS_ENTER();
+
+  if (! callback->removed)
+    ((GConfClientNotifyFunc) callback->function)(client, cnxn_id, entry, callback->data);
+
+  GDK_THREADS_LEAVE();
+}
+
+static void
+mn_gdk_locked_g_object_gconf_notification_weak_notify_cb (gpointer data, GObject *former_object)
+{
+  MNLockedCallback *callback = data;
+
+  callback->removed = TRUE;
+  eel_gconf_notification_remove(GPOINTER_TO_UINT(callback->handle));
+}
+
+static void
+mn_locked_callback_free (MNLockedCallback *callback)
+{
+  g_return_if_fail(callback != NULL);
+
+  g_free(callback);
+}
+
+/**
+ * mn_gnome_vfs_monitor_add_locked:
+ * @handle: a location to return the monitor handle on success
+ * @text_uri: URI to monitor
+ * @monitor_type: monitor type
+ * @callback: function to call
+ * @user_data: data to pass to @function
+ *
+ * Monitors @text_uri and invokes @callback when a change occurs.
+ * Callback invocations will be protected by an internal global lock,
+ * and will not occur if the monitor has been removed.
+ *
+ * Return value: the status of the operation
+ **/
+GnomeVFSResult
+mn_gnome_vfs_monitor_add_locked (GnomeVFSMonitorHandle **handle,
+				 const char *text_uri,
+				 GnomeVFSMonitorType monitor_type,
+				 GnomeVFSMonitorCallback callback,
+				 gpointer user_data)
+{
+  GnomeVFSMonitorHandle *_handle;
+  GnomeVFSResult result;
+
+  g_return_val_if_fail(handle != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS);
+  g_return_val_if_fail(text_uri != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS);
+  g_return_val_if_fail(callback != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS);
+
+  G_LOCK(vfs_monitors);
+  result = gnome_vfs_monitor_add(&_handle, text_uri, monitor_type, mn_locked_gnome_vfs_monitor_cb, user_data);
+  if (result == GNOME_VFS_OK)
+    {
+      *handle = _handle;
+      g_hash_table_insert(vfs_monitors, _handle, callback);
+    }
+  G_UNLOCK(vfs_monitors);
+
+  return result;
+}
+
+/**
+ * mn_gnome_vfs_monitor_cancel_locked:
+ * @handle: handle of the monitor to cancel
+ *
+ * Cancels the monitor pointed to by @handle (which must have been
+ * returned by a call to mn_gnome_vfs_monitor_add_locked()), using a
+ * global lock to make sure that its callback function will no longer
+ * be executed.
+ *
+ * Return value: the status of the operation
+ **/
+GnomeVFSResult
+mn_gnome_vfs_monitor_cancel_locked (GnomeVFSMonitorHandle *handle)
+{
+  GnomeVFSResult result;
+
+  g_return_val_if_fail(handle != NULL, GNOME_VFS_ERROR_BAD_PARAMETERS);
+
+  G_LOCK(vfs_monitors);
+  g_assert(g_hash_table_lookup(vfs_monitors, handle) != NULL);
+  g_hash_table_remove(vfs_monitors, handle);
+  result = gnome_vfs_monitor_cancel(handle);
+  G_UNLOCK(vfs_monitors);
+
+  return result;
+}
+
+static void
+mn_locked_gnome_vfs_monitor_cb (GnomeVFSMonitorHandle *handle,
+				const char *monitor_uri,
+				const char *info_uri,
+				GnomeVFSMonitorEventType event_type,
+				gpointer user_data)
+{
+  GnomeVFSMonitorCallback callback;
+
+  G_LOCK(vfs_monitors);
+  callback = g_hash_table_lookup(vfs_monitors, handle);
+  if (callback)
+    callback(handle, monitor_uri, info_uri, event_type, user_data);
+  G_UNLOCK(vfs_monitors);
+}
+
+/**
+ * mn_bonobo_event_source_client_add_listener_full_locked:
+ * @object: an object implementing IDL:Bonobo/EventSource:1.0
+ * @function: function to call
+ * @opt_mask: optional event mask
+ * @opt_ev: optional CORBA environment
+ * @user_data: data to pass to @function
+ * @lock_func: lock function
+ * @unlock_func: unlock function
+ * @lock_data: data to pass to @lock_func and @unlock_func
+ *
+ * Adds a listener to the event source of @object. The @function
+ * invocation will be wrapped with @lock_func and @unlock_func
+ * invocations. If after invoking @lock_func, the listener has been
+ * removed, @function will not be executed.
+ *
+ * Return value: an opaque listener handle
+ **/
+MNLockedBonoboListener *
+mn_bonobo_event_source_client_add_listener_full_locked (Bonobo_Unknown object,
+							BonoboListenerCallbackFn function,
+							const char *opt_mask,
+							CORBA_Environment *opt_ev,
+							gpointer user_data,
+							MNLockFunc lock_func,
+							MNUnlockFunc unlock_func,
+							gpointer lock_data)
+{
+  MNLockedCallback *callback;
+
+  g_return_val_if_fail(object != CORBA_OBJECT_NIL, NULL);
+  g_return_val_if_fail(function != NULL, NULL);
+  g_return_val_if_fail(lock_func != NULL, NULL);
+  g_return_val_if_fail(unlock_func != NULL, NULL);
+
+  callback = g_new0(MNLockedCallback, 1);
+  callback->type = CALLBACK_TYPE_BONOBO_LISTENER;
+  callback->function = function;
+  callback->data = user_data;
+  callback->lock = lock_func;
+  callback->unlock = unlock_func;
+  callback->lock_data = lock_data;
+  callback->handle = bonobo_event_source_client_add_listener_full(object, g_cclosure_new(G_CALLBACK(mn_locked_bonobo_listener_cb), callback, (GClosureNotify) mn_locked_callback_free), opt_mask, opt_ev);
+
+  if (callback->handle == CORBA_OBJECT_NIL)
+    {
+      mn_locked_callback_free(callback);
+      callback = NULL;
+    }
+
+  return callback;
+}
+
+static void
+mn_locked_bonobo_listener_cb (BonoboListener *listener,
+			      const char *event_name,
+			      const CORBA_any *any,
+			      CORBA_Environment *ev,
+			      gpointer user_data)
+{
+  MNLockedCallback *callback = user_data;
+
+  callback->lock(callback->lock_data);
+
+  if (! callback->removed)
+    ((BonoboListenerCallbackFn) callback->function)(listener, event_name, any, ev, callback->data);
+
+  callback->unlock(callback->lock_data);
+}
+
+/**
+ * mn_bonobo_event_source_client_remove_listener_locked:
+ * @object: the object holding @listener
+ * @listener: a listener handle
+ * @opt_ev: optional CORBA environment
+ *
+ * Removes @listener from the @object event source. The callback
+ * function will no longer be executed. The listener lock must be held
+ * while calling this function. After calling this function, the
+ * reference returned by
+ * mn_bonobo_event_source_client_add_listener_full_locked() must be
+ * released with:
+ *
+ *   bonobo_object_release_unref(mn_locked_bonobo_listener_get_listener(listener), NULL);
+ **/
+void
+mn_bonobo_event_source_client_remove_listener_locked (Bonobo_Unknown object,
+						      MNLockedBonoboListener *listener,
+						      CORBA_Environment *opt_ev)
+{
+  g_return_if_fail(object != CORBA_OBJECT_NIL);
+  g_return_if_fail(listener != NULL);
+  g_return_if_fail(listener->type == CALLBACK_TYPE_BONOBO_LISTENER);
+  g_return_if_fail(listener->removed == FALSE);
+
+  listener->removed = TRUE;
+  bonobo_event_source_client_remove_listener(object, listener->handle, opt_ev);
+}
+
+/**
+ * mn_locked_bonobo_listener_get_listener:
+ * @listener: a listener handle
+ *
+ * Obtains the underlying %Bonobo_Listener object of @listener.
+ *
+ * Return value: the %Bonobo_Listener object of @listener
+ **/
+Bonobo_Listener
+mn_locked_bonobo_listener_get_listener (MNLockedBonoboListener *listener)
+{
+  g_return_val_if_fail(listener != NULL, CORBA_OBJECT_NIL);
+  g_return_val_if_fail(listener->type == CALLBACK_TYPE_BONOBO_LISTENER, CORBA_OBJECT_NIL);
+
+  return listener->handle;
+}
diff --git a/src/mn-locked-callback.h b/src/mn-locked-callback.h
@@ -0,0 +1,84 @@
+/* 
+ * 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.
+ */
+
+#ifndef _MN_LOCKED_CALLBACK_H
+#define _MN_LOCKED_CALLBACK_H
+
+#include <stdarg.h>
+#include <glib.h>
+#include <gconf/gconf.h>
+#include <gconf/gconf-client.h>
+#include <libgnomevfs/gnome-vfs.h>
+#include <bonobo/bonobo-listener.h>
+
+typedef struct _MNLockedCallback MNLockedGSource;
+typedef struct _MNLockedCallback MNLockedBonoboListener;
+
+typedef void (*MNLockFunc) (gpointer data);
+typedef void (*MNUnlockFunc) (gpointer data);
+
+void mn_locked_callback_init (void);
+
+MNLockedGSource *mn_g_idle_add_locked (GSourceFunc function,
+				       gpointer data,
+				       MNLockFunc lock_func,
+				       MNUnlockFunc unlock_func,
+				       gpointer lock_data);
+MNLockedGSource *mn_g_idle_add_gdk_locked (GSourceFunc function,
+					   gpointer data);
+
+MNLockedGSource *mn_g_timeout_add_locked (unsigned int interval,
+					  GSourceFunc function,
+					  gpointer data,
+					  MNLockFunc lock_func,
+					  MNUnlockFunc unlock_func,
+					  gpointer lock_data);
+MNLockedGSource *mn_g_timeout_add_gdk_locked (unsigned int interval,
+					      GSourceFunc function,
+					      gpointer data);
+
+void mn_locked_g_source_remove (MNLockedGSource *source);
+void mn_locked_g_source_clear (MNLockedGSource **source);
+
+void mn_g_object_gconf_notification_add_gdk_locked (gpointer object,
+						    const char *key,
+						    GConfClientNotifyFunc function,
+						    gpointer user_data);
+void mn_g_object_gconf_notifications_add_gdk_locked (gpointer object, ...);
+
+GnomeVFSResult mn_gnome_vfs_monitor_add_locked (GnomeVFSMonitorHandle **handle,
+						const char *text_uri,
+						GnomeVFSMonitorType monitor_type,
+						GnomeVFSMonitorCallback callback,
+						gpointer user_data);
+GnomeVFSResult mn_gnome_vfs_monitor_cancel_locked (GnomeVFSMonitorHandle *handle);
+
+MNLockedBonoboListener *mn_bonobo_event_source_client_add_listener_full_locked (Bonobo_Unknown object,
+										BonoboListenerCallbackFn function,
+										const char *opt_mask,
+										CORBA_Environment *opt_ev,
+										gpointer user_data,
+										MNLockFunc lock_func,
+										MNUnlockFunc unlock_func,
+										gpointer lock_data);
+void mn_bonobo_event_source_client_remove_listener_locked (Bonobo_Unknown object,
+							   MNLockedBonoboListener *listener,
+							   CORBA_Environment *opt_ev);
+Bonobo_Listener mn_locked_bonobo_listener_get_listener (MNLockedBonoboListener *listener);
+
+#endif /* _MN_LOCKED_CALLBACK_H */
diff --git a/src/mn-mail-icon-private.h b/src/mn-mail-icon-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MAIL_ICON_PRIVATE_H__
 #define __MN_MAIL_ICON_PRIVATE_H__
diff --git a/src/mn-mail-icon.c b/src/mn-mail-icon.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -31,7 +30,7 @@
 #include "mn-stock.h"
 #include "mn-util.h"
 
-#line 35 "mn-mail-icon.c"
+#line 34 "mn-mail-icon.c"
 /* self casting macros */
 #define SELF(x) MN_MAIL_ICON(x)
 #define SELF_CONST(x) MN_MAIL_ICON_CONST(x)
@@ -47,7 +46,6 @@ typedef MNMailIconClass SelfClass;
 
 /* here are local prototypes */
 static void mn_mail_icon_activate (MNMailIcon * self) G_GNUC_UNUSED;
-static void mn_mail_icon_activate_main_window (MNMailIcon * self) G_GNUC_UNUSED;
 static void mn_mail_icon_activate_mail_reader (MNMailIcon * self) G_GNUC_UNUSED;
 static void mn_mail_icon_activate_update (MNMailIcon * self) G_GNUC_UNUSED;
 static void mn_mail_icon_activate_properties (MNMailIcon * self) G_GNUC_UNUSED;
@@ -68,9 +66,6 @@ static void mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * 
 #define self_connect__activate(object,func,data)	mn_mail_icon_connect__activate((object),(func),(data))
 #define self_connect_after__activate(object,func,data)	mn_mail_icon_connect_after__activate((object),(func),(data))
 #define self_connect_data__activate(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate((object),(func),(data),(destroy_data),(flags))
-#define self_connect__activate_main_window(object,func,data)	mn_mail_icon_connect__activate_main_window((object),(func),(data))
-#define self_connect_after__activate_main_window(object,func,data)	mn_mail_icon_connect_after__activate_main_window((object),(func),(data))
-#define self_connect_data__activate_main_window(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate_main_window((object),(func),(data),(destroy_data),(flags))
 #define self_connect__activate_mail_reader(object,func,data)	mn_mail_icon_connect__activate_mail_reader((object),(func),(data))
 #define self_connect_after__activate_mail_reader(object,func,data)	mn_mail_icon_connect_after__activate_mail_reader((object),(func),(data))
 #define self_connect_data__activate_mail_reader(object,func,data,destroy_data,flags)	mn_mail_icon_connect_data__activate_mail_reader((object),(func),(data),(destroy_data),(flags))
@@ -92,7 +87,6 @@ static void mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * 
 
 enum {
 	ACTIVATE_SIGNAL,
-	ACTIVATE_MAIN_WINDOW_SIGNAL,
 	ACTIVATE_MAIL_READER_SIGNAL,
 	ACTIVATE_UPDATE_SIGNAL,
 	ACTIVATE_PROPERTIES_SIGNAL,
@@ -109,7 +103,6 @@ static EggTrayIconClass *parent_class = NULL;
 
 /* Short form macros */
 #define self_activate mn_mail_icon_activate
-#define self_activate_main_window mn_mail_icon_activate_main_window
 #define self_activate_mail_reader mn_mail_icon_activate_mail_reader
 #define self_activate_update mn_mail_icon_activate_update
 #define self_activate_properties mn_mail_icon_activate_properties
@@ -121,6 +114,7 @@ static EggTrayIconClass *parent_class = NULL;
 #define self_button_release_event_h mn_mail_icon_button_release_event_h
 #define self_popup_menu_h mn_mail_icon_popup_menu_h
 #define self_popup_menu_position_cb mn_mail_icon_popup_menu_position_cb
+#define self_set_tip mn_mail_icon_set_tip
 #define self_set_tip_widget mn_mail_icon_set_tip_widget
 #define self_new mn_mail_icon_new
 GType
@@ -175,7 +169,7 @@ ___dispose (GObject *obj_self)
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
 #line 41 "mn-mail-icon.gob"
 	if(self->_priv->tooltips) { g_object_unref ((gpointer) self->_priv->tooltips); self->_priv->tooltips = NULL; }
-#line 179 "mn-mail-icon.c"
+#line 173 "mn-mail-icon.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -190,14 +184,14 @@ ___finalize(GObject *obj_self)
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
 #line 45 "mn-mail-icon.gob"
 	if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; }
-#line 194 "mn-mail-icon.c"
+#line 188 "mn-mail-icon.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 66 "mn-mail-icon.gob"
+#line 64 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
-#line 201 "mn-mail-icon.c"
+#line 195 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -214,14 +208,6 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 			NULL, NULL,
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
-	object_signals[ACTIVATE_MAIN_WINDOW_SIGNAL] =
-		g_signal_new ("activate_main_window",
-			G_TYPE_FROM_CLASS (g_object_class),
-			(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
-			G_STRUCT_OFFSET (MNMailIconClass, activate_main_window),
-			NULL, NULL,
-			g_cclosure_marshal_VOID__VOID,
-			G_TYPE_NONE, 0);
 	object_signals[ACTIVATE_MAIL_READER_SIGNAL] =
 		g_signal_new ("activate_mail_reader",
 			G_TYPE_FROM_CLASS (g_object_class),
@@ -272,7 +258,6 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 			G_TYPE_NONE, 0);
 
 	class->activate = NULL;
-	class->activate_main_window = NULL;
 	class->activate_mail_reader = NULL;
 	class->activate_update = NULL;
 	class->activate_properties = NULL;
@@ -282,7 +267,7 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
 	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
  {
-#line 67 "mn-mail-icon.gob"
+#line 65 "mn-mail-icon.gob"
 
     GtkBindingSet *binding_set;
 
@@ -296,48 +281,48 @@ 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 300 "mn-mail-icon.c"
+#line 285 "mn-mail-icon.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 81 "mn-mail-icon.gob"
+#line 79 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
-#line 307 "mn-mail-icon.c"
+#line 292 "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"
 	self->_priv->tooltips = mn_tooltips_new();
-#line 313 "mn-mail-icon.c"
+#line 298 "mn-mail-icon.c"
 #line 43 "mn-mail-icon.gob"
-	self->image = mn_blinking_image_new_from_stock(MN_STOCK_MAIL, GTK_ICON_SIZE_LARGE_TOOLBAR);
-#line 316 "mn-mail-icon.c"
+	self->image = mn_blinking_image_new();
+#line 301 "mn-mail-icon.c"
 #line 45 "mn-mail-icon.gob"
 	self->_priv->menu = gtk_menu_new();
-#line 319 "mn-mail-icon.c"
+#line 304 "mn-mail-icon.c"
  {
-#line 82 "mn-mail-icon.gob"
+#line 80 "mn-mail-icon.gob"
 
     GtkMenuShell *shell;
-    GtkWidget *main_window_item;
     GtkWidget *properties_item;
     GtkWidget *help_item;
     GtkWidget *about_item;
     GtkWidget *remove_item;
-    
+
     shell = GTK_MENU_SHELL(selfp->menu);
-    main_window_item = mn_menu_shell_append(shell, MN_STOCK_MAIN_WINDOW, _("Main _Window"));
+    /* translators: header capitalization */
     self->mail_reader_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_READER, _("_Mail Reader"));
+    /* 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);
     help_item = mn_menu_shell_append(shell, GTK_STOCK_HELP, NULL);
     about_item = mn_menu_shell_append(shell, GTK_STOCK_ABOUT, NULL);
     mn_menu_shell_append(shell, NULL, NULL);
+    /* translators: header capitalization */
     remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
-    
-    g_signal_connect_swapped(main_window_item, "activate", G_CALLBACK(self_activate_main_window), self);
+
     g_signal_connect_swapped(self->mail_reader_item, "activate", G_CALLBACK(self_activate_mail_reader), self);
     g_signal_connect_swapped(self->update_item, "activate", G_CALLBACK(self_activate_update), self);
     g_signal_connect_swapped(properties_item, "activate", G_CALLBACK(self_activate_properties), self);
@@ -352,7 +337,7 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
 
     gtk_container_add(GTK_CONTAINER(selfp->event_box), self->image);
     gtk_container_add(GTK_CONTAINER(self), selfp->event_box);
-  
+
     g_object_connect(selfp->event_box,
 		     "signal::show-help", self_show_help_h, self,
 		     "signal::button-press-event", self_button_press_event_h, self,
@@ -363,7 +348,7 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
     gtk_widget_show(self->image);
     gtk_widget_show(selfp->event_box);
   
-#line 367 "mn-mail-icon.c"
+#line 352 "mn-mail-icon.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -371,7 +356,7 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
 #line 49 "mn-mail-icon.gob"
 static void 
 mn_mail_icon_activate (MNMailIcon * self)
-#line 375 "mn-mail-icon.c"
+#line 360 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -383,7 +368,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 49 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 387 "mn-mail-icon.c"
+#line 372 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -399,8 +384,8 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 #line 51 "mn-mail-icon.gob"
 static void 
-mn_mail_icon_activate_main_window (MNMailIcon * self)
-#line 404 "mn-mail-icon.c"
+mn_mail_icon_activate_mail_reader (MNMailIcon * self)
+#line 389 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -412,14 +397,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 51 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 416 "mn-mail-icon.c"
+#line 401 "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_MAIN_WINDOW_SIGNAL],
+		object_signals[ACTIVATE_MAIL_READER_SIGNAL],
 		0 /* detail */,
 		&___return_val);
 
@@ -428,8 +413,8 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 #line 53 "mn-mail-icon.gob"
 static void 
-mn_mail_icon_activate_mail_reader (MNMailIcon * self)
-#line 433 "mn-mail-icon.c"
+mn_mail_icon_activate_update (MNMailIcon * self)
+#line 418 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -441,14 +426,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 53 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 445 "mn-mail-icon.c"
+#line 430 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
 	g_value_set_instance (&___param_values[0], (gpointer) self);
 
 	g_signal_emitv (___param_values,
-		object_signals[ACTIVATE_MAIL_READER_SIGNAL],
+		object_signals[ACTIVATE_UPDATE_SIGNAL],
 		0 /* detail */,
 		&___return_val);
 
@@ -457,8 +442,8 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 #line 55 "mn-mail-icon.gob"
 static void 
-mn_mail_icon_activate_update (MNMailIcon * self)
-#line 462 "mn-mail-icon.c"
+mn_mail_icon_activate_properties (MNMailIcon * self)
+#line 447 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -470,14 +455,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 55 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 474 "mn-mail-icon.c"
+#line 459 "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_UPDATE_SIGNAL],
+		object_signals[ACTIVATE_PROPERTIES_SIGNAL],
 		0 /* detail */,
 		&___return_val);
 
@@ -486,8 +471,8 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 #line 57 "mn-mail-icon.gob"
 static void 
-mn_mail_icon_activate_properties (MNMailIcon * self)
-#line 491 "mn-mail-icon.c"
+mn_mail_icon_activate_help (MNMailIcon * self)
+#line 476 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -499,14 +484,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 57 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 503 "mn-mail-icon.c"
+#line 488 "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_PROPERTIES_SIGNAL],
+		object_signals[ACTIVATE_HELP_SIGNAL],
 		0 /* detail */,
 		&___return_val);
 
@@ -515,8 +500,8 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 #line 59 "mn-mail-icon.gob"
 static void 
-mn_mail_icon_activate_help (MNMailIcon * self)
-#line 520 "mn-mail-icon.c"
+mn_mail_icon_activate_about (MNMailIcon * self)
+#line 505 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -528,14 +513,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 59 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 532 "mn-mail-icon.c"
+#line 517 "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_HELP_SIGNAL],
+		object_signals[ACTIVATE_ABOUT_SIGNAL],
 		0 /* detail */,
 		&___return_val);
 
@@ -544,8 +529,8 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 #line 61 "mn-mail-icon.gob"
 static void 
-mn_mail_icon_activate_about (MNMailIcon * self)
-#line 549 "mn-mail-icon.c"
+mn_mail_icon_activate_remove (MNMailIcon * self)
+#line 534 "mn-mail-icon.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -557,36 +542,7 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_return_if_fail (self != NULL);
 #line 61 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 561 "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_ABOUT_SIGNAL],
-		0 /* detail */,
-		&___return_val);
-
-	g_value_unset (&___param_values[0]);
-}
-
-#line 63 "mn-mail-icon.gob"
-static void 
-mn_mail_icon_activate_remove (MNMailIcon * self)
-#line 578 "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 63 "mn-mail-icon.gob"
-	g_return_if_fail (self != NULL);
-#line 63 "mn-mail-icon.gob"
-	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 590 "mn-mail-icon.c"
+#line 546 "mn-mail-icon.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -602,14 +558,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 
 
-#line 128 "mn-mail-icon.gob"
+#line 126 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_show_help_h (GtkWidget * widget, GtkWidgetHelpType help_type, gpointer user_data)
-#line 609 "mn-mail-icon.c"
+#line 565 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::show_help_h"
 {
-#line 132 "mn-mail-icon.gob"
+#line 130 "mn-mail-icon.gob"
 	
     if (help_type == GTK_WIDGET_HELP_TOOLTIP)
       {
@@ -619,21 +575,21 @@ mn_mail_icon_show_help_h (GtkWidget * widget, GtkWidgetHelpType help_type, gpoin
     else
       return FALSE;
   }}
-#line 623 "mn-mail-icon.c"
+#line 579 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 142 "mn-mail-icon.gob"
+#line 140 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 629 "mn-mail-icon.c"
+#line 585 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::button_press_event_h"
 {
-#line 146 "mn-mail-icon.gob"
+#line 144 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
-    if (event->button == 1 && event->type == GDK_2BUTTON_PRESS)
+    if (event->button == 1)
       self_activate(self);
     else if (event->button == 3)
       {
@@ -643,17 +599,17 @@ mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, g
 
     return FALSE;		/* propagate event */
   }}
-#line 647 "mn-mail-icon.c"
+#line 603 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 160 "mn-mail-icon.gob"
+#line 158 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 653 "mn-mail-icon.c"
+#line 609 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::button_release_event_h"
 {
-#line 164 "mn-mail-icon.gob"
+#line 162 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
@@ -662,20 +618,20 @@ mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event,
 	gtk_menu_popdown(GTK_MENU(selfp->menu));
 	return TRUE;		/* do not propagate event */
       }
-    
+
     return FALSE;		/* propagate event */
   }}
-#line 669 "mn-mail-icon.c"
+#line 625 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 176 "mn-mail-icon.gob"
+#line 174 "mn-mail-icon.gob"
 static gboolean 
 mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_data)
-#line 675 "mn-mail-icon.c"
+#line 631 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::popup_menu_h"
 {
-#line 178 "mn-mail-icon.gob"
+#line 176 "mn-mail-icon.gob"
 	
     Self *self = user_data;
 
@@ -684,17 +640,17 @@ mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_data)
 
     return TRUE;		/* a menu was activated */
   }}
-#line 688 "mn-mail-icon.c"
+#line 644 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 187 "mn-mail-icon.gob"
+#line 185 "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 694 "mn-mail-icon.c"
+#line 650 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::popup_menu_position_cb"
 {
-#line 193 "mn-mail-icon.gob"
+#line 191 "mn-mail-icon.gob"
 	
     GtkWidget *widget = user_data;
 
@@ -706,7 +662,7 @@ mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * y, gboolean 
     if (*y > gdk_screen_get_height(gtk_widget_get_screen(widget)) / 2)
       {
 	GtkRequisition req;
-	
+
 	gtk_widget_size_request(GTK_WIDGET(menu), &req);
 	*y -= req.height;
       }
@@ -715,38 +671,57 @@ mn_mail_icon_popup_menu_position_cb (GtkMenu * menu, int * x, int * y, gboolean 
 
     *push_in = TRUE;
   }}
-#line 719 "mn-mail-icon.c"
+#line 675 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
+#line 212 "mn-mail-icon.gob"
+void 
+mn_mail_icon_set_tip (MNMailIcon * self, const char * tip)
+#line 681 "mn-mail-icon.c"
+{
+#define __GOB_FUNCTION__ "MN:Mail:Icon::set_tip"
+#line 212 "mn-mail-icon.gob"
+	g_return_if_fail (self != NULL);
+#line 212 "mn-mail-icon.gob"
+	g_return_if_fail (MN_IS_MAIL_ICON (self));
+#line 688 "mn-mail-icon.c"
+{
 #line 214 "mn-mail-icon.gob"
+	
+    mn_tooltips_set_tip(selfp->tooltips, selfp->event_box, tip);
+  }}
+#line 694 "mn-mail-icon.c"
+#undef __GOB_FUNCTION__
+
+#line 218 "mn-mail-icon.gob"
 void 
 mn_mail_icon_set_tip_widget (MNMailIcon * self, GtkWidget * tip_widget)
-#line 725 "mn-mail-icon.c"
+#line 700 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::set_tip_widget"
-#line 214 "mn-mail-icon.gob"
+#line 218 "mn-mail-icon.gob"
 	g_return_if_fail (self != NULL);
-#line 214 "mn-mail-icon.gob"
+#line 218 "mn-mail-icon.gob"
 	g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 732 "mn-mail-icon.c"
+#line 707 "mn-mail-icon.c"
 {
-#line 216 "mn-mail-icon.gob"
+#line 220 "mn-mail-icon.gob"
 	
     mn_tooltips_set_tip_widget(selfp->tooltips, selfp->event_box, tip_widget);
   }}
-#line 738 "mn-mail-icon.c"
+#line 713 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
 
-#line 220 "mn-mail-icon.gob"
+#line 224 "mn-mail-icon.gob"
 GtkWidget * 
 mn_mail_icon_new (void)
-#line 744 "mn-mail-icon.c"
+#line 719 "mn-mail-icon.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Icon::new"
 {
-#line 222 "mn-mail-icon.gob"
+#line 226 "mn-mail-icon.gob"
 	
     return GTK_WIDGET(GET_NEW_VARG("title", _("Mail Notification"), NULL));
   }}
-#line 752 "mn-mail-icon.c"
+#line 727 "mn-mail-icon.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mail-icon.gob b/src/mn-mail-icon.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
@@ -40,17 +40,15 @@ class MN:Mail:Icon from Egg:Tray:Icon
 {
   private MNTooltips *tooltips = {mn_tooltips_new()} unrefwith g_object_unref;
   private GtkWidget *event_box;
-  public GtkWidget *image = {mn_blinking_image_new_from_stock(MN_STOCK_MAIL, GTK_ICON_SIZE_LARGE_TOOLBAR)};
+  public GtkWidget *image = {mn_blinking_image_new()};
 
   private GtkWidget *menu = {gtk_menu_new()} destroywith gtk_widget_destroy;
   public GtkWidget *mail_reader_item;
   public GtkWidget *update_item;
-  
+
   signal (ACTION) private NONE (NONE)
     void activate (self);
   signal (ACTION) private NONE (NONE)
-    void activate_main_window (self);
-  signal (ACTION) private NONE (NONE)
     void activate_mail_reader (self);
   signal (ACTION) private NONE (NONE)
     void activate_update (self);
@@ -62,7 +60,7 @@ class MN:Mail:Icon from Egg:Tray:Icon
     void activate_about (self);
   signal (ACTION) private NONE (NONE)
     void activate_remove (self);
-  
+
   class_init (class)
   {
     GtkBindingSet *binding_set;
@@ -77,28 +75,28 @@ class MN:Mail:Icon from Egg:Tray:Icon
     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);
   }
-  
+
   init (self)
   {
     GtkMenuShell *shell;
-    GtkWidget *main_window_item;
     GtkWidget *properties_item;
     GtkWidget *help_item;
     GtkWidget *about_item;
     GtkWidget *remove_item;
-    
+
     shell = GTK_MENU_SHELL(selfp->menu);
-    main_window_item = mn_menu_shell_append(shell, MN_STOCK_MAIN_WINDOW, _("Main _Window"));
+    /* translators: header capitalization */
     self->mail_reader_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_READER, _("_Mail Reader"));
+    /* 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);
     help_item = mn_menu_shell_append(shell, GTK_STOCK_HELP, NULL);
     about_item = mn_menu_shell_append(shell, GTK_STOCK_ABOUT, NULL);
     mn_menu_shell_append(shell, NULL, NULL);
+    /* translators: header capitalization */
     remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
-    
-    g_signal_connect_swapped(main_window_item, "activate", G_CALLBACK(self_activate_main_window), self);
+
     g_signal_connect_swapped(self->mail_reader_item, "activate", G_CALLBACK(self_activate_mail_reader), self);
     g_signal_connect_swapped(self->update_item, "activate", G_CALLBACK(self_activate_update), self);
     g_signal_connect_swapped(properties_item, "activate", G_CALLBACK(self_activate_properties), self);
@@ -113,7 +111,7 @@ class MN:Mail:Icon from Egg:Tray:Icon
 
     gtk_container_add(GTK_CONTAINER(selfp->event_box), self->image);
     gtk_container_add(GTK_CONTAINER(self), selfp->event_box);
-  
+
     g_object_connect(selfp->event_box,
 		     "signal::show-help", self_show_help_h, self,
 		     "signal::button-press-event", self_button_press_event_h, self,
@@ -138,7 +136,7 @@ class MN:Mail:Icon from Egg:Tray:Icon
     else
       return FALSE;
   }
-  
+
   private gboolean
     button_press_event_h (GtkWidget *widget,
 			  GdkEventButton *event,
@@ -146,7 +144,7 @@ class MN:Mail:Icon from Egg:Tray:Icon
   {
     Self *self = user_data;
 
-    if (event->button == 1 && event->type == GDK_2BUTTON_PRESS)
+    if (event->button == 1)
       self_activate(self);
     else if (event->button == 3)
       {
@@ -169,10 +167,10 @@ class MN:Mail:Icon from Egg:Tray:Icon
 	gtk_menu_popdown(GTK_MENU(selfp->menu));
 	return TRUE;		/* do not propagate event */
       }
-    
+
     return FALSE;		/* propagate event */
   }
-  
+
   private gboolean
     popup_menu_h (GtkWidget *widget, gpointer user_data)
   {
@@ -201,7 +199,7 @@ class MN:Mail:Icon from Egg:Tray:Icon
     if (*y > gdk_screen_get_height(gtk_widget_get_screen(widget)) / 2)
       {
 	GtkRequisition req;
-	
+
 	gtk_widget_size_request(GTK_WIDGET(menu), &req);
 	*y -= req.height;
       }
@@ -210,13 +208,19 @@ class MN:Mail:Icon from Egg:Tray:Icon
 
     *push_in = TRUE;
   }
-  
+
+  public void
+    set_tip (self, const char *tip)
+  {
+    mn_tooltips_set_tip(selfp->tooltips, selfp->event_box, tip);
+  }
+
   public void
     set_tip_widget (self, Gtk:Widget *tip_widget)
   {
     mn_tooltips_set_tip_widget(selfp->tooltips, selfp->event_box, tip_widget);
   }
-  
+
   public GtkWidget *
     new (void)
   {
diff --git a/src/mn-mail-icon.gob.stamp b/src/mn-mail-icon.gob.stamp
diff --git a/src/mn-mail-icon.h b/src/mn-mail-icon.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -54,7 +54,6 @@ typedef struct _MNMailIconClass MNMailIconClass;
 struct _MNMailIconClass {
 	EggTrayIconClass __parent__;
 	/*signal*/void (* activate) (MNMailIcon * self);
-	/*signal*/void (* activate_main_window) (MNMailIcon * self);
 	/*signal*/void (* activate_mail_reader) (MNMailIcon * self);
 	/*signal*/void (* activate_update) (MNMailIcon * self);
 	/*signal*/void (* activate_properties) (MNMailIcon * self);
@@ -68,6 +67,8 @@ struct _MNMailIconClass {
  * Public methods
  */
 GType	mn_mail_icon_get_type	(void);
+void 	mn_mail_icon_set_tip	(MNMailIcon * self,
+					const char * tip);
 void 	mn_mail_icon_set_tip_widget	(MNMailIcon * self,
 					GtkWidget * tip_widget);
 GtkWidget * 	mn_mail_icon_new	(void);
@@ -79,9 +80,6 @@ GtkWidget * 	mn_mail_icon_new	(void);
 #define mn_mail_icon_connect__activate(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data))
 #define mn_mail_icon_connect_after__activate(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data))
 #define mn_mail_icon_connect_data__activate(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data), (destroy_data), (GConnectFlags)(flags))
-#define mn_mail_icon_connect__activate_main_window(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_main_window",(GCallback) __extension__ ({void (* ___activate_main_window) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_main_window; }), (data))
-#define mn_mail_icon_connect_after__activate_main_window(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_main_window",(GCallback) __extension__ ({void (* ___activate_main_window) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_main_window; }), (data))
-#define mn_mail_icon_connect_data__activate_main_window(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_main_window",(GCallback) __extension__ ({void (* ___activate_main_window) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_main_window; }), (data), (destroy_data), (GConnectFlags)(flags))
 #define mn_mail_icon_connect__activate_mail_reader(object,func,data)	g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data))
 #define mn_mail_icon_connect_after__activate_mail_reader(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data))
 #define mn_mail_icon_connect_data__activate_mail_reader(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_mail_reader",(GCallback) __extension__ ({void (* ___activate_mail_reader) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_mail_reader; }), (data), (destroy_data), (GConnectFlags)(flags))
@@ -104,9 +102,6 @@ GtkWidget * 	mn_mail_icon_new	(void);
 #define mn_mail_icon_connect__activate(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data))
 #define mn_mail_icon_connect_after__activate(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data))
 #define mn_mail_icon_connect_data__activate(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
-#define mn_mail_icon_connect__activate_main_window(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate_main_window",(GCallback)(func),(data))
-#define mn_mail_icon_connect_after__activate_main_window(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate_main_window",(GCallback)(func),(data))
-#define mn_mail_icon_connect_data__activate_main_window(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate_main_window",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
 #define mn_mail_icon_connect__activate_mail_reader(object,func,data)	g_signal_connect(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data))
 #define mn_mail_icon_connect_after__activate_mail_reader(object,func,data)	g_signal_connect_after(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data))
 #define mn_mail_icon_connect_data__activate_mail_reader(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAIL_ICON(object),"activate_mail_reader",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
diff --git a/src/mn-mail-summary-popup-private.h b/src/mn-mail-summary-popup-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MAIL_SUMMARY_POPUP_PRIVATE_H__
 #define __MN_MAIL_SUMMARY_POPUP_PRIVATE_H__
@@ -12,24 +12,28 @@ extern "C" {
 
 #line 25 "mn-mail-summary-popup.gob"
 
+#include "mn-locked-callback.h"
 #include "mn-shell.h"
 
-#line 18 "mn-mail-summary-popup-private.h"
+#line 19 "mn-mail-summary-popup-private.h"
 struct _MNMailSummaryPopupPrivate {
-#line 41 "mn-mail-summary-popup.gob"
+#line 48 "mn-mail-summary-popup.gob"
 	GtkWidget * image;
-#line 42 "mn-mail-summary-popup.gob"
+#line 49 "mn-mail-summary-popup.gob"
 	GtkWidget * title;
-#line 43 "mn-mail-summary-popup.gob"
+#line 50 "mn-mail-summary-popup.gob"
+	GtkWidget * vbox;
+#line 51 "mn-mail-summary-popup.gob"
 	GtkWidget * message_view;
-#line 45 "mn-mail-summary-popup.gob"
+#line 53 "mn-mail-summary-popup.gob"
 	GdkGravity gravity;
-#line 47 "mn-mail-summary-popup.gob"
-	unsigned int timeout_id;
-#line 30 "mn-mail-summary-popup-private.h"
+#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);
-GtkWidget * 	mn_mail_summary_popup_message_view_new_cb	(void);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-mail-summary-popup.c b/src/mn-mail-summary-popup.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,17 +22,32 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-mail-summary-popup.gob"
+#line 30 "mn-mail-summary-popup.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
 #include <eel/eel.h>
-#include "mn-util.h"
 #include "mn-conf.h"
 #include "mn-stock.h"
-#include "mn-message-view.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;
+}
 
-#line 37 "mn-mail-summary-popup.c"
 /* self casting macros */
 #define SELF(x) MN_MAIL_SUMMARY_POPUP(x)
 #define SELF_CONST(x) MN_MAIL_SUMMARY_POPUP_CONST(x)
@@ -55,12 +69,14 @@ static void mn_mail_summary_popup_realize_set_decorations_h (MNMailSummaryPopup 
 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 (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;
@@ -74,12 +90,14 @@ static GtkWindowClass *parent_class = NULL;
 #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
@@ -88,7 +106,6 @@ static GtkWindowClass *parent_class = NULL;
 #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
-#define self_message_view_new_cb mn_mail_summary_popup_message_view_new_cb
 GType
 mn_mail_summary_popup_get_type (void)
 {
@@ -138,9 +155,12 @@ ___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 116 "mn-mail-summary-popup.gob"
+#line 125 "mn-mail-summary-popup.gob"
 	___2_mn_mail_summary_popup_finalize(obj_self);
-#line 144 "mn-mail-summary-popup.c"
+#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__
 
@@ -154,31 +174,31 @@ mn_mail_summary_popup_class_init (MNMailSummaryPopupClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (GTK_TYPE_WINDOW);
 
-#line 116 "mn-mail-summary-popup.gob"
+#line 125 "mn-mail-summary-popup.gob"
 	g_object_class->finalize = ___finalize;
-#line 160 "mn-mail-summary-popup.c"
+#line 180 "mn-mail-summary-popup.c"
 }
 #undef __GOB_FUNCTION__
-#line 49 "mn-mail-summary-popup.gob"
+#line 59 "mn-mail-summary-popup.gob"
 static void 
 mn_mail_summary_popup_init (MNMailSummaryPopup * self G_GNUC_UNUSED)
-#line 166 "mn-mail-summary-popup.c"
+#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 29 "mn-mail-summary-popup.gob"
+#line 30 "mn-mail-summary-popup.gob"
 	self->_priv->gravity = -1;
-#line 172 "mn-mail-summary-popup.c"
+#line 192 "mn-mail-summary-popup.c"
  {
-#line 50 "mn-mail-summary-popup.gob"
+#line 60 "mn-mail-summary-popup.gob"
 
     mn_container_create_interface(GTK_CONTAINER(self),
-				  MN_INTERFACE_FILE("mail-summary-popup.glade"),
+				  UIDIR G_DIR_SEPARATOR_S "mail-summary-popup.glade",
 				  "eventbox",
 				  "mn_mail_summary_popup_",
 				  "image", &selfp->image,
 				  "mn-mail-summary-popup-title", &selfp->title,
-				  "mn-message-view", &selfp->message_view,
+				  "vbox", &selfp->vbox,
 				  NULL);
 
     gtk_widget_set_name(GTK_WIDGET(self), "mn-mail-summary-popup");
@@ -202,7 +222,7 @@ mn_mail_summary_popup_init (MNMailSummaryPopup * self G_GNUC_UNUSED)
      * 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);
@@ -213,72 +233,71 @@ mn_mail_summary_popup_init (MNMailSummaryPopup * self G_GNUC_UNUSED)
     gtk_window_set_focus_on_map(GTK_WINDOW(self), FALSE);
     gtk_window_stick(GTK_WINDOW(self));
 
-    gtk_image_set_from_stock(GTK_IMAGE(selfp->image), MN_STOCK_MAIL_SUMMARY, -1);
-
+    self_set_layout(self);
     self_set_title_font(self);
-    self_set_contents_font(self);
 
     if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
       self_install_timeout(self);
 
-    mn_conf_notifications_add(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_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);
+    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 240 "mn-mail-summary-popup.c"
+#line 259 "mn-mail-summary-popup.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 116 "mn-mail-summary-popup.gob"
+#line 125 "mn-mail-summary-popup.gob"
 static void 
 ___2_mn_mail_summary_popup_finalize (GObject * object G_GNUC_UNUSED)
-#line 250 "mn-mail-summary-popup.c"
+#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 118 "mn-mail-summary-popup.gob"
+#line 127 "mn-mail-summary-popup.gob"
 	
     Self *self = SELF(object);
 
-    if (selfp->timeout_id)
-      g_source_remove(selfp->timeout_id);
+    if (selfp->timeout_source)
+      mn_locked_g_source_remove(selfp->timeout_source);
 
     PARENT_HANDLER(object);
   }}
-#line 266 "mn-mail-summary-popup.c"
+#line 285 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 127 "mn-mail-summary-popup.gob"
+#line 136 "mn-mail-summary-popup.gob"
 static void 
 mn_mail_summary_popup_realize_set_decorations_h (MNMailSummaryPopup * self, gpointer user_data)
-#line 273 "mn-mail-summary-popup.c"
+#line 292 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::realize_set_decorations_h"
-#line 127 "mn-mail-summary-popup.gob"
+#line 136 "mn-mail-summary-popup.gob"
 	g_return_if_fail (self != NULL);
-#line 127 "mn-mail-summary-popup.gob"
+#line 136 "mn-mail-summary-popup.gob"
 	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 280 "mn-mail-summary-popup.c"
+#line 299 "mn-mail-summary-popup.c"
 {
-#line 129 "mn-mail-summary-popup.gob"
+#line 138 "mn-mail-summary-popup.gob"
 	
     /*
      * gdk_window_set_decorations() needs the widget's GdkWindow, this
@@ -286,141 +305,137 @@ mn_mail_summary_popup_realize_set_decorations_h (MNMailSummaryPopup * self, gpoi
      */
     gdk_window_set_decorations(GTK_WIDGET(self)->window, GDK_DECOR_BORDER);
   }}
-#line 290 "mn-mail-summary-popup.c"
+#line 309 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 137 "mn-mail-summary-popup.gob"
+#line 146 "mn-mail-summary-popup.gob"
 static void 
 mn_mail_summary_popup_realize_set_geometry_h (MNMailSummaryPopup * self, gpointer user_data)
-#line 296 "mn-mail-summary-popup.c"
+#line 315 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::realize_set_geometry_h"
-#line 137 "mn-mail-summary-popup.gob"
+#line 146 "mn-mail-summary-popup.gob"
 	g_return_if_fail (self != NULL);
-#line 137 "mn-mail-summary-popup.gob"
+#line 146 "mn-mail-summary-popup.gob"
 	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 303 "mn-mail-summary-popup.c"
+#line 322 "mn-mail-summary-popup.c"
 {
-#line 139 "mn-mail-summary-popup.gob"
+#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 311 "mn-mail-summary-popup.c"
+#line 330 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 145 "mn-mail-summary-popup.gob"
+#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 317 "mn-mail-summary-popup.c"
+#line 336 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_autoclose_cb"
 {
-#line 150 "mn-mail-summary-popup.gob"
+#line 159 "mn-mail-summary-popup.gob"
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
       {
-	if (! selfp->timeout_id)
+	if (! selfp->timeout_source)
 	  self_install_timeout(self);
       }
     else
-      mn_source_clear(&selfp->timeout_id);
-    
-    GDK_THREADS_LEAVE();
+      mn_locked_g_source_clear(&selfp->timeout_source);
   }}
-#line 337 "mn-mail-summary-popup.c"
+#line 352 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 166 "mn-mail-summary-popup.gob"
+#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 343 "mn-mail-summary-popup.c"
+#line 358 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_delay_cb"
 {
-#line 171 "mn-mail-summary-popup.gob"
+#line 176 "mn-mail-summary-popup.gob"
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_reset_timeout(self);
-    
-    GDK_THREADS_LEAVE();
   }}
-#line 357 "mn-mail-summary-popup.c"
+#line 368 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 181 "mn-mail-summary-popup.gob"
+#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 363 "mn-mail-summary-popup.c"
+#line 390 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_geometry_cb"
 {
-#line 186 "mn-mail-summary-popup.gob"
+#line 198 "mn-mail-summary-popup.gob"
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_set_geometry(self);
-
-    GDK_THREADS_LEAVE();
   }}
-#line 377 "mn-mail-summary-popup.c"
+#line 400 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 196 "mn-mail-summary-popup.gob"
+#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 383 "mn-mail-summary-popup.c"
+#line 406 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_fonts_aspect_source_cb"
 {
-#line 201 "mn-mail-summary-popup.gob"
+#line 209 "mn-mail-summary-popup.gob"
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_set_title_font(self);
     self_set_contents_font(self);
-
-    GDK_THREADS_LEAVE();
   }}
-#line 398 "mn-mail-summary-popup.c"
+#line 417 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 212 "mn-mail-summary-popup.gob"
+#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 404 "mn-mail-summary-popup.c"
+#line 423 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_fonts_title_font_cb"
 {
-#line 217 "mn-mail-summary-popup.gob"
+#line 221 "mn-mail-summary-popup.gob"
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_set_title_font(self);
-
-    GDK_THREADS_LEAVE();
   }}
-#line 418 "mn-mail-summary-popup.c"
+#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 424 "mn-mail-summary-popup.c"
+#line 439 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::notify_fonts_contents_font_cb"
 {
@@ -428,75 +443,116 @@ mn_mail_summary_popup_notify_fonts_contents_font_cb (GConfClient * client, unsig
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_set_contents_font(self);
-
-    GDK_THREADS_LEAVE();
   }}
-#line 438 "mn-mail-summary-popup.c"
+#line 449 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 242 "mn-mail-summary-popup.gob"
+#line 238 "mn-mail-summary-popup.gob"
 static void 
 mn_mail_summary_popup_install_timeout (MNMailSummaryPopup * self)
-#line 444 "mn-mail-summary-popup.c"
+#line 455 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::install_timeout"
-#line 242 "mn-mail-summary-popup.gob"
+#line 238 "mn-mail-summary-popup.gob"
 	g_return_if_fail (self != NULL);
-#line 242 "mn-mail-summary-popup.gob"
+#line 238 "mn-mail-summary-popup.gob"
 	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 451 "mn-mail-summary-popup.c"
+#line 462 "mn-mail-summary-popup.c"
 {
-#line 244 "mn-mail-summary-popup.gob"
+#line 240 "mn-mail-summary-popup.gob"
 	
-    g_return_if_fail(selfp->timeout_id == 0);
+    g_return_if_fail(selfp->timeout_source == NULL);
 
-    selfp->timeout_id = mn_timeout_add(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES,
-				       MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS,
-				       (GSourceFunc) self_timeout_cb,
-				       self);
+    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 462 "mn-mail-summary-popup.c"
+#line 473 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 253 "mn-mail-summary-popup.gob"
+#line 249 "mn-mail-summary-popup.gob"
 static gboolean 
-mn_mail_summary_popup_timeout_cb (MNMailSummaryPopup * self)
-#line 468 "mn-mail-summary-popup.c"
+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 253 "mn-mail-summary-popup.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 253 "mn-mail-summary-popup.gob"
-	g_return_val_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self), (gboolean )0);
-#line 475 "mn-mail-summary-popup.c"
 {
-#line 255 "mn-mail-summary-popup.gob"
+#line 251 "mn-mail-summary-popup.gob"
 	
-    GDK_THREADS_ENTER();
+    Self *self = data;
+
     gtk_widget_destroy(GTK_WIDGET(self));
-    GDK_THREADS_LEAVE();
-  
+
     return FALSE;		/* remove timeout */
   }}
-#line 485 "mn-mail-summary-popup.c"
+#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 263 "mn-mail-summary-popup.gob"
+#line 296 "mn-mail-summary-popup.gob"
 static void 
 mn_mail_summary_popup_set_geometry (MNMailSummaryPopup * self)
-#line 491 "mn-mail-summary-popup.c"
+#line 547 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_geometry"
-#line 263 "mn-mail-summary-popup.gob"
+#line 296 "mn-mail-summary-popup.gob"
 	g_return_if_fail (self != NULL);
-#line 263 "mn-mail-summary-popup.gob"
+#line 296 "mn-mail-summary-popup.gob"
 	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 498 "mn-mail-summary-popup.c"
+#line 554 "mn-mail-summary-popup.c"
 {
-#line 265 "mn-mail-summary-popup.gob"
+#line 298 "mn-mail-summary-popup.gob"
 	
     MNPosition position;
     int horizontal_offset;
@@ -524,7 +580,7 @@ mn_mail_summary_popup_set_geometry (MNMailSummaryPopup * self)
     screen_width = gdk_screen_width();
     screen_height = gdk_screen_height();
 
-    g_return_if_fail(position >= 0 && position < G_N_ELEMENTS(gravity_mapping));
+    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)
@@ -565,73 +621,73 @@ mn_mail_summary_popup_set_geometry (MNMailSummaryPopup * self)
     if (reshow)
       gtk_widget_show(GTK_WIDGET(self));
   }}
-#line 569 "mn-mail-summary-popup.c"
+#line 625 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 334 "mn-mail-summary-popup.gob"
+#line 367 "mn-mail-summary-popup.gob"
 static void 
 mn_mail_summary_popup_set_title_font (MNMailSummaryPopup * self)
-#line 575 "mn-mail-summary-popup.c"
+#line 631 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_title_font"
-#line 334 "mn-mail-summary-popup.gob"
+#line 367 "mn-mail-summary-popup.gob"
 	g_return_if_fail (self != NULL);
-#line 334 "mn-mail-summary-popup.gob"
+#line 367 "mn-mail-summary-popup.gob"
 	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 582 "mn-mail-summary-popup.c"
+#line 638 "mn-mail-summary-popup.c"
 {
-#line 336 "mn-mail-summary-popup.gob"
+#line 369 "mn-mail-summary-popup.gob"
 	
     self_set_font(self, selfp->title, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_TITLE_FONT);
   }}
-#line 588 "mn-mail-summary-popup.c"
+#line 644 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 340 "mn-mail-summary-popup.gob"
+#line 373 "mn-mail-summary-popup.gob"
 static void 
 mn_mail_summary_popup_set_contents_font (MNMailSummaryPopup * self)
-#line 594 "mn-mail-summary-popup.c"
+#line 650 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_contents_font"
-#line 340 "mn-mail-summary-popup.gob"
+#line 373 "mn-mail-summary-popup.gob"
 	g_return_if_fail (self != NULL);
-#line 340 "mn-mail-summary-popup.gob"
+#line 373 "mn-mail-summary-popup.gob"
 	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 601 "mn-mail-summary-popup.c"
+#line 657 "mn-mail-summary-popup.c"
 {
-#line 342 "mn-mail-summary-popup.gob"
+#line 375 "mn-mail-summary-popup.gob"
 	
     self_set_font(self, selfp->message_view, MN_CONF_MAIL_SUMMARY_POPUP_FONTS_CONTENTS_FONT);
   }}
-#line 607 "mn-mail-summary-popup.c"
+#line 663 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 346 "mn-mail-summary-popup.gob"
+#line 379 "mn-mail-summary-popup.gob"
 static void 
 mn_mail_summary_popup_set_font (MNMailSummaryPopup * self, GtkWidget * widget, const char * conf_key)
-#line 613 "mn-mail-summary-popup.c"
+#line 669 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_font"
-#line 346 "mn-mail-summary-popup.gob"
+#line 379 "mn-mail-summary-popup.gob"
 	g_return_if_fail (self != NULL);
-#line 346 "mn-mail-summary-popup.gob"
+#line 379 "mn-mail-summary-popup.gob"
 	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 346 "mn-mail-summary-popup.gob"
+#line 379 "mn-mail-summary-popup.gob"
 	g_return_if_fail (widget != NULL);
-#line 346 "mn-mail-summary-popup.gob"
+#line 379 "mn-mail-summary-popup.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 346 "mn-mail-summary-popup.gob"
+#line 379 "mn-mail-summary-popup.gob"
 	g_return_if_fail (conf_key != NULL);
-#line 626 "mn-mail-summary-popup.c"
+#line 682 "mn-mail-summary-popup.c"
 {
-#line 350 "mn-mail-summary-popup.gob"
+#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)
 	  {
@@ -639,108 +695,92 @@ mn_mail_summary_popup_set_font (MNMailSummaryPopup * self, GtkWidget * widget, c
 	    g_free(str);
 	  }
       }
-    
+
     gtk_widget_modify_font(widget, font_desc);
     if (font_desc)
       pango_font_description_free(font_desc);
   }}
-#line 648 "mn-mail-summary-popup.c"
+#line 704 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 370 "mn-mail-summary-popup.gob"
+#line 403 "mn-mail-summary-popup.gob"
 void 
 mn_mail_summary_popup_set_messages (MNMailSummaryPopup * self, GSList * messages)
-#line 654 "mn-mail-summary-popup.c"
+#line 710 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::set_messages"
-#line 370 "mn-mail-summary-popup.gob"
+#line 403 "mn-mail-summary-popup.gob"
 	g_return_if_fail (self != NULL);
-#line 370 "mn-mail-summary-popup.gob"
+#line 403 "mn-mail-summary-popup.gob"
 	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 370 "mn-mail-summary-popup.gob"
+#line 403 "mn-mail-summary-popup.gob"
 	g_return_if_fail (messages != NULL);
-#line 663 "mn-mail-summary-popup.c"
+#line 719 "mn-mail-summary-popup.c"
 {
-#line 372 "mn-mail-summary-popup.gob"
+#line 405 "mn-mail-summary-popup.gob"
 	
-    mn_message_view_set_messages(MN_MESSAGE_VIEW(selfp->message_view), messages);
+    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 669 "mn-mail-summary-popup.c"
+#line 728 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 376 "mn-mail-summary-popup.gob"
+#line 412 "mn-mail-summary-popup.gob"
 void 
 mn_mail_summary_popup_reset_timeout (MNMailSummaryPopup * self)
-#line 675 "mn-mail-summary-popup.c"
+#line 734 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::reset_timeout"
-#line 376 "mn-mail-summary-popup.gob"
+#line 412 "mn-mail-summary-popup.gob"
 	g_return_if_fail (self != NULL);
-#line 376 "mn-mail-summary-popup.gob"
+#line 412 "mn-mail-summary-popup.gob"
 	g_return_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self));
-#line 682 "mn-mail-summary-popup.c"
+#line 741 "mn-mail-summary-popup.c"
 {
-#line 378 "mn-mail-summary-popup.gob"
+#line 414 "mn-mail-summary-popup.gob"
 	
     if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
       {
-	mn_source_clear(&selfp->timeout_id);
+	mn_locked_g_source_clear(&selfp->timeout_source);
 	self_install_timeout(self);
       }
   }}
-#line 692 "mn-mail-summary-popup.c"
+#line 751 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 386 "mn-mail-summary-popup.gob"
+#line 422 "mn-mail-summary-popup.gob"
 GtkWidget * 
 mn_mail_summary_popup_new (void)
-#line 698 "mn-mail-summary-popup.c"
+#line 757 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::new"
 {
-#line 388 "mn-mail-summary-popup.gob"
+#line 424 "mn-mail-summary-popup.gob"
 	
     return GTK_WIDGET(GET_NEW);
   }}
-#line 706 "mn-mail-summary-popup.c"
+#line 765 "mn-mail-summary-popup.c"
 #undef __GOB_FUNCTION__
 
-#line 394 "mn-mail-summary-popup.gob"
+#line 430 "mn-mail-summary-popup.gob"
 gboolean 
 mn_mail_summary_popup_button_press_event_h (MNMailSummaryPopup * self, GdkEventButton * button, GtkWidget * widget)
-#line 712 "mn-mail-summary-popup.c"
+#line 771 "mn-mail-summary-popup.c"
 {
 #define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::button_press_event_h"
-#line 394 "mn-mail-summary-popup.gob"
+#line 430 "mn-mail-summary-popup.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 394 "mn-mail-summary-popup.gob"
+#line 430 "mn-mail-summary-popup.gob"
 	g_return_val_if_fail (MN_IS_MAIL_SUMMARY_POPUP (self), (gboolean )0);
-#line 719 "mn-mail-summary-popup.c"
+#line 778 "mn-mail-summary-popup.c"
 {
-#line 396 "mn-mail-summary-popup.gob"
+#line 432 "mn-mail-summary-popup.gob"
 	
     gtk_widget_destroy(GTK_WIDGET(self));
 
     return TRUE;		/* do not propagate event */
   }}
-#line 727 "mn-mail-summary-popup.c"
-#undef __GOB_FUNCTION__
-
-#line 402 "mn-mail-summary-popup.gob"
-GtkWidget * 
-mn_mail_summary_popup_message_view_new_cb (void)
-#line 733 "mn-mail-summary-popup.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Summary:Popup::message_view_new_cb"
-{
-#line 404 "mn-mail-summary-popup.gob"
-	
-    GtkWidget *view;
-
-    view = mn_message_view_new(TRUE, FALSE);
-    gtk_widget_show(view);
-
-    return view;
-  }}
-#line 746 "mn-mail-summary-popup.c"
+#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,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,13 +16,14 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
 %}
 
 %privateheader{
+#include "mn-locked-callback.h"
 #include "mn-shell.h"
 %}
 
@@ -30,31 +31,40 @@ requires 2.0.12
 #include "config.h"
 #include <glib/gi18n.h>
 #include <eel/eel.h>
-#include "mn-util.h"
 #include "mn-conf.h"
 #include "mn-stock.h"
-#include "mn-message-view.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 unsigned int timeout_id;
+  private MNLockedGSource *timeout_source;
+
+  private GSList *messages destroywith mn_g_object_slist_free;
 
   init (self)
   {
     mn_container_create_interface(GTK_CONTAINER(self),
-				  MN_INTERFACE_FILE("mail-summary-popup.glade"),
+				  UIDIR G_DIR_SEPARATOR_S "mail-summary-popup.glade",
 				  "eventbox",
 				  "mn_mail_summary_popup_",
 				  "image", &selfp->image,
 				  "mn-mail-summary-popup-title", &selfp->title,
-				  "mn-message-view", &selfp->message_view,
+				  "vbox", &selfp->vbox,
 				  NULL);
 
     gtk_widget_set_name(GTK_WIDGET(self), "mn-mail-summary-popup");
@@ -78,7 +88,7 @@ class MN:Mail:Summary:Popup from Gtk:Window
      * 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);
@@ -89,23 +99,22 @@ class MN:Mail:Summary:Popup from Gtk:Window
     gtk_window_set_focus_on_map(GTK_WINDOW(self), FALSE);
     gtk_window_stick(GTK_WINDOW(self));
 
-    gtk_image_set_from_stock(GTK_IMAGE(selfp->image), MN_STOCK_MAIL_SUMMARY, -1);
-
+    self_set_layout(self);
     self_set_title_font(self);
-    self_set_contents_font(self);
 
     if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
       self_install_timeout(self);
 
-    mn_conf_notifications_add(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_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);
+    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,
@@ -118,8 +127,8 @@ class MN:Mail:Summary:Popup from Gtk:Window
   {
     Self *self = SELF(object);
 
-    if (selfp->timeout_id)
-      g_source_remove(selfp->timeout_id);
+    if (selfp->timeout_source)
+      mn_locked_g_source_remove(selfp->timeout_source);
 
     PARENT_HANDLER(object);
   }
@@ -141,7 +150,7 @@ class MN:Mail:Summary:Popup from Gtk:Window
     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,
@@ -150,19 +159,15 @@ class MN:Mail:Summary:Popup from Gtk:Window
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
       {
-	if (! selfp->timeout_id)
+	if (! selfp->timeout_source)
 	  self_install_timeout(self);
       }
     else
-      mn_source_clear(&selfp->timeout_id);
-    
-    GDK_THREADS_LEAVE();
+      mn_locked_g_source_clear(&selfp->timeout_source);
   }
-  
+
   private void
     notify_delay_cb (GConfClient *client,
 		     unsigned int cnxn_id,
@@ -171,11 +176,18 @@ class MN:Mail:Summary:Popup from Gtk:Window
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_reset_timeout(self);
-    
-    GDK_THREADS_LEAVE();
+  }
+
+  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
@@ -186,11 +198,7 @@ class MN:Mail:Summary:Popup from Gtk:Window
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_set_geometry(self);
-
-    GDK_THREADS_LEAVE();
   }
 
   private void
@@ -201,12 +209,8 @@ class MN:Mail:Summary:Popup from Gtk:Window
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_set_title_font(self);
     self_set_contents_font(self);
-
-    GDK_THREADS_LEAVE();
   }
 
   private void
@@ -217,13 +221,9 @@ class MN:Mail:Summary:Popup from Gtk:Window
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_set_title_font(self);
-
-    GDK_THREADS_LEAVE();
   }
-  
+
   private void
     notify_fonts_contents_font_cb (GConfClient *client,
 				   unsigned int cnxn_id,
@@ -232,35 +232,68 @@ class MN:Mail:Summary:Popup from Gtk:Window
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     self_set_contents_font(self);
-
-    GDK_THREADS_LEAVE();
   }
 
   private void
     install_timeout (self)
   {
-    g_return_if_fail(selfp->timeout_id == 0);
+    g_return_if_fail(selfp->timeout_source == NULL);
 
-    selfp->timeout_id = mn_timeout_add(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES,
-				       MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS,
-				       (GSourceFunc) self_timeout_cb,
-				       self);
+    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 (self)
+    timeout_cb (gpointer data)
   {
-    GDK_THREADS_ENTER();
+    Self *self = data;
+
     gtk_widget_destroy(GTK_WIDGET(self));
-    GDK_THREADS_LEAVE();
-  
+
     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;
@@ -289,7 +322,7 @@ class MN:Mail:Summary:Popup from Gtk:Window
     screen_width = gdk_screen_width();
     screen_height = gdk_screen_height();
 
-    g_return_if_fail(position >= 0 && position < G_N_ELEMENTS(gravity_mapping));
+    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)
@@ -342,7 +375,7 @@ class MN:Mail:Summary:Popup from Gtk:Window
   {
     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),
@@ -353,7 +386,7 @@ class MN:Mail:Summary:Popup from Gtk:Window
     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)
 	  {
@@ -361,16 +394,19 @@ class MN:Mail:Summary:Popup from Gtk:Window
 	    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_message_view_set_messages(MN_MESSAGE_VIEW(selfp->message_view), messages);
+    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
@@ -378,7 +414,7 @@ class MN:Mail:Summary:Popup from Gtk:Window
   {
     if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
       {
-	mn_source_clear(&selfp->timeout_id);
+	mn_locked_g_source_clear(&selfp->timeout_source);
 	self_install_timeout(self);
       }
   }
@@ -398,15 +434,4 @@ class MN:Mail:Summary:Popup from Gtk:Window
 
     return TRUE;		/* do not propagate event */
   }
-
-  protected GtkWidget *
-    message_view_new_cb (void)
-  {
-    GtkWidget *view;
-
-    view = mn_message_view_new(TRUE, FALSE);
-    gtk_widget_show(view);
-
-    return view;
-  }
 }
diff --git a/src/mn-mail-summary-popup.gob.stamp b/src/mn-mail-summary-popup.gob.stamp
diff --git a/src/mn-mail-summary-popup.h b/src/mn-mail-summary-popup.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -14,6 +14,14 @@ 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
  */
diff --git a/src/mn-mailbox-private.h b/src/mn-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MAILBOX_PRIVATE_H__
 #define __MN_MAILBOX_PRIVATE_H__
@@ -10,7 +10,9 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-#line 34 "mn-mailbox.gob"
+#line 35 "mn-mailbox.gob"
+
+#include "mn-locked-callback.h"
 
 typedef enum
 {
@@ -24,7 +26,20 @@ typedef enum
   MN_MAILBOX_PARAM_IGNORE_CASE	= 1 << (G_PARAM_USER_SHIFT + 2)
 } MNMailboxParamFlags;
 
-#line 28 "mn-mailbox-private.h"
+#line 30 "mn-mailbox-private.h"
+struct _MNMailboxPrivate {
+#line 97 "mn-mailbox.gob"
+	gboolean added;
+#line 139 "mn-mailbox.gob"
+	MNLockedGSource * check_timeout_source;
+#line 148 "mn-mailbox.gob"
+	gboolean poll;
+#line 181 "mn-mailbox.gob"
+	GSList * unfiltered_messages;
+#line 203 "mn-mailbox.gob"
+	GHashTable * messages_hash_table;
+#line 42 "mn-mailbox-private.h"
+};
 void 	mn_mailbox_set_error	(MNMailbox * self, const char * format, ...);
 void 	mn_mailbox_notice	(MNMailbox * self, const char * format, ...);
 void 	mn_mailbox_warning	(MNMailbox * self, const char * format, ...);
diff --git a/src/mn-mailbox-properties-dialog-private.h b/src/mn-mailbox-properties-dialog-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE_H__
 #define __MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE_H__
@@ -14,35 +14,57 @@ struct _MNMailboxPropertiesDialogPrivate {
 	GtkWindow * dialog_parent;
 #line 66 "mn-mailbox-properties-dialog.gob"
 	MNMailbox * mailbox;
-#line 98 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * mailbox_type_label;
 #line 99 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * mailbox_type_combo;
+	GtkWidget * mailbox_type_label;
 #line 100 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * mailbox_name_label;
+	GtkWidget * mailbox_type_combo;
 #line 101 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * mailbox_name_entry;
+	GtkWidget * mailbox_name_label;
 #line 102 "mn-mailbox-properties-dialog.gob"
+	GtkWidget * mailbox_name_entry;
+#line 103 "mn-mailbox-properties-dialog.gob"
 	GtkWidget * mailbox_name_default_button;
 #line 104 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * type_section_label;
+	GtkWidget * delay_label;
 #line 105 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * properties_event_box;
+	GtkWidget * delay_hbox;
+#line 106 "mn-mailbox-properties-dialog.gob"
+	GtkWidget * minutes_spin;
 #line 107 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * apply_button;
+	GtkWidget * minutes_label;
 #line 108 "mn-mailbox-properties-dialog.gob"
-	GtkWidget * accept_button;
+	GtkWidget * seconds_spin;
+#line 109 "mn-mailbox-properties-dialog.gob"
+	GtkWidget * seconds_label;
 #line 110 "mn-mailbox-properties-dialog.gob"
-	GtkListStore * store;
+	GtkWidget * delay_default_button;
 #line 112 "mn-mailbox-properties-dialog.gob"
-	char * default_name;
+	GtkWidget * type_section_label;
 #line 113 "mn-mailbox-properties-dialog.gob"
-	gboolean custom_name;
-#line 42 "mn-mailbox-properties-dialog-private.h"
+	GtkWidget * properties_event_box;
+#line 115 "mn-mailbox-properties-dialog.gob"
+	GtkWidget * apply_button;
+#line 116 "mn-mailbox-properties-dialog.gob"
+	GtkWidget * accept_button;
+#line 118 "mn-mailbox-properties-dialog.gob"
+	GtkListStore * store;
+#line 120 "mn-mailbox-properties-dialog.gob"
+	char * default_name;
+#line 121 "mn-mailbox-properties-dialog.gob"
+	gboolean has_custom_name;
+#line 123 "mn-mailbox-properties-dialog.gob"
+	int default_check_delay;
+#line 124 "mn-mailbox-properties-dialog.gob"
+	gboolean has_custom_check_delay;
+#line 126 "mn-mailbox-properties-dialog.gob"
+	GSList * entries;
+#line 62 "mn-mailbox-properties-dialog-private.h"
 };
 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);
+void 	mn_mailbox_properties_dialog_delay_changed_h	(MNMailboxPropertiesDialog * self, GtkEditable * editable);
+void 	mn_mailbox_properties_dialog_delay_default_button_clicked_h	(MNMailboxPropertiesDialog * self, GtkButton * button);
 void 	mn_mailbox_properties_dialog_entry_activate_h	(MNMailboxPropertiesDialog * self, GtkEntry * entry);
 
 #ifdef __cplusplus
diff --git a/src/mn-mailbox-properties-dialog.c b/src/mn-mailbox-properties-dialog.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -29,19 +28,19 @@
 #include <glib/gi18n.h>
 #include "mn-mailbox-properties.h"
 #include "mn-autodetect-mailbox-properties.h"
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-system-vfs-mailbox-properties.h"
 #endif
-#ifdef WITH_POP3
+#if WITH_POP3
 #include "mn-pop3-mailbox-properties.h"
 #endif
-#ifdef WITH_IMAP
+#if WITH_IMAP
 #include "mn-imap-mailbox-properties.h"
 #endif
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
 #include "mn-gmail-mailbox-properties.h"
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
 #include "mn-evolution-mailbox-properties.h"
 #endif
 #include "mn-util.h"
@@ -57,7 +56,7 @@ enum {
 
 static GType selected_type = 0;
 
-#line 61 "mn-mailbox-properties-dialog.c"
+#line 60 "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)
@@ -84,6 +83,7 @@ static MNMailboxProperties * mn_mailbox_properties_dialog_get_properties_by_type
 static MNMailboxProperties * mn_mailbox_properties_dialog_get_properties_by_g_type (MNMailboxPropertiesDialog * self, GType type) G_GNUC_UNUSED;
 static void mn_mailbox_properties_dialog_update_complete (MNMailboxPropertiesDialog * self) G_GNUC_UNUSED;
 static void mn_mailbox_properties_dialog_update_default_name (MNMailboxPropertiesDialog * self) G_GNUC_UNUSED;
+static void mn_mailbox_properties_dialog_update_default_check_delay (MNMailboxPropertiesDialog * self) G_GNUC_UNUSED;
 
 enum {
 	PROP_0,
@@ -106,10 +106,13 @@ static MNDialogClass *parent_class = NULL;
 #define self_apply mn_mailbox_properties_dialog_apply
 #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_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
 #define self_name_default_button_clicked_h mn_mailbox_properties_dialog_name_default_button_clicked_h
+#define self_delay_changed_h mn_mailbox_properties_dialog_delay_changed_h
+#define self_delay_default_button_clicked_h mn_mailbox_properties_dialog_delay_default_button_clicked_h
 #define self_entry_activate_h mn_mailbox_properties_dialog_entry_activate_h
 GType
 mn_mailbox_properties_dialog_get_type (void)
@@ -163,10 +166,10 @@ ___dispose (GObject *obj_self)
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
 #line 66 "mn-mailbox-properties-dialog.gob"
 	if(self->_priv->mailbox) { g_object_unref ((gpointer) self->_priv->mailbox); self->_priv->mailbox = NULL; }
-#line 167 "mn-mailbox-properties-dialog.c"
-#line 110 "mn-mailbox-properties-dialog.gob"
-	if(self->_priv->store) { g_object_unref ((gpointer) self->_priv->store); self->_priv->store = NULL; }
 #line 170 "mn-mailbox-properties-dialog.c"
+#line 118 "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"
 }
 #undef __GOB_FUNCTION__
 
@@ -179,9 +182,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 112 "mn-mailbox-properties-dialog.gob"
+#line 120 "mn-mailbox-properties-dialog.gob"
 	if(self->_priv->default_name) { g_free ((gpointer) self->_priv->default_name); self->_priv->default_name = NULL; }
-#line 185 "mn-mailbox-properties-dialog.c"
+#line 188 "mn-mailbox-properties-dialog.c"
+#line 126 "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"
 }
 #undef __GOB_FUNCTION__
 
@@ -202,9 +208,9 @@ mn_mailbox_properties_dialog_class_init (MNMailboxPropertiesDialogClass * c G_GN
 
 	parent_class = g_type_class_ref (MN_TYPE_DIALOG);
 
-#line 115 "mn-mailbox-properties-dialog.gob"
+#line 128 "mn-mailbox-properties-dialog.gob"
 	g_object_class->constructor = ___3_mn_mailbox_properties_dialog_constructor;
-#line 208 "mn-mailbox-properties-dialog.c"
+#line 214 "mn-mailbox-properties-dialog.c"
 	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
@@ -249,7 +255,7 @@ ___object_set_property (GObject *object,
 		{
 #line 64 "mn-mailbox-properties-dialog.gob"
 self->_priv->dialog_parent = g_value_get_pointer (VAL);
-#line 253 "mn-mailbox-properties-dialog.c"
+#line 259 "mn-mailbox-properties-dialog.c"
 		}
 		break;
 	case PROP_MAILBOX:
@@ -271,12 +277,13 @@ self->_priv->dialog_parent = g_value_get_pointer (VAL);
 
 	  selfp->mailbox = MN_MAILBOX(object);
 
+	  /* translators: header capitalization */
 	  title = g_strdup_printf(_("%s Properties"), selfp->mailbox->runtime_name);
 	  gtk_window_set_title(GTK_WINDOW(self), title);
 	  g_free(title);
 	}
     
-#line 280 "mn-mailbox-properties-dialog.c"
+#line 287 "mn-mailbox-properties-dialog.c"
 		}
 		break;
 	default:
@@ -307,16 +314,16 @@ ___object_get_property (GObject *object,
 		{
 #line 64 "mn-mailbox-properties-dialog.gob"
 g_value_set_pointer (VAL, self->_priv->dialog_parent);
-#line 311 "mn-mailbox-properties-dialog.c"
+#line 318 "mn-mailbox-properties-dialog.c"
 		}
 		break;
 	case PROP_MAILBOX:
 		{
-#line 94 "mn-mailbox-properties-dialog.gob"
+#line 95 "mn-mailbox-properties-dialog.gob"
 
       g_value_set_object(VAL, selfp->mailbox);
     
-#line 320 "mn-mailbox-properties-dialog.c"
+#line 327 "mn-mailbox-properties-dialog.c"
 		}
 		break;
 	default:
@@ -333,36 +340,36 @@ g_value_set_pointer (VAL, self->_priv->dialog_parent);
 
 
 
-#line 94 "mn-mailbox-properties-dialog.gob"
+#line 95 "mn-mailbox-properties-dialog.gob"
 MNMailbox * 
 mn_mailbox_properties_dialog_get_mailbox (MNMailboxPropertiesDialog * self)
-#line 340 "mn-mailbox-properties-dialog.c"
+#line 347 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_mailbox"
 {
 #line 67 "mn-mailbox-properties-dialog.gob"
 		MNMailbox* val; g_object_get (G_OBJECT (self), "mailbox", &val, NULL); return val;
 }}
-#line 347 "mn-mailbox-properties-dialog.c"
+#line 354 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
 #line 72 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_set_mailbox (MNMailboxPropertiesDialog * self, MNMailbox * val)
-#line 353 "mn-mailbox-properties-dialog.c"
+#line 360 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::set_mailbox"
 {
 #line 67 "mn-mailbox-properties-dialog.gob"
 		g_object_set (G_OBJECT (self), "mailbox", val, NULL);
 }}
-#line 360 "mn-mailbox-properties-dialog.c"
+#line 367 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 115 "mn-mailbox-properties-dialog.gob"
+#line 128 "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 366 "mn-mailbox-properties-dialog.c"
+#line 373 "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): \
@@ -370,7 +377,7 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::constructor"
 {
-#line 117 "mn-mailbox-properties-dialog.gob"
+#line 130 "mn-mailbox-properties-dialog.gob"
 	
     GObject *object;
     Self *self;
@@ -381,7 +388,7 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
     self = SELF(object);
 
     mn_container_create_interface(GTK_CONTAINER(self),
-				  MN_INTERFACE_FILE("mailbox-properties-dialog.glade"),
+				  UIDIR G_DIR_SEPARATOR_S "mailbox-properties-dialog.glade",
 				  "vbox",
 				  "mn_mailbox_properties_dialog_",
 				  "mailbox_type_label", &selfp->mailbox_type_label,
@@ -389,6 +396,13 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 				  "mailbox_name_label", &selfp->mailbox_name_label,
 				  "mailbox_name_entry", &selfp->mailbox_name_entry,
 				  "mailbox_name_default_button", &selfp->mailbox_name_default_button,
+				  "delay_label", &selfp->delay_label,
+				  "delay_hbox", &selfp->delay_hbox,
+				  "minutes_spin", &selfp->minutes_spin,
+				  "minutes_label", &selfp->minutes_label,
+				  "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);
@@ -398,6 +412,12 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
     if (selfp->dialog_parent)
       gtk_window_set_transient_for(GTK_WINDOW(self), selfp->dialog_parent);
 
+    selfp->entries = mn_g_slist_append_elements(selfp->entries,
+						selfp->mailbox_name_entry,
+						selfp->minutes_spin,
+						selfp->seconds_spin,
+						NULL);
+
     /* finish the type combo box */
 
     selfp->store = gtk_list_store_new(N_COLUMNS,
@@ -406,19 +426,19 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 				      G_TYPE_STRING);
 
     self_add_type(self, MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES);
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     self_add_type(self, MN_TYPE_SYSTEM_VFS_MAILBOX_PROPERTIES);
 #endif
-#ifdef WITH_POP3
+#if WITH_POP3
     self_add_type(self, MN_TYPE_POP3_MAILBOX_PROPERTIES);
 #endif
-#ifdef WITH_IMAP
+#if WITH_IMAP
     self_add_type(self, MN_TYPE_IMAP_MAILBOX_PROPERTIES);
 #endif
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
     self_add_type(self, MN_TYPE_GMAIL_MAILBOX_PROPERTIES);
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
     self_add_type(self, MN_TYPE_EVOLUTION_MAILBOX_PROPERTIES);
 #endif
 
@@ -446,7 +466,7 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 	selfp->apply_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_APPLY, GTK_RESPONSE_APPLY);
 	gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
 	selfp->accept_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_OK, GTK_RESPONSE_OK);
-	
+
 	properties = self_get_properties_by_type(self, MN_MAILBOX_GET_CLASS(selfp->mailbox)->type);
       }
     else
@@ -459,6 +479,7 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 
 	properties = self_get_properties_by_g_type(self, selected_type);
 
+	/* translators: header capitalization */
 	gtk_window_set_title(GTK_WINDOW(self), _("Add a Mailbox"));
       }
 
@@ -469,6 +490,11 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 	mn_mailbox_properties_set_mailbox(properties, selfp->mailbox);
 	if (selfp->mailbox->name)
 	  gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_name_entry), selfp->mailbox->name);
+	if (selfp->mailbox->check_delay != -1)
+	  {
+	    gtk_spin_button_set_value(GTK_SPIN_BUTTON(selfp->minutes_spin), selfp->mailbox->check_delay / 60);
+	    gtk_spin_button_set_value(GTK_SPIN_BUTTON(selfp->seconds_spin), selfp->mailbox->check_delay % 60);
+	  }
       }
 
     g_object_unref(properties);
@@ -477,25 +503,25 @@ ___3_mn_mailbox_properties_dialog_constructor (GType type G_GNUC_UNUSED, unsigne
 
     return object;
   }}
-#line 481 "mn-mailbox-properties-dialog.c"
+#line 507 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 224 "mn-mailbox-properties-dialog.gob"
+#line 256 "mn-mailbox-properties-dialog.gob"
 static void 
 mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog * self, GType type)
-#line 488 "mn-mailbox-properties-dialog.c"
+#line 514 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::add_type"
-#line 224 "mn-mailbox-properties-dialog.gob"
+#line 256 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 224 "mn-mailbox-properties-dialog.gob"
+#line 256 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 224 "mn-mailbox-properties-dialog.gob"
+#line 256 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (type != 0);
-#line 497 "mn-mailbox-properties-dialog.c"
+#line 523 "mn-mailbox-properties-dialog.c"
 {
-#line 226 "mn-mailbox-properties-dialog.gob"
+#line 258 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
     MNMailboxPropertiesClass *p_class;
@@ -519,6 +545,7 @@ mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog * self, GType t
     g_object_connect(properties,
 		     "swapped-signal::notify::complete", self_update_complete, self,
 		     "swapped-signal::notify::default-name", self_update_default_name, self,
+		     "swapped-signal::notify::default-check-delay", self_update_default_check_delay, self,
 		     NULL);
 
     MN_LIST_FOREACH(l, properties->entries)
@@ -526,26 +553,26 @@ mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog * self, GType t
 
     g_object_unref(properties);	/* now it belongs to the store */
   }}
-#line 530 "mn-mailbox-properties-dialog.c"
+#line 557 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 257 "mn-mailbox-properties-dialog.gob"
+#line 290 "mn-mailbox-properties-dialog.gob"
 static void 
 mn_mailbox_properties_dialog_set_active_properties (MNMailboxPropertiesDialog * self, MNMailboxProperties * properties)
-#line 536 "mn-mailbox-properties-dialog.c"
+#line 563 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::set_active_properties"
-#line 257 "mn-mailbox-properties-dialog.gob"
+#line 290 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 257 "mn-mailbox-properties-dialog.gob"
+#line 290 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 257 "mn-mailbox-properties-dialog.gob"
+#line 290 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (properties != NULL);
-#line 257 "mn-mailbox-properties-dialog.gob"
+#line 290 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (properties));
-#line 547 "mn-mailbox-properties-dialog.c"
+#line 574 "mn-mailbox-properties-dialog.c"
 {
-#line 260 "mn-mailbox-properties-dialog.gob"
+#line 293 "mn-mailbox-properties-dialog.gob"
 	
     gboolean valid;
     GtkTreeIter iter;
@@ -567,22 +594,22 @@ mn_mailbox_properties_dialog_set_active_properties (MNMailboxPropertiesDialog * 
 	valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(selfp->store), &iter);
       }
   }}
-#line 571 "mn-mailbox-properties-dialog.c"
+#line 598 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 282 "mn-mailbox-properties-dialog.gob"
+#line 315 "mn-mailbox-properties-dialog.gob"
 static MNMailboxProperties * 
 mn_mailbox_properties_dialog_get_active_properties (MNMailboxPropertiesDialog * self)
-#line 577 "mn-mailbox-properties-dialog.c"
+#line 604 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_active_properties"
-#line 282 "mn-mailbox-properties-dialog.gob"
+#line 315 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxProperties * )0);
-#line 282 "mn-mailbox-properties-dialog.gob"
+#line 315 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailboxProperties * )0);
-#line 584 "mn-mailbox-properties-dialog.c"
+#line 611 "mn-mailbox-properties-dialog.c"
 {
-#line 284 "mn-mailbox-properties-dialog.gob"
+#line 317 "mn-mailbox-properties-dialog.gob"
 	
     GtkTreeIter iter;
     MNMailboxProperties *properties = NULL;
@@ -592,24 +619,24 @@ mn_mailbox_properties_dialog_get_active_properties (MNMailboxPropertiesDialog * 
 
     return properties;
   }}
-#line 596 "mn-mailbox-properties-dialog.c"
+#line 623 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 294 "mn-mailbox-properties-dialog.gob"
+#line 327 "mn-mailbox-properties-dialog.gob"
 static MNMailboxProperties * 
 mn_mailbox_properties_dialog_get_properties_by_type (MNMailboxPropertiesDialog * self, const char * type)
-#line 602 "mn-mailbox-properties-dialog.c"
+#line 629 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_properties_by_type"
-#line 294 "mn-mailbox-properties-dialog.gob"
+#line 327 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxProperties * )0);
-#line 294 "mn-mailbox-properties-dialog.gob"
+#line 327 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailboxProperties * )0);
-#line 294 "mn-mailbox-properties-dialog.gob"
+#line 327 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (type != NULL, (MNMailboxProperties * )0);
-#line 611 "mn-mailbox-properties-dialog.c"
+#line 638 "mn-mailbox-properties-dialog.c"
 {
-#line 296 "mn-mailbox-properties-dialog.gob"
+#line 329 "mn-mailbox-properties-dialog.gob"
 	
     gboolean valid;
     GtkTreeIter iter;
@@ -621,7 +648,7 @@ mn_mailbox_properties_dialog_get_properties_by_type (MNMailboxPropertiesDialog *
 	MNMailboxPropertiesClass *class;
 
 	gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &properties, -1);
-	
+
 	class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties);
 
 	if (class->type && ! strcmp(class->type, type))
@@ -631,27 +658,27 @@ mn_mailbox_properties_dialog_get_properties_by_type (MNMailboxPropertiesDialog *
 
 	valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(selfp->store), &iter);
       }
-    
+
     return NULL;
   }}
-#line 638 "mn-mailbox-properties-dialog.c"
+#line 665 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 321 "mn-mailbox-properties-dialog.gob"
+#line 354 "mn-mailbox-properties-dialog.gob"
 static MNMailboxProperties * 
 mn_mailbox_properties_dialog_get_properties_by_g_type (MNMailboxPropertiesDialog * self, GType type)
-#line 644 "mn-mailbox-properties-dialog.c"
+#line 671 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_properties_by_g_type"
-#line 321 "mn-mailbox-properties-dialog.gob"
+#line 354 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxProperties * )0);
-#line 321 "mn-mailbox-properties-dialog.gob"
+#line 354 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailboxProperties * )0);
-#line 321 "mn-mailbox-properties-dialog.gob"
+#line 354 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (type != 0, (MNMailboxProperties * )0);
-#line 653 "mn-mailbox-properties-dialog.c"
+#line 680 "mn-mailbox-properties-dialog.c"
 {
-#line 323 "mn-mailbox-properties-dialog.gob"
+#line 356 "mn-mailbox-properties-dialog.gob"
 	
     gboolean valid;
     GtkTreeIter iter;
@@ -673,22 +700,22 @@ mn_mailbox_properties_dialog_get_properties_by_g_type (MNMailboxPropertiesDialog
 
     return NULL;
   }}
-#line 677 "mn-mailbox-properties-dialog.c"
+#line 704 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 345 "mn-mailbox-properties-dialog.gob"
+#line 378 "mn-mailbox-properties-dialog.gob"
 MNMailbox * 
 mn_mailbox_properties_dialog_get_current_mailbox (MNMailboxPropertiesDialog * self)
-#line 683 "mn-mailbox-properties-dialog.c"
+#line 710 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::get_current_mailbox"
-#line 345 "mn-mailbox-properties-dialog.gob"
+#line 378 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (self != NULL, (MNMailbox * )0);
-#line 345 "mn-mailbox-properties-dialog.gob"
+#line 378 "mn-mailbox-properties-dialog.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self), (MNMailbox * )0);
-#line 690 "mn-mailbox-properties-dialog.c"
+#line 717 "mn-mailbox-properties-dialog.c"
 {
-#line 347 "mn-mailbox-properties-dialog.gob"
+#line 380 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
     MNMailbox *mailbox;
@@ -697,32 +724,42 @@ mn_mailbox_properties_dialog_get_current_mailbox (MNMailboxPropertiesDialog * se
     mailbox = mn_mailbox_properties_get_mailbox(properties);
     g_object_unref(properties);
 
-    if (selfp->custom_name)
-      g_object_set(G_OBJECT(mailbox), "name", gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_name_entry)), NULL);
+    if (selfp->has_custom_name)
+      g_object_set(G_OBJECT(mailbox), MN_MAILBOX_PROP_NAME((char *) gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_name_entry))), NULL);
+    if (selfp->has_custom_check_delay)
+      {
+	int minutes;
+	int seconds;
+
+	minutes = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(selfp->minutes_spin));
+	seconds = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(selfp->seconds_spin));
+
+	g_object_set(G_OBJECT(mailbox), MN_MAILBOX_PROP_CHECK_DELAY(minutes * 60 + seconds), NULL);
+      }
 
     return mailbox;
   }}
-#line 706 "mn-mailbox-properties-dialog.c"
+#line 743 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 361 "mn-mailbox-properties-dialog.gob"
+#line 404 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_apply (MNMailboxPropertiesDialog * self)
-#line 712 "mn-mailbox-properties-dialog.c"
+#line 749 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::apply"
-#line 361 "mn-mailbox-properties-dialog.gob"
+#line 404 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 361 "mn-mailbox-properties-dialog.gob"
+#line 404 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 719 "mn-mailbox-properties-dialog.c"
+#line 756 "mn-mailbox-properties-dialog.c"
 {
-#line 363 "mn-mailbox-properties-dialog.gob"
+#line 406 "mn-mailbox-properties-dialog.gob"
 	
     MNMailbox *new_mailbox;
 
     new_mailbox = self_get_current_mailbox(self);
-    g_return_if_fail(MN_IS_MAILBOX(new_mailbox));
+    g_assert(MN_IS_MAILBOX(new_mailbox));
 
     mn_mailbox_seal(new_mailbox);
 
@@ -732,22 +769,22 @@ mn_mailbox_properties_dialog_apply (MNMailboxPropertiesDialog * self)
     self_set_mailbox(self, new_mailbox);
     g_object_unref(new_mailbox);
   }}
-#line 736 "mn-mailbox-properties-dialog.c"
+#line 773 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 378 "mn-mailbox-properties-dialog.gob"
+#line 421 "mn-mailbox-properties-dialog.gob"
 static void 
 mn_mailbox_properties_dialog_update_complete (MNMailboxPropertiesDialog * self)
-#line 742 "mn-mailbox-properties-dialog.c"
+#line 779 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_complete"
-#line 378 "mn-mailbox-properties-dialog.gob"
+#line 421 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 378 "mn-mailbox-properties-dialog.gob"
+#line 421 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 749 "mn-mailbox-properties-dialog.c"
+#line 786 "mn-mailbox-properties-dialog.c"
 {
-#line 380 "mn-mailbox-properties-dialog.gob"
+#line 423 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
 
@@ -755,33 +792,40 @@ mn_mailbox_properties_dialog_update_complete (MNMailboxPropertiesDialog * self)
     if (properties)
       {
 	gboolean complete;
+	gboolean check_delay_sensitive;
 
-	g_object_get(G_OBJECT(properties), "complete", &complete, NULL);
+	g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete), NULL);
+	check_delay_sensitive = complete || ! MN_MAILBOX_PROPERTIES_GET_CLASS(properties)->no_check_delay_unless_complete;
 	g_object_unref(properties);
 
 	gtk_widget_set_sensitive(selfp->mailbox_name_entry, complete);
-	gtk_widget_set_sensitive(selfp->mailbox_name_default_button, complete && selfp->custom_name);
+	gtk_widget_set_sensitive(selfp->mailbox_name_default_button, complete && selfp->has_custom_name);
+	gtk_widget_set_sensitive(selfp->minutes_spin, check_delay_sensitive);
+	gtk_widget_set_sensitive(selfp->minutes_label, check_delay_sensitive);
+	gtk_widget_set_sensitive(selfp->seconds_spin, check_delay_sensitive);
+	gtk_widget_set_sensitive(selfp->seconds_label, check_delay_sensitive);
+	gtk_widget_set_sensitive(selfp->delay_default_button, check_delay_sensitive && selfp->has_custom_check_delay);
 	if (selfp->apply_button)
 	  gtk_widget_set_sensitive(selfp->apply_button, complete);
 	gtk_widget_set_sensitive(selfp->accept_button, complete);
       }
   }}
-#line 770 "mn-mailbox-properties-dialog.c"
+#line 814 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 399 "mn-mailbox-properties-dialog.gob"
+#line 449 "mn-mailbox-properties-dialog.gob"
 static void 
 mn_mailbox_properties_dialog_update_default_name (MNMailboxPropertiesDialog * self)
-#line 776 "mn-mailbox-properties-dialog.c"
+#line 820 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_default_name"
-#line 399 "mn-mailbox-properties-dialog.gob"
+#line 449 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 399 "mn-mailbox-properties-dialog.gob"
+#line 449 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 783 "mn-mailbox-properties-dialog.c"
+#line 827 "mn-mailbox-properties-dialog.c"
 {
-#line 401 "mn-mailbox-properties-dialog.gob"
+#line 451 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
 
@@ -794,49 +838,93 @@ mn_mailbox_properties_dialog_update_default_name (MNMailboxPropertiesDialog * se
 	g_free(selfp->default_name);
 
 	g_object_get(G_OBJECT(properties),
-		     "complete", &complete,
-		     "default-name", &selfp->default_name,
+		     MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete),
+		     MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(&selfp->default_name),
 		     NULL);
 	g_object_unref(properties);
 
 	default_name = complete ? selfp->default_name : NULL;
-      
-	gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_name_entry), default_name ? default_name : "");
-	gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->custom_name = FALSE);
+	if (! default_name)
+	  default_name = "";
+
+	gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_name_entry), default_name);
+	gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->has_custom_name = FALSE);
       }
   }}
-#line 809 "mn-mailbox-properties-dialog.c"
+#line 855 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 425 "mn-mailbox-properties-dialog.gob"
+#line 477 "mn-mailbox-properties-dialog.gob"
+static void 
+mn_mailbox_properties_dialog_update_default_check_delay (MNMailboxPropertiesDialog * self)
+#line 861 "mn-mailbox-properties-dialog.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::update_default_check_delay"
+#line 477 "mn-mailbox-properties-dialog.gob"
+	g_return_if_fail (self != NULL);
+#line 477 "mn-mailbox-properties-dialog.gob"
+	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
+#line 868 "mn-mailbox-properties-dialog.c"
+{
+#line 479 "mn-mailbox-properties-dialog.gob"
+	
+    MNMailboxProperties *properties;
+
+    properties = self_get_active_properties(self);
+    if (properties)
+      {
+	gboolean complete;
+	gboolean has_check_delay;
+	int default_check_delay;
+
+	g_object_get(G_OBJECT(properties),
+		     MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete),
+		     MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(&selfp->default_check_delay),
+		     NULL);
+	has_check_delay = complete || ! MN_MAILBOX_PROPERTIES_GET_CLASS(properties)->no_check_delay_unless_complete;
+	g_object_unref(properties);
+
+	default_check_delay = has_check_delay ? selfp->default_check_delay : -1;
+	if (default_check_delay == -1)
+	  default_check_delay = 0;
+
+	gtk_spin_button_set_value(GTK_SPIN_BUTTON(selfp->minutes_spin), default_check_delay / 60);
+	gtk_spin_button_set_value(GTK_SPIN_BUTTON(selfp->seconds_spin), default_check_delay % 60);
+	gtk_widget_set_sensitive(selfp->delay_default_button, selfp->has_custom_check_delay = FALSE);
+      }
+  }}
+#line 897 "mn-mailbox-properties-dialog.c"
+#undef __GOB_FUNCTION__
+
+#line 506 "mn-mailbox-properties-dialog.gob"
 GtkWidget * 
 mn_mailbox_properties_dialog_new (GtkWindow * parent, MNMailbox * mailbox)
-#line 815 "mn-mailbox-properties-dialog.c"
+#line 903 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::new"
 {
-#line 427 "mn-mailbox-properties-dialog.gob"
+#line 508 "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 825 "mn-mailbox-properties-dialog.c"
+#line 913 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 435 "mn-mailbox-properties-dialog.gob"
+#line 516 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_type_changed_h (MNMailboxPropertiesDialog * self, GtkComboBox * combobox)
-#line 831 "mn-mailbox-properties-dialog.c"
+#line 919 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::type_changed_h"
-#line 435 "mn-mailbox-properties-dialog.gob"
+#line 516 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 435 "mn-mailbox-properties-dialog.gob"
+#line 516 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 838 "mn-mailbox-properties-dialog.c"
+#line 926 "mn-mailbox-properties-dialog.c"
 {
-#line 437 "mn-mailbox-properties-dialog.gob"
+#line 518 "mn-mailbox-properties-dialog.gob"
 	
     MNMailboxProperties *properties;
     MNMailboxPropertiesClass *class;
@@ -847,18 +935,26 @@ mn_mailbox_properties_dialog_type_changed_h (MNMailboxPropertiesDialog * self, G
       {
 	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));
       }
-  
+
     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);
@@ -868,104 +964,153 @@ mn_mailbox_properties_dialog_type_changed_h (MNMailboxPropertiesDialog * self, G
 
     self_update_complete(self);
     self_update_default_name(self);
+    self_update_default_check_delay(self);
 
     g_object_unref(properties);
   }}
-#line 875 "mn-mailbox-properties-dialog.c"
+#line 972 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 472 "mn-mailbox-properties-dialog.gob"
+#line 562 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_name_changed_h (MNMailboxPropertiesDialog * self, GtkEditable * editable)
-#line 881 "mn-mailbox-properties-dialog.c"
+#line 978 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::name_changed_h"
-#line 472 "mn-mailbox-properties-dialog.gob"
+#line 562 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 472 "mn-mailbox-properties-dialog.gob"
+#line 562 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 888 "mn-mailbox-properties-dialog.c"
+#line 985 "mn-mailbox-properties-dialog.c"
 {
-#line 474 "mn-mailbox-properties-dialog.gob"
+#line 564 "mn-mailbox-properties-dialog.gob"
 	
     const char *name;
 
     name = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_name_entry));
-    selfp->custom_name = mn_utf8_strcmp(name, selfp->default_name ? selfp->default_name : "") != 0;
+    selfp->has_custom_name = mn_utf8_strcmp(name, selfp->default_name ? selfp->default_name : "") != 0;
 
-    gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->custom_name);
+    gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->has_custom_name);
   }}
-#line 899 "mn-mailbox-properties-dialog.c"
+#line 996 "mn-mailbox-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 483 "mn-mailbox-properties-dialog.gob"
+#line 573 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_name_default_button_clicked_h (MNMailboxPropertiesDialog * self, GtkButton * button)
-#line 905 "mn-mailbox-properties-dialog.c"
+#line 1002 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::name_default_button_clicked_h"
-#line 483 "mn-mailbox-properties-dialog.gob"
+#line 573 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 483 "mn-mailbox-properties-dialog.gob"
+#line 573 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 912 "mn-mailbox-properties-dialog.c"
+#line 1009 "mn-mailbox-properties-dialog.c"
 {
-#line 485 "mn-mailbox-properties-dialog.gob"
+#line 575 "mn-mailbox-properties-dialog.gob"
 	
     self_update_default_name(self);
   }}
-#line 918 "mn-mailbox-properties-dialog.c"
+#line 1015 "mn-mailbox-properties-dialog.c"
+#undef __GOB_FUNCTION__
+
+#line 579 "mn-mailbox-properties-dialog.gob"
+void 
+mn_mailbox_properties_dialog_delay_changed_h (MNMailboxPropertiesDialog * self, GtkEditable * editable)
+#line 1021 "mn-mailbox-properties-dialog.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::delay_changed_h"
+#line 579 "mn-mailbox-properties-dialog.gob"
+	g_return_if_fail (self != NULL);
+#line 579 "mn-mailbox-properties-dialog.gob"
+	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
+#line 1028 "mn-mailbox-properties-dialog.c"
+{
+#line 581 "mn-mailbox-properties-dialog.gob"
+	
+    int minutes;
+    int seconds;
+
+    minutes = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(selfp->minutes_spin));
+    seconds = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(selfp->seconds_spin));
+
+    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"
 #undef __GOB_FUNCTION__
 
-#line 489 "mn-mailbox-properties-dialog.gob"
+#line 592 "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"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::delay_default_button_clicked_h"
+#line 592 "mn-mailbox-properties-dialog.gob"
+	g_return_if_fail (self != NULL);
+#line 592 "mn-mailbox-properties-dialog.gob"
+	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
+#line 1054 "mn-mailbox-properties-dialog.c"
+{
+#line 594 "mn-mailbox-properties-dialog.gob"
+	
+    self_update_default_check_delay(self);
+  }}
+#line 1060 "mn-mailbox-properties-dialog.c"
+#undef __GOB_FUNCTION__
+
+#line 598 "mn-mailbox-properties-dialog.gob"
 void 
 mn_mailbox_properties_dialog_entry_activate_h (MNMailboxPropertiesDialog * self, GtkEntry * entry)
-#line 924 "mn-mailbox-properties-dialog.c"
+#line 1066 "mn-mailbox-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties:Dialog::entry_activate_h"
-#line 489 "mn-mailbox-properties-dialog.gob"
+#line 598 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 489 "mn-mailbox-properties-dialog.gob"
+#line 598 "mn-mailbox-properties-dialog.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (self));
-#line 931 "mn-mailbox-properties-dialog.c"
+#line 1073 "mn-mailbox-properties-dialog.c"
 {
-#line 491 "mn-mailbox-properties-dialog.gob"
+#line 600 "mn-mailbox-properties-dialog.gob"
 	
     if (GTK_WIDGET_IS_SENSITIVE(GTK_WINDOW(self)->default_widget))
       gtk_window_activate_default(GTK_WINDOW(self));
     else
       {
 	MNMailboxProperties *properties;
-	GtkWidget *next = GTK_WIDGET(entry);
+	GtkWidget *next = NULL;
+	GSList *entries;
+	GSList *elem;
 
 	properties = self_get_active_properties(self);
-	g_return_if_fail(properties != NULL);
+	g_assert(properties != NULL);
+
+	entries = g_slist_concat(g_slist_copy(selfp->entries), g_slist_copy(properties->entries));
+
+	elem = g_slist_find(entries, entry);
+	g_assert(elem != NULL);
 
 	do
 	  {
-	    GSList *elem;
+	    elem = elem->next;
+	    if (! elem)
+	      elem = entries;
 
-	    if (next == selfp->mailbox_name_entry)
-	      elem = properties->entries;
-	    else
-	      {
-		elem = g_slist_find(properties->entries, next);
-		g_return_if_fail(elem != NULL);
+	    if (elem->data == entry)
+	      break;
 
-		elem = elem->next;
-	      }
-
-	    next = elem ? elem->data : selfp->mailbox_name_entry;
-	    if (next == GTK_WIDGET(entry))
-	      next = NULL;
+	    if (GTK_WIDGET_MAPPED(elem->data)
+		&& GTK_WIDGET_VISIBLE(elem->data)
+		&& GTK_WIDGET_SENSITIVE(elem->data))
+	      next = elem->data;
 	  }
-	while (next && ! (GTK_WIDGET_MAPPED(next)
-			  && GTK_WIDGET_VISIBLE(next)
-			  && GTK_WIDGET_SENSITIVE(next)));
+	while (! next);
+
+	g_slist_free(entries);
 
 	if (next)
 	  gtk_widget_grab_focus(next);
       }
   }}
-#line 971 "mn-mailbox-properties-dialog.c"
+#line 1116 "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,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-dialog.h"
@@ -28,19 +28,19 @@ requires 2.0.12
 #include <glib/gi18n.h>
 #include "mn-mailbox-properties.h"
 #include "mn-autodetect-mailbox-properties.h"
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-system-vfs-mailbox-properties.h"
 #endif
-#ifdef WITH_POP3
+#if WITH_POP3
 #include "mn-pop3-mailbox-properties.h"
 #endif
-#ifdef WITH_IMAP
+#if WITH_IMAP
 #include "mn-imap-mailbox-properties.h"
 #endif
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
 #include "mn-gmail-mailbox-properties.h"
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
 #include "mn-evolution-mailbox-properties.h"
 #endif
 #include "mn-util.h"
@@ -85,6 +85,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 
 	  selfp->mailbox = MN_MAILBOX(object);
 
+	  /* translators: header capitalization */
 	  title = g_strdup_printf(_("%s Properties"), selfp->mailbox->runtime_name);
 	  gtk_window_set_title(GTK_WINDOW(self), title);
 	  g_free(title);
@@ -100,6 +101,13 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
   private GtkWidget *mailbox_name_label;
   private GtkWidget *mailbox_name_entry;
   private GtkWidget *mailbox_name_default_button;
+  private GtkWidget *delay_label;
+  private GtkWidget *delay_hbox;
+  private GtkWidget *minutes_spin;
+  private GtkWidget *minutes_label;
+  private GtkWidget *seconds_spin;
+  private GtkWidget *seconds_label;
+  private GtkWidget *delay_default_button;
 
   private GtkWidget *type_section_label;
   private GtkWidget *properties_event_box;
@@ -110,7 +118,12 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
   private GtkListStore *store unrefwith g_object_unref;
 
   private char *default_name destroywith g_free;
-  private gboolean custom_name;
+  private gboolean has_custom_name;
+
+  private int default_check_delay;
+  private gboolean has_custom_check_delay;
+
+  private GSList *entries destroywith g_slist_free;
 
   override (G:Object) GObject *
     constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
@@ -124,7 +137,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
     self = SELF(object);
 
     mn_container_create_interface(GTK_CONTAINER(self),
-				  MN_INTERFACE_FILE("mailbox-properties-dialog.glade"),
+				  UIDIR G_DIR_SEPARATOR_S "mailbox-properties-dialog.glade",
 				  "vbox",
 				  "mn_mailbox_properties_dialog_",
 				  "mailbox_type_label", &selfp->mailbox_type_label,
@@ -132,6 +145,13 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 				  "mailbox_name_label", &selfp->mailbox_name_label,
 				  "mailbox_name_entry", &selfp->mailbox_name_entry,
 				  "mailbox_name_default_button", &selfp->mailbox_name_default_button,
+				  "delay_label", &selfp->delay_label,
+				  "delay_hbox", &selfp->delay_hbox,
+				  "minutes_spin", &selfp->minutes_spin,
+				  "minutes_label", &selfp->minutes_label,
+				  "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);
@@ -141,6 +161,12 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
     if (selfp->dialog_parent)
       gtk_window_set_transient_for(GTK_WINDOW(self), selfp->dialog_parent);
 
+    selfp->entries = mn_g_slist_append_elements(selfp->entries,
+						selfp->mailbox_name_entry,
+						selfp->minutes_spin,
+						selfp->seconds_spin,
+						NULL);
+
     /* finish the type combo box */
 
     selfp->store = gtk_list_store_new(N_COLUMNS,
@@ -149,19 +175,19 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 				      G_TYPE_STRING);
 
     self_add_type(self, MN_TYPE_AUTODETECT_MAILBOX_PROPERTIES);
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     self_add_type(self, MN_TYPE_SYSTEM_VFS_MAILBOX_PROPERTIES);
 #endif
-#ifdef WITH_POP3
+#if WITH_POP3
     self_add_type(self, MN_TYPE_POP3_MAILBOX_PROPERTIES);
 #endif
-#ifdef WITH_IMAP
+#if WITH_IMAP
     self_add_type(self, MN_TYPE_IMAP_MAILBOX_PROPERTIES);
 #endif
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
     self_add_type(self, MN_TYPE_GMAIL_MAILBOX_PROPERTIES);
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
     self_add_type(self, MN_TYPE_EVOLUTION_MAILBOX_PROPERTIES);
 #endif
 
@@ -189,7 +215,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 	selfp->apply_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_APPLY, GTK_RESPONSE_APPLY);
 	gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL);
 	selfp->accept_button = gtk_dialog_add_button(GTK_DIALOG(self), GTK_STOCK_OK, GTK_RESPONSE_OK);
-	
+
 	properties = self_get_properties_by_type(self, MN_MAILBOX_GET_CLASS(selfp->mailbox)->type);
       }
     else
@@ -202,6 +228,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 
 	properties = self_get_properties_by_g_type(self, selected_type);
 
+	/* translators: header capitalization */
 	gtk_window_set_title(GTK_WINDOW(self), _("Add a Mailbox"));
       }
 
@@ -212,6 +239,11 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 	mn_mailbox_properties_set_mailbox(properties, selfp->mailbox);
 	if (selfp->mailbox->name)
 	  gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_name_entry), selfp->mailbox->name);
+	if (selfp->mailbox->check_delay != -1)
+	  {
+	    gtk_spin_button_set_value(GTK_SPIN_BUTTON(selfp->minutes_spin), selfp->mailbox->check_delay / 60);
+	    gtk_spin_button_set_value(GTK_SPIN_BUTTON(selfp->seconds_spin), selfp->mailbox->check_delay % 60);
+	  }
       }
 
     g_object_unref(properties);
@@ -246,6 +278,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
     g_object_connect(properties,
 		     "swapped-signal::notify::complete", self_update_complete, self,
 		     "swapped-signal::notify::default-name", self_update_default_name, self,
+		     "swapped-signal::notify::default-check-delay", self_update_default_check_delay, self,
 		     NULL);
 
     MN_LIST_FOREACH(l, properties->entries)
@@ -304,7 +337,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 	MNMailboxPropertiesClass *class;
 
 	gtk_tree_model_get(GTK_TREE_MODEL(selfp->store), &iter, COLUMN_PROPERTIES, &properties, -1);
-	
+
 	class = MN_MAILBOX_PROPERTIES_GET_CLASS(properties);
 
 	if (class->type && ! strcmp(class->type, type))
@@ -314,7 +347,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 
 	valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(selfp->store), &iter);
       }
-    
+
     return NULL;
   }
 
@@ -352,8 +385,18 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
     mailbox = mn_mailbox_properties_get_mailbox(properties);
     g_object_unref(properties);
 
-    if (selfp->custom_name)
-      g_object_set(G_OBJECT(mailbox), "name", gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_name_entry)), NULL);
+    if (selfp->has_custom_name)
+      g_object_set(G_OBJECT(mailbox), MN_MAILBOX_PROP_NAME((char *) gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_name_entry))), NULL);
+    if (selfp->has_custom_check_delay)
+      {
+	int minutes;
+	int seconds;
+
+	minutes = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(selfp->minutes_spin));
+	seconds = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(selfp->seconds_spin));
+
+	g_object_set(G_OBJECT(mailbox), MN_MAILBOX_PROP_CHECK_DELAY(minutes * 60 + seconds), NULL);
+      }
 
     return mailbox;
   }
@@ -364,7 +407,7 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
     MNMailbox *new_mailbox;
 
     new_mailbox = self_get_current_mailbox(self);
-    g_return_if_fail(MN_IS_MAILBOX(new_mailbox));
+    g_assert(MN_IS_MAILBOX(new_mailbox));
 
     mn_mailbox_seal(new_mailbox);
 
@@ -384,12 +427,19 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
     if (properties)
       {
 	gboolean complete;
+	gboolean check_delay_sensitive;
 
-	g_object_get(G_OBJECT(properties), "complete", &complete, NULL);
+	g_object_get(G_OBJECT(properties), MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete), NULL);
+	check_delay_sensitive = complete || ! MN_MAILBOX_PROPERTIES_GET_CLASS(properties)->no_check_delay_unless_complete;
 	g_object_unref(properties);
 
 	gtk_widget_set_sensitive(selfp->mailbox_name_entry, complete);
-	gtk_widget_set_sensitive(selfp->mailbox_name_default_button, complete && selfp->custom_name);
+	gtk_widget_set_sensitive(selfp->mailbox_name_default_button, complete && selfp->has_custom_name);
+	gtk_widget_set_sensitive(selfp->minutes_spin, check_delay_sensitive);
+	gtk_widget_set_sensitive(selfp->minutes_label, check_delay_sensitive);
+	gtk_widget_set_sensitive(selfp->seconds_spin, check_delay_sensitive);
+	gtk_widget_set_sensitive(selfp->seconds_label, check_delay_sensitive);
+	gtk_widget_set_sensitive(selfp->delay_default_button, check_delay_sensitive && selfp->has_custom_check_delay);
 	if (selfp->apply_button)
 	  gtk_widget_set_sensitive(selfp->apply_button, complete);
 	gtk_widget_set_sensitive(selfp->accept_button, complete);
@@ -410,18 +460,49 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 	g_free(selfp->default_name);
 
 	g_object_get(G_OBJECT(properties),
-		     "complete", &complete,
-		     "default-name", &selfp->default_name,
+		     MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete),
+		     MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_NAME(&selfp->default_name),
 		     NULL);
 	g_object_unref(properties);
 
 	default_name = complete ? selfp->default_name : NULL;
-      
-	gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_name_entry), default_name ? default_name : "");
-	gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->custom_name = FALSE);
+	if (! default_name)
+	  default_name = "";
+
+	gtk_entry_set_text(GTK_ENTRY(selfp->mailbox_name_entry), default_name);
+	gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->has_custom_name = FALSE);
+      }
+  }
+
+  private void
+    update_default_check_delay (self)
+  {
+    MNMailboxProperties *properties;
+
+    properties = self_get_active_properties(self);
+    if (properties)
+      {
+	gboolean complete;
+	gboolean has_check_delay;
+	int default_check_delay;
+
+	g_object_get(G_OBJECT(properties),
+		     MN_MAILBOX_PROPERTIES_GET_PROP_COMPLETE(&complete),
+		     MN_MAILBOX_PROPERTIES_GET_PROP_DEFAULT_CHECK_DELAY(&selfp->default_check_delay),
+		     NULL);
+	has_check_delay = complete || ! MN_MAILBOX_PROPERTIES_GET_CLASS(properties)->no_check_delay_unless_complete;
+	g_object_unref(properties);
+
+	default_check_delay = has_check_delay ? selfp->default_check_delay : -1;
+	if (default_check_delay == -1)
+	  default_check_delay = 0;
+
+	gtk_spin_button_set_value(GTK_SPIN_BUTTON(selfp->minutes_spin), default_check_delay / 60);
+	gtk_spin_button_set_value(GTK_SPIN_BUTTON(selfp->seconds_spin), default_check_delay % 60);
+	gtk_widget_set_sensitive(selfp->delay_default_button, selfp->has_custom_check_delay = FALSE);
       }
   }
-  
+
   public GtkWidget *
     new (GtkWindow *parent, MNMailbox *mailbox)
   {
@@ -444,18 +525,26 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
       {
 	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));
       }
-  
+
     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);
@@ -465,19 +554,20 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
 
     self_update_complete(self);
     self_update_default_name(self);
+    self_update_default_check_delay(self);
 
     g_object_unref(properties);
   }
-  
+
   protected void
     name_changed_h (self, GtkEditable *editable)
   {
     const char *name;
 
     name = gtk_entry_get_text(GTK_ENTRY(selfp->mailbox_name_entry));
-    selfp->custom_name = mn_utf8_strcmp(name, selfp->default_name ? selfp->default_name : "") != 0;
+    selfp->has_custom_name = mn_utf8_strcmp(name, selfp->default_name ? selfp->default_name : "") != 0;
 
-    gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->custom_name);
+    gtk_widget_set_sensitive(selfp->mailbox_name_default_button, selfp->has_custom_name);
   }
 
   protected void
@@ -485,7 +575,26 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
   {
     self_update_default_name(self);
   }
-  
+
+  protected void
+    delay_changed_h (self, GtkEditable *editable)
+  {
+    int minutes;
+    int seconds;
+
+    minutes = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(selfp->minutes_spin));
+    seconds = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(selfp->seconds_spin));
+
+    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);
+  }
+
+  protected void
+    delay_default_button_clicked_h (self, GtkButton *button)
+  {
+    self_update_default_check_delay(self);
+  }
+
   protected void
     entry_activate_h (self, GtkEntry *entry)
   {
@@ -494,32 +603,35 @@ class MN:Mailbox:Properties:Dialog from MN:Dialog
     else
       {
 	MNMailboxProperties *properties;
-	GtkWidget *next = GTK_WIDGET(entry);
+	GtkWidget *next = NULL;
+	GSList *entries;
+	GSList *elem;
 
 	properties = self_get_active_properties(self);
-	g_return_if_fail(properties != NULL);
+	g_assert(properties != NULL);
+
+	entries = g_slist_concat(g_slist_copy(selfp->entries), g_slist_copy(properties->entries));
+
+	elem = g_slist_find(entries, entry);
+	g_assert(elem != NULL);
 
 	do
 	  {
-	    GSList *elem;
-
-	    if (next == selfp->mailbox_name_entry)
-	      elem = properties->entries;
-	    else
-	      {
-		elem = g_slist_find(properties->entries, next);
-		g_return_if_fail(elem != NULL);
+	    elem = elem->next;
+	    if (! elem)
+	      elem = entries;
 
-		elem = elem->next;
-	      }
+	    if (elem->data == entry)
+	      break;
 
-	    next = elem ? elem->data : selfp->mailbox_name_entry;
-	    if (next == GTK_WIDGET(entry))
-	      next = NULL;
+	    if (GTK_WIDGET_MAPPED(elem->data)
+		&& GTK_WIDGET_VISIBLE(elem->data)
+		&& GTK_WIDGET_SENSITIVE(elem->data))
+	      next = elem->data;
 	  }
-	while (next && ! (GTK_WIDGET_MAPPED(next)
-			  && GTK_WIDGET_VISIBLE(next)
-			  && GTK_WIDGET_SENSITIVE(next)));
+	while (! next);
+
+	g_slist_free(entries);
 
 	if (next)
 	  gtk_widget_grab_focus(next);
diff --git a/src/mn-mailbox-properties-dialog.gob.stamp b/src/mn-mailbox-properties-dialog.gob.stamp
diff --git a/src/mn-mailbox-properties-dialog.h b/src/mn-mailbox-properties-dialog.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-mailbox-properties-private.h b/src/mn-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -11,8 +11,7 @@ extern "C" {
 
 void 	mn_mailbox_properties_notify_complete	(MNMailboxProperties * self);
 void 	mn_mailbox_properties_notify_default_name	(MNMailboxProperties * self);
-void 	mn_mailbox_properties_add_entry	(MNMailboxProperties * self, GtkEntry * entry);
-void 	mn_mailbox_properties_add_entries	(MNMailboxProperties * self, GtkEntry * entry, ...);
+void 	mn_mailbox_properties_notify_default_check_delay	(MNMailboxProperties * self);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-mailbox-properties.c b/src/mn-mailbox-properties.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -44,7 +43,8 @@ static void mn_mailbox_properties_init (MNMailboxProperties * self) G_GNUC_UNUSE
 enum {
 	PROP_0,
 	PROP_COMPLETE,
-	PROP_DEFAULT_NAME
+	PROP_DEFAULT_NAME,
+	PROP_DEFAULT_CHECK_DELAY
 };
 
 /* pointer to the class of our parent */
@@ -55,8 +55,7 @@ static GtkVBoxClass *parent_class = NULL;
 #define self_get_mailbox mn_mailbox_properties_get_mailbox
 #define self_notify_complete mn_mailbox_properties_notify_complete
 #define self_notify_default_name mn_mailbox_properties_notify_default_name
-#define self_add_entry mn_mailbox_properties_add_entry
-#define self_add_entries mn_mailbox_properties_add_entries
+#define self_notify_default_check_delay mn_mailbox_properties_notify_default_check_delay
 GType
 mn_mailbox_properties_get_type (void)
 {
@@ -76,7 +75,7 @@ mn_mailbox_properties_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (GTK_TYPE_VBOX, "MNMailboxProperties", &info, (GTypeFlags)0);
+		type = g_type_register_static (GTK_TYPE_VBOX, "MNMailboxProperties", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -107,12 +106,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 34 "mn-mailbox-properties.gob"
-	if(self->label_size_group) { g_object_unref ((gpointer) self->label_size_group); self->label_size_group = NULL; }
-#line 113 "mn-mailbox-properties.c"
 #line 35 "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"
+	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"
 	if(self->entry_button_size_group) { g_object_unref ((gpointer) self->entry_button_size_group); self->entry_button_size_group = NULL; }
-#line 116 "mn-mailbox-properties.c"
+#line 118 "mn-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -124,9 +126,9 @@ ___finalize(GObject *obj_self)
 	MNMailboxProperties *self G_GNUC_UNUSED = MN_MAILBOX_PROPERTIES (obj_self);
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 37 "mn-mailbox-properties.gob"
+#line 39 "mn-mailbox-properties.gob"
 	if(self->entries) { g_slist_free ((gpointer) self->entries); self->entries = NULL; }
-#line 130 "mn-mailbox-properties.c"
+#line 132 "mn-mailbox-properties.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -139,9 +141,9 @@ mn_mailbox_properties_class_init (MNMailboxPropertiesClass * c G_GNUC_UNUSED)
 	parent_class = g_type_class_ref (GTK_TYPE_VBOX);
 
 	c->set_mailbox = NULL;
-#line 47 "mn-mailbox-properties.gob"
+#line 65 "mn-mailbox-properties.gob"
 	c->get_mailbox = ___real_mn_mailbox_properties_get_mailbox;
-#line 145 "mn-mailbox-properties.c"
+#line 147 "mn-mailbox-properties.c"
 	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
@@ -166,27 +168,41 @@ mn_mailbox_properties_class_init (MNMailboxPropertiesClass * c G_GNUC_UNUSED)
 	g_object_class_install_property (g_object_class,
 		PROP_DEFAULT_NAME,
 		param_spec);
+	param_spec = g_param_spec_int
+		("default_check_delay" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 G_MININT /* minimum */,
+		 G_MAXINT /* maximum */,
+		 0 /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE));
+	g_object_class_install_property (g_object_class,
+		PROP_DEFAULT_CHECK_DELAY,
+		param_spec);
     }
 }
 #undef __GOB_FUNCTION__
-#line 53 "mn-mailbox-properties.gob"
+#line 71 "mn-mailbox-properties.gob"
 static void 
 mn_mailbox_properties_init (MNMailboxProperties * self G_GNUC_UNUSED)
-#line 176 "mn-mailbox-properties.c"
+#line 189 "mn-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::init"
-#line 34 "mn-mailbox-properties.gob"
-	self->label_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-#line 181 "mn-mailbox-properties.c"
 #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 184 "mn-mailbox-properties.c"
+#line 200 "mn-mailbox-properties.c"
  {
-#line 54 "mn-mailbox-properties.gob"
+#line 72 "mn-mailbox-properties.gob"
 
     gtk_box_set_spacing(GTK_BOX(self), 6);
   
-#line 190 "mn-mailbox-properties.c"
+#line 206 "mn-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -205,16 +221,34 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_COMPLETE:
 		{
-#line 40 "mn-mailbox-properties.gob"
+#line 42 "mn-mailbox-properties.gob"
  g_value_set_boolean(VAL, TRUE); 
-#line 211 "mn-mailbox-properties.c"
+#line 227 "mn-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_NAME:
 		{
-#line 42 "mn-mailbox-properties.gob"
+#line 45 "mn-mailbox-properties.gob"
  g_value_set_string(VAL, NULL); 
-#line 218 "mn-mailbox-properties.c"
+#line 234 "mn-mailbox-properties.c"
+		}
+		break;
+	case PROP_DEFAULT_CHECK_DELAY:
+		{
+#line 49 "mn-mailbox-properties.gob"
+
+      GType mailbox_type;
+      MNMailboxClass *class;
+
+      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);
+
+      g_value_set_int(VAL, class->default_check_delay);
+    
+#line 252 "mn-mailbox-properties.c"
 		}
 		break;
 	default:
@@ -230,34 +264,34 @@ ___object_get_property (GObject *object,
 #undef __GOB_FUNCTION__
 
 
-#line 44 "mn-mailbox-properties.gob"
+#line 62 "mn-mailbox-properties.gob"
 void 
 mn_mailbox_properties_set_mailbox (MNMailboxProperties * self, MNMailbox * mailbox)
-#line 237 "mn-mailbox-properties.c"
+#line 271 "mn-mailbox-properties.c"
 {
 	MNMailboxPropertiesClass *klass;
-#line 44 "mn-mailbox-properties.gob"
+#line 62 "mn-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 44 "mn-mailbox-properties.gob"
+#line 62 "mn-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
-#line 244 "mn-mailbox-properties.c"
+#line 278 "mn-mailbox-properties.c"
 	klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self);
 
 	if(klass->set_mailbox)
 		(*klass->set_mailbox)(self,mailbox);
 }
 
-#line 47 "mn-mailbox-properties.gob"
+#line 65 "mn-mailbox-properties.gob"
 MNMailbox * 
 mn_mailbox_properties_get_mailbox (MNMailboxProperties * self)
-#line 254 "mn-mailbox-properties.c"
+#line 288 "mn-mailbox-properties.c"
 {
 	MNMailboxPropertiesClass *klass;
-#line 47 "mn-mailbox-properties.gob"
+#line 65 "mn-mailbox-properties.gob"
 	g_return_val_if_fail (self != NULL, (MNMailbox * )0);
-#line 47 "mn-mailbox-properties.gob"
+#line 65 "mn-mailbox-properties.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (MNMailbox * )0);
-#line 261 "mn-mailbox-properties.c"
+#line 295 "mn-mailbox-properties.c"
 	klass = MN_MAILBOX_PROPERTIES_GET_CLASS(self);
 
 	if(klass->get_mailbox)
@@ -265,105 +299,74 @@ mn_mailbox_properties_get_mailbox (MNMailboxProperties * self)
 	else
 		return (MNMailbox * )(0);
 }
-#line 47 "mn-mailbox-properties.gob"
+#line 65 "mn-mailbox-properties.gob"
 static MNMailbox * 
 ___real_mn_mailbox_properties_get_mailbox (MNMailboxProperties * self G_GNUC_UNUSED)
-#line 272 "mn-mailbox-properties.c"
+#line 306 "mn-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::get_mailbox"
 {
-#line 49 "mn-mailbox-properties.gob"
+#line 67 "mn-mailbox-properties.gob"
 	
     return mn_mailbox_new(SELF_GET_CLASS(self)->type, NULL);
   }}
-#line 280 "mn-mailbox-properties.c"
+#line 314 "mn-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
 
-#line 58 "mn-mailbox-properties.gob"
+#line 76 "mn-mailbox-properties.gob"
 void 
 mn_mailbox_properties_notify_complete (MNMailboxProperties * self)
-#line 287 "mn-mailbox-properties.c"
+#line 321 "mn-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::notify_complete"
-#line 58 "mn-mailbox-properties.gob"
+#line 76 "mn-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 58 "mn-mailbox-properties.gob"
+#line 76 "mn-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
-#line 294 "mn-mailbox-properties.c"
+#line 328 "mn-mailbox-properties.c"
 {
-#line 60 "mn-mailbox-properties.gob"
+#line 78 "mn-mailbox-properties.gob"
 	
     g_object_notify(G_OBJECT(self), "complete");
   }}
-#line 300 "mn-mailbox-properties.c"
+#line 334 "mn-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 64 "mn-mailbox-properties.gob"
+#line 82 "mn-mailbox-properties.gob"
 void 
 mn_mailbox_properties_notify_default_name (MNMailboxProperties * self)
-#line 306 "mn-mailbox-properties.c"
+#line 340 "mn-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:Properties::notify_default_name"
-#line 64 "mn-mailbox-properties.gob"
+#line 82 "mn-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 64 "mn-mailbox-properties.gob"
+#line 82 "mn-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
-#line 313 "mn-mailbox-properties.c"
+#line 347 "mn-mailbox-properties.c"
 {
-#line 66 "mn-mailbox-properties.gob"
+#line 84 "mn-mailbox-properties.gob"
 	
     g_object_notify(G_OBJECT(self), "default-name");
   }}
-#line 319 "mn-mailbox-properties.c"
-#undef __GOB_FUNCTION__
-
-#line 70 "mn-mailbox-properties.gob"
-void 
-mn_mailbox_properties_add_entry (MNMailboxProperties * self, GtkEntry * entry)
-#line 325 "mn-mailbox-properties.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailbox:Properties::add_entry"
-#line 70 "mn-mailbox-properties.gob"
-	g_return_if_fail (self != NULL);
-#line 70 "mn-mailbox-properties.gob"
-	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
-#line 70 "mn-mailbox-properties.gob"
-	g_return_if_fail (entry != NULL);
-#line 70 "mn-mailbox-properties.gob"
-	g_return_if_fail (GTK_IS_ENTRY (entry));
-#line 336 "mn-mailbox-properties.c"
-{
-#line 72 "mn-mailbox-properties.gob"
-	
-    self->entries = g_slist_append(self->entries, entry);
-  }}
-#line 342 "mn-mailbox-properties.c"
+#line 353 "mn-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 76 "mn-mailbox-properties.gob"
+#line 88 "mn-mailbox-properties.gob"
 void 
-mn_mailbox_properties_add_entries (MNMailboxProperties * self, GtkEntry * entry, ...)
-#line 348 "mn-mailbox-properties.c"
+mn_mailbox_properties_notify_default_check_delay (MNMailboxProperties * self)
+#line 359 "mn-mailbox-properties.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox:Properties::add_entries"
-#line 76 "mn-mailbox-properties.gob"
+#define __GOB_FUNCTION__ "MN:Mailbox:Properties::notify_default_check_delay"
+#line 88 "mn-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 76 "mn-mailbox-properties.gob"
+#line 88 "mn-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (self));
-#line 355 "mn-mailbox-properties.c"
+#line 366 "mn-mailbox-properties.c"
 {
-#line 78 "mn-mailbox-properties.gob"
+#line 90 "mn-mailbox-properties.gob"
 	
-    va_list args;
-
-    va_start(args, entry);
-    while (entry)
-      {
-	self_add_entry(self, entry);
-	entry = va_arg(args, GtkEntry *);
-      }
-    va_end(args);
+    g_object_notify(G_OBJECT(self), "default-check-delay");
   }}
-#line 369 "mn-mailbox-properties.c"
+#line 372 "mn-mailbox-properties.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox-properties.gob b/src/mn-mailbox-properties.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
@@ -24,23 +24,41 @@ requires 2.0.12
 #include "mn-mailbox.h"
 %}
 
-class MN:Mailbox:Properties from Gtk:VBox
+class MN:Mailbox:Properties from Gtk:VBox (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 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;
 
   property BOOLEAN complete
     get { g_value_set_boolean(VAL, TRUE); };
+
   property STRING default_name
     get { g_value_set_string(VAL, NULL); };
-  
+
+  property INT default_check_delay
+    get
+    {
+      GType mailbox_type;
+      MNMailboxClass *class;
+
+      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);
+
+      g_value_set_int(VAL, class->default_check_delay);
+    };
+
   virtual public void
     set_mailbox (self, MNMailbox *mailbox);
 
@@ -49,7 +67,7 @@ class MN:Mailbox:Properties from Gtk:VBox
   {
     return mn_mailbox_new(SELF_GET_CLASS(self)->type, NULL);
   }
-  
+
   init (self)
   {
     gtk_box_set_spacing(GTK_BOX(self), 6);
@@ -66,24 +84,10 @@ class MN:Mailbox:Properties from Gtk:VBox
   {
     g_object_notify(G_OBJECT(self), "default-name");
   }
-  
-  protected void
-    add_entry (self, Gtk:Entry *entry (check null type))
-  {
-    self->entries = g_slist_append(self->entries, entry);
-  }
 
   protected void
-    add_entries (self, GtkEntry *entry, ...)
+    notify_default_check_delay (self)
   {
-    va_list args;
-
-    va_start(args, entry);
-    while (entry)
-      {
-	self_add_entry(self, entry);
-	entry = va_arg(args, GtkEntry *);
-      }
-    va_end(args);
+    g_object_notify(G_OBJECT(self), "default-check-delay");
   }
 }
diff --git a/src/mn-mailbox-properties.gob.stamp b/src/mn-mailbox-properties.gob.stamp
diff --git a/src/mn-mailbox-properties.h b/src/mn-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -38,6 +38,7 @@ struct _MNMailboxProperties {
 	GtkVBox __parent__;
 	/*< private >*/
 	GtkSizeGroup * label_size_group; /* protected */
+	GtkSizeGroup * entry_size_group; /* protected */
 	GtkSizeGroup * entry_button_size_group; /* protected */
 	GSList * entries; /* protected */
 };
@@ -54,6 +55,7 @@ struct _MNMailboxPropertiesClass {
 	const char * stock_id;
 	const char * combo_label;
 	const char * section_label;
+	gboolean no_check_delay_unless_complete;
 };
 
 
@@ -71,9 +73,11 @@ MNMailbox * 	mn_mailbox_properties_get_mailbox	(MNMailboxProperties * self);
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
 #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_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)
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
 
 
diff --git a/src/mn-mailbox-view-private.h b/src/mn-mailbox-view-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MAILBOX_VIEW_PRIVATE_H__
 #define __MN_MAILBOX_VIEW_PRIVATE_H__
@@ -10,19 +10,21 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNMailboxViewPrivate {
-#line 70 "mn-mailbox-view.gob"
+#line 76 "mn-mailbox-view.gob"
 	GtkWidget * menu;
-#line 71 "mn-mailbox-view.gob"
+#line 77 "mn-mailbox-view.gob"
+	GtkWidget * properties_item;
+#line 78 "mn-mailbox-view.gob"
+	GtkWidget * update_item;
+#line 79 "mn-mailbox-view.gob"
 	GtkWidget * remove_item;
-#line 72 "mn-mailbox-view.gob"
+#line 80 "mn-mailbox-view.gob"
 	GtkWidget * cut_item;
-#line 73 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
 	GtkWidget * copy_item;
-#line 74 "mn-mailbox-view.gob"
+#line 82 "mn-mailbox-view.gob"
 	GtkWidget * paste_item;
-#line 75 "mn-mailbox-view.gob"
-	GtkWidget * properties_item;
-#line 26 "mn-mailbox-view-private.h"
+#line 28 "mn-mailbox-view-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-mailbox-view.c b/src/mn-mailbox-view.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -53,6 +52,12 @@ enum
   N_TARGETS
 };
 
+typedef struct
+{
+  gboolean has_polled;
+  gboolean has_selection;
+} SensitivityInfo;
+
 static struct
 {
   char		*name;
@@ -64,7 +69,7 @@ static struct
 
 static GtkClipboard *global_clipboard;
 
-#line 68 "mn-mailbox-view.c"
+#line 73 "mn-mailbox-view.c"
 /* self casting macros */
 #define SELF(x) MN_MAILBOX_VIEW(x)
 #define SELF_CONST(x) MN_MAILBOX_VIEW_CONST(x)
@@ -79,13 +84,15 @@ typedef MNMailboxView Self;
 typedef MNMailboxViewClass SelfClass;
 
 /* here are local prototypes */
+static void ___real_mn_mailbox_view_activate_update (MNMailboxView * self);
+static void mn_mailbox_view_activate_update_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) G_GNUC_UNUSED;
+static void ___real_mn_mailbox_view_activate_properties (MNMailboxView * self);
+static void mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) G_GNUC_UNUSED;
 static void ___real_mn_mailbox_view_activate_add (MNMailboxView * self);
 static void ___real_mn_mailbox_view_activate_remove (MNMailboxView * self);
 static void ___real_mn_mailbox_view_activate_cut (MNMailboxView * self);
 static void ___real_mn_mailbox_view_activate_copy (MNMailboxView * self);
 static void ___real_mn_mailbox_view_activate_paste (MNMailboxView * self);
-static void ___real_mn_mailbox_view_activate_properties (MNMailboxView * self);
-static void mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) G_GNUC_UNUSED;
 static void mn_mailbox_view_class_init (MNMailboxViewClass * class) G_GNUC_UNUSED;
 static void mn_mailbox_view_init (MNMailboxView * self) G_GNUC_UNUSED;
 static int mn_mailbox_view_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data) G_GNUC_UNUSED;
@@ -97,6 +104,7 @@ static void mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbo
 static void mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox * mailbox) G_GNUC_UNUSED;
 static gboolean mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTreeIter * iter) G_GNUC_UNUSED;
 static void mn_mailbox_view_update_sensitivity (MNMailboxView * self) G_GNUC_UNUSED;
+static void mn_mailbox_view_update_sensitivity_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) G_GNUC_UNUSED;
 static void mn_mailbox_view_remove_mailbox (MNMailboxView * self) G_GNUC_UNUSED;
 static void mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) G_GNUC_UNUSED;
 static void mn_mailbox_view_copy_mailbox (MNMailboxView * self) G_GNUC_UNUSED;
@@ -115,6 +123,12 @@ static void mn_mailbox_view_row_activated_h (GtkTreeView * treeview, GtkTreePath
 /*
  * Signal connection wrapper macro shortcuts
  */
+#define self_connect__activate_update(object,func,data)	mn_mailbox_view_connect__activate_update((object),(func),(data))
+#define self_connect_after__activate_update(object,func,data)	mn_mailbox_view_connect_after__activate_update((object),(func),(data))
+#define self_connect_data__activate_update(object,func,data,destroy_data,flags)	mn_mailbox_view_connect_data__activate_update((object),(func),(data),(destroy_data),(flags))
+#define self_connect__activate_properties(object,func,data)	mn_mailbox_view_connect__activate_properties((object),(func),(data))
+#define self_connect_after__activate_properties(object,func,data)	mn_mailbox_view_connect_after__activate_properties((object),(func),(data))
+#define self_connect_data__activate_properties(object,func,data,destroy_data,flags)	mn_mailbox_view_connect_data__activate_properties((object),(func),(data),(destroy_data),(flags))
 #define self_connect__activate_add(object,func,data)	mn_mailbox_view_connect__activate_add((object),(func),(data))
 #define self_connect_after__activate_add(object,func,data)	mn_mailbox_view_connect_after__activate_add((object),(func),(data))
 #define self_connect_data__activate_add(object,func,data,destroy_data,flags)	mn_mailbox_view_connect_data__activate_add((object),(func),(data),(destroy_data),(flags))
@@ -130,17 +144,15 @@ static void mn_mailbox_view_row_activated_h (GtkTreeView * treeview, GtkTreePath
 #define self_connect__activate_paste(object,func,data)	mn_mailbox_view_connect__activate_paste((object),(func),(data))
 #define self_connect_after__activate_paste(object,func,data)	mn_mailbox_view_connect_after__activate_paste((object),(func),(data))
 #define self_connect_data__activate_paste(object,func,data,destroy_data,flags)	mn_mailbox_view_connect_data__activate_paste((object),(func),(data),(destroy_data),(flags))
-#define self_connect__activate_properties(object,func,data)	mn_mailbox_view_connect__activate_properties((object),(func),(data))
-#define self_connect_after__activate_properties(object,func,data)	mn_mailbox_view_connect_after__activate_properties((object),(func),(data))
-#define self_connect_data__activate_properties(object,func,data,destroy_data,flags)	mn_mailbox_view_connect_data__activate_properties((object),(func),(data),(destroy_data),(flags))
 
 enum {
+	ACTIVATE_UPDATE_SIGNAL,
+	ACTIVATE_PROPERTIES_SIGNAL,
 	ACTIVATE_ADD_SIGNAL,
 	ACTIVATE_REMOVE_SIGNAL,
 	ACTIVATE_CUT_SIGNAL,
 	ACTIVATE_COPY_SIGNAL,
 	ACTIVATE_PASTE_SIGNAL,
-	ACTIVATE_PROPERTIES_SIGNAL,
 	LAST_SIGNAL
 };
 
@@ -150,13 +162,15 @@ static guint object_signals[LAST_SIGNAL] = {0};
 static GtkTreeViewClass *parent_class = NULL;
 
 /* Short form macros */
+#define self_activate_update mn_mailbox_view_activate_update
+#define self_activate_update_cb mn_mailbox_view_activate_update_cb
+#define self_activate_properties mn_mailbox_view_activate_properties
+#define self_activate_properties_cb mn_mailbox_view_activate_properties_cb
 #define self_activate_add mn_mailbox_view_activate_add
 #define self_activate_remove mn_mailbox_view_activate_remove
 #define self_activate_cut mn_mailbox_view_activate_cut
 #define self_activate_copy mn_mailbox_view_activate_copy
 #define self_activate_paste mn_mailbox_view_activate_paste
-#define self_activate_properties mn_mailbox_view_activate_properties
-#define self_activate_properties_cb mn_mailbox_view_activate_properties_cb
 #define self_sort_cb mn_mailbox_view_sort_cb
 #define self_search_equal_cb mn_mailbox_view_search_equal_cb
 #define self_append mn_mailbox_view_append
@@ -166,6 +180,7 @@ static GtkTreeViewClass *parent_class = NULL;
 #define self_update_iter mn_mailbox_view_update_iter
 #define self_find_mailbox mn_mailbox_view_find_mailbox
 #define self_update_sensitivity mn_mailbox_view_update_sensitivity
+#define self_update_sensitivity_cb mn_mailbox_view_update_sensitivity_cb
 #define self_remove_mailbox mn_mailbox_view_remove_mailbox
 #define self_remove_mailbox_cb mn_mailbox_view_remove_mailbox_cb
 #define self_copy_mailbox mn_mailbox_view_copy_mailbox
@@ -232,16 +247,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 70 "mn-mailbox-view.gob"
+#line 76 "mn-mailbox-view.gob"
 	if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; }
-#line 238 "mn-mailbox-view.c"
+#line 253 "mn-mailbox-view.c"
 }
 #undef __GOB_FUNCTION__
 
-#line 232 "mn-mailbox-view.gob"
+#line 261 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
-#line 245 "mn-mailbox-view.c"
+#line 260 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -250,6 +265,22 @@ mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (GTK_TYPE_TREE_VIEW);
 
+	object_signals[ACTIVATE_UPDATE_SIGNAL] =
+		g_signal_new ("activate_update",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION),
+			G_STRUCT_OFFSET (MNMailboxViewClass, activate_update),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
+	object_signals[ACTIVATE_PROPERTIES_SIGNAL] =
+		g_signal_new ("activate_properties",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION),
+			G_STRUCT_OFFSET (MNMailboxViewClass, activate_properties),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
 	object_signals[ACTIVATE_ADD_SIGNAL] =
 		g_signal_new ("activate_add",
 			G_TYPE_FROM_CLASS (g_object_class),
@@ -290,31 +321,25 @@ mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
 			NULL, NULL,
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
-	object_signals[ACTIVATE_PROPERTIES_SIGNAL] =
-		g_signal_new ("activate_properties",
-			G_TYPE_FROM_CLASS (g_object_class),
-			(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION | G_SIGNAL_ACTION),
-			G_STRUCT_OFFSET (MNMailboxViewClass, activate_properties),
-			NULL, NULL,
-			g_cclosure_marshal_VOID__VOID,
-			G_TYPE_NONE, 0);
 
-#line 77 "mn-mailbox-view.gob"
+#line 84 "mn-mailbox-view.gob"
+	class->activate_update = ___real_mn_mailbox_view_activate_update;
+#line 106 "mn-mailbox-view.gob"
+	class->activate_properties = ___real_mn_mailbox_view_activate_properties;
+#line 146 "mn-mailbox-view.gob"
 	class->activate_add = ___real_mn_mailbox_view_activate_add;
-#line 92 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 	class->activate_remove = ___real_mn_mailbox_view_activate_remove;
-#line 98 "mn-mailbox-view.gob"
+#line 167 "mn-mailbox-view.gob"
 	class->activate_cut = ___real_mn_mailbox_view_activate_cut;
-#line 105 "mn-mailbox-view.gob"
+#line 174 "mn-mailbox-view.gob"
 	class->activate_copy = ___real_mn_mailbox_view_activate_copy;
-#line 111 "mn-mailbox-view.gob"
+#line 180 "mn-mailbox-view.gob"
 	class->activate_paste = ___real_mn_mailbox_view_activate_paste;
-#line 192 "mn-mailbox-view.gob"
-	class->activate_properties = ___real_mn_mailbox_view_activate_properties;
-#line 315 "mn-mailbox-view.c"
+#line 340 "mn-mailbox-view.c"
 	g_object_class->finalize = ___finalize;
  {
-#line 233 "mn-mailbox-view.gob"
+#line 262 "mn-mailbox-view.gob"
 
     GtkBindingSet *binding_set;
     int i;
@@ -334,7 +359,7 @@ mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
     gtk_binding_entry_add_signal(binding_set, GDK_x, GDK_CONTROL_MASK, "activate-cut", 0);
     gtk_binding_entry_add_signal(binding_set, GDK_c, GDK_CONTROL_MASK, "activate-copy", 0);
     gtk_binding_entry_add_signal(binding_set, GDK_v, GDK_CONTROL_MASK, "activate-paste", 0);
-    
+
     /* cut/copy/paste shortcuts taken from gtkentry.c */
     gtk_binding_entry_add_signal(binding_set, GDK_Delete, GDK_SHIFT_MASK, "activate-cut", 0);
     gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_CONTROL_MASK, "activate-copy", 0);
@@ -345,22 +370,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 349 "mn-mailbox-view.c"
+#line 374 "mn-mailbox-view.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 264 "mn-mailbox-view.gob"
+#line 293 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
-#line 356 "mn-mailbox-view.c"
+#line 381 "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 70 "mn-mailbox-view.gob"
+#line 76 "mn-mailbox-view.gob"
 	self->_priv->menu = gtk_menu_new();
-#line 362 "mn-mailbox-view.c"
+#line 387 "mn-mailbox-view.c"
  {
-#line 265 "mn-mailbox-view.gob"
+#line 294 "mn-mailbox-view.gob"
 
     GtkMenuShell *shell;
     GtkWidget *add_item;
@@ -374,7 +399,13 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
     /* popup menu */
 
     shell = GTK_MENU_SHELL(selfp->menu);
-    
+
+    /* ordered according to chapter 4 of the HIG */
+
+    selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
+    /* translators: header capitalization */
+    selfp->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update"));
+    mn_menu_shell_append(shell, NULL, NULL);
     add_item = mn_menu_shell_append(shell, GTK_STOCK_ADD, NULL);
     selfp->remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, NULL);
     mn_menu_shell_append(shell, NULL, NULL);
@@ -383,16 +414,15 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
     selfp->paste_item = mn_menu_shell_append(shell, GTK_STOCK_PASTE, NULL);
     mn_menu_shell_append(shell, NULL, NULL);
     select_all_item = mn_menu_shell_append(shell, MN_STOCK_SELECT_ALL, NULL);
-    mn_menu_shell_append(shell, NULL, NULL);
-    selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
-    
+
+    g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self);
+    g_signal_connect_swapped(selfp->update_item, "activate", G_CALLBACK(self_activate_update), self);
     g_signal_connect_swapped(add_item, "activate", G_CALLBACK(self_activate_add), self);
     g_signal_connect_swapped(selfp->remove_item, "activate", G_CALLBACK(self_activate_remove), self);
     g_signal_connect_swapped(selfp->cut_item, "activate", G_CALLBACK(self_activate_cut), self);
     g_signal_connect_swapped(selfp->copy_item, "activate", G_CALLBACK(self_activate_copy), self);
     g_signal_connect_swapped(selfp->paste_item, "activate", G_CALLBACK(self_activate_paste), self);
     g_signal_connect_swapped(select_all_item, "activate", G_CALLBACK(self_select_all), self);
-    g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self);
 
     /* store */
 
@@ -414,9 +444,8 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
 
     gtk_tree_view_set_model(GTK_TREE_VIEW(self), GTK_TREE_MODEL(store));
     g_object_unref(store);
-    
+
     column = gtk_tree_view_column_new();
-    gtk_tree_view_column_set_title(column, _("Mailbox"));
 
     renderer = nautilus_cell_renderer_pixbuf_emblem_new();
     g_object_set(renderer, "stock-size", GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
@@ -442,7 +471,7 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
 
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
-    
+
     MN_LIST_FOREACH(l, mn_shell->mailboxes->list)
       self_append(self, l->data);
     self_update_sensitivity(self);
@@ -451,7 +480,8 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
 			mn_shell->mailboxes,
 			"signal::mailbox-added", self_mailbox_added_h, self,
 			"signal::mailbox-notify::stock-id", self_mailbox_notify_h, self,
-			"signal::mailbox-notify::must-poll", self_mailbox_notify_h, self,
+			"signal::mailbox-notify::poll", self_mailbox_notify_h, self,
+			"swapped-signal::mailbox-notify::poll", self_update_sensitivity, self,
 			"signal::mailbox-notify::format", self_mailbox_notify_h, self,
 			"signal::mailbox-notify::error", self_mailbox_notify_h, self,
 			"signal::mailbox-removed", self_mailbox_removed_h, self,
@@ -465,15 +495,159 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
 		     "signal::row-activated", self_row_activated_h, NULL,
 		     NULL);
   
-#line 469 "mn-mailbox-view.c"
+#line 499 "mn-mailbox-view.c"
  }
 }
 #undef __GOB_FUNCTION__
 
-#line 77 "mn-mailbox-view.gob"
+#line 84 "mn-mailbox-view.gob"
+void 
+mn_mailbox_view_activate_update (MNMailboxView * self)
+#line 507 "mn-mailbox-view.c"
+{
+	GValue ___param_values[1];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 84 "mn-mailbox-view.gob"
+	g_return_if_fail (self != NULL);
+#line 84 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
+#line 519 "mn-mailbox-view.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_UPDATE_SIGNAL],
+		0 /* detail */,
+		&___return_val);
+
+	g_value_unset (&___param_values[0]);
+}
+#line 84 "mn-mailbox-view.gob"
+static void 
+___real_mn_mailbox_view_activate_update (MNMailboxView * self G_GNUC_UNUSED)
+#line 535 "mn-mailbox-view.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_update"
+{
+#line 86 "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"
+#undef __GOB_FUNCTION__
+
+#line 93 "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"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_update_cb"
+{
+#line 98 "mn-mailbox-view.gob"
+	
+    MNMailbox *mailbox;
+
+    gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
+    mn_mailbox_check(mailbox);
+    g_object_unref(mailbox);
+  }}
+#line 564 "mn-mailbox-view.c"
+#undef __GOB_FUNCTION__
+
+#line 106 "mn-mailbox-view.gob"
+void 
+mn_mailbox_view_activate_properties (MNMailboxView * self)
+#line 570 "mn-mailbox-view.c"
+{
+	GValue ___param_values[1];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 106 "mn-mailbox-view.gob"
+	g_return_if_fail (self != NULL);
+#line 106 "mn-mailbox-view.gob"
+	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
+#line 582 "mn-mailbox-view.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_PROPERTIES_SIGNAL],
+		0 /* detail */,
+		&___return_val);
+
+	g_value_unset (&___param_values[0]);
+}
+#line 106 "mn-mailbox-view.gob"
+static void 
+___real_mn_mailbox_view_activate_properties (MNMailboxView * self G_GNUC_UNUSED)
+#line 598 "mn-mailbox-view.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties"
+{
+#line 108 "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"
+#undef __GOB_FUNCTION__
+
+#line 115 "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"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties_cb"
+{
+#line 120 "mn-mailbox-view.gob"
+	
+    Self *self = data;
+    MNMailbox *mailbox;
+    GtkWidget *dialog;
+
+    gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
+
+    dialog = (GtkWidget *) mn_shell_get_mailbox_properties_dialog(mn_shell, mailbox);
+    if (dialog)
+      gtk_window_present(GTK_WINDOW(dialog));
+    else
+      {
+	dialog = mn_mailbox_properties_dialog_new(mn_widget_get_parent_window(GTK_WIDGET(self)), mailbox);
+
+	g_signal_connect(dialog,
+			 "response",
+			 G_CALLBACK(self_properties_edit_response_h),
+			 NULL);
+
+	mn_shell_add_mailbox_properties_dialog(mn_shell, MN_MAILBOX_PROPERTIES_DIALOG(dialog));
+	gtk_widget_show(dialog);
+      }
+
+    g_object_unref(mailbox);
+  }}
+#line 645 "mn-mailbox-view.c"
+#undef __GOB_FUNCTION__
+
+#line 146 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_add (MNMailboxView * self)
-#line 477 "mn-mailbox-view.c"
+#line 651 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -481,11 +655,11 @@ mn_mailbox_view_activate_add (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 77 "mn-mailbox-view.gob"
+#line 146 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 77 "mn-mailbox-view.gob"
+#line 146 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 489 "mn-mailbox-view.c"
+#line 663 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -498,14 +672,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 77 "mn-mailbox-view.gob"
+#line 146 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_add (MNMailboxView * self G_GNUC_UNUSED)
-#line 505 "mn-mailbox-view.c"
+#line 679 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_add"
 {
-#line 79 "mn-mailbox-view.gob"
+#line 148 "mn-mailbox-view.gob"
 	
     GtkWidget *dialog;
 
@@ -518,13 +692,13 @@ ___real_mn_mailbox_view_activate_add (MNMailboxView * self G_GNUC_UNUSED)
 
     gtk_widget_show(dialog);
   }}
-#line 522 "mn-mailbox-view.c"
+#line 696 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 92 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_remove (MNMailboxView * self)
-#line 528 "mn-mailbox-view.c"
+#line 702 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -532,11 +706,11 @@ mn_mailbox_view_activate_remove (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 92 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 92 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 540 "mn-mailbox-view.c"
+#line 714 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -549,24 +723,24 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 92 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_remove (MNMailboxView * self G_GNUC_UNUSED)
-#line 556 "mn-mailbox-view.c"
+#line 730 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_remove"
 {
-#line 94 "mn-mailbox-view.gob"
+#line 163 "mn-mailbox-view.gob"
 	
     self_remove_mailbox(self);
   }}
-#line 564 "mn-mailbox-view.c"
+#line 738 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 98 "mn-mailbox-view.gob"
+#line 167 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_cut (MNMailboxView * self)
-#line 570 "mn-mailbox-view.c"
+#line 744 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -574,11 +748,11 @@ mn_mailbox_view_activate_cut (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 98 "mn-mailbox-view.gob"
+#line 167 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 98 "mn-mailbox-view.gob"
+#line 167 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 582 "mn-mailbox-view.c"
+#line 756 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -591,25 +765,25 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 98 "mn-mailbox-view.gob"
+#line 167 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_cut (MNMailboxView * self G_GNUC_UNUSED)
-#line 598 "mn-mailbox-view.c"
+#line 772 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_cut"
 {
-#line 100 "mn-mailbox-view.gob"
+#line 169 "mn-mailbox-view.gob"
 	
     self_copy_mailbox(self);
     self_remove_mailbox(self);
   }}
-#line 607 "mn-mailbox-view.c"
+#line 781 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 105 "mn-mailbox-view.gob"
+#line 174 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_copy (MNMailboxView * self)
-#line 613 "mn-mailbox-view.c"
+#line 787 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -617,11 +791,11 @@ mn_mailbox_view_activate_copy (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 105 "mn-mailbox-view.gob"
+#line 174 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 105 "mn-mailbox-view.gob"
+#line 174 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 625 "mn-mailbox-view.c"
+#line 799 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -634,24 +808,24 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 105 "mn-mailbox-view.gob"
+#line 174 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_copy (MNMailboxView * self G_GNUC_UNUSED)
-#line 641 "mn-mailbox-view.c"
+#line 815 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_copy"
 {
-#line 107 "mn-mailbox-view.gob"
+#line 176 "mn-mailbox-view.gob"
 	
     self_copy_mailbox(self);
   }}
-#line 649 "mn-mailbox-view.c"
+#line 823 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 111 "mn-mailbox-view.gob"
+#line 180 "mn-mailbox-view.gob"
 void 
 mn_mailbox_view_activate_paste (MNMailboxView * self)
-#line 655 "mn-mailbox-view.c"
+#line 829 "mn-mailbox-view.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -659,11 +833,11 @@ mn_mailbox_view_activate_paste (MNMailboxView * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 111 "mn-mailbox-view.gob"
+#line 180 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 111 "mn-mailbox-view.gob"
+#line 180 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 667 "mn-mailbox-view.c"
+#line 841 "mn-mailbox-view.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -676,14 +850,14 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 111 "mn-mailbox-view.gob"
+#line 180 "mn-mailbox-view.gob"
 static void 
 ___real_mn_mailbox_view_activate_paste (MNMailboxView * self G_GNUC_UNUSED)
-#line 683 "mn-mailbox-view.c"
+#line 857 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::activate_paste"
 {
-#line 113 "mn-mailbox-view.gob"
+#line 182 "mn-mailbox-view.gob"
 	
     GtkSelectionData *data;
 
@@ -692,7 +866,7 @@ ___real_mn_mailbox_view_activate_paste (MNMailboxView * self G_GNUC_UNUSED)
       {
 	GSList *configurations;
 	GSList *l;
-	
+
 	memcpy(&configurations, data->data, data->length);
 
 	MN_LIST_FOREACH(l, configurations)
@@ -754,7 +928,7 @@ ___real_mn_mailbox_view_activate_paste (MNMailboxView * self G_GNUC_UNUSED)
 			g_slist_free(invalid_uri_list);
 		      }
 		  }
-		    
+
 		eel_g_slist_free_deep(uri_list);
 	      }
 	  }
@@ -762,100 +936,19 @@ ___real_mn_mailbox_view_activate_paste (MNMailboxView * self G_GNUC_UNUSED)
 	gtk_selection_data_free(data);
       }
   }}
-#line 766 "mn-mailbox-view.c"
-#undef __GOB_FUNCTION__
-
-#line 192 "mn-mailbox-view.gob"
-void 
-mn_mailbox_view_activate_properties (MNMailboxView * self)
-#line 772 "mn-mailbox-view.c"
-{
-	GValue ___param_values[1];
-	GValue ___return_val;
-
-memset (&___return_val, 0, sizeof (___return_val));
-memset (&___param_values, 0, sizeof (___param_values));
-
-#line 192 "mn-mailbox-view.gob"
-	g_return_if_fail (self != NULL);
-#line 192 "mn-mailbox-view.gob"
-	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 784 "mn-mailbox-view.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_PROPERTIES_SIGNAL],
-		0 /* detail */,
-		&___return_val);
-
-	g_value_unset (&___param_values[0]);
-}
-#line 192 "mn-mailbox-view.gob"
-static void 
-___real_mn_mailbox_view_activate_properties (MNMailboxView * self G_GNUC_UNUSED)
-#line 800 "mn-mailbox-view.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties"
-{
-#line 194 "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 811 "mn-mailbox-view.c"
+#line 940 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 201 "mn-mailbox-view.gob"
-static void 
-mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 817 "mn-mailbox-view.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties_cb"
-{
-#line 206 "mn-mailbox-view.gob"
-	
-    Self *self = data;
-    MNMailbox *mailbox;
-    GtkWidget *dialog;
 
-    gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
 
-    dialog = (GtkWidget *) mn_shell_get_mailbox_properties_dialog(mn_shell, mailbox);
-    if (dialog)
-      gtk_window_present(GTK_WINDOW(dialog));
-    else
-      {
-	dialog = mn_mailbox_properties_dialog_new(mn_widget_get_parent_window(GTK_WIDGET(self)), mailbox);
-
-	g_signal_connect(dialog,
-			 "response",
-			 G_CALLBACK(self_properties_edit_response_h),
-			 NULL);
-
-	mn_shell_add_mailbox_properties_dialog(mn_shell, MN_MAILBOX_PROPERTIES_DIALOG(dialog));
-	gtk_widget_show(dialog);
-      }
-
-    g_object_unref(mailbox);
-  }}
-#line 847 "mn-mailbox-view.c"
-#undef __GOB_FUNCTION__
-
-
-
-#line 370 "mn-mailbox-view.gob"
+#line 404 "mn-mailbox-view.gob"
 static int 
 mn_mailbox_view_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b, gpointer user_data)
-#line 855 "mn-mailbox-view.c"
+#line 948 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::sort_cb"
 {
-#line 375 "mn-mailbox-view.gob"
+#line 409 "mn-mailbox-view.gob"
 	
     MNMailbox *mailbox_a;
     MNMailbox *mailbox_b;
@@ -871,17 +964,17 @@ mn_mailbox_view_sort_cb (GtkTreeModel * model, GtkTreeIter * a, GtkTreeIter * b,
 
     return cmp;
   }}
-#line 875 "mn-mailbox-view.c"
+#line 968 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 391 "mn-mailbox-view.gob"
+#line 425 "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 881 "mn-mailbox-view.c"
+#line 974 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::search_equal_cb"
 {
-#line 397 "mn-mailbox-view.gob"
+#line 431 "mn-mailbox-view.gob"
 	
     gboolean status = TRUE;
     GValue value = { 0, };
@@ -889,7 +982,7 @@ mn_mailbox_view_search_equal_cb (GtkTreeModel * model, int column, const char * 
     const char *str;
     char *normalized_string;
     char *normalized_key;
-    
+
     /*
      * The stock gtk_tree_view_search_equal_func() only searches the
      * start of the string, using strncmp(). We use strstr(), to
@@ -939,26 +1032,26 @@ mn_mailbox_view_search_equal_cb (GtkTreeModel * model, int column, const char * 
 
     return status;
   }}
-#line 943 "mn-mailbox-view.c"
+#line 1036 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 455 "mn-mailbox-view.gob"
+#line 489 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox)
-#line 949 "mn-mailbox-view.c"
+#line 1042 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::append"
-#line 455 "mn-mailbox-view.gob"
+#line 489 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 455 "mn-mailbox-view.gob"
+#line 489 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 455 "mn-mailbox-view.gob"
+#line 489 "mn-mailbox-view.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 455 "mn-mailbox-view.gob"
+#line 489 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 960 "mn-mailbox-view.c"
+#line 1053 "mn-mailbox-view.c"
 {
-#line 457 "mn-mailbox-view.gob"
+#line 491 "mn-mailbox-view.gob"
 	
     GtkTreeModel *model;
     GtkTreeIter iter;
@@ -967,33 +1060,33 @@ mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox)
     gtk_list_store_append(GTK_LIST_STORE(model), &iter);
     self_update_iter(self, &iter, mailbox);
   }}
-#line 971 "mn-mailbox-view.c"
+#line 1064 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 466 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_mailbox_added_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
-#line 977 "mn-mailbox-view.c"
+#line 1070 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_added_h"
 {
-#line 470 "mn-mailbox-view.gob"
+#line 504 "mn-mailbox-view.gob"
 	
     Self *self = user_data;
 
     self_append(self, mailbox);
   }}
-#line 987 "mn-mailbox-view.c"
+#line 1080 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 476 "mn-mailbox-view.gob"
+#line 510 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_mailbox_notify_h (MNMailboxes * mailboxes, MNMailbox * mailbox, GParamSpec * pspec, gpointer user_data)
-#line 993 "mn-mailbox-view.c"
+#line 1086 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_notify_h"
 {
-#line 481 "mn-mailbox-view.gob"
+#line 515 "mn-mailbox-view.gob"
 	
     Self *self = user_data;
     GtkTreeIter iter;
@@ -1001,17 +1094,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 1005 "mn-mailbox-view.c"
+#line 1098 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 489 "mn-mailbox-view.gob"
+#line 523 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
-#line 1011 "mn-mailbox-view.c"
+#line 1104 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_removed_h"
 {
-#line 493 "mn-mailbox-view.gob"
+#line 527 "mn-mailbox-view.gob"
 	
     Self *self = user_data;
     GtkTreeIter iter;
@@ -1019,33 +1112,33 @@ mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox,
     if (self_find_mailbox(self, mailbox, &iter))
       {
 	GtkTreeModel *model;
-	
+
 	model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
 	gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
       }
   }}
-#line 1028 "mn-mailbox-view.c"
+#line 1121 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 506 "mn-mailbox-view.gob"
+#line 540 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox * mailbox)
-#line 1034 "mn-mailbox-view.c"
+#line 1127 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::update_iter"
-#line 506 "mn-mailbox-view.gob"
+#line 540 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 506 "mn-mailbox-view.gob"
+#line 540 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 506 "mn-mailbox-view.gob"
+#line 540 "mn-mailbox-view.gob"
 	g_return_if_fail (iter != NULL);
-#line 506 "mn-mailbox-view.gob"
+#line 540 "mn-mailbox-view.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 506 "mn-mailbox-view.gob"
+#line 540 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1047 "mn-mailbox-view.c"
+#line 1140 "mn-mailbox-view.c"
 {
-#line 510 "mn-mailbox-view.gob"
+#line 544 "mn-mailbox-view.gob"
 	
     GtkTreeModel *model;
     char *status;
@@ -1065,7 +1158,7 @@ mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox
 	else
 	  {
 	    status = g_strdup_printf(_("%s mailbox"), mailbox->format);
-	    if (mailbox->must_poll)
+	    if (mn_mailbox_get_poll(mailbox))
 	      emblem_stock_id = MN_STOCK_POLLED;
 	  }
       }
@@ -1083,7 +1176,7 @@ mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox
 	    stock_id = GTK_STOCK_EXECUTE;
 	  }
       }
-    
+
     if (! stock_id)
       stock_id = mailbox->stock_id;
 
@@ -1092,7 +1185,7 @@ mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox
 				      emblem_stock_id,
 				      GTK_ICON_SIZE_MENU,
 				      NULL);
-    
+
     markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>\n%s",
 				     mailbox->runtime_name,
 				     status);
@@ -1115,28 +1208,28 @@ mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox
     g_free(markup);
     g_free(text);
   }}
-#line 1119 "mn-mailbox-view.c"
+#line 1212 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 580 "mn-mailbox-view.gob"
+#line 614 "mn-mailbox-view.gob"
 static gboolean 
 mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTreeIter * iter)
-#line 1125 "mn-mailbox-view.c"
+#line 1218 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::find_mailbox"
-#line 580 "mn-mailbox-view.gob"
+#line 614 "mn-mailbox-view.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 580 "mn-mailbox-view.gob"
+#line 614 "mn-mailbox-view.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX_VIEW (self), (gboolean )0);
-#line 580 "mn-mailbox-view.gob"
+#line 614 "mn-mailbox-view.gob"
 	g_return_val_if_fail (mailbox != NULL, (gboolean )0);
-#line 580 "mn-mailbox-view.gob"
+#line 614 "mn-mailbox-view.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (gboolean )0);
-#line 580 "mn-mailbox-view.gob"
+#line 614 "mn-mailbox-view.gob"
 	g_return_val_if_fail (iter != NULL, (gboolean )0);
-#line 1138 "mn-mailbox-view.c"
+#line 1231 "mn-mailbox-view.c"
 {
-#line 584 "mn-mailbox-view.gob"
+#line 618 "mn-mailbox-view.gob"
 	
     GtkTreeModel *model;
     GtkTreeIter our_iter;
@@ -1149,7 +1242,7 @@ mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTree
       {
 	MNMailbox *this_mailbox;
 	gboolean is;
-	
+
 	gtk_tree_model_get(model, &our_iter, COLUMN_MAILBOX, &this_mailbox, -1);
 	is = mailbox == this_mailbox;
 	g_object_unref(this_mailbox);
@@ -1165,90 +1258,116 @@ mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTree
 
     return FALSE;
   }}
-#line 1169 "mn-mailbox-view.c"
+#line 1262 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 613 "mn-mailbox-view.gob"
+#line 647 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_update_sensitivity (MNMailboxView * self)
-#line 1175 "mn-mailbox-view.c"
+#line 1268 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::update_sensitivity"
-#line 613 "mn-mailbox-view.gob"
+#line 647 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 613 "mn-mailbox-view.gob"
+#line 647 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1182 "mn-mailbox-view.c"
+#line 1275 "mn-mailbox-view.c"
 {
-#line 615 "mn-mailbox-view.gob"
+#line 649 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
-    gboolean has_selection;
-    
+    SensitivityInfo info = { FALSE, FALSE };
+
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
-    has_selection = gtk_tree_selection_count_selected_rows(selection) > 0;
+    gtk_tree_selection_selected_foreach(selection, self_update_sensitivity_cb, &info);
 
-    gtk_widget_set_sensitive(selfp->remove_item, has_selection);
-    gtk_widget_set_sensitive(selfp->cut_item, has_selection);
-    gtk_widget_set_sensitive(selfp->copy_item, has_selection);
-    gtk_widget_set_sensitive(selfp->properties_item, has_selection);
+    gtk_widget_set_sensitive(selfp->properties_item, info.has_selection);
+    gtk_widget_set_sensitive(selfp->update_item, info.has_polled);
+    gtk_widget_set_sensitive(selfp->remove_item, info.has_selection);
+    gtk_widget_set_sensitive(selfp->cut_item, info.has_selection);
+    gtk_widget_set_sensitive(selfp->copy_item, info.has_selection);
   }}
-#line 1197 "mn-mailbox-view.c"
+#line 1291 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 628 "mn-mailbox-view.gob"
+#line 663 "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"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::update_sensitivity_cb"
+{
+#line 668 "mn-mailbox-view.gob"
+	
+    SensitivityInfo *info = data;
+
+    info->has_selection = TRUE;
+    if (! info->has_polled)
+      {
+	MNMailbox *mailbox;
+
+	gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
+	if (mn_mailbox_get_poll(mailbox))
+	  info->has_polled = TRUE;
+	g_object_unref(mailbox);
+      }
+  }}
+#line 1316 "mn-mailbox-view.c"
+#undef __GOB_FUNCTION__
+
+#line 683 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_remove_mailbox (MNMailboxView * self)
-#line 1203 "mn-mailbox-view.c"
+#line 1322 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox"
-#line 628 "mn-mailbox-view.gob"
+#line 683 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 628 "mn-mailbox-view.gob"
+#line 683 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1210 "mn-mailbox-view.c"
+#line 1329 "mn-mailbox-view.c"
 {
-#line 630 "mn-mailbox-view.gob"
+#line 685 "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 1219 "mn-mailbox-view.c"
+#line 1338 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 637 "mn-mailbox-view.gob"
+#line 692 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 1225 "mn-mailbox-view.c"
+#line 1344 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox_cb"
 {
-#line 642 "mn-mailbox-view.gob"
+#line 697 "mn-mailbox-view.gob"
 	
     MNMailbox *mailbox;
-  
+
     gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
     mn_mailboxes_queue_remove(mn_shell->mailboxes, mailbox);
     g_object_unref(mailbox);
   }}
-#line 1237 "mn-mailbox-view.c"
+#line 1356 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 650 "mn-mailbox-view.gob"
+#line 705 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_copy_mailbox (MNMailboxView * self)
-#line 1243 "mn-mailbox-view.c"
+#line 1362 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox"
-#line 650 "mn-mailbox-view.gob"
+#line 705 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 650 "mn-mailbox-view.gob"
+#line 705 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1250 "mn-mailbox-view.c"
+#line 1369 "mn-mailbox-view.c"
 {
-#line 652 "mn-mailbox-view.gob"
+#line 707 "mn-mailbox-view.gob"
 	
     GSList *configurations = NULL;
     GtkTreeSelection *selection;
@@ -1266,19 +1385,19 @@ mn_mailbox_view_copy_mailbox (MNMailboxView * self)
 					 self_get_clipboard_cb,
 					 self_clear_clipboard_cb,
 					 configurations);
-    g_return_if_fail(status == TRUE);
+    g_assert(status == TRUE);
   }}
-#line 1272 "mn-mailbox-view.c"
+#line 1391 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 672 "mn-mailbox-view.gob"
+#line 727 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_copy_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 1278 "mn-mailbox-view.c"
+#line 1397 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox_cb"
 {
-#line 677 "mn-mailbox-view.gob"
+#line 732 "mn-mailbox-view.gob"
 	
     GSList **configurations = data;
     MNMailbox *mailbox;
@@ -1287,17 +1406,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 1291 "mn-mailbox-view.c"
+#line 1410 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 686 "mn-mailbox-view.gob"
+#line 741 "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 1297 "mn-mailbox-view.c"
+#line 1416 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::get_clipboard_cb"
 {
-#line 691 "mn-mailbox-view.gob"
+#line 746 "mn-mailbox-view.gob"
 	
     const GSList *configurations = user_data_or_owner;
     unsigned char buf[sizeof(configurations)];
@@ -1309,55 +1428,55 @@ mn_mailbox_view_get_clipboard_cb (GtkClipboard * clipboard, GtkSelectionData * s
 			   buf,
 			   sizeof(buf));
   }}
-#line 1313 "mn-mailbox-view.c"
+#line 1432 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 703 "mn-mailbox-view.gob"
+#line 758 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_clear_clipboard_cb (GtkClipboard * clipboard, gpointer user_data_or_owner)
-#line 1319 "mn-mailbox-view.c"
+#line 1438 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::clear_clipboard_cb"
 {
-#line 705 "mn-mailbox-view.gob"
+#line 760 "mn-mailbox-view.gob"
 	
     GSList *configurations = user_data_or_owner;
 
     eel_g_slist_free_deep_custom(configurations, (GFunc) mn_mailbox_configuration_free, NULL);
   }}
-#line 1329 "mn-mailbox-view.c"
+#line 1448 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 711 "mn-mailbox-view.gob"
+#line 766 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_select_all (MNMailboxView * self)
-#line 1335 "mn-mailbox-view.c"
+#line 1454 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::select_all"
-#line 711 "mn-mailbox-view.gob"
+#line 766 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 711 "mn-mailbox-view.gob"
+#line 766 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1342 "mn-mailbox-view.c"
+#line 1461 "mn-mailbox-view.c"
 {
-#line 713 "mn-mailbox-view.gob"
+#line 768 "mn-mailbox-view.gob"
 	
     GtkTreeSelection *selection;
-    
+
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_select_all(selection);
   }}
-#line 1351 "mn-mailbox-view.c"
+#line 1470 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 720 "mn-mailbox-view.gob"
+#line 775 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 1357 "mn-mailbox-view.c"
+#line 1476 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::properties_add_response_h"
 {
-#line 724 "mn-mailbox-view.gob"
+#line 779 "mn-mailbox-view.gob"
 	
     if (response == GTK_RESPONSE_HELP)
       mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
@@ -1366,9 +1485,9 @@ mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpo
     else if (response == GTK_RESPONSE_ACCEPT)
       {
 	MNMailbox *mailbox;
-	
+
 	mailbox = mn_mailbox_properties_dialog_get_current_mailbox(MN_MAILBOX_PROPERTIES_DIALOG(dialog));
-	g_return_if_fail(MN_IS_MAILBOX(mailbox));
+	g_assert(MN_IS_MAILBOX(mailbox));
 
 	mn_mailbox_seal(mailbox);
 	mn_mailboxes_add(mn_shell->mailboxes, mailbox);
@@ -1377,17 +1496,17 @@ mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpo
 	gtk_widget_destroy(GTK_WIDGET(dialog));
       }
   }}
-#line 1381 "mn-mailbox-view.c"
+#line 1500 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 744 "mn-mailbox-view.gob"
+#line 799 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_properties_edit_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 1387 "mn-mailbox-view.c"
+#line 1506 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::properties_edit_response_h"
 {
-#line 748 "mn-mailbox-view.gob"
+#line 803 "mn-mailbox-view.gob"
 	
     if (response == GTK_RESPONSE_HELP)
       mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
@@ -1399,37 +1518,37 @@ mn_mailbox_view_properties_edit_response_h (GtkDialog * dialog, int response, gp
 	  gtk_widget_destroy(GTK_WIDGET(dialog));
       }
   }}
-#line 1403 "mn-mailbox-view.c"
+#line 1522 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 760 "mn-mailbox-view.gob"
+#line 815 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_popup_menu (MNMailboxView * self, unsigned int button, guint32 activate_time)
-#line 1409 "mn-mailbox-view.c"
+#line 1528 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu"
-#line 760 "mn-mailbox-view.gob"
+#line 815 "mn-mailbox-view.gob"
 	g_return_if_fail (self != NULL);
-#line 760 "mn-mailbox-view.gob"
+#line 815 "mn-mailbox-view.gob"
 	g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1416 "mn-mailbox-view.c"
+#line 1535 "mn-mailbox-view.c"
 {
-#line 762 "mn-mailbox-view.gob"
+#line 817 "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 1423 "mn-mailbox-view.c"
+#line 1542 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 767 "mn-mailbox-view.gob"
+#line 822 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_popup_menu_targets_received_cb (GtkClipboard * clipboard, GdkAtom * atoms, int n_atoms, gpointer data)
-#line 1429 "mn-mailbox-view.c"
+#line 1548 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_targets_received_cb"
 {
-#line 772 "mn-mailbox-view.gob"
+#line 827 "mn-mailbox-view.gob"
 	
     Self *self = data;
     int i;
@@ -1445,17 +1564,17 @@ mn_mailbox_view_popup_menu_targets_received_cb (GtkClipboard * clipboard, GdkAto
 
     gtk_widget_set_sensitive(selfp->paste_item, can_paste);
   }}
-#line 1449 "mn-mailbox-view.c"
+#line 1568 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 788 "mn-mailbox-view.gob"
+#line 843 "mn-mailbox-view.gob"
 static gboolean 
 mn_mailbox_view_popup_menu_h (GtkWidget * widget, gpointer user_data)
-#line 1455 "mn-mailbox-view.c"
+#line 1574 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_h"
 {
-#line 790 "mn-mailbox-view.gob"
+#line 845 "mn-mailbox-view.gob"
 	
     Self *self = SELF(widget);
 
@@ -1464,51 +1583,51 @@ mn_mailbox_view_popup_menu_h (GtkWidget * widget, gpointer user_data)
 
     return TRUE;		/* a menu was activated */
   }}
-#line 1468 "mn-mailbox-view.c"
+#line 1587 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 799 "mn-mailbox-view.gob"
+#line 854 "mn-mailbox-view.gob"
 static gboolean 
 mn_mailbox_view_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 1474 "mn-mailbox-view.c"
+#line 1593 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::button_press_event_h"
 {
-#line 803 "mn-mailbox-view.gob"
+#line 858 "mn-mailbox-view.gob"
 	
     if (event->button == 3)
       self_popup_menu(SELF(widget), event->button, event->time);
-    
+
     return FALSE;			/* propagate event */
   }}
-#line 1485 "mn-mailbox-view.c"
+#line 1604 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 810 "mn-mailbox-view.gob"
+#line 865 "mn-mailbox-view.gob"
 static void 
 mn_mailbox_view_row_activated_h (GtkTreeView * treeview, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data)
-#line 1491 "mn-mailbox-view.c"
+#line 1610 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::row_activated_h"
 {
-#line 815 "mn-mailbox-view.gob"
+#line 870 "mn-mailbox-view.gob"
 	
     self_activate_properties(SELF(treeview));
   }}
-#line 1499 "mn-mailbox-view.c"
+#line 1618 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
 
-#line 819 "mn-mailbox-view.gob"
+#line 874 "mn-mailbox-view.gob"
 GtkWidget * 
 mn_mailbox_view_new (void)
-#line 1505 "mn-mailbox-view.c"
+#line 1624 "mn-mailbox-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox:View::new"
 {
-#line 821 "mn-mailbox-view.gob"
+#line 876 "mn-mailbox-view.gob"
 	
     g_return_val_if_fail(mn_shell != NULL, NULL);
     return GTK_WIDGET(GET_NEW);
   }}
-#line 1514 "mn-mailbox-view.c"
+#line 1633 "mn-mailbox-view.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox-view.gob b/src/mn-mailbox-view.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
@@ -53,6 +53,12 @@ enum
   N_TARGETS
 };
 
+typedef struct
+{
+  gboolean has_polled;
+  gboolean has_selection;
+} SensitivityInfo;
+
 static struct
 {
   char		*name;
@@ -68,11 +74,74 @@ static GtkClipboard *global_clipboard;
 class MN:Mailbox:View from Gtk:Tree:View
 {
   private GtkWidget *menu = {gtk_menu_new()} destroywith gtk_widget_destroy;
+  private GtkWidget *properties_item;
+  private GtkWidget *update_item;
   private GtkWidget *remove_item;
   private GtkWidget *cut_item;
   private GtkWidget *copy_item;
   private GtkWidget *paste_item;
-  private GtkWidget *properties_item;
+
+  signal (ACTION) public NONE (NONE)
+    void activate_update (self)
+  {
+    GtkTreeSelection *selection;
+
+    selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
+    gtk_tree_selection_selected_foreach(selection, self_activate_update_cb, self);
+  }
+
+  private void
+    activate_update_cb (GtkTreeModel *model,
+			GtkTreePath *path,
+			GtkTreeIter *iter,
+			gpointer data)
+  {
+    MNMailbox *mailbox;
+
+    gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
+    mn_mailbox_check(mailbox);
+    g_object_unref(mailbox);
+  }
+
+  signal (ACTION) public NONE (NONE)
+    void activate_properties (self)
+  {
+    GtkTreeSelection *selection;
+
+    selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
+    gtk_tree_selection_selected_foreach(selection, self_activate_properties_cb, self);
+  }
+
+  private void
+    activate_properties_cb (GtkTreeModel *model,
+			    GtkTreePath *path,
+			    GtkTreeIter *iter,
+			    gpointer data)
+  {
+    Self *self = data;
+    MNMailbox *mailbox;
+    GtkWidget *dialog;
+
+    gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
+
+    dialog = (GtkWidget *) mn_shell_get_mailbox_properties_dialog(mn_shell, mailbox);
+    if (dialog)
+      gtk_window_present(GTK_WINDOW(dialog));
+    else
+      {
+	dialog = mn_mailbox_properties_dialog_new(mn_widget_get_parent_window(GTK_WIDGET(self)), mailbox);
+
+	g_signal_connect(dialog,
+			 "response",
+			 G_CALLBACK(self_properties_edit_response_h),
+			 NULL);
+
+	mn_shell_add_mailbox_properties_dialog(mn_shell, MN_MAILBOX_PROPERTIES_DIALOG(dialog));
+	gtk_widget_show(dialog);
+      }
+
+    g_object_unref(mailbox);
+  }
 
   signal (ACTION) public NONE (NONE)
     void activate_add (self)
@@ -107,7 +176,7 @@ class MN:Mailbox:View from Gtk:Tree:View
   {
     self_copy_mailbox(self);
   }
-  
+
   signal (ACTION) public NONE (NONE)
     void activate_paste (self)
   {
@@ -118,7 +187,7 @@ class MN:Mailbox:View from Gtk:Tree:View
       {
 	GSList *configurations;
 	GSList *l;
-	
+
 	memcpy(&configurations, data->data, data->length);
 
 	MN_LIST_FOREACH(l, configurations)
@@ -180,7 +249,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 			g_slist_free(invalid_uri_list);
 		      }
 		  }
-		    
+
 		eel_g_slist_free_deep(uri_list);
 	      }
 	  }
@@ -189,46 +258,6 @@ class MN:Mailbox:View from Gtk:Tree:View
       }
   }
 
-  signal (ACTION) public NONE (NONE)
-    void activate_properties (self)
-  {
-    GtkTreeSelection *selection;
-
-    selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
-    gtk_tree_selection_selected_foreach(selection, self_activate_properties_cb, self);
-  }
-  
-  private void
-    activate_properties_cb (GtkTreeModel *model,
-			    GtkTreePath *path,
-			    GtkTreeIter *iter,
-			    gpointer data)
-  {
-    Self *self = data;
-    MNMailbox *mailbox;
-    GtkWidget *dialog;
-
-    gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
-
-    dialog = (GtkWidget *) mn_shell_get_mailbox_properties_dialog(mn_shell, mailbox);
-    if (dialog)
-      gtk_window_present(GTK_WINDOW(dialog));
-    else
-      {
-	dialog = mn_mailbox_properties_dialog_new(mn_widget_get_parent_window(GTK_WIDGET(self)), mailbox);
-
-	g_signal_connect(dialog,
-			 "response",
-			 G_CALLBACK(self_properties_edit_response_h),
-			 NULL);
-
-	mn_shell_add_mailbox_properties_dialog(mn_shell, MN_MAILBOX_PROPERTIES_DIALOG(dialog));
-	gtk_widget_show(dialog);
-      }
-
-    g_object_unref(mailbox);
-  }
-
   class_init (class)
   {
     GtkBindingSet *binding_set;
@@ -249,7 +278,7 @@ class MN:Mailbox:View from Gtk:Tree:View
     gtk_binding_entry_add_signal(binding_set, GDK_x, GDK_CONTROL_MASK, "activate-cut", 0);
     gtk_binding_entry_add_signal(binding_set, GDK_c, GDK_CONTROL_MASK, "activate-copy", 0);
     gtk_binding_entry_add_signal(binding_set, GDK_v, GDK_CONTROL_MASK, "activate-paste", 0);
-    
+
     /* cut/copy/paste shortcuts taken from gtkentry.c */
     gtk_binding_entry_add_signal(binding_set, GDK_Delete, GDK_SHIFT_MASK, "activate-cut", 0);
     gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_CONTROL_MASK, "activate-copy", 0);
@@ -260,7 +289,7 @@ class MN:Mailbox:View from Gtk:Tree:View
     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);
   }
-  
+
   init (self)
   {
     GtkMenuShell *shell;
@@ -275,7 +304,13 @@ class MN:Mailbox:View from Gtk:Tree:View
     /* popup menu */
 
     shell = GTK_MENU_SHELL(selfp->menu);
-    
+
+    /* ordered according to chapter 4 of the HIG */
+
+    selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
+    /* translators: header capitalization */
+    selfp->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update"));
+    mn_menu_shell_append(shell, NULL, NULL);
     add_item = mn_menu_shell_append(shell, GTK_STOCK_ADD, NULL);
     selfp->remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, NULL);
     mn_menu_shell_append(shell, NULL, NULL);
@@ -284,16 +319,15 @@ class MN:Mailbox:View from Gtk:Tree:View
     selfp->paste_item = mn_menu_shell_append(shell, GTK_STOCK_PASTE, NULL);
     mn_menu_shell_append(shell, NULL, NULL);
     select_all_item = mn_menu_shell_append(shell, MN_STOCK_SELECT_ALL, NULL);
-    mn_menu_shell_append(shell, NULL, NULL);
-    selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
-    
+
+    g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self);
+    g_signal_connect_swapped(selfp->update_item, "activate", G_CALLBACK(self_activate_update), self);
     g_signal_connect_swapped(add_item, "activate", G_CALLBACK(self_activate_add), self);
     g_signal_connect_swapped(selfp->remove_item, "activate", G_CALLBACK(self_activate_remove), self);
     g_signal_connect_swapped(selfp->cut_item, "activate", G_CALLBACK(self_activate_cut), self);
     g_signal_connect_swapped(selfp->copy_item, "activate", G_CALLBACK(self_activate_copy), self);
     g_signal_connect_swapped(selfp->paste_item, "activate", G_CALLBACK(self_activate_paste), self);
     g_signal_connect_swapped(select_all_item, "activate", G_CALLBACK(self_select_all), self);
-    g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self);
 
     /* store */
 
@@ -315,9 +349,8 @@ class MN:Mailbox:View from Gtk:Tree:View
 
     gtk_tree_view_set_model(GTK_TREE_VIEW(self), GTK_TREE_MODEL(store));
     g_object_unref(store);
-    
+
     column = gtk_tree_view_column_new();
-    gtk_tree_view_column_set_title(column, _("Mailbox"));
 
     renderer = nautilus_cell_renderer_pixbuf_emblem_new();
     g_object_set(renderer, "stock-size", GTK_ICON_SIZE_LARGE_TOOLBAR, NULL);
@@ -343,7 +376,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
-    
+
     MN_LIST_FOREACH(l, mn_shell->mailboxes->list)
       self_append(self, l->data);
     self_update_sensitivity(self);
@@ -352,7 +385,8 @@ class MN:Mailbox:View from Gtk:Tree:View
 			mn_shell->mailboxes,
 			"signal::mailbox-added", self_mailbox_added_h, self,
 			"signal::mailbox-notify::stock-id", self_mailbox_notify_h, self,
-			"signal::mailbox-notify::must-poll", self_mailbox_notify_h, self,
+			"signal::mailbox-notify::poll", self_mailbox_notify_h, self,
+			"swapped-signal::mailbox-notify::poll", self_update_sensitivity, self,
 			"signal::mailbox-notify::format", self_mailbox_notify_h, self,
 			"signal::mailbox-notify::error", self_mailbox_notify_h, self,
 			"signal::mailbox-removed", self_mailbox_removed_h, self,
@@ -387,7 +421,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 
     return cmp;
   }
-  
+
   private gboolean
     search_equal_cb (GtkTreeModel *model,
 		     int column,
@@ -401,7 +435,7 @@ class MN:Mailbox:View from Gtk:Tree:View
     const char *str;
     char *normalized_string;
     char *normalized_key;
-    
+
     /*
      * The stock gtk_tree_view_search_equal_func() only searches the
      * start of the string, using strncmp(). We use strstr(), to
@@ -451,7 +485,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 
     return status;
   }
-  
+
   private void
     append (self, MN:Mailbox *mailbox (check null type))
   {
@@ -462,7 +496,7 @@ class MN:Mailbox:View from Gtk:Tree:View
     gtk_list_store_append(GTK_LIST_STORE(model), &iter);
     self_update_iter(self, &iter, mailbox);
   }
-  
+
   private void
     mailbox_added_h (MNMailboxes *mailboxes,
 		     MNMailbox *mailbox,
@@ -497,12 +531,12 @@ class MN:Mailbox:View from Gtk:Tree:View
     if (self_find_mailbox(self, mailbox, &iter))
       {
 	GtkTreeModel *model;
-	
+
 	model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
 	gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
       }
   }
-  
+
   private void
     update_iter (self,
 		 GtkTreeIter *iter (check null),
@@ -526,7 +560,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 	else
 	  {
 	    status = g_strdup_printf(_("%s mailbox"), mailbox->format);
-	    if (mailbox->must_poll)
+	    if (mn_mailbox_get_poll(mailbox))
 	      emblem_stock_id = MN_STOCK_POLLED;
 	  }
       }
@@ -544,7 +578,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 	    stock_id = GTK_STOCK_EXECUTE;
 	  }
       }
-    
+
     if (! stock_id)
       stock_id = mailbox->stock_id;
 
@@ -553,7 +587,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 				      emblem_stock_id,
 				      GTK_ICON_SIZE_MENU,
 				      NULL);
-    
+
     markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>\n%s",
 				     mailbox->runtime_name,
 				     status);
@@ -593,7 +627,7 @@ class MN:Mailbox:View from Gtk:Tree:View
       {
 	MNMailbox *this_mailbox;
 	gboolean is;
-	
+
 	gtk_tree_model_get(model, &our_iter, COLUMN_MAILBOX, &this_mailbox, -1);
 	is = mailbox == this_mailbox;
 	g_object_unref(this_mailbox);
@@ -614,22 +648,43 @@ class MN:Mailbox:View from Gtk:Tree:View
     update_sensitivity (self)
   {
     GtkTreeSelection *selection;
-    gboolean has_selection;
-    
+    SensitivityInfo info = { FALSE, FALSE };
+
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
-    has_selection = gtk_tree_selection_count_selected_rows(selection) > 0;
+    gtk_tree_selection_selected_foreach(selection, self_update_sensitivity_cb, &info);
 
-    gtk_widget_set_sensitive(selfp->remove_item, has_selection);
-    gtk_widget_set_sensitive(selfp->cut_item, has_selection);
-    gtk_widget_set_sensitive(selfp->copy_item, has_selection);
-    gtk_widget_set_sensitive(selfp->properties_item, has_selection);
+    gtk_widget_set_sensitive(selfp->properties_item, info.has_selection);
+    gtk_widget_set_sensitive(selfp->update_item, info.has_polled);
+    gtk_widget_set_sensitive(selfp->remove_item, info.has_selection);
+    gtk_widget_set_sensitive(selfp->cut_item, info.has_selection);
+    gtk_widget_set_sensitive(selfp->copy_item, info.has_selection);
+  }
+
+  private void
+    update_sensitivity_cb (GtkTreeModel *model,
+			   GtkTreePath *path,
+			   GtkTreeIter *iter,
+			   gpointer data)
+  {
+    SensitivityInfo *info = data;
+
+    info->has_selection = TRUE;
+    if (! info->has_polled)
+      {
+	MNMailbox *mailbox;
+
+	gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
+	if (mn_mailbox_get_poll(mailbox))
+	  info->has_polled = TRUE;
+	g_object_unref(mailbox);
+      }
   }
 
   private void
     remove_mailbox (self)
   {
     GtkTreeSelection *selection;
-    
+
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_selected_foreach(selection, self_remove_mailbox_cb, NULL);
   }
@@ -641,7 +696,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 		       gpointer data)
   {
     MNMailbox *mailbox;
-  
+
     gtk_tree_model_get(model, iter, COLUMN_MAILBOX, &mailbox, -1);
     mn_mailboxes_queue_remove(mn_shell->mailboxes, mailbox);
     g_object_unref(mailbox);
@@ -666,7 +721,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 					 self_get_clipboard_cb,
 					 self_clear_clipboard_cb,
 					 configurations);
-    g_return_if_fail(status == TRUE);
+    g_assert(status == TRUE);
   }
 
   private void
@@ -712,7 +767,7 @@ class MN:Mailbox:View from Gtk:Tree:View
     select_all (self)
   {
     GtkTreeSelection *selection;
-    
+
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
     gtk_tree_selection_select_all(selection);
   }
@@ -729,9 +784,9 @@ class MN:Mailbox:View from Gtk:Tree:View
     else if (response == GTK_RESPONSE_ACCEPT)
       {
 	MNMailbox *mailbox;
-	
+
 	mailbox = mn_mailbox_properties_dialog_get_current_mailbox(MN_MAILBOX_PROPERTIES_DIALOG(dialog));
-	g_return_if_fail(MN_IS_MAILBOX(mailbox));
+	g_assert(MN_IS_MAILBOX(mailbox));
 
 	mn_mailbox_seal(mailbox);
 	mn_mailboxes_add(mn_shell->mailboxes, mailbox);
@@ -740,7 +795,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 	gtk_widget_destroy(GTK_WIDGET(dialog));
       }
   }
-  
+
   private void
     properties_edit_response_h (GtkDialog *dialog,
 				int response,
@@ -756,7 +811,7 @@ class MN:Mailbox:View from Gtk:Tree:View
 	  gtk_widget_destroy(GTK_WIDGET(dialog));
       }
   }
-  
+
   private void
     popup_menu (self, unsigned int button, guint32 activate_time)
   {
@@ -803,7 +858,7 @@ class MN:Mailbox:View from Gtk:Tree:View
   {
     if (event->button == 3)
       self_popup_menu(SELF(widget), event->button, event->time);
-    
+
     return FALSE;			/* propagate event */
   }
 
diff --git a/src/mn-mailbox-view.gob.stamp b/src/mn-mailbox-view.gob.stamp
diff --git a/src/mn-mailbox-view.h b/src/mn-mailbox-view.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -47,12 +47,13 @@ struct _MNMailboxView {
 typedef struct _MNMailboxViewClass MNMailboxViewClass;
 struct _MNMailboxViewClass {
 	GtkTreeViewClass __parent__;
+	/*signal*/void (* activate_update) (MNMailboxView * self);
+	/*signal*/void (* activate_properties) (MNMailboxView * self);
 	/*signal*/void (* activate_add) (MNMailboxView * self);
 	/*signal*/void (* activate_remove) (MNMailboxView * self);
 	/*signal*/void (* activate_cut) (MNMailboxView * self);
 	/*signal*/void (* activate_copy) (MNMailboxView * self);
 	/*signal*/void (* activate_paste) (MNMailboxView * self);
-	/*signal*/void (* activate_properties) (MNMailboxView * self);
 };
 
 
@@ -60,18 +61,25 @@ struct _MNMailboxViewClass {
  * Public methods
  */
 GType	mn_mailbox_view_get_type	(void);
+void 	mn_mailbox_view_activate_update	(MNMailboxView * self);
+void 	mn_mailbox_view_activate_properties	(MNMailboxView * self);
 void 	mn_mailbox_view_activate_add	(MNMailboxView * self);
 void 	mn_mailbox_view_activate_remove	(MNMailboxView * self);
 void 	mn_mailbox_view_activate_cut	(MNMailboxView * self);
 void 	mn_mailbox_view_activate_copy	(MNMailboxView * self);
 void 	mn_mailbox_view_activate_paste	(MNMailboxView * self);
-void 	mn_mailbox_view_activate_properties	(MNMailboxView * self);
 GtkWidget * 	mn_mailbox_view_new	(void);
 
 /*
  * Signal connection wrapper macros
  */
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define mn_mailbox_view_connect__activate_update(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data))
+#define mn_mailbox_view_connect_after__activate_update(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data))
+#define mn_mailbox_view_connect_data__activate_update(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailbox_view_connect__activate_properties(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data))
+#define mn_mailbox_view_connect_after__activate_properties(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data))
+#define mn_mailbox_view_connect_data__activate_properties(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data), (destroy_data), (GConnectFlags)(flags))
 #define mn_mailbox_view_connect__activate_add(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_add",(GCallback) __extension__ ({void (* ___activate_add) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_add; }), (data))
 #define mn_mailbox_view_connect_after__activate_add(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_add",(GCallback) __extension__ ({void (* ___activate_add) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_add; }), (data))
 #define mn_mailbox_view_connect_data__activate_add(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_add",(GCallback) __extension__ ({void (* ___activate_add) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_add; }), (data), (destroy_data), (GConnectFlags)(flags))
@@ -87,10 +95,13 @@ GtkWidget * 	mn_mailbox_view_new	(void);
 #define mn_mailbox_view_connect__activate_paste(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_paste",(GCallback) __extension__ ({void (* ___activate_paste) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_paste; }), (data))
 #define mn_mailbox_view_connect_after__activate_paste(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_paste",(GCallback) __extension__ ({void (* ___activate_paste) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_paste; }), (data))
 #define mn_mailbox_view_connect_data__activate_paste(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_paste",(GCallback) __extension__ ({void (* ___activate_paste) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_paste; }), (data), (destroy_data), (GConnectFlags)(flags))
-#define mn_mailbox_view_connect__activate_properties(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data))
-#define mn_mailbox_view_connect_after__activate_properties(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data))
-#define mn_mailbox_view_connect_data__activate_properties(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(__extension__ ({MNMailboxView *___object = (object); ___object; })),"activate_properties",(GCallback) __extension__ ({void (* ___activate_properties) (MNMailboxView * ___fake___self, gpointer ___data ) = (func); ___activate_properties; }), (data), (destroy_data), (GConnectFlags)(flags))
 #else /* __GNUC__ && !__STRICT_ANSI__ */
+#define mn_mailbox_view_connect__activate_update(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(object),"activate_update",(GCallback)(func),(data))
+#define mn_mailbox_view_connect_after__activate_update(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_update",(GCallback)(func),(data))
+#define mn_mailbox_view_connect_data__activate_update(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_update",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailbox_view_connect__activate_properties(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(object),"activate_properties",(GCallback)(func),(data))
+#define mn_mailbox_view_connect_after__activate_properties(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_properties",(GCallback)(func),(data))
+#define mn_mailbox_view_connect_data__activate_properties(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_properties",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
 #define mn_mailbox_view_connect__activate_add(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(object),"activate_add",(GCallback)(func),(data))
 #define mn_mailbox_view_connect_after__activate_add(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_add",(GCallback)(func),(data))
 #define mn_mailbox_view_connect_data__activate_add(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_add",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
@@ -106,9 +117,6 @@ GtkWidget * 	mn_mailbox_view_new	(void);
 #define mn_mailbox_view_connect__activate_paste(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(object),"activate_paste",(GCallback)(func),(data))
 #define mn_mailbox_view_connect_after__activate_paste(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_paste",(GCallback)(func),(data))
 #define mn_mailbox_view_connect_data__activate_paste(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_paste",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
-#define mn_mailbox_view_connect__activate_properties(object,func,data)	g_signal_connect(MN_MAILBOX_VIEW(object),"activate_properties",(GCallback)(func),(data))
-#define mn_mailbox_view_connect_after__activate_properties(object,func,data)	g_signal_connect_after(MN_MAILBOX_VIEW(object),"activate_properties",(GCallback)(func),(data))
-#define mn_mailbox_view_connect_data__activate_properties(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX_VIEW(object),"activate_properties",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
 
 
diff --git a/src/mn-mailbox.c b/src/mn-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,30 +22,31 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 48 "mn-mailbox.gob"
+#line 51 "mn-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include <libgnomevfs/gnome-vfs.h>
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-system-vfs-mailbox.h"
 #include "mn-custom-vfs-mailbox.h"
 #endif
-#ifdef WITH_POP3
+#if WITH_POP3
 #include "mn-pop3-mailbox.h"
 #endif
-#ifdef WITH_IMAP
+#if WITH_IMAP
 #include "mn-imap-mailbox.h"
 #endif
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
 #include "mn-gmail-mailbox.h"
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
 #include "mn-evolution-mailbox.h"
 #endif
 #include "mn-util.h"
 #include "mn-message.h"
+#include "mn-conf.h"
 
 struct _MNMailboxConfiguration
 {
@@ -57,7 +57,13 @@ struct _MNMailboxConfiguration
 
 GType mn_mailbox_types[MN_MAILBOX_MAX_TYPES + 1];
 
-#line 61 "mn-mailbox.c"
+typedef struct
+{
+  GHashTable	*other;
+  gboolean	changed;
+} CompareMessagesInfo;
+
+#line 67 "mn-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_MAILBOX(x)
 #define SELF_CONST(x) MN_MAILBOX_CONST(x)
@@ -74,20 +80,32 @@ typedef MNMailboxClass 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_init (MNMailbox * o) G_GNUC_UNUSED;
 static void mn_mailbox_class_init (MNMailboxClass * c) G_GNUC_UNUSED;
+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_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 GType mn_mailbox_get_type_from_name (const char * type) 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 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;
 static gboolean mn_mailbox_validate (MNMailbox * self, GError ** err) G_GNUC_UNUSED;
 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
  */
+#define self_connect__added(object,func,data)	mn_mailbox_connect__added((object),(func),(data))
+#define self_connect_after__added(object,func,data)	mn_mailbox_connect_after__added((object),(func),(data))
+#define self_connect_data__added(object,func,data,destroy_data,flags)	mn_mailbox_connect_data__added((object),(func),(data),(destroy_data),(flags))
 #define self_connect__removed(object,func,data)	mn_mailbox_connect__removed((object),(func),(data))
 #define self_connect_after__removed(object,func,data)	mn_mailbox_connect_after__removed((object),(func),(data))
 #define self_connect_data__removed(object,func,data,destroy_data,flags)	mn_mailbox_connect_data__removed((object),(func),(data),(destroy_data),(flags))
@@ -128,6 +146,7 @@ ___marshal_Sig1 (GClosure *closure,
 
 
 enum {
+	ADDED_SIGNAL,
 	REMOVED_SIGNAL,
 	MESSAGES_CHANGED_SIGNAL,
 	LAST_SIGNAL
@@ -138,7 +157,8 @@ enum {
 	PROP_NAME,
 	PROP_STOCK_ID,
 	PROP_FORMAT,
-	PROP_MUST_POLL,
+	PROP_CHECK_DELAY,
+	PROP_POLL,
 	PROP_MESSAGES,
 	PROP_ERROR
 };
@@ -149,19 +169,25 @@ static guint object_signals[LAST_SIGNAL] = {0};
 static GObjectClass *parent_class = NULL;
 
 /* Short form macros */
+#define self_added mn_mailbox_added
 #define self_removed mn_mailbox_removed
 #define self_get_stock_id mn_mailbox_get_stock_id
 #define self_set_stock_id mn_mailbox_set_stock_id
 #define self_get_format mn_mailbox_get_format
 #define self_set_format mn_mailbox_set_format
-#define self_get_must_poll mn_mailbox_get_must_poll
-#define self_set_must_poll mn_mailbox_set_must_poll
+#define self_get_poll mn_mailbox_get_poll
+#define self_set_poll mn_mailbox_set_poll
+#define self_update_check_timeout mn_mailbox_update_check_timeout
 #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_compare_messages mn_mailbox_compare_messages
+#define self_compare_messages_cb mn_mailbox_compare_messages_cb
 #define self_messages_changed mn_mailbox_messages_changed
 #define self_set_error mn_mailbox_set_error
 #define self_init_types mn_mailbox_init_types
 #define self_get_type_from_name mn_mailbox_get_type_from_name
+#define self_notify_display_seen_messages_cb mn_mailbox_notify_display_seen_messages_cb
 #define self_new mn_mailbox_new
 #define self_new_from_xml_node mn_mailbox_new_from_xml_node
 #define self_xml_node_new mn_mailbox_xml_node_new
@@ -171,6 +197,7 @@ static GObjectClass *parent_class = NULL;
 #define self_configuration_free mn_mailbox_configuration_free
 #define self_new_from_obsolete_uri mn_mailbox_new_from_obsolete_uri
 #define self_parse_obsolete_uri mn_mailbox_parse_obsolete_uri
+#define self_check_timeout_cb mn_mailbox_check_timeout_cb
 #define self_validate mn_mailbox_validate
 #define self_seal mn_mailbox_seal
 #define self_parse_uri mn_mailbox_parse_uri
@@ -198,7 +225,7 @@ mn_mailbox_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (G_TYPE_OBJECT, "MNMailbox", &info, (GTypeFlags)0);
+		type = g_type_register_static (G_TYPE_OBJECT, "MNMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -227,37 +254,58 @@ ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::finalize"
 	MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self);
-	if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 96 "mn-mailbox.gob"
+	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 235 "mn-mailbox.c"
-#line 98 "mn-mailbox.gob"
+#line 264 "mn-mailbox.c"
+#line 130 "mn-mailbox.gob"
 	if(self->name) { g_free ((gpointer) self->name); self->name = NULL; }
-#line 238 "mn-mailbox.c"
-#line 110 "mn-mailbox.gob"
+#line 267 "mn-mailbox.c"
+#line 133 "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"
+	if(self->format) { g_free ((gpointer) self->format); self->format = NULL; }
+#line 273 "mn-mailbox.c"
+#line 181 "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"
 	if(self->messages) { mn_g_object_slist_free ((gpointer) self->messages); self->messages = NULL; }
-#line 241 "mn-mailbox.c"
-#line 163 "mn-mailbox.gob"
+#line 279 "mn-mailbox.c"
+#line 203 "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"
 	if(self->error) { g_free ((gpointer) self->error); self->error = NULL; }
-#line 244 "mn-mailbox.c"
+#line 285 "mn-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
 static void 
-mn_mailbox_init (MNMailbox * o G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:Mailbox::init"
-}
-#undef __GOB_FUNCTION__
-static void 
 mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
 
+	g_type_class_add_private(c,sizeof(MNMailboxPrivate));
+#line 51 "mn-mailbox.gob"
+	c->default_check_delay = -1;
+#line 298 "mn-mailbox.c"
+
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
+	object_signals[ADDED_SIGNAL] =
+		g_signal_new ("added",
+			G_TYPE_FROM_CLASS (g_object_class),
+			(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+			G_STRUCT_OFFSET (MNMailboxClass, added),
+			NULL, NULL,
+			g_cclosure_marshal_VOID__VOID,
+			G_TYPE_NONE, 0);
 	object_signals[REMOVED_SIGNAL] =
 		g_signal_new ("removed",
 			G_TYPE_FROM_CLASS (g_object_class),
@@ -276,17 +324,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 160: Type mismatch of \"messages_changed\" signal signature");
+		g_error("mn-mailbox.gob line 326: Type mismatch of \"messages_changed\" signal signature");
 	}
 
-	c->removed = NULL;
+#line 106 "mn-mailbox.gob"
+	c->added = ___real_mn_mailbox_added;
+#line 122 "mn-mailbox.gob"
+	c->removed = ___real_mn_mailbox_removed;
+#line 335 "mn-mailbox.c"
 	c->messages_changed = NULL;
-#line 753 "mn-mailbox.gob"
+#line 415 "mn-mailbox.gob"
+	g_object_class->finalize = ___finalize;
+#line 957 "mn-mailbox.gob"
 	c->seal = ___real_mn_mailbox_seal;
-#line 287 "mn-mailbox.c"
+#line 341 "mn-mailbox.c"
 	c->parse_uri = NULL;
-	c->check = NULL;
-	g_object_class->finalize = ___finalize;
+#line 974 "mn-mailbox.gob"
+	c->check = ___real_mn_mailbox_check;
+#line 345 "mn-mailbox.c"
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
     {
@@ -319,14 +374,25 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
 	g_object_class_install_property (g_object_class,
 		PROP_FORMAT,
 		param_spec);
+	param_spec = g_param_spec_int
+		("check_delay" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 G_MININT /* minimum */,
+		 G_MAXINT /* maximum */,
+		 -1 /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | MN_MAILBOX_PARAM_PERMANENT | G_PARAM_CONSTRUCT));
+	g_object_class_install_property (g_object_class,
+		PROP_CHECK_DELAY,
+		param_spec);
 	param_spec = g_param_spec_boolean
-		("must_poll" /* name */,
+		("poll" /* name */,
 		 NULL /* nick */,
 		 NULL /* blurb */,
-		 TRUE /* default_value */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT));
+		 FALSE /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE));
 	g_object_class_install_property (g_object_class,
-		PROP_MUST_POLL,
+		PROP_POLL,
 		param_spec);
 	param_spec = g_param_spec_pointer
 		("messages" /* name */,
@@ -348,6 +414,25 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
     }
 }
 #undef __GOB_FUNCTION__
+#line 410 "mn-mailbox.gob"
+static void 
+mn_mailbox_init (MNMailbox * self G_GNUC_UNUSED)
+#line 421 "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"
+	self->_priv->poll = TRUE;
+#line 427 "mn-mailbox.c"
+ {
+#line 411 "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"
+ }
+}
+#undef __GOB_FUNCTION__
 
 static void
 ___object_set_property (GObject *object,
@@ -363,70 +448,67 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_NAME:
 		{
-#line 99 "mn-mailbox.gob"
+#line 131 "mn-mailbox.gob"
 { char *old = self->name; self->name = g_value_dup_string (VAL); g_free (old); }
-#line 369 "mn-mailbox.c"
+#line 454 "mn-mailbox.c"
 		}
 		break;
 	case PROP_STOCK_ID:
 		{
-#line 102 "mn-mailbox.gob"
+#line 134 "mn-mailbox.gob"
 { char *old = self->stock_id; self->stock_id = g_value_dup_string (VAL); g_free (old); }
-#line 376 "mn-mailbox.c"
+#line 461 "mn-mailbox.c"
 		}
 		break;
 	case PROP_FORMAT:
 		{
-#line 105 "mn-mailbox.gob"
+#line 137 "mn-mailbox.gob"
 { char *old = self->format; self->format = g_value_dup_string (VAL); g_free (old); }
-#line 383 "mn-mailbox.c"
+#line 468 "mn-mailbox.c"
 		}
 		break;
-	case PROP_MUST_POLL:
+	case PROP_CHECK_DELAY:
 		{
-#line 108 "mn-mailbox.gob"
-self->must_poll = g_value_get_boolean (VAL);
-#line 390 "mn-mailbox.c"
+#line 144 "mn-mailbox.gob"
+self->check_delay = g_value_get_int (VAL);
+#line 475 "mn-mailbox.c"
 		}
 		break;
-	case PROP_MESSAGES:
+	case PROP_POLL:
 		{
-#line 113 "mn-mailbox.gob"
+#line 151 "mn-mailbox.gob"
 
-      GSList *messages;
-      GSList *l;
-      gboolean changed = FALSE;
-      gboolean has_new = FALSE;
+      gboolean new_poll = g_value_get_boolean(VAL);
 
-      messages = g_value_get_pointer(VAL);
-      
-      MN_LIST_FOREACH(l, self->messages)
-	if (! mn_message_slist_find_by_id(messages, l->data))
-	  {
-	    changed = TRUE;
-	    break;
-	  }
-      
-      MN_LIST_FOREACH(l, messages)
-	if (! mn_message_slist_find_by_id(self->messages, l->data))
-	  {
-	    changed = TRUE;
-	    has_new = TRUE;
-	    break;
-	  }
+      /*
+       * We do nothing unless the property has changed, because we do
+       * not want to reset an already existing check timeout.
+       */
+      if (new_poll != selfp->poll)
+	{
+	  selfp->poll = new_poll;
+	  if (selfp->added)
+	    self_update_check_timeout(self);
+	}
+    
+#line 495 "mn-mailbox.c"
+		}
+		break;
+	case PROP_MESSAGES:
+		{
+#line 192 "mn-mailbox.gob"
 
-      mn_g_object_slist_free(self->messages);
-      self->messages = mn_g_object_slist_copy(messages);
+      mn_g_object_slist_free(selfp->unfiltered_messages);
+      selfp->unfiltered_messages = mn_g_object_slist_copy(g_value_get_pointer(VAL));
 
-      if (changed)
-	self_messages_changed(self, has_new);
+      self_filter_messages(self);
     
-#line 425 "mn-mailbox.c"
+#line 507 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 166 "mn-mailbox.gob"
+#line 332 "mn-mailbox.gob"
 
       g_free(self->error);
       self->error = g_value_dup_string(VAL);
@@ -435,7 +517,7 @@ self->must_poll = g_value_get_boolean (VAL);
       if (self->error)
 	self_set_messages(self, NULL);
     
-#line 439 "mn-mailbox.c"
+#line 521 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -464,48 +546,57 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_NAME:
 		{
-#line 99 "mn-mailbox.gob"
+#line 131 "mn-mailbox.gob"
 g_value_set_string (VAL, self->name);
-#line 470 "mn-mailbox.c"
+#line 552 "mn-mailbox.c"
 		}
 		break;
 	case PROP_STOCK_ID:
 		{
-#line 102 "mn-mailbox.gob"
+#line 134 "mn-mailbox.gob"
 g_value_set_string (VAL, self->stock_id);
-#line 477 "mn-mailbox.c"
+#line 559 "mn-mailbox.c"
 		}
 		break;
 	case PROP_FORMAT:
 		{
-#line 105 "mn-mailbox.gob"
+#line 137 "mn-mailbox.gob"
 g_value_set_string (VAL, self->format);
-#line 484 "mn-mailbox.c"
+#line 566 "mn-mailbox.c"
 		}
 		break;
-	case PROP_MUST_POLL:
+	case PROP_CHECK_DELAY:
 		{
-#line 108 "mn-mailbox.gob"
-g_value_set_boolean (VAL, self->must_poll);
-#line 491 "mn-mailbox.c"
+#line 144 "mn-mailbox.gob"
+g_value_set_int (VAL, self->check_delay);
+#line 573 "mn-mailbox.c"
+		}
+		break;
+	case PROP_POLL:
+		{
+#line 166 "mn-mailbox.gob"
+
+      g_value_set_boolean(VAL, selfp->poll);
+    
+#line 582 "mn-mailbox.c"
 		}
 		break;
 	case PROP_MESSAGES:
 		{
-#line 143 "mn-mailbox.gob"
+#line 199 "mn-mailbox.gob"
 
       g_value_set_pointer(VAL, self->messages);
     
-#line 500 "mn-mailbox.c"
+#line 591 "mn-mailbox.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 175 "mn-mailbox.gob"
+#line 341 "mn-mailbox.gob"
 
       g_value_set_string(VAL, self->error);
     
-#line 509 "mn-mailbox.c"
+#line 600 "mn-mailbox.c"
 		}
 		break;
 	default:
@@ -521,6 +612,57 @@ g_value_set_boolean (VAL, self->must_poll);
 #undef __GOB_FUNCTION__
 
 
+/**
+ * mn_mailbox_added:
+ * @self: the object which received the signal
+ *
+ * This signal gets emitted after the mailbox is removed from the
+ * mailboxes list.
+ **/
+#line 106 "mn-mailbox.gob"
+void 
+mn_mailbox_added (MNMailbox * self)
+#line 626 "mn-mailbox.c"
+{
+	GValue ___param_values[1];
+	GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 106 "mn-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 106 "mn-mailbox.gob"
+	g_return_if_fail (MN_IS_MAILBOX (self));
+#line 638 "mn-mailbox.c"
+
+	___param_values[0].g_type = 0;
+	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
+	g_value_set_instance (&___param_values[0], (gpointer) self);
+
+	g_signal_emitv (___param_values,
+		object_signals[ADDED_SIGNAL],
+		0 /* detail */,
+		&___return_val);
+
+	g_value_unset (&___param_values[0]);
+}
+#line 106 "mn-mailbox.gob"
+static void 
+___real_mn_mailbox_added (MNMailbox * self G_GNUC_UNUSED)
+#line 654 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::added"
+{
+#line 108 "mn-mailbox.gob"
+	
+    selfp->added = TRUE;
+
+    self_update_check_timeout(self);
+    self_check(self);
+  }}
+#line 665 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
 
 /**
  * mn_mailbox_removed:
@@ -529,10 +671,10 @@ g_value_set_boolean (VAL, self->must_poll);
  * This signal gets emitted after the mailbox is removed from the
  * mailboxes list.
  **/
-#line 93 "mn-mailbox.gob"
+#line 122 "mn-mailbox.gob"
 void 
 mn_mailbox_removed (MNMailbox * self)
-#line 536 "mn-mailbox.c"
+#line 678 "mn-mailbox.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -540,11 +682,11 @@ mn_mailbox_removed (MNMailbox * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 93 "mn-mailbox.gob"
+#line 122 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 93 "mn-mailbox.gob"
+#line 122 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 548 "mn-mailbox.c"
+#line 690 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -557,115 +699,286 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
+#line 122 "mn-mailbox.gob"
+static void 
+___real_mn_mailbox_removed (MNMailbox * self G_GNUC_UNUSED)
+#line 706 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::removed"
+{
+#line 124 "mn-mailbox.gob"
+	
+    mn_locked_g_source_clear(&selfp->check_timeout_source);
+  }}
+#line 714 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
 
-#line 102 "mn-mailbox.gob"
+#line 134 "mn-mailbox.gob"
 gchar * 
 mn_mailbox_get_stock_id (MNMailbox * self)
-#line 565 "mn-mailbox.c"
+#line 720 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_stock_id"
 {
-#line 102 "mn-mailbox.gob"
+#line 134 "mn-mailbox.gob"
 		gchar* val; g_object_get (G_OBJECT (self), "stock_id", &val, NULL); return val;
 }}
-#line 572 "mn-mailbox.c"
+#line 727 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 102 "mn-mailbox.gob"
+#line 134 "mn-mailbox.gob"
 void 
 mn_mailbox_set_stock_id (MNMailbox * self, gchar * val)
-#line 578 "mn-mailbox.c"
+#line 733 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_stock_id"
 {
-#line 102 "mn-mailbox.gob"
+#line 134 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "stock_id", val, NULL);
 }}
-#line 585 "mn-mailbox.c"
+#line 740 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 105 "mn-mailbox.gob"
+#line 137 "mn-mailbox.gob"
 gchar * 
 mn_mailbox_get_format (MNMailbox * self)
-#line 591 "mn-mailbox.c"
+#line 746 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_format"
 {
-#line 105 "mn-mailbox.gob"
+#line 137 "mn-mailbox.gob"
 		gchar* val; g_object_get (G_OBJECT (self), "format", &val, NULL); return val;
 }}
-#line 598 "mn-mailbox.c"
+#line 753 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 105 "mn-mailbox.gob"
+#line 137 "mn-mailbox.gob"
 void 
 mn_mailbox_set_format (MNMailbox * self, gchar * val)
-#line 604 "mn-mailbox.c"
+#line 759 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_format"
 {
-#line 105 "mn-mailbox.gob"
+#line 137 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "format", val, NULL);
 }}
-#line 611 "mn-mailbox.c"
+#line 766 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 108 "mn-mailbox.gob"
+#line 166 "mn-mailbox.gob"
 gboolean 
-mn_mailbox_get_must_poll (MNMailbox * self)
-#line 617 "mn-mailbox.c"
+mn_mailbox_get_poll (MNMailbox * self)
+#line 772 "mn-mailbox.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox::get_must_poll"
+#define __GOB_FUNCTION__ "MN:Mailbox::get_poll"
 {
-#line 108 "mn-mailbox.gob"
-		gboolean val; g_object_get (G_OBJECT (self), "must_poll", &val, NULL); return val;
+#line 149 "mn-mailbox.gob"
+		gboolean val; g_object_get (G_OBJECT (self), "poll", &val, NULL); return val;
 }}
-#line 624 "mn-mailbox.c"
+#line 779 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 108 "mn-mailbox.gob"
+#line 151 "mn-mailbox.gob"
 void 
-mn_mailbox_set_must_poll (MNMailbox * self, gboolean val)
-#line 630 "mn-mailbox.c"
+mn_mailbox_set_poll (MNMailbox * self, gboolean val)
+#line 785 "mn-mailbox.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailbox::set_must_poll"
+#define __GOB_FUNCTION__ "MN:Mailbox::set_poll"
 {
-#line 108 "mn-mailbox.gob"
-		g_object_set (G_OBJECT (self), "must_poll", val, NULL);
+#line 149 "mn-mailbox.gob"
+		g_object_set (G_OBJECT (self), "poll", val, NULL);
 }}
-#line 637 "mn-mailbox.c"
+#line 792 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 170 "mn-mailbox.gob"
+static void 
+mn_mailbox_update_check_timeout (MNMailbox * self)
+#line 798 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::update_check_timeout"
+#line 170 "mn-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 170 "mn-mailbox.gob"
+	g_return_if_fail (MN_IS_MAILBOX (self));
+#line 805 "mn-mailbox.c"
+{
+#line 172 "mn-mailbox.gob"
+	
+    g_assert(selfp->added == TRUE);
+
+    mn_locked_g_source_clear(&selfp->check_timeout_source);
+    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"
 #undef __GOB_FUNCTION__
 
-#line 143 "mn-mailbox.gob"
+#line 199 "mn-mailbox.gob"
 const GSList * 
 mn_mailbox_get_messages (MNMailbox * self)
-#line 643 "mn-mailbox.c"
+#line 821 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_messages"
 {
-#line 111 "mn-mailbox.gob"
+#line 190 "mn-mailbox.gob"
 		const GSList* val; g_object_get (G_OBJECT (self), "messages", &val, NULL); return val;
 }}
-#line 650 "mn-mailbox.c"
+#line 828 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 113 "mn-mailbox.gob"
+#line 192 "mn-mailbox.gob"
 void 
 mn_mailbox_set_messages (MNMailbox * self, const GSList * val)
-#line 656 "mn-mailbox.c"
+#line 834 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_messages"
 {
-#line 111 "mn-mailbox.gob"
+#line 190 "mn-mailbox.gob"
 		g_object_set (G_OBJECT (self), "messages", val, NULL);
 }}
-#line 663 "mn-mailbox.c"
+#line 841 "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.
+ **/
+#line 213 "mn-mailbox.gob"
+static void 
+mn_mailbox_filter_messages (MNMailbox * self)
+#line 855 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::filter_messages"
+#line 213 "mn-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 213 "mn-mailbox.gob"
+	g_return_if_fail (MN_IS_MAILBOX (self));
+#line 862 "mn-mailbox.c"
+{
+#line 215 "mn-mailbox.gob"
+	
+    gboolean display_seen_mail;
+    GSList *messages = NULL;
+    GHashTable *messages_hash_table;
+    GSList *l;
+    gboolean changed = FALSE;
+    gboolean has_new = FALSE;
+
+    /* filter messages */
+
+    self->n_messages = 0;
+    self->timestamp = 0;
+
+    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);
+
+    MN_LIST_FOREACH(l, selfp->unfiltered_messages)
+      {
+	MNMessage *message = l->data;
+
+	if (display_seen_mail || message->error || (message->flags & MN_MESSAGE_NEW) != 0)
+	  {
+	    self->n_messages++;
+	    if (message->sent_time > self->timestamp)
+	      self->timestamp = message->sent_time;
+
+	    messages = g_slist_prepend(messages, g_object_ref(message));
+	    g_hash_table_replace(messages_hash_table, message->id, message);
+	  }
+      }
+
+    if (! messages)
+      {
+	g_hash_table_destroy(messages_hash_table);
+	messages_hash_table = NULL;
+      }
+
+    /* detect changes */
+
+    if (self_compare_messages(selfp->messages_hash_table, messages_hash_table))
+      changed = TRUE;
+    if (self_compare_messages(messages_hash_table, selfp->messages_hash_table))
+      changed = has_new = TRUE;
+
+    if (self->messages)
+      {
+	mn_g_object_slist_free(self->messages);
+	g_hash_table_destroy(selfp->messages_hash_table);
+      }
+
+    self->messages = messages;
+    selfp->messages_hash_table = messages_hash_table;
+
+    if (changed)
+      self_messages_changed(self, has_new);
+  }}
+#line 921 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+/**
+ * mn_mailbox_compare_messages:
+ * @messages1: a %GHashTable containing %MNMessage objects
+ * @messages2: another %GHashTable containing %MNMessage objects
+ *
+ * Compares @messages1 and @messages2.
+ *
+ * Return value: %TRUE if @messages1 contains messages not present
+ * in @messages2, %FALSE otherwise.
+ **/
+#line 282 "mn-mailbox.gob"
+static gboolean 
+mn_mailbox_compare_messages (GHashTable * messages1, GHashTable * messages2)
+#line 937 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::compare_messages"
+{
+#line 284 "mn-mailbox.gob"
+	
+    if (messages1)
+      {
+	if (messages2)
+	  {
+	    CompareMessagesInfo info;
+
+	    info.other = messages2;
+	    info.changed = FALSE;
+	    g_hash_table_foreach(messages1, (GHFunc) self_compare_messages_cb, &info);
+
+	    return info.changed;
+	  }
+	else
+	  return TRUE;
+      }
+    else
+      return FALSE;
+  }}
+#line 961 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 304 "mn-mailbox.gob"
+static void 
+mn_mailbox_compare_messages_cb (const char * id, MNMessage * message, CompareMessagesInfo * info)
+#line 967 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::compare_messages_cb"
+{
+#line 308 "mn-mailbox.gob"
+	
+    if (! info->changed && ! g_hash_table_lookup(info->other, id))
+      info->changed = TRUE;
+  }}
+#line 976 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 160 "mn-mailbox.gob"
+#line 326 "mn-mailbox.gob"
 static void 
 mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new)
-#line 669 "mn-mailbox.c"
+#line 982 "mn-mailbox.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -673,11 +986,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 160 "mn-mailbox.gob"
+#line 326 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 160 "mn-mailbox.gob"
+#line 326 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 681 "mn-mailbox.c"
+#line 994 "mn-mailbox.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -696,19 +1009,19 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[1]);
 }
 
-#line 179 "mn-mailbox.gob"
+#line 345 "mn-mailbox.gob"
 void 
 mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
-#line 703 "mn-mailbox.c"
+#line 1016 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::set_error"
-#line 179 "mn-mailbox.gob"
+#line 345 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 179 "mn-mailbox.gob"
+#line 345 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 710 "mn-mailbox.c"
+#line 1023 "mn-mailbox.c"
 {
-#line 181 "mn-mailbox.gob"
+#line 347 "mn-mailbox.gob"
 	
     va_list args;
     char *error = NULL;
@@ -719,25 +1032,25 @@ mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
 	error = g_strdup_vprintf(format, args);
 	va_end(args);
       }
-    
+
     g_object_set(G_OBJECT(self), MN_MAILBOX_PROP_ERROR(error), NULL);
     g_free(error);
   }}
-#line 727 "mn-mailbox.c"
+#line 1040 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 196 "mn-mailbox.gob"
+#line 362 "mn-mailbox.gob"
 void 
 mn_mailbox_init_types (void)
-#line 733 "mn-mailbox.c"
+#line 1046 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::init_types"
 {
-#line 198 "mn-mailbox.gob"
+#line 364 "mn-mailbox.gob"
 	
     int i = 0;
 
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     /*
      * MNSystemVFSMailbox must be registered before
      * MNCustomVFSMailbox, because the latter's parse_uri() method
@@ -746,31 +1059,31 @@ mn_mailbox_init_types (void)
     mn_mailbox_types[i++] = MN_TYPE_SYSTEM_VFS_MAILBOX;
     mn_mailbox_types[i++] = MN_TYPE_CUSTOM_VFS_MAILBOX;
 #endif
-#ifdef WITH_POP3
+#if WITH_POP3
     mn_mailbox_types[i++] = MN_TYPE_POP3_MAILBOX;
 #endif
-#ifdef WITH_IMAP
+#if WITH_IMAP
     mn_mailbox_types[i++] = MN_TYPE_IMAP_MAILBOX;
 #endif
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
     mn_mailbox_types[i++] = MN_TYPE_GMAIL_MAILBOX;
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
     mn_mailbox_types[i++] = MN_TYPE_EVOLUTION_MAILBOX;
 #endif
     mn_mailbox_types[i] = 0;
   }}
-#line 764 "mn-mailbox.c"
+#line 1077 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 225 "mn-mailbox.gob"
-static GType 
+#line 391 "mn-mailbox.gob"
+GType 
 mn_mailbox_get_type_from_name (const char * type)
-#line 770 "mn-mailbox.c"
+#line 1083 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_type_from_name"
 {
-#line 227 "mn-mailbox.gob"
+#line 393 "mn-mailbox.gob"
 	
     int i;
 
@@ -779,7 +1092,7 @@ mn_mailbox_get_type_from_name (const char * type)
 	SelfClass *class;
 
 	class = g_type_class_peek(mn_mailbox_types[i]);
-	g_return_val_if_fail(class != NULL, 0);
+	g_assert(class != NULL);
 
 	if (! strcmp(class->type, type))
 	  return mn_mailbox_types[i];
@@ -787,24 +1100,70 @@ mn_mailbox_get_type_from_name (const char * type)
 
     return 0;
   }}
-#line 791 "mn-mailbox.c"
+#line 1104 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 244 "mn-mailbox.gob"
+
+#line 415 "mn-mailbox.gob"
+static void 
+___14_mn_mailbox_finalize (GObject * object G_GNUC_UNUSED)
+#line 1111 "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"
+	
+    Self *self = SELF(object);
+
+    /*
+     * Even though we clear the source in removed(), it might have
+     * been reinstalled afterwards (by a mn_mailbox_set_poll() call
+     * from a check thread, etc).
+     */
+    if (selfp->check_timeout_source)
+      mn_locked_g_source_remove(selfp->check_timeout_source);
+
+    PARENT_HANDLER(object);
+  }}
+#line 1132 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 431 "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"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::notify_display_seen_messages_cb"
+{
+#line 436 "mn-mailbox.gob"
+	
+    Self *self = user_data;
+
+    self_filter_messages(self);
+  }}
+#line 1149 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 442 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new (const char * type, const char * first, ...)
-#line 797 "mn-mailbox.c"
+#line 1155 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new"
+#line 442 "mn-mailbox.gob"
+	g_return_val_if_fail (type != NULL, (MNMailbox * )0);
+#line 1160 "mn-mailbox.c"
 {
-#line 246 "mn-mailbox.gob"
+#line 444 "mn-mailbox.gob"
 	
     va_list args;
     GType type_id;
     GObject *object;
 
-    g_return_val_if_fail(type != NULL, NULL);
-
     type_id = self_get_type_from_name(type);
     if (! type_id)
       return NULL;
@@ -815,17 +1174,20 @@ mn_mailbox_new (const char * type, const char * first, ...)
 
     return SELF(object);
   }}
-#line 819 "mn-mailbox.c"
+#line 1178 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 264 "mn-mailbox.gob"
+#line 460 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err)
-#line 825 "mn-mailbox.c"
+#line 1184 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_xml_node"
+#line 460 "mn-mailbox.gob"
+	g_return_val_if_fail (node != NULL, (MNMailbox * )0);
+#line 1189 "mn-mailbox.c"
 {
-#line 266 "mn-mailbox.gob"
+#line 462 "mn-mailbox.gob"
 	
     char *type;
     Self *self = NULL;
@@ -833,8 +1195,6 @@ mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err)
     unsigned int n_properties;
     int i;
 
-    g_return_val_if_fail(node != NULL, NULL);
-
     type = xmlGetProp(node, "type");
     if (! type)
       {
@@ -869,37 +1229,37 @@ mn_mailbox_new_from_xml_node (xmlNode * node, GError ** err)
 			  g_param_spec_get_name(properties[i]), content, G_VALUE_TYPE_NAME(&value));
 
 	      g_value_unset(&value);
-	      xmlFree(content);
+	      g_free(content);
 	    }
 	}
     g_free(properties);
-    
+
     if (! self_validate(self, err))
       {
 	g_object_unref(self);
 	self = NULL;
       }
-    
+
   end:
     g_free(type);
     return self;
   }}
-#line 888 "mn-mailbox.c"
+#line 1248 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 325 "mn-mailbox.gob"
+#line 519 "mn-mailbox.gob"
 xmlNode * 
 mn_mailbox_xml_node_new (MNMailbox * self)
-#line 894 "mn-mailbox.c"
+#line 1254 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::xml_node_new"
-#line 325 "mn-mailbox.gob"
+#line 519 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (xmlNode * )0);
-#line 325 "mn-mailbox.gob"
+#line 519 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (xmlNode * )0);
-#line 901 "mn-mailbox.c"
+#line 1261 "mn-mailbox.c"
 {
-#line 327 "mn-mailbox.gob"
+#line 521 "mn-mailbox.gob"
 	
     xmlNode *node;
     GParamSpec **properties;
@@ -908,14 +1268,14 @@ mn_mailbox_xml_node_new (MNMailbox * self)
 
     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);
 
@@ -939,7 +1299,7 @@ mn_mailbox_xml_node_new (MNMailbox * self)
 	    }
 	  else
 	    is_default = g_param_value_defaults(properties[i], &value);
-	  
+
 	  if (! is_default)
 	    {
 	      char *str;
@@ -948,27 +1308,27 @@ mn_mailbox_xml_node_new (MNMailbox * self)
 	      xmlSetProp(node, g_param_spec_get_name(properties[i]), str);
 	      g_free(str);
 	    }
-	  
+
 	  g_value_unset(&value);
 	}
     g_free(properties);
 
     return node;
   }}
-#line 959 "mn-mailbox.c"
+#line 1319 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 383 "mn-mailbox.gob"
+#line 577 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_uri (const char * uri)
-#line 965 "mn-mailbox.c"
+#line 1325 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_uri"
-#line 383 "mn-mailbox.gob"
+#line 577 "mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 970 "mn-mailbox.c"
+#line 1330 "mn-mailbox.c"
 {
-#line 385 "mn-mailbox.gob"
+#line 579 "mn-mailbox.gob"
 	
     int i;
 
@@ -977,7 +1337,7 @@ mn_mailbox_new_from_uri (const char * uri)
 	MNMailboxClass *class;
 
 	class = g_type_class_peek(mn_mailbox_types[i]);
-	g_return_val_if_fail(class != NULL, NULL);
+	g_assert(class != NULL);
 
 	if (class->parse_uri)
 	  {
@@ -988,42 +1348,42 @@ mn_mailbox_new_from_uri (const char * uri)
 	      return mailbox;
 	  }
       }
-    
+
     return NULL;
   }}
-#line 995 "mn-mailbox.c"
+#line 1355 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 408 "mn-mailbox.gob"
+#line 602 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_configuration (MNMailboxConfiguration * config)
-#line 1001 "mn-mailbox.c"
+#line 1361 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_configuration"
-#line 408 "mn-mailbox.gob"
+#line 602 "mn-mailbox.gob"
 	g_return_val_if_fail (config != NULL, (MNMailbox * )0);
-#line 1006 "mn-mailbox.c"
+#line 1366 "mn-mailbox.c"
 {
-#line 410 "mn-mailbox.gob"
+#line 604 "mn-mailbox.gob"
 	
     return g_object_newv(config->type, config->n_parameters, config->parameters);
   }}
-#line 1012 "mn-mailbox.c"
+#line 1372 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 414 "mn-mailbox.gob"
+#line 608 "mn-mailbox.gob"
 MNMailboxConfiguration * 
 mn_mailbox_get_configuration (MNMailbox * self)
-#line 1018 "mn-mailbox.c"
+#line 1378 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::get_configuration"
-#line 414 "mn-mailbox.gob"
+#line 608 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxConfiguration * )0);
-#line 414 "mn-mailbox.gob"
+#line 608 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMailboxConfiguration * )0);
-#line 1025 "mn-mailbox.c"
+#line 1385 "mn-mailbox.c"
 {
-#line 416 "mn-mailbox.gob"
+#line 610 "mn-mailbox.gob"
 	
     GObject *object = G_OBJECT(self);
     GArray *parameters;
@@ -1044,7 +1404,7 @@ mn_mailbox_get_configuration (MNMailbox * self)
 
 	  g_value_init(&parameter.value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
 	  g_object_get_property(object, parameter.name, &parameter.value);
-	  
+
 	  g_array_append_val(parameters, parameter);
 	}
     g_free(properties);
@@ -1056,20 +1416,20 @@ mn_mailbox_get_configuration (MNMailbox * self)
 
     return config;
   }}
-#line 1060 "mn-mailbox.c"
+#line 1420 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 449 "mn-mailbox.gob"
+#line 643 "mn-mailbox.gob"
 void 
 mn_mailbox_configuration_free (MNMailboxConfiguration * config)
-#line 1066 "mn-mailbox.c"
+#line 1426 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::configuration_free"
-#line 449 "mn-mailbox.gob"
+#line 643 "mn-mailbox.gob"
 	g_return_if_fail (config != NULL);
-#line 1071 "mn-mailbox.c"
+#line 1431 "mn-mailbox.c"
 {
-#line 451 "mn-mailbox.gob"
+#line 645 "mn-mailbox.gob"
 	
     int i;
 
@@ -1079,20 +1439,20 @@ mn_mailbox_configuration_free (MNMailboxConfiguration * config)
     g_free(config->parameters);
     g_free(config);
   }}
-#line 1083 "mn-mailbox.c"
+#line 1443 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 461 "mn-mailbox.gob"
+#line 655 "mn-mailbox.gob"
 MNMailbox * 
 mn_mailbox_new_from_obsolete_uri (const char * uri)
-#line 1089 "mn-mailbox.c"
+#line 1449 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::new_from_obsolete_uri"
-#line 461 "mn-mailbox.gob"
+#line 655 "mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 1094 "mn-mailbox.c"
+#line 1454 "mn-mailbox.c"
 {
-#line 463 "mn-mailbox.gob"
+#line 657 "mn-mailbox.gob"
 	
     char *real_uri;
     char *scheme;
@@ -1121,23 +1481,23 @@ mn_mailbox_new_from_obsolete_uri (const char * uri)
 	g_object_unref(self);
 	self = NULL;
       }
-    
+
     return self;
   }}
-#line 1128 "mn-mailbox.c"
+#line 1488 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 495 "mn-mailbox.gob"
+#line 689 "mn-mailbox.gob"
 static MNMailbox * 
 mn_mailbox_parse_obsolete_uri (const char * uri)
-#line 1134 "mn-mailbox.c"
+#line 1494 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::parse_obsolete_uri"
-#line 495 "mn-mailbox.gob"
+#line 689 "mn-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 1139 "mn-mailbox.c"
+#line 1499 "mn-mailbox.c"
 {
-#line 497 "mn-mailbox.gob"
+#line 691 "mn-mailbox.gob"
 	
     int len;
     int buflen;
@@ -1194,7 +1554,7 @@ mn_mailbox_parse_obsolete_uri (const char * uri)
        * For backward compatibility with previous versions of Mail
        * Notification, we also support ;auth= (in lowercase).
        */
-      
+
       pat = g_strdup_printf("%%%i[^:]:%%%i[^;];%%*1[aA]%%*1[uU]%%*1[tT]%%*1[hH]=%%%is", len, len, len);
       n = sscanf(auth_buf, pat, username_buf, password_buf, authmech_buf);
       g_free(pat);
@@ -1251,14 +1611,14 @@ mn_mailbox_parse_obsolete_uri (const char * uri)
 	  pat = g_strdup_printf("[%%%i[^]]]:%%u", len);
 	  n = sscanf(hostport_buf, pat, hostname_buf, &_port);
 	  g_free(pat);
-	
+
 	  if (n < 1)
 	    {
 	      pat = g_strdup_printf("%%%i[^:]:%%u", len);
 	      n = sscanf(hostport_buf, pat, hostname_buf, &_port);
 	      g_free(pat);
 	    }
-	
+
 	  if (n == 2)
 	    has_port = TRUE;
 	}
@@ -1273,7 +1633,7 @@ mn_mailbox_parse_obsolete_uri (const char * uri)
       if (has_queries)
 	{
 	  int i;
-	  
+
 	  queries = g_strsplit(queries_buf, "&", 0);
 	  for (i = 0; queries[i]; i++)
 	    {
@@ -1291,7 +1651,7 @@ mn_mailbox_parse_obsolete_uri (const char * uri)
 
     if (! strcmp(scheme, "pop") || ! strcmp(scheme, "pops"))
       {
-#ifdef WITH_POP3
+#if WITH_POP3
 	MNPIMailboxConnectionType connection_type;
 
 	if (queries && eel_g_strv_find(queries, "STLS") != -1)
@@ -1313,7 +1673,7 @@ mn_mailbox_parse_obsolete_uri (const char * uri)
       }
     else if (! strcmp(scheme, "imap") || ! strcmp(scheme, "imaps"))
       {
-#ifdef WITH_IMAP
+#if WITH_IMAP
 	MNPIMailboxConnectionType connection_type;
 
 	if (queries && eel_g_strv_find(queries, "STARTTLS") != -1)
@@ -1334,12 +1694,12 @@ mn_mailbox_parse_obsolete_uri (const char * uri)
 			NULL);
 
 	if (queries && eel_g_strv_find(queries, "noidle") != -1)
-	  g_object_set(G_OBJECT(self), "use-idle-extension", MN_IMAP_MAILBOX_USE_IDLE_NEVER, NULL);
+	  g_object_set(G_OBJECT(self), MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(MN_IMAP_MAILBOX_USE_IDLE_NEVER), NULL);
 #endif
       }
     else if (! strcmp(scheme, "gmail"))
       {
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
 	self = self_new("gmail",
 			"username", username,
 			"password", password,
@@ -1357,22 +1717,40 @@ mn_mailbox_parse_obsolete_uri (const char * uri)
 
     return self;
   }}
-#line 1361 "mn-mailbox.c"
+#line 1721 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 911 "mn-mailbox.gob"
+static gboolean 
+mn_mailbox_check_timeout_cb (gpointer data)
+#line 1727 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::check_timeout_cb"
+{
+#line 913 "mn-mailbox.gob"
+	
+    Self *self = data;
+
+    self_check(self);
+
+    return TRUE;		/* continue */
+  }}
+#line 1739 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 717 "mn-mailbox.gob"
+#line 921 "mn-mailbox.gob"
 static gboolean 
 mn_mailbox_validate (MNMailbox * self, GError ** err)
-#line 1367 "mn-mailbox.c"
+#line 1745 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::validate"
-#line 717 "mn-mailbox.gob"
+#line 921 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 717 "mn-mailbox.gob"
+#line 921 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0);
-#line 1374 "mn-mailbox.c"
+#line 1752 "mn-mailbox.c"
 {
-#line 719 "mn-mailbox.gob"
+#line 923 "mn-mailbox.gob"
 	
     GParamSpec **properties;
     unsigned int n_properties;
@@ -1385,17 +1763,17 @@ mn_mailbox_validate (MNMailbox * self, GError ** err)
 	  GValue value = { 0, };
 	  const char *str;
 	  gboolean is_empty;
-	  
-	  g_return_val_if_fail(G_IS_PARAM_SPEC_STRING(properties[i]), FALSE);
-	  
+
+	  g_assert(G_IS_PARAM_SPEC_STRING(properties[i]));
+
 	  g_value_init(&value, G_TYPE_STRING);
 	  g_object_get_property(G_OBJECT(self), g_param_spec_get_name(properties[i]), &value);
-	  
+
 	  str = g_value_get_string(&value);
 	  is_empty = ! str || ! *str;
-	  
+
 	  g_value_unset(&value);
-	  
+
 	  if (is_empty)
 	    {
 	      g_set_error(err, 0, 0, _("property \"%s\" has no value"), g_param_spec_get_name(properties[i]));
@@ -1406,54 +1784,58 @@ mn_mailbox_validate (MNMailbox * self, GError ** err)
 
     return TRUE;
   }}
-#line 1410 "mn-mailbox.c"
+#line 1788 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 753 "mn-mailbox.gob"
+#line 957 "mn-mailbox.gob"
 void 
 mn_mailbox_seal (MNMailbox * self)
-#line 1416 "mn-mailbox.c"
+#line 1794 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 753 "mn-mailbox.gob"
+#line 957 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 753 "mn-mailbox.gob"
+#line 957 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1423 "mn-mailbox.c"
+#line 1801 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->seal)
 		(*klass->seal)(self);
 }
-#line 753 "mn-mailbox.gob"
+#line 957 "mn-mailbox.gob"
 static void 
 ___real_mn_mailbox_seal (MNMailbox * self G_GNUC_UNUSED)
-#line 1432 "mn-mailbox.c"
+#line 1810 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::seal"
 {
-#line 755 "mn-mailbox.gob"
+#line 959 "mn-mailbox.gob"
 	
     if (self->name)
       {
 	g_free(self->runtime_name);
 	self->runtime_name = g_strdup(self->name);
       }
+
+    self->runtime_check_delay = self->check_delay != -1
+      ? self->check_delay
+      : SELF_GET_CLASS(self)->default_check_delay;
   }}
-#line 1444 "mn-mailbox.c"
+#line 1826 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 763 "mn-mailbox.gob"
+#line 971 "mn-mailbox.gob"
 static MNMailbox * 
 mn_mailbox_parse_uri (MNMailbox * self, const char * uri)
-#line 1450 "mn-mailbox.c"
+#line 1832 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 763 "mn-mailbox.gob"
+#line 971 "mn-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (MNMailbox * )0);
-#line 763 "mn-mailbox.gob"
+#line 971 "mn-mailbox.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (self), (MNMailbox * )0);
-#line 1457 "mn-mailbox.c"
+#line 1839 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->parse_uri)
@@ -1462,42 +1844,55 @@ mn_mailbox_parse_uri (MNMailbox * self, const char * uri)
 		return (MNMailbox * )(0);
 }
 
-#line 766 "mn-mailbox.gob"
+#line 974 "mn-mailbox.gob"
 void 
 mn_mailbox_check (MNMailbox * self)
-#line 1469 "mn-mailbox.c"
+#line 1851 "mn-mailbox.c"
 {
 	MNMailboxClass *klass;
-#line 766 "mn-mailbox.gob"
+#line 974 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 766 "mn-mailbox.gob"
+#line 974 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 1476 "mn-mailbox.c"
+#line 1858 "mn-mailbox.c"
 	klass = MN_MAILBOX_GET_CLASS(self);
 
 	if(klass->check)
 		(*klass->check)(self);
 }
+#line 974 "mn-mailbox.gob"
+static void 
+___real_mn_mailbox_check (MNMailbox * self G_GNUC_UNUSED)
+#line 1867 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::check"
+{
+#line 976 "mn-mailbox.gob"
+	
+    g_assert(selfp->added == TRUE);
+  }}
+#line 1875 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
 
-#line 769 "mn-mailbox.gob"
+#line 980 "mn-mailbox.gob"
 void 
 mn_mailbox_notice (MNMailbox * self, const char * format, ...)
-#line 1486 "mn-mailbox.c"
+#line 1881 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::notice"
-#line 769 "mn-mailbox.gob"
+#line 980 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 769 "mn-mailbox.gob"
+#line 980 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 769 "mn-mailbox.gob"
+#line 980 "mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 1495 "mn-mailbox.c"
+#line 1890 "mn-mailbox.c"
 {
-#line 771 "mn-mailbox.gob"
+#line 982 "mn-mailbox.gob"
 	
     va_list args;
     char *message;
-    
+
     va_start(args, format);
     message = g_strdup_vprintf(format, args);
     va_end(args);
@@ -1505,24 +1900,24 @@ mn_mailbox_notice (MNMailbox * self, const char * format, ...)
     mn_info("%s: %s", self->runtime_name, message);
     g_free(message);
   }}
-#line 1509 "mn-mailbox.c"
+#line 1904 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 783 "mn-mailbox.gob"
+#line 994 "mn-mailbox.gob"
 void 
 mn_mailbox_warning (MNMailbox * self, const char * format, ...)
-#line 1515 "mn-mailbox.c"
+#line 1910 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::warning"
-#line 783 "mn-mailbox.gob"
+#line 994 "mn-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 783 "mn-mailbox.gob"
+#line 994 "mn-mailbox.gob"
 	g_return_if_fail (MN_IS_MAILBOX (self));
-#line 783 "mn-mailbox.gob"
+#line 994 "mn-mailbox.gob"
 	g_return_if_fail (format != NULL);
-#line 1524 "mn-mailbox.c"
+#line 1919 "mn-mailbox.c"
 {
-#line 785 "mn-mailbox.gob"
+#line 996 "mn-mailbox.gob"
 	
     va_list args;
     char *message;
@@ -1534,22 +1929,22 @@ mn_mailbox_warning (MNMailbox * self, const char * format, ...)
     g_warning("%s: %s", self->runtime_name, message);
     g_free(message);
   }}
-#line 1538 "mn-mailbox.c"
+#line 1933 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 797 "mn-mailbox.gob"
+#line 1008 "mn-mailbox.gob"
 static gboolean 
 mn_mailbox_import_string (GValue * value, const char * str)
-#line 1544 "mn-mailbox.c"
+#line 1939 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::import_string"
-#line 797 "mn-mailbox.gob"
+#line 1008 "mn-mailbox.gob"
 	g_return_val_if_fail (value != NULL, (gboolean )0);
-#line 797 "mn-mailbox.gob"
+#line 1008 "mn-mailbox.gob"
 	g_return_val_if_fail (str != NULL, (gboolean )0);
-#line 1551 "mn-mailbox.c"
+#line 1946 "mn-mailbox.c"
 {
-#line 799 "mn-mailbox.gob"
+#line 1010 "mn-mailbox.gob"
 	
     g_return_val_if_fail(G_IS_VALUE(value), FALSE);
 
@@ -1602,20 +1997,20 @@ mn_mailbox_import_string (GValue * value, const char * str)
 
     return TRUE;
   }}
-#line 1606 "mn-mailbox.c"
+#line 2001 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 852 "mn-mailbox.gob"
+#line 1063 "mn-mailbox.gob"
 static char * 
 mn_mailbox_export_string (const GValue * value)
-#line 1612 "mn-mailbox.c"
+#line 2007 "mn-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailbox::export_string"
-#line 852 "mn-mailbox.gob"
+#line 1063 "mn-mailbox.gob"
 	g_return_val_if_fail (value != NULL, (char * )0);
-#line 1617 "mn-mailbox.c"
+#line 2012 "mn-mailbox.c"
 {
-#line 854 "mn-mailbox.gob"
+#line 1065 "mn-mailbox.gob"
 	
     char *str;
 
@@ -1632,7 +2027,7 @@ mn_mailbox_export_string (const GValue * 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_return_val_if_fail(enum_value != NULL, NULL);
+	g_assert(enum_value != NULL);
 
 	str = g_strdup(enum_value->value_nick);
 	g_type_class_unref(enum_class);
@@ -1642,5 +2037,5 @@ mn_mailbox_export_string (const GValue * value)
 
     return str;
   }}
-#line 1646 "mn-mailbox.c"
+#line 2041 "mn-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox.gob b/src/mn-mailbox.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,11 +16,12 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "config.h"
 #include <stdarg.h>
+#include <time.h>
 #include <libxml/tree.h>
 %}
 
@@ -32,6 +33,8 @@ typedef struct _MNMailboxConfiguration MNMailboxConfiguration;
 %}
 
 %privateheader{
+#include "mn-locked-callback.h"
+
 typedef enum
 {
   /* save to mailboxes.xml */
@@ -50,24 +53,25 @@ typedef enum
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include <libgnomevfs/gnome-vfs.h>
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-system-vfs-mailbox.h"
 #include "mn-custom-vfs-mailbox.h"
 #endif
-#ifdef WITH_POP3
+#if WITH_POP3
 #include "mn-pop3-mailbox.h"
 #endif
-#ifdef WITH_IMAP
+#if WITH_IMAP
 #include "mn-imap-mailbox.h"
 #endif
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
 #include "mn-gmail-mailbox.h"
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
 #include "mn-evolution-mailbox.h"
 #endif
 #include "mn-util.h"
 #include "mn-message.h"
+#include "mn-conf.h"
 
 struct _MNMailboxConfiguration
 {
@@ -77,11 +81,36 @@ struct _MNMailboxConfiguration
 };
 
 GType mn_mailbox_types[MN_MAILBOX_MAX_TYPES + 1];
+
+typedef struct
+{
+  GHashTable	*other;
+  gboolean	changed;
+} CompareMessagesInfo;
 %}
 
-class MN:Mailbox from G:Object
+class MN:Mailbox from G:Object (abstract)
 {
   classwide const char *type;
+  classwide int default_check_delay = -1;
+
+  private gboolean added;
+
+  /**
+   * added:
+   * @self: the object which received the signal
+   *
+   * This signal gets emitted after the mailbox is removed from the
+   * mailboxes list.
+   **/
+  signal NONE (NONE)
+    void added (self)
+  {
+    selfp->added = TRUE;
+
+    self_update_check_timeout(self);
+    self_check(self);
+  }
 
   /**
    * removed:
@@ -91,59 +120,196 @@ class MN:Mailbox from G:Object
    * mailboxes list.
    **/
   signal NONE (NONE)
-    void removed (self);
+    void removed (self)
+  {
+    mn_locked_g_source_clear(&selfp->check_timeout_source);
+  }
 
   public char *runtime_name destroywith g_free;
-  
+
   public char *name destroywith g_free;
   property STRING name (link, flags = MN_MAILBOX_PARAM_PERMANENT);
 
-  public char *stock_id;
+  public char *stock_id destroywith g_free;
   property STRING stock_id (link, export);
 
-  public char *format;
+  public char *format destroywith g_free;
   property STRING format (link, export);
 
-  public gboolean must_poll;
-  property BOOLEAN must_poll (default_value = TRUE, link, export, flags = CONSTRUCT);
+  private MNLockedGSource *check_timeout_source;
+
+  public int runtime_check_delay;
+
+  public int check_delay;
+  property INT check_delay (link,
+			    flags = CONSTRUCT | MN_MAILBOX_PARAM_PERMANENT,
+			    default_value = -1);
+
+  private gboolean poll = TRUE;
+  property BOOLEAN poll (export)
+    set
+    {
+      gboolean new_poll = g_value_get_boolean(VAL);
+
+      /*
+       * We do nothing unless the property has changed, because we do
+       * not want to reset an already existing check timeout.
+       */
+      if (new_poll != selfp->poll)
+	{
+	  selfp->poll = new_poll;
+	  if (selfp->added)
+	    self_update_check_timeout(self);
+	}
+    }
+    get
+    {
+      g_value_set_boolean(VAL, selfp->poll);
+    };
+
+  private void
+    update_check_timeout (self)
+  {
+    g_assert(selfp->added == TRUE);
+
+    mn_locked_g_source_clear(&selfp->check_timeout_source);
+    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);
+  }
+
+  /* all unread (unseen and seen) messages */
+  private GSList *unfiltered_messages destroywith mn_g_object_slist_free;
 
+  /* unfiltered_messages after applying the "seen messages" filter */
   public GSList *messages destroywith mn_g_object_slist_free;
+
+  /* for performance: */
+  public unsigned int n_messages;	/* number of messages */
+  public time_t timestamp;		/* timestamp of most recent message */
+
   property POINTER messages (export, type = const GSList *)
     set
     {
-      GSList *messages;
-      GSList *l;
-      gboolean changed = FALSE;
-      gboolean has_new = FALSE;
-
-      messages = g_value_get_pointer(VAL);
-      
-      MN_LIST_FOREACH(l, self->messages)
-	if (! mn_message_slist_find_by_id(messages, l->data))
-	  {
-	    changed = TRUE;
-	    break;
-	  }
-      
-      MN_LIST_FOREACH(l, messages)
-	if (! mn_message_slist_find_by_id(self->messages, l->data))
-	  {
-	    changed = TRUE;
-	    has_new = TRUE;
-	    break;
-	  }
-
-      mn_g_object_slist_free(self->messages);
-      self->messages = mn_g_object_slist_copy(messages);
+      mn_g_object_slist_free(selfp->unfiltered_messages);
+      selfp->unfiltered_messages = mn_g_object_slist_copy(g_value_get_pointer(VAL));
 
-      if (changed)
-	self_messages_changed(self, has_new);
+      self_filter_messages(self);
     }
     get
     {
       g_value_set_pointer(VAL, self->messages);
     };
 
+  private GHashTable *messages_hash_table destroywith g_hash_table_destroy;
+
+  /**
+   * 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.
+   **/
+  private void
+    filter_messages (self)
+  {
+    gboolean display_seen_mail;
+    GSList *messages = NULL;
+    GHashTable *messages_hash_table;
+    GSList *l;
+    gboolean changed = FALSE;
+    gboolean has_new = FALSE;
+
+    /* filter messages */
+
+    self->n_messages = 0;
+    self->timestamp = 0;
+
+    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);
+
+    MN_LIST_FOREACH(l, selfp->unfiltered_messages)
+      {
+	MNMessage *message = l->data;
+
+	if (display_seen_mail || message->error || (message->flags & MN_MESSAGE_NEW) != 0)
+	  {
+	    self->n_messages++;
+	    if (message->sent_time > self->timestamp)
+	      self->timestamp = message->sent_time;
+
+	    messages = g_slist_prepend(messages, g_object_ref(message));
+	    g_hash_table_replace(messages_hash_table, message->id, message);
+	  }
+      }
+
+    if (! messages)
+      {
+	g_hash_table_destroy(messages_hash_table);
+	messages_hash_table = NULL;
+      }
+
+    /* detect changes */
+
+    if (self_compare_messages(selfp->messages_hash_table, messages_hash_table))
+      changed = TRUE;
+    if (self_compare_messages(messages_hash_table, selfp->messages_hash_table))
+      changed = has_new = TRUE;
+
+    if (self->messages)
+      {
+	mn_g_object_slist_free(self->messages);
+	g_hash_table_destroy(selfp->messages_hash_table);
+      }
+
+    self->messages = messages;
+    selfp->messages_hash_table = messages_hash_table;
+
+    if (changed)
+      self_messages_changed(self, has_new);
+  }
+
+  /**
+   * compare_messages:
+   * @messages1: a %GHashTable containing %MNMessage objects
+   * @messages2: another %GHashTable containing %MNMessage objects
+   *
+   * Compares @messages1 and @messages2.
+   *
+   * Return value: %TRUE if @messages1 contains messages not present
+   * in @messages2, %FALSE otherwise.
+   **/
+  private gboolean
+    compare_messages (GHashTable *messages1, GHashTable *messages2)
+  {
+    if (messages1)
+      {
+	if (messages2)
+	  {
+	    CompareMessagesInfo info;
+
+	    info.other = messages2;
+	    info.changed = FALSE;
+	    g_hash_table_foreach(messages1, (GHFunc) self_compare_messages_cb, &info);
+
+	    return info.changed;
+	  }
+	else
+	  return TRUE;
+      }
+    else
+      return FALSE;
+  }
+
+  private void
+    compare_messages_cb (const char *id,
+			 MNMessage *message,
+			 CompareMessagesInfo *info)
+  {
+    if (! info->changed && ! g_hash_table_lookup(info->other, id))
+      info->changed = TRUE;
+  }
+
   /**
    * messages-changed:
    * @self: the object which received the signal
@@ -152,10 +318,10 @@ class MN:Mailbox from G:Object
    * This signal gets emitted whenever the messages property changes.
    *
    * It is considered that the property changes if a new message
-   * appears or if an old message disappears. If an existing message
-   * changes while keeping the same id, this signal is not emitted
-   * (use the "notify::messages" signal if you need notification of
-   * such events).
+   * appears or if an old message disappears. If the contents of an
+   * existing message change but the message keeps the same id, this
+   * signal is not emitted (use the "notify::messages" signal if you
+   * need notification of such events).
    **/
   signal private NONE (BOOLEAN)
     void messages_changed (self, gboolean has_new);
@@ -188,17 +354,17 @@ class MN:Mailbox from G:Object
 	error = g_strdup_vprintf(format, args);
 	va_end(args);
       }
-    
+
     g_object_set(G_OBJECT(self), MN_MAILBOX_PROP_ERROR(error), NULL);
     g_free(error);
   }
-  
+
   public void
     init_types (void)
   {
     int i = 0;
 
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     /*
      * MNSystemVFSMailbox must be registered before
      * MNCustomVFSMailbox, because the latter's parse_uri() method
@@ -207,22 +373,22 @@ class MN:Mailbox from G:Object
     mn_mailbox_types[i++] = MN_TYPE_SYSTEM_VFS_MAILBOX;
     mn_mailbox_types[i++] = MN_TYPE_CUSTOM_VFS_MAILBOX;
 #endif
-#ifdef WITH_POP3
+#if WITH_POP3
     mn_mailbox_types[i++] = MN_TYPE_POP3_MAILBOX;
 #endif
-#ifdef WITH_IMAP
+#if WITH_IMAP
     mn_mailbox_types[i++] = MN_TYPE_IMAP_MAILBOX;
 #endif
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
     mn_mailbox_types[i++] = MN_TYPE_GMAIL_MAILBOX;
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
     mn_mailbox_types[i++] = MN_TYPE_EVOLUTION_MAILBOX;
 #endif
     mn_mailbox_types[i] = 0;
   }
 
-  private GType
+  public GType
     get_type_from_name (const char *type)
   {
     int i;
@@ -232,7 +398,7 @@ class MN:Mailbox from G:Object
 	SelfClass *class;
 
 	class = g_type_class_peek(mn_mailbox_types[i]);
-	g_return_val_if_fail(class != NULL, 0);
+	g_assert(class != NULL);
 
 	if (! strcmp(class->type, type))
 	  return mn_mailbox_types[i];
@@ -241,15 +407,45 @@ class MN:Mailbox from G:Object
     return 0;
   }
 
+  init (self)
+  {
+    mn_g_object_gconf_notification_add_gdk_locked(self, MN_CONF_DISPLAY_SEEN_MAIL, self_notify_display_seen_messages_cb, self);
+  }
+
+  override (G:Object) void
+    finalize (GObject *object)
+  {
+    Self *self = SELF(object);
+
+    /*
+     * Even though we clear the source in removed(), it might have
+     * been reinstalled afterwards (by a mn_mailbox_set_poll() call
+     * from a check thread, etc).
+     */
+    if (selfp->check_timeout_source)
+      mn_locked_g_source_remove(selfp->check_timeout_source);
+
+    PARENT_HANDLER(object);
+  }
+
+  private void
+    notify_display_seen_messages_cb (GConfClient *client,
+				     unsigned int cnxn_id,
+				     GConfEntry *entry,
+				     gpointer user_data)
+  {
+    Self *self = user_data;
+
+    self_filter_messages(self);
+  }
+
   public MNMailbox *
-    new (const char *type, const char *first, ...)
+    new (const char *type (check null), const char *first, ...)
   {
     va_list args;
     GType type_id;
     GObject *object;
 
-    g_return_val_if_fail(type != NULL, NULL);
-
     type_id = self_get_type_from_name(type);
     if (! type_id)
       return NULL;
@@ -260,9 +456,9 @@ class MN:Mailbox from G:Object
 
     return SELF(object);
   }
-  
+
   public MNMailbox *
-    new_from_xml_node (xmlNode *node, GError **err)
+    new_from_xml_node (xmlNode *node (check null), GError **err)
   {
     char *type;
     Self *self = NULL;
@@ -270,8 +466,6 @@ class MN:Mailbox from G:Object
     unsigned int n_properties;
     int i;
 
-    g_return_val_if_fail(node != NULL, NULL);
-
     type = xmlGetProp(node, "type");
     if (! type)
       {
@@ -306,22 +500,22 @@ class MN:Mailbox from G:Object
 			  g_param_spec_get_name(properties[i]), content, G_VALUE_TYPE_NAME(&value));
 
 	      g_value_unset(&value);
-	      xmlFree(content);
+	      g_free(content);
 	    }
 	}
     g_free(properties);
-    
+
     if (! self_validate(self, err))
       {
 	g_object_unref(self);
 	self = NULL;
       }
-    
+
   end:
     g_free(type);
     return self;
   }
-  
+
   public xmlNode *
     xml_node_new (self)
   {
@@ -332,14 +526,14 @@ class MN:Mailbox from G:Object
 
     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);
 
@@ -363,7 +557,7 @@ class MN:Mailbox from G:Object
 	    }
 	  else
 	    is_default = g_param_value_defaults(properties[i], &value);
-	  
+
 	  if (! is_default)
 	    {
 	      char *str;
@@ -372,14 +566,14 @@ class MN:Mailbox from G:Object
 	      xmlSetProp(node, g_param_spec_get_name(properties[i]), str);
 	      g_free(str);
 	    }
-	  
+
 	  g_value_unset(&value);
 	}
     g_free(properties);
 
     return node;
   }
-  
+
   public MNMailbox *
     new_from_uri (const char *uri (check null))
   {
@@ -390,7 +584,7 @@ class MN:Mailbox from G:Object
 	MNMailboxClass *class;
 
 	class = g_type_class_peek(mn_mailbox_types[i]);
-	g_return_val_if_fail(class != NULL, NULL);
+	g_assert(class != NULL);
 
 	if (class->parse_uri)
 	  {
@@ -401,16 +595,16 @@ class MN:Mailbox from G:Object
 	      return mailbox;
 	  }
       }
-    
+
     return NULL;
   }
-  
+
   public MNMailbox *
     new_from_configuration (MNMailboxConfiguration *config (check null))
   {
     return g_object_newv(config->type, config->n_parameters, config->parameters);
   }
-  
+
   public MNMailboxConfiguration *
     get_configuration (self)
   {
@@ -433,7 +627,7 @@ class MN:Mailbox from G:Object
 
 	  g_value_init(&parameter.value, G_PARAM_SPEC_VALUE_TYPE(properties[i]));
 	  g_object_get_property(object, parameter.name, &parameter.value);
-	  
+
 	  g_array_append_val(parameters, parameter);
 	}
     g_free(properties);
@@ -488,10 +682,10 @@ class MN:Mailbox from G:Object
 	g_object_unref(self);
 	self = NULL;
       }
-    
+
     return self;
   }
-  
+
   private MNMailbox *
     parse_obsolete_uri (const char *uri (check null))
   {
@@ -550,7 +744,7 @@ class MN:Mailbox from G:Object
        * For backward compatibility with previous versions of Mail
        * Notification, we also support ;auth= (in lowercase).
        */
-      
+
       pat = g_strdup_printf("%%%i[^:]:%%%i[^;];%%*1[aA]%%*1[uU]%%*1[tT]%%*1[hH]=%%%is", len, len, len);
       n = sscanf(auth_buf, pat, username_buf, password_buf, authmech_buf);
       g_free(pat);
@@ -607,14 +801,14 @@ class MN:Mailbox from G:Object
 	  pat = g_strdup_printf("[%%%i[^]]]:%%u", len);
 	  n = sscanf(hostport_buf, pat, hostname_buf, &_port);
 	  g_free(pat);
-	
+
 	  if (n < 1)
 	    {
 	      pat = g_strdup_printf("%%%i[^:]:%%u", len);
 	      n = sscanf(hostport_buf, pat, hostname_buf, &_port);
 	      g_free(pat);
 	    }
-	
+
 	  if (n == 2)
 	    has_port = TRUE;
 	}
@@ -629,7 +823,7 @@ class MN:Mailbox from G:Object
       if (has_queries)
 	{
 	  int i;
-	  
+
 	  queries = g_strsplit(queries_buf, "&", 0);
 	  for (i = 0; queries[i]; i++)
 	    {
@@ -647,7 +841,7 @@ class MN:Mailbox from G:Object
 
     if (! strcmp(scheme, "pop") || ! strcmp(scheme, "pops"))
       {
-#ifdef WITH_POP3
+#if WITH_POP3
 	MNPIMailboxConnectionType connection_type;
 
 	if (queries && eel_g_strv_find(queries, "STLS") != -1)
@@ -669,7 +863,7 @@ class MN:Mailbox from G:Object
       }
     else if (! strcmp(scheme, "imap") || ! strcmp(scheme, "imaps"))
       {
-#ifdef WITH_IMAP
+#if WITH_IMAP
 	MNPIMailboxConnectionType connection_type;
 
 	if (queries && eel_g_strv_find(queries, "STARTTLS") != -1)
@@ -690,12 +884,12 @@ class MN:Mailbox from G:Object
 			NULL);
 
 	if (queries && eel_g_strv_find(queries, "noidle") != -1)
-	  g_object_set(G_OBJECT(self), "use-idle-extension", MN_IMAP_MAILBOX_USE_IDLE_NEVER, NULL);
+	  g_object_set(G_OBJECT(self), MN_IMAP_MAILBOX_PROP_USE_IDLE_EXTENSION(MN_IMAP_MAILBOX_USE_IDLE_NEVER), NULL);
 #endif
       }
     else if (! strcmp(scheme, "gmail"))
       {
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
 	self = self_new("gmail",
 			"username", username,
 			"password", password,
@@ -713,7 +907,17 @@ class MN:Mailbox from G:Object
 
     return self;
   }
-  
+
+  private gboolean
+    check_timeout_cb (gpointer data)
+  {
+    Self *self = data;
+
+    self_check(self);
+
+    return TRUE;		/* continue */
+  }
+
   private gboolean
     validate (self, GError **err)
   {
@@ -728,17 +932,17 @@ class MN:Mailbox from G:Object
 	  GValue value = { 0, };
 	  const char *str;
 	  gboolean is_empty;
-	  
-	  g_return_val_if_fail(G_IS_PARAM_SPEC_STRING(properties[i]), FALSE);
-	  
+
+	  g_assert(G_IS_PARAM_SPEC_STRING(properties[i]));
+
 	  g_value_init(&value, G_TYPE_STRING);
 	  g_object_get_property(G_OBJECT(self), g_param_spec_get_name(properties[i]), &value);
-	  
+
 	  str = g_value_get_string(&value);
 	  is_empty = ! str || ! *str;
-	  
+
 	  g_value_unset(&value);
-	  
+
 	  if (is_empty)
 	    {
 	      g_set_error(err, 0, 0, _("property \"%s\" has no value"), g_param_spec_get_name(properties[i]));
@@ -749,7 +953,7 @@ class MN:Mailbox from G:Object
 
     return TRUE;
   }
-  
+
   virtual public void
     seal (self)
   {
@@ -758,20 +962,27 @@ class MN:Mailbox from G:Object
 	g_free(self->runtime_name);
 	self->runtime_name = g_strdup(self->name);
       }
+
+    self->runtime_check_delay = self->check_delay != -1
+      ? self->check_delay
+      : SELF_GET_CLASS(self)->default_check_delay;
   }
 
   virtual private MNMailbox *
     parse_uri (self, const char *uri);
 
   virtual public void
-    check (self);
-  
+    check (self)
+  {
+    g_assert(selfp->added == TRUE);
+  }
+
   protected void
     notice (self, const char *format (check null), ...)
   {
     va_list args;
     char *message;
-    
+
     va_start(args, format);
     message = g_strdup_vprintf(format, args);
     va_end(args);
@@ -848,7 +1059,7 @@ class MN:Mailbox from G:Object
 
     return TRUE;
   }
-  
+
   private char *
     export_string (const GValue *value (check null))
   {
@@ -867,7 +1078,7 @@ class MN:Mailbox from G:Object
 
 	enum_class = g_type_class_ref(G_VALUE_TYPE(value));
 	enum_value = g_enum_get_value(enum_class, g_value_get_enum(value));
-	g_return_val_if_fail(enum_value != NULL, NULL);
+	g_assert(enum_value != NULL);
 
 	str = g_strdup(enum_value->value_nick);
 	g_type_class_unref(enum_class);
diff --git a/src/mn-mailbox.gob.stamp b/src/mn-mailbox.gob.stamp
diff --git a/src/mn-mailbox.h b/src/mn-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -6,6 +6,7 @@
 
 #include "config.h"
 #include <stdarg.h>
+#include <time.h>
 #include <libxml/tree.h>
 
 #ifndef __MN_MAILBOX_H__
@@ -34,6 +35,9 @@ typedef struct _MNMailboxConfiguration MNMailboxConfiguration;
 
 #define MN_MAILBOX_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_mailbox_get_type(), MNMailboxClass)
 
+/* Private structure type */
+typedef struct _MNMailboxPrivate MNMailboxPrivate;
+
 /*
  * Main object structure
  */
@@ -48,9 +52,14 @@ struct _MNMailbox {
 	char * name;
 	char * stock_id;
 	char * format;
-	gboolean must_poll;
+	int runtime_check_delay;
+	int check_delay;
 	GSList * messages;
+	unsigned int n_messages;
+	time_t timestamp;
 	char * error;
+	/*< private >*/
+	MNMailboxPrivate *_priv;
 };
 
 /*
@@ -59,12 +68,14 @@ struct _MNMailbox {
 typedef struct _MNMailboxClass MNMailboxClass;
 struct _MNMailboxClass {
 	GObjectClass __parent__;
+	/*signal*/void (* added) (MNMailbox * self);
 	/*signal*/void (* removed) (MNMailbox * self);
 	/*signal*/void (* messages_changed) (MNMailbox * self, gboolean has_new);
 	void (* seal) (MNMailbox * self);
 	MNMailbox * (* parse_uri) (MNMailbox * self, const char * uri);
 	void (* check) (MNMailbox * self);
 	const char * type;
+	int default_check_delay;
 };
 
 
@@ -72,6 +83,7 @@ struct _MNMailboxClass {
  * Public methods
  */
 GType	mn_mailbox_get_type	(void);
+void 	mn_mailbox_added	(MNMailbox * self);
 void 	mn_mailbox_removed	(MNMailbox * self);
 gchar * 	mn_mailbox_get_stock_id	(MNMailbox * self);
 void 	mn_mailbox_set_stock_id	(MNMailbox * self,
@@ -79,13 +91,14 @@ void 	mn_mailbox_set_stock_id	(MNMailbox * self,
 gchar * 	mn_mailbox_get_format	(MNMailbox * self);
 void 	mn_mailbox_set_format	(MNMailbox * self,
 					gchar * val);
-gboolean 	mn_mailbox_get_must_poll	(MNMailbox * self);
-void 	mn_mailbox_set_must_poll	(MNMailbox * self,
+gboolean 	mn_mailbox_get_poll	(MNMailbox * self);
+void 	mn_mailbox_set_poll	(MNMailbox * self,
 					gboolean val);
 const GSList * 	mn_mailbox_get_messages	(MNMailbox * self);
 void 	mn_mailbox_set_messages	(MNMailbox * self,
 					const GSList * val);
 void 	mn_mailbox_init_types	(void);
+GType 	mn_mailbox_get_type_from_name	(const char * type);
 MNMailbox * 	mn_mailbox_new	(const char * type,
 					const char * first,
 					...);
@@ -104,6 +117,9 @@ void 	mn_mailbox_check	(MNMailbox * self);
  * Signal connection wrapper macros
  */
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define mn_mailbox_connect__added(object,func,data)	g_signal_connect(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"added",(GCallback) __extension__ ({void (* ___added) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___added; }), (data))
+#define mn_mailbox_connect_after__added(object,func,data)	g_signal_connect_after(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"added",(GCallback) __extension__ ({void (* ___added) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___added; }), (data))
+#define mn_mailbox_connect_data__added(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"added",(GCallback) __extension__ ({void (* ___added) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___added; }), (data), (destroy_data), (GConnectFlags)(flags))
 #define mn_mailbox_connect__removed(object,func,data)	g_signal_connect(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"removed",(GCallback) __extension__ ({void (* ___removed) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___removed; }), (data))
 #define mn_mailbox_connect_after__removed(object,func,data)	g_signal_connect_after(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"removed",(GCallback) __extension__ ({void (* ___removed) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___removed; }), (data))
 #define mn_mailbox_connect_data__removed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"removed",(GCallback) __extension__ ({void (* ___removed) (MNMailbox * ___fake___self, gpointer ___data ) = (func); ___removed; }), (data), (destroy_data), (GConnectFlags)(flags))
@@ -111,6 +127,9 @@ void 	mn_mailbox_check	(MNMailbox * self);
 #define mn_mailbox_connect_after__messages_changed(object,func,data)	g_signal_connect_after(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data))
 #define mn_mailbox_connect_data__messages_changed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
 #else /* __GNUC__ && !__STRICT_ANSI__ */
+#define mn_mailbox_connect__added(object,func,data)	g_signal_connect(MN_MAILBOX(object),"added",(GCallback)(func),(data))
+#define mn_mailbox_connect_after__added(object,func,data)	g_signal_connect_after(MN_MAILBOX(object),"added",(GCallback)(func),(data))
+#define mn_mailbox_connect_data__added(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX(object),"added",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
 #define mn_mailbox_connect__removed(object,func,data)	g_signal_connect(MN_MAILBOX(object),"removed",(GCallback)(func),(data))
 #define mn_mailbox_connect_after__removed(object,func,data)	g_signal_connect_after(MN_MAILBOX(object),"removed",(GCallback)(func),(data))
 #define mn_mailbox_connect_data__removed(object,func,data,destroy_data,flags)	g_signal_connect_data(MN_MAILBOX(object),"removed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
@@ -130,8 +149,10 @@ void 	mn_mailbox_check	(MNMailbox * self);
 #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;})
 #define MN_MAILBOX_GET_PROP_FORMAT(arg)	"format", __extension__ ({gchar **z = (arg); z;})
-#define MN_MAILBOX_PROP_MUST_POLL(arg)    	"must_poll", __extension__ ({gboolean z = (arg); z;})
-#define MN_MAILBOX_GET_PROP_MUST_POLL(arg)	"must_poll", __extension__ ({gboolean *z = (arg); z;})
+#define MN_MAILBOX_PROP_CHECK_DELAY(arg)    	"check_delay", __extension__ ({gint z = (arg); z;})
+#define MN_MAILBOX_GET_PROP_CHECK_DELAY(arg)	"check_delay", __extension__ ({gint *z = (arg); z;})
+#define MN_MAILBOX_PROP_POLL(arg)    	"poll", __extension__ ({gboolean z = (arg); z;})
+#define MN_MAILBOX_GET_PROP_POLL(arg)	"poll", __extension__ ({gboolean *z = (arg); z;})
 #define MN_MAILBOX_PROP_MESSAGES(arg)    	"messages", __extension__ ({const GSList * z = (arg); z;})
 #define MN_MAILBOX_GET_PROP_MESSAGES(arg)	"messages", __extension__ ({const GSList * *z = (arg); z;})
 #define MN_MAILBOX_PROP_ERROR(arg)    	"error", __extension__ ({gchar *z = (arg); z;})
@@ -143,8 +164,10 @@ void 	mn_mailbox_check	(MNMailbox * self);
 #define MN_MAILBOX_GET_PROP_STOCK_ID(arg)	"stock_id",(gchar **)(arg)
 #define MN_MAILBOX_PROP_FORMAT(arg)    	"format",(gchar *)(arg)
 #define MN_MAILBOX_GET_PROP_FORMAT(arg)	"format",(gchar **)(arg)
-#define MN_MAILBOX_PROP_MUST_POLL(arg)    	"must_poll",(gboolean )(arg)
-#define MN_MAILBOX_GET_PROP_MUST_POLL(arg)	"must_poll",(gboolean *)(arg)
+#define MN_MAILBOX_PROP_CHECK_DELAY(arg)    	"check_delay",(gint )(arg)
+#define MN_MAILBOX_GET_PROP_CHECK_DELAY(arg)	"check_delay",(gint *)(arg)
+#define MN_MAILBOX_PROP_POLL(arg)    	"poll",(gboolean )(arg)
+#define MN_MAILBOX_GET_PROP_POLL(arg)	"poll",(gboolean *)(arg)
 #define MN_MAILBOX_PROP_MESSAGES(arg)    	"messages",(const GSList * )(arg)
 #define MN_MAILBOX_GET_PROP_MESSAGES(arg)	"messages",(const GSList * *)(arg)
 #define MN_MAILBOX_PROP_ERROR(arg)    	"error",(gchar *)(arg)
diff --git a/src/mn-mailboxes-private.h b/src/mn-mailboxes-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MAILBOXES_PRIVATE_H__
 #define __MN_MAILBOXES_PRIVATE_H__
@@ -9,16 +9,20 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 25 "mn-mailboxes.gob"
+
+#include "mn-locked-callback.h"
+
+#line 18 "mn-mailboxes-private.h"
 struct _MNMailboxesPrivate {
-#line 43 "mn-mailboxes.gob"
-	unsigned int timeout_id;
-#line 45 "mn-mailboxes.gob"
+#line 51 "mn-mailboxes.gob"
 	GSList * add_queue;
-#line 46 "mn-mailboxes.gob"
+#line 52 "mn-mailboxes.gob"
 	GSList * remove_queue;
-#line 47 "mn-mailboxes.gob"
-	unsigned int queue_idle_id;
-#line 22 "mn-mailboxes-private.h"
+#line 53 "mn-mailboxes.gob"
+	MNLockedGSource * queue_idle_source;
+#line 26 "mn-mailboxes-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-mailboxes.c b/src/mn-mailboxes.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,21 +22,24 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-mailboxes.gob"
+#line 29 "mn-mailboxes.gob"
 
 #include "config.h"
+#include <stdio.h>
 #include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
 #include <stdarg.h>
+#include <errno.h>
 #include <glib/gi18n.h>
 #include <libxml/parser.h>
 #include <libxml/tree.h>
 #include <eel/eel.h>
 #include "mn-conf.h"
-#include "mn-util.h"
 #include "mn-message.h"
 #include "mn-mailbox-private.h"
 
-#line 41 "mn-mailboxes.c"
+#line 43 "mn-mailboxes.c"
 /* self casting macros */
 #define SELF(x) MN_MAILBOXES(x)
 #define SELF_CONST(x) MN_MAILBOXES_CONST(x)
@@ -61,20 +63,19 @@ static void mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbo
 static void mn_mailboxes_mailbox_notify (MNMailboxes * self, MNMailbox * mailbox, GParamSpec * pspec) G_GNUC_UNUSED;
 static void ___real_mn_mailboxes_list_changed (MNMailboxes * self);
 static void mn_mailboxes_list_changed (MNMailboxes * self) G_GNUC_UNUSED;
+static void ___real_mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new);
 static void mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new) G_GNUC_UNUSED;
+static int mn_mailboxes_messages_sort_cb (MNMessage * a, MNMessage * b) G_GNUC_UNUSED;
 static void mn_mailboxes_error_changed (MNMailboxes * self) G_GNUC_UNUSED;
 static void mn_mailboxes_init (MNMailboxes * self) G_GNUC_UNUSED;
-static void ___9_mn_mailboxes_finalize (GObject * object) G_GNUC_UNUSED;
-static void mn_mailboxes_notify_delay_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
+static void ___a_mn_mailboxes_finalize (GObject * object) G_GNUC_UNUSED;
 static void mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, ...) G_GNUC_UNUSED;
 static gboolean mn_mailboxes_load_real (MNMailboxes * self, GError ** err) G_GNUC_UNUSED;
 static gboolean mn_mailboxes_save_real (MNMailboxes * self, GError ** err) G_GNUC_UNUSED;
 static void mn_mailboxes_mailbox_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mailboxes_mailbox_notify_must_poll_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
-static void mn_mailboxes_install_timeout (MNMailboxes * self) G_GNUC_UNUSED;
-static gboolean mn_mailboxes_timeout_cb (gpointer data) G_GNUC_UNUSED;
+static void mn_mailboxes_mailbox_notify_poll_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
 static void mn_mailboxes_add_real (MNMailboxes * self, MNMailbox * mailbox) G_GNUC_UNUSED;
 static void mn_mailboxes_remove_real (MNMailboxes * self, MNMailbox * mailbox) G_GNUC_UNUSED;
 static gboolean mn_mailboxes_queue_idle_cb (gpointer data) G_GNUC_UNUSED;
@@ -210,7 +211,7 @@ enum {
 
 enum {
 	PROP_0,
-	PROP_MUST_POLL
+	PROP_POLL
 };
 
 static guint object_signals[LAST_SIGNAL] = {0};
@@ -224,9 +225,9 @@ static GObjectClass *parent_class = NULL;
 #define self_mailbox_notify mn_mailboxes_mailbox_notify
 #define self_list_changed mn_mailboxes_list_changed
 #define self_messages_changed mn_mailboxes_messages_changed
+#define self_messages_sort_cb mn_mailboxes_messages_sort_cb
 #define self_error_changed mn_mailboxes_error_changed
-#define self_get_must_poll mn_mailboxes_get_must_poll
-#define self_notify_delay_cb mn_mailboxes_notify_delay_cb
+#define self_get_poll mn_mailboxes_get_poll
 #define self_load mn_mailboxes_load
 #define self_add_error mn_mailboxes_add_error
 #define self_load_real mn_mailboxes_load_real
@@ -235,16 +236,12 @@ static GObjectClass *parent_class = NULL;
 #define self_mailbox_messages_changed_h mn_mailboxes_mailbox_messages_changed_h
 #define self_mailbox_notify_h mn_mailboxes_mailbox_notify_h
 #define self_mailbox_notify_error_h mn_mailboxes_mailbox_notify_error_h
-#define self_mailbox_notify_must_poll_h mn_mailboxes_mailbox_notify_must_poll_h
-#define self_install_timeout mn_mailboxes_install_timeout
-#define self_timeout_cb mn_mailboxes_timeout_cb
+#define self_mailbox_notify_poll_h mn_mailboxes_mailbox_notify_poll_h
 #define self_check mn_mailboxes_check
-#define self_get_messages mn_mailboxes_get_messages
 #define self_add_real mn_mailboxes_add_real
 #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
@@ -298,16 +295,19 @@ ___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 215 "mn-mailboxes.gob"
-	___9_mn_mailboxes_finalize(obj_self);
-#line 304 "mn-mailboxes.c"
-#line 41 "mn-mailboxes.gob"
+#line 247 "mn-mailboxes.gob"
+	___a_mn_mailboxes_finalize(obj_self);
+#line 301 "mn-mailboxes.c"
+#line 48 "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 45 "mn-mailboxes.gob"
+#line 51 "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 46 "mn-mailboxes.gob"
+#line 52 "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"
 }
@@ -333,7 +333,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 56: Type mismatch of \"mailbox_added\" signal signature");
+		g_error("mn-mailboxes.gob line 62: Type mismatch of \"mailbox_added\" signal signature");
 	}
 	object_signals[MAILBOX_REMOVED_SIGNAL] =
 		g_signal_new ("mailbox_removed",
@@ -345,7 +345,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 78: Type mismatch of \"mailbox_removed\" signal signature");
+		g_error("mn-mailboxes.gob line 85: Type mismatch of \"mailbox_removed\" signal signature");
 	}
 	object_signals[MAILBOX_NOTIFY_SIGNAL] =
 		g_signal_new ("mailbox_notify",
@@ -358,7 +358,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 97: Type mismatch of \"mailbox_notify\" signal signature");
+		g_error("mn-mailboxes.gob line 104: Type mismatch of \"mailbox_notify\" signal signature");
 	}
 	object_signals[LIST_CHANGED_SIGNAL] =
 		g_signal_new ("list_changed",
@@ -371,14 +371,14 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 	object_signals[MESSAGES_CHANGED_SIGNAL] =
 		g_signal_new ("messages_changed",
 			G_TYPE_FROM_CLASS (g_object_class),
-			(GSignalFlags)(G_SIGNAL_RUN_LAST),
+			(GSignalFlags)(G_SIGNAL_RUN_FIRST),
 			G_STRUCT_OFFSET (MNMailboxesClass, messages_changed),
 			NULL, NULL,
 			___marshal_Sig3,
 			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 132: Type mismatch of \"messages_changed\" signal signature");
+		g_error("mn-mailboxes.gob line 138: Type mismatch of \"messages_changed\" signal signature");
 	}
 	object_signals[ERROR_CHANGED_SIGNAL] =
 		g_signal_new ("error_changed",
@@ -389,45 +389,46 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
 			g_cclosure_marshal_VOID__VOID,
 			G_TYPE_NONE, 0);
 
-#line 56 "mn-mailboxes.gob"
+#line 62 "mn-mailboxes.gob"
 	c->mailbox_added = ___real_mn_mailboxes_mailbox_added;
-#line 78 "mn-mailboxes.gob"
+#line 85 "mn-mailboxes.gob"
 	c->mailbox_removed = ___real_mn_mailboxes_mailbox_removed;
 #line 397 "mn-mailboxes.c"
 	c->mailbox_notify = NULL;
-#line 110 "mn-mailboxes.gob"
+#line 117 "mn-mailboxes.gob"
 	c->list_changed = ___real_mn_mailboxes_list_changed;
-#line 401 "mn-mailboxes.c"
-	c->messages_changed = NULL;
+#line 138 "mn-mailboxes.gob"
+	c->messages_changed = ___real_mn_mailboxes_messages_changed;
+#line 403 "mn-mailboxes.c"
 	c->error_changed = NULL;
-#line 215 "mn-mailboxes.gob"
+#line 247 "mn-mailboxes.gob"
 	g_object_class->finalize = ___finalize;
-#line 406 "mn-mailboxes.c"
+#line 407 "mn-mailboxes.c"
 	g_object_class->get_property = ___object_get_property;
     {
 	GParamSpec   *param_spec;
 
 	param_spec = g_param_spec_boolean
-		("must_poll" /* name */,
+		("poll" /* name */,
 		 NULL /* nick */,
 		 NULL /* blurb */,
 		 FALSE /* default_value */,
 		 (GParamFlags)(G_PARAM_READABLE));
 	g_object_class_install_property (g_object_class,
-		PROP_MUST_POLL,
+		PROP_POLL,
 		param_spec);
     }
 }
 #undef __GOB_FUNCTION__
-#line 167 "mn-mailboxes.gob"
+#line 194 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
-#line 426 "mn-mailboxes.c"
+#line 427 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAILBOXES,MNMailboxesPrivate);
  {
-#line 168 "mn-mailboxes.gob"
+#line 195 "mn-mailboxes.gob"
 
     char *filename;
     gboolean exists;
@@ -443,6 +444,7 @@ mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
 	GSList *gconf_mailboxes;
 	GSList *l;
 	GSList *invalid_uri_list = NULL;
+	gboolean list_changed = FALSE;
 
 	gconf_mailboxes = eel_gconf_get_string_list(MN_CONF_OBSOLETE_MAILBOXES);
 	MN_LIST_FOREACH(l, gconf_mailboxes)
@@ -454,27 +456,31 @@ mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
 	    if (mailbox)
 	      {
 		mn_mailbox_seal(mailbox);
-		self_queue_add(self, mailbox);
+		self_add_real(self, mailbox);
 		g_object_unref(mailbox);
+
+		list_changed = TRUE;
 	      }
 	    else
 	      invalid_uri_list = g_slist_append(invalid_uri_list, (gpointer) uri);
 	  }
 
+	if (list_changed)
+	  {
+	    self_list_changed(self);
+	    self_save(self);	/* save the imported mailboxes */
+	  }
+
 	if (invalid_uri_list)
 	  {
 	    mn_invalid_uri_list_dialog(NULL, _("An error has occurred while importing old mailboxes"), invalid_uri_list);
 	    g_slist_free(invalid_uri_list);
 	  }
-	
+
 	eel_g_slist_free_deep(gconf_mailboxes);
       }
-
-    self_install_timeout(self);
-
-    mn_conf_notification_add(self, MN_CONF_DELAY_NAMESPACE, self_notify_delay_cb, self);
   
-#line 478 "mn-mailboxes.c"
+#line 484 "mn-mailboxes.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -491,27 +497,27 @@ ___object_get_property (GObject *object,
 	self = MN_MAILBOXES (object);
 
 	switch (property_id) {
-	case PROP_MUST_POLL:
+	case PROP_POLL:
 		{
-#line 149 "mn-mailboxes.gob"
+#line 176 "mn-mailboxes.gob"
 
-      gboolean must_poll = FALSE;
+      gboolean global_poll = FALSE;
       GList *l;
 
       MN_LIST_FOREACH(l, self->list)
 	{
 	  MNMailbox *mailbox = l->data;
 
-	  if (mailbox->must_poll)
+	  if (mn_mailbox_get_poll(mailbox))
 	    {
-	      must_poll = TRUE;
+	      global_poll = TRUE;
 	      break;
 	    }
 	}
 
-      g_value_set_boolean(VAL, must_poll);
+      g_value_set_boolean(VAL, global_poll);
     
-#line 515 "mn-mailboxes.c"
+#line 521 "mn-mailboxes.c"
 		}
 		break;
 	default:
@@ -527,10 +533,10 @@ ___object_get_property (GObject *object,
 #undef __GOB_FUNCTION__
 
 
-#line 56 "mn-mailboxes.gob"
+#line 62 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
-#line 534 "mn-mailboxes.c"
+#line 540 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -538,15 +544,15 @@ mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 56 "mn-mailboxes.gob"
+#line 62 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 56 "mn-mailboxes.gob"
+#line 62 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 56 "mn-mailboxes.gob"
+#line 62 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 56 "mn-mailboxes.gob"
+#line 62 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 550 "mn-mailboxes.c"
+#line 556 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -564,32 +570,33 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 	g_value_unset (&___param_values[1]);
 }
-#line 56 "mn-mailboxes.gob"
+#line 62 "mn-mailboxes.gob"
 static void 
 ___real_mn_mailboxes_mailbox_added (MNMailboxes * self G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 571 "mn-mailboxes.c"
+#line 577 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_added"
 {
-#line 58 "mn-mailboxes.gob"
+#line 64 "mn-mailboxes.gob"
 	
     /* connect signals */
     g_object_connect(mailbox,
 		     "signal::messages-changed", self_mailbox_messages_changed_h, self,
 		     "signal::notify", self_mailbox_notify_h, self,
 		     "signal::notify::error", self_mailbox_notify_error_h, self,
-		     "signal::notify::must-poll", self_mailbox_notify_must_poll_h, self,
+		     "signal::notify::poll", self_mailbox_notify_poll_h, self,
 		     NULL);
 
-    mn_mailbox_check(mailbox);
+    /* emit the "added" signal on the mailbox */
+    mn_mailbox_added(mailbox);
   }}
-#line 587 "mn-mailboxes.c"
+#line 594 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 78 "mn-mailboxes.gob"
+#line 85 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
-#line 593 "mn-mailboxes.c"
+#line 600 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -597,15 +604,15 @@ mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 78 "mn-mailboxes.gob"
+#line 85 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 78 "mn-mailboxes.gob"
+#line 85 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 78 "mn-mailboxes.gob"
+#line 85 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 78 "mn-mailboxes.gob"
+#line 85 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 609 "mn-mailboxes.c"
+#line 616 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -623,21 +630,21 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 	g_value_unset (&___param_values[1]);
 }
-#line 78 "mn-mailboxes.gob"
+#line 85 "mn-mailboxes.gob"
 static void 
 ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self G_GNUC_UNUSED, MNMailbox * mailbox)
-#line 630 "mn-mailboxes.c"
+#line 637 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_removed"
 {
-#line 80 "mn-mailboxes.gob"
+#line 87 "mn-mailboxes.gob"
 	
     /* disconnect signals */
     g_object_disconnect(mailbox,
 			"any-signal", self_mailbox_messages_changed_h, self,
 			"any-signal", self_mailbox_notify_h, self,
 			"any-signal", self_mailbox_notify_error_h, self,
-			"any-signal", self_mailbox_notify_must_poll_h, self,
+			"any-signal", self_mailbox_notify_poll_h, self,
 			NULL);
 
     /* emit the "removed" signal on the mailbox */
@@ -647,13 +654,13 @@ ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self G_GNUC_UNUSED, MNMailbo
     self_messages_changed(self, FALSE);
     self_error_changed(self);
   }}
-#line 651 "mn-mailboxes.c"
+#line 658 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 97 "mn-mailboxes.gob"
+#line 104 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify (MNMailboxes * self, MNMailbox * mailbox, GParamSpec * pspec)
-#line 657 "mn-mailboxes.c"
+#line 664 "mn-mailboxes.c"
 {
 	GValue ___param_values[3];
 	GValue ___return_val;
@@ -661,17 +668,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 97 "mn-mailboxes.gob"
+#line 104 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 97 "mn-mailboxes.gob"
+#line 104 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 97 "mn-mailboxes.gob"
+#line 104 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 97 "mn-mailboxes.gob"
+#line 104 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 97 "mn-mailboxes.gob"
+#line 104 "mn-mailboxes.gob"
 	g_return_if_fail (pspec != NULL);
-#line 675 "mn-mailboxes.c"
+#line 682 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -695,10 +702,10 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[2]);
 }
 
-#line 110 "mn-mailboxes.gob"
+#line 117 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_list_changed (MNMailboxes * self)
-#line 702 "mn-mailboxes.c"
+#line 709 "mn-mailboxes.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -706,11 +713,11 @@ mn_mailboxes_list_changed (MNMailboxes * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 110 "mn-mailboxes.gob"
+#line 117 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 110 "mn-mailboxes.gob"
+#line 117 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 714 "mn-mailboxes.c"
+#line 721 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -723,25 +730,25 @@ memset (&___param_values, 0, sizeof (___param_values));
 
 	g_value_unset (&___param_values[0]);
 }
-#line 110 "mn-mailboxes.gob"
+#line 117 "mn-mailboxes.gob"
 static void 
 ___real_mn_mailboxes_list_changed (MNMailboxes * self G_GNUC_UNUSED)
-#line 730 "mn-mailboxes.c"
+#line 737 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::list_changed"
 {
-#line 112 "mn-mailboxes.gob"
+#line 119 "mn-mailboxes.gob"
 	
-    /* must-poll has possibly changed */
-    g_object_notify(G_OBJECT(self), "must-poll");
+    /* poll has possibly changed */
+    g_object_notify(G_OBJECT(self), "poll");
   }}
-#line 739 "mn-mailboxes.c"
+#line 746 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 132 "mn-mailboxes.gob"
+#line 138 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
-#line 745 "mn-mailboxes.c"
+#line 752 "mn-mailboxes.c"
 {
 	GValue ___param_values[2];
 	GValue ___return_val;
@@ -749,11 +756,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 132 "mn-mailboxes.gob"
+#line 138 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 132 "mn-mailboxes.gob"
+#line 138 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 757 "mn-mailboxes.c"
+#line 764 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -771,11 +778,50 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 	g_value_unset (&___param_values[1]);
 }
+#line 138 "mn-mailboxes.gob"
+static void 
+___real_mn_mailboxes_messages_changed (MNMailboxes * self G_GNUC_UNUSED, gboolean has_new)
+#line 785 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::messages_changed"
+{
+#line 140 "mn-mailboxes.gob"
+	
+    GList *la;
 
-#line 144 "mn-mailboxes.gob"
+    mn_g_object_slist_clear(&self->messages);
+
+    MN_LIST_FOREACH(la, self->list)
+      {
+	MNMailbox *mailbox = la->data;
+	GSList *lb;
+
+	MN_LIST_FOREACH(lb, mailbox->messages)
+	  self->messages = g_slist_insert_sorted(self->messages, g_object_ref(lb->data), (GCompareFunc) self_messages_sort_cb);
+      }
+  }}
+#line 804 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 155 "mn-mailboxes.gob"
+static int 
+mn_mailboxes_messages_sort_cb (MNMessage * a, MNMessage * b)
+#line 810 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::messages_sort_cb"
+{
+#line 157 "mn-mailboxes.gob"
+	
+    /* sort by sent time in descending order */
+    return b->sent_time - a->sent_time;
+  }}
+#line 819 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 171 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_error_changed (MNMailboxes * self)
-#line 779 "mn-mailboxes.c"
+#line 825 "mn-mailboxes.c"
 {
 	GValue ___param_values[1];
 	GValue ___return_val;
@@ -783,11 +829,11 @@ mn_mailboxes_error_changed (MNMailboxes * self)
 memset (&___return_val, 0, sizeof (___return_val));
 memset (&___param_values, 0, sizeof (___param_values));
 
-#line 144 "mn-mailboxes.gob"
+#line 171 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 144 "mn-mailboxes.gob"
+#line 171 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 791 "mn-mailboxes.c"
+#line 837 "mn-mailboxes.c"
 
 	___param_values[0].g_type = 0;
 	g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -801,101 +847,81 @@ memset (&___param_values, 0, sizeof (___param_values));
 	g_value_unset (&___param_values[0]);
 }
 
-#line 149 "mn-mailboxes.gob"
+#line 176 "mn-mailboxes.gob"
 gboolean 
-mn_mailboxes_get_must_poll (MNMailboxes * self)
-#line 808 "mn-mailboxes.c"
+mn_mailboxes_get_poll (MNMailboxes * self)
+#line 854 "mn-mailboxes.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailboxes::get_must_poll"
+#define __GOB_FUNCTION__ "MN:Mailboxes::get_poll"
 {
-#line 147 "mn-mailboxes.gob"
-		gboolean val; g_object_get (G_OBJECT (self), "must_poll", &val, NULL); return val;
+#line 174 "mn-mailboxes.gob"
+		gboolean val; g_object_get (G_OBJECT (self), "poll", &val, NULL); return val;
 }}
-#line 815 "mn-mailboxes.c"
+#line 861 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
 
-#line 215 "mn-mailboxes.gob"
+#line 247 "mn-mailboxes.gob"
 static void 
-___9_mn_mailboxes_finalize (GObject * object G_GNUC_UNUSED)
-#line 822 "mn-mailboxes.c"
+___a_mn_mailboxes_finalize (GObject * object G_GNUC_UNUSED)
+#line 868 "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 217 "mn-mailboxes.gob"
+#line 249 "mn-mailboxes.gob"
 	
     Self *self = SELF(object);
 
-    if (selfp->timeout_id)
-      g_source_remove(selfp->timeout_id);
-    if (selfp->queue_idle_id)
-      g_source_remove(selfp->queue_idle_id);
+    if (selfp->queue_idle_source)
+      mn_locked_g_source_remove(selfp->queue_idle_source);
 
     PARENT_HANDLER(object);
   }}
-#line 840 "mn-mailboxes.c"
+#line 884 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 228 "mn-mailboxes.gob"
-static void 
-mn_mailboxes_notify_delay_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 847 "mn-mailboxes.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailboxes::notify_delay_cb"
-{
-#line 233 "mn-mailboxes.gob"
-	
-    Self *self = user_data;
-
-    GDK_THREADS_ENTER();
-    self_install_timeout(self);
-    GDK_THREADS_LEAVE();
-  }}
-#line 859 "mn-mailboxes.c"
-#undef __GOB_FUNCTION__
-
-#line 241 "mn-mailboxes.gob"
+#line 258 "mn-mailboxes.gob"
 void 
 mn_mailboxes_load (MNMailboxes * self)
-#line 865 "mn-mailboxes.c"
+#line 891 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::load"
-#line 241 "mn-mailboxes.gob"
+#line 258 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 241 "mn-mailboxes.gob"
+#line 258 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 872 "mn-mailboxes.c"
+#line 898 "mn-mailboxes.c"
 {
-#line 243 "mn-mailboxes.gob"
+#line 260 "mn-mailboxes.gob"
 	
     GError *err = NULL;
 
     if (! self_load_real(self, &err))
       {
-	mn_error_dialog(NULL, NULL, NULL, _("Unable to load the mailboxes configuration"), "%s", err->message);
+	mn_error_dialog(NULL, _("Unable to load the mailboxes configuration"), "%s", err->message);
 	g_error_free(err);
       }
   }}
-#line 884 "mn-mailboxes.c"
+#line 910 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 253 "mn-mailboxes.gob"
+#line 270 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, ...)
-#line 890 "mn-mailboxes.c"
+#line 916 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::add_error"
-#line 253 "mn-mailboxes.gob"
+#line 270 "mn-mailboxes.gob"
 	g_return_if_fail (errors != NULL);
-#line 253 "mn-mailboxes.gob"
+#line 270 "mn-mailboxes.gob"
 	g_return_if_fail (n_errors != NULL);
-#line 897 "mn-mailboxes.c"
+#line 923 "mn-mailboxes.c"
 {
-#line 257 "mn-mailboxes.gob"
+#line 274 "mn-mailboxes.gob"
 	
     va_list args;
     char *message;
@@ -914,22 +940,22 @@ mn_mailboxes_add_error (GString ** errors, int * n_errors, const char * format, 
 
     (*n_errors)++;
   }}
-#line 918 "mn-mailboxes.c"
+#line 944 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 276 "mn-mailboxes.gob"
+#line 293 "mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_load_real (MNMailboxes * self, GError ** err)
-#line 924 "mn-mailboxes.c"
+#line 950 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::load_real"
-#line 276 "mn-mailboxes.gob"
+#line 293 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 276 "mn-mailboxes.gob"
+#line 293 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0);
-#line 931 "mn-mailboxes.c"
+#line 957 "mn-mailboxes.c"
 {
-#line 278 "mn-mailboxes.gob"
+#line 295 "mn-mailboxes.gob"
 	
     char *filename;
     xmlDoc *doc;
@@ -947,9 +973,9 @@ mn_mailboxes_load_real (MNMailboxes * self, GError ** err)
     if (! doc)
       {
 	g_set_error(err, 0, 0, _("Unable to parse the XML document."));
-	goto error;
+	return FALSE;
       }
-    
+
     root = xmlDocGetRootElement(doc);
     if (! root)
       {
@@ -970,14 +996,14 @@ mn_mailboxes_load_real (MNMailboxes * self, GError ** err)
 	    {
 	      MNMailbox *mailbox;
 	      GError *tmp_err = NULL;
-	  
+
 	      mailbox = mn_mailbox_new_from_xml_node(node, &tmp_err);
 	      if (mailbox)
 		{
 		  mn_mailbox_seal(mailbox);
 		  self_add_real(self, mailbox);
 		  g_object_unref(mailbox);
-		  
+
 		  list_changed = TRUE;
 		}
 	      else
@@ -996,15 +1022,13 @@ mn_mailboxes_load_real (MNMailboxes * self, GError ** err)
     if (errors)
       {
 	mn_error_dialog(NULL,
-			NULL,
-			NULL,
 			ngettext("An error has occurred while loading the mailboxes configuration",
 				 "Errors have occurred while loading the mailboxes configuration",
 				 n_errors),
 			"%s", errors->str);
 	g_string_free(errors, TRUE);
       }
-    
+
     goto end;
 
   error:
@@ -1015,56 +1039,57 @@ mn_mailboxes_load_real (MNMailboxes * self, GError ** err)
 
     return status;
   }}
-#line 1019 "mn-mailboxes.c"
+#line 1043 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 364 "mn-mailboxes.gob"
+#line 379 "mn-mailboxes.gob"
 void 
 mn_mailboxes_save (MNMailboxes * self)
-#line 1025 "mn-mailboxes.c"
+#line 1049 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::save"
-#line 364 "mn-mailboxes.gob"
+#line 379 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 364 "mn-mailboxes.gob"
+#line 379 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1032 "mn-mailboxes.c"
+#line 1056 "mn-mailboxes.c"
 {
-#line 366 "mn-mailboxes.gob"
+#line 381 "mn-mailboxes.gob"
 	
     GError *err = NULL;
 
     if (! self_save_real(self, &err))
       {
-	mn_error_dialog(NULL, NULL, NULL, _("Unable to save the mailboxes configuration"), "%s", err->message);
+	mn_error_dialog(NULL, _("Unable to save the mailboxes configuration"), "%s", err->message);
 	g_error_free(err);
       }
   }}
-#line 1044 "mn-mailboxes.c"
+#line 1068 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 376 "mn-mailboxes.gob"
+#line 391 "mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_save_real (MNMailboxes * self, GError ** err)
-#line 1050 "mn-mailboxes.c"
+#line 1074 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::save_real"
-#line 376 "mn-mailboxes.gob"
+#line 391 "mn-mailboxes.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 376 "mn-mailboxes.gob"
+#line 391 "mn-mailboxes.gob"
 	g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0);
-#line 1057 "mn-mailboxes.c"
+#line 1081 "mn-mailboxes.c"
 {
-#line 378 "mn-mailboxes.gob"
+#line 393 "mn-mailboxes.gob"
 	
+    int indent;
     xmlDoc *doc;
     xmlNode *root;
-    int indent;
     GList *l;
     char *filename;
     char *tmp_filename;
     char *old_filename;
-    int result;
+    int fd = -1;
+    FILE *f = NULL;
     gboolean old_exists;
     gboolean status = TRUE;
 
@@ -1083,31 +1108,61 @@ mn_mailboxes_save_real (MNMailboxes * self, GError ** err)
 	node = mn_mailbox_xml_node_new(mailbox);
 	xmlAddChild(root, node); /* owns node */
       }
-    
+
     filename = g_build_filename(mn_conf_dot_dir, "mailboxes.xml", NULL);
     tmp_filename = g_strconcat(filename, ".tmp", NULL);
     old_filename = g_strconcat(filename, ".old", NULL);
 
-    result = xmlSaveFormatFile(tmp_filename, doc, 1);
-    xmlFreeDoc(doc);
+    if (g_file_test(tmp_filename, G_FILE_TEST_EXISTS) && unlink(tmp_filename) < 0)
+      {
+	g_set_error(err, 0, 0, _("Unable to remove %s: %s."), tmp_filename, g_strerror(errno));
+	goto error;
+      }
 
-    xmlIndentTreeOutput = indent;
+    /* the file may contain passwords; restrict permissions (600) */
+    fd = open(tmp_filename, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+    if (fd < 0)
+      {
+	g_set_error(err, 0, 0, _("Unable to create %s: %s."), tmp_filename, g_strerror(errno));
+	goto error;
+      }
 
-    if (result < 0)
+    f = fdopen(fd, "w");
+    if (! f)
+      {
+	g_set_error(err, 0, 0, _("Unable to open %s for writing: %s."), tmp_filename, g_strerror(errno));
+	goto error;
+      }
+    fd = -1;			/* now owned by f */
+
+    if (xmlDocFormatDump(f, doc, 1) < 0)
       {
 	g_set_error(err, 0, 0, _("Unable to write the XML document."));
 	goto error;
       }
 
+    if (fclose(f) != 0)
+      {
+	g_set_error(err, 0, 0, _("Unable to close %s: %s."), tmp_filename, g_strerror(errno));
+	goto error;
+      }
+    f = NULL;
+
     old_exists = g_file_test(filename, G_FILE_TEST_EXISTS);
     if (old_exists)
       {
-	if (! mn_rename(filename, old_filename, err))
-	  goto error;
+	if (rename(filename, old_filename) < 0)
+	  {
+	    g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), filename, old_filename, g_strerror(errno));
+	    goto error;
+	  }
       }
 
-    if (! mn_rename(tmp_filename, filename, err))
-      goto error;
+    if (rename(tmp_filename, filename) < 0)
+      {
+	g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), tmp_filename, filename, g_strerror(errno));
+	goto error;
+      }
 
     if (old_exists)
       if (unlink(old_filename) < 0) /* non fatal */
@@ -1119,44 +1174,50 @@ mn_mailboxes_save_real (MNMailboxes * self, GError ** err)
     status = FALSE;
 
   end:
+    xmlFreeDoc(doc);
+    xmlIndentTreeOutput = indent;
+
     g_free(filename);
     g_free(tmp_filename);
     g_free(old_filename);
 
+    if (fd >= 0)
+      close(fd);
+    if (f)
+      fclose(f);
+
     return status;
   }}
-#line 1129 "mn-mailboxes.c"
+#line 1192 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 448 "mn-mailboxes.gob"
+#line 502 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data)
-#line 1135 "mn-mailboxes.c"
+#line 1198 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_messages_changed_h"
 {
-#line 452 "mn-mailboxes.gob"
+#line 506 "mn-mailboxes.gob"
 	
     Self *self = user_data;
-    int n_messages;
 
-    n_messages = g_slist_length(mailbox->messages);
-    mn_info(ngettext("%s has %i new message", "%s has %i new messages", n_messages),
-	    mailbox->runtime_name, n_messages);
-    
+    mn_info(ngettext("%s has %i new message", "%s has %i new messages", mailbox->n_messages),
+	    mailbox->runtime_name, mailbox->n_messages);
+
     self_messages_changed(self, has_new);
   }}
-#line 1150 "mn-mailboxes.c"
+#line 1211 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 463 "mn-mailboxes.gob"
+#line 515 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 1156 "mn-mailboxes.c"
+#line 1217 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_h"
 {
-#line 465 "mn-mailboxes.gob"
+#line 517 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     char *detailed_signal;
@@ -1165,17 +1226,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 1169 "mn-mailboxes.c"
+#line 1230 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 474 "mn-mailboxes.gob"
+#line 526 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 1175 "mn-mailboxes.c"
+#line 1236 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_error_h"
 {
-#line 478 "mn-mailboxes.gob"
+#line 530 "mn-mailboxes.gob"
 	
     Self *self = user_data;
     MNMailbox *mailbox = MN_MAILBOX(object);
@@ -1185,82 +1246,39 @@ mn_mailboxes_mailbox_notify_error_h (GObject * object, GParamSpec * pspec, gpoin
 
     self_error_changed(self);
   }}
-#line 1189 "mn-mailboxes.c"
+#line 1250 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 488 "mn-mailboxes.gob"
+#line 540 "mn-mailboxes.gob"
 static void 
-mn_mailboxes_mailbox_notify_must_poll_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 1195 "mn-mailboxes.c"
+mn_mailboxes_mailbox_notify_poll_h (GObject * object, GParamSpec * pspec, gpointer user_data)
+#line 1256 "mn-mailboxes.c"
 {
-#define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_must_poll_h"
+#define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_notify_poll_h"
 {
-#line 492 "mn-mailboxes.gob"
+#line 544 "mn-mailboxes.gob"
 	
     Self *self = user_data;
 
-    /* must-poll has possibly changed */
-    g_object_notify(G_OBJECT(self), "must-poll");
-  }}
-#line 1206 "mn-mailboxes.c"
-#undef __GOB_FUNCTION__
-
-#line 499 "mn-mailboxes.gob"
-static void 
-mn_mailboxes_install_timeout (MNMailboxes * self)
-#line 1212 "mn-mailboxes.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailboxes::install_timeout"
-#line 499 "mn-mailboxes.gob"
-	g_return_if_fail (self != NULL);
-#line 499 "mn-mailboxes.gob"
-	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1219 "mn-mailboxes.c"
-{
-#line 501 "mn-mailboxes.gob"
-	
-    mn_source_clear(&selfp->timeout_id);
-    selfp->timeout_id = mn_timeout_add(MN_CONF_DELAY_MINUTES,
-				       MN_CONF_DELAY_SECONDS,
-				       self_timeout_cb,
-				       self);
+    /* poll has possibly changed */
+    g_object_notify(G_OBJECT(self), "poll");
   }}
-#line 1229 "mn-mailboxes.c"
+#line 1267 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 509 "mn-mailboxes.gob"
-static gboolean 
-mn_mailboxes_timeout_cb (gpointer data)
-#line 1235 "mn-mailboxes.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailboxes::timeout_cb"
-{
-#line 511 "mn-mailboxes.gob"
-	
-    Self *self = data;
-
-    GDK_THREADS_ENTER();
-    self_check(self);
-    GDK_THREADS_LEAVE();
-    
-    return TRUE;		/* continue */
-  }}
-#line 1249 "mn-mailboxes.c"
-#undef __GOB_FUNCTION__
-
-#line 521 "mn-mailboxes.gob"
+#line 551 "mn-mailboxes.gob"
 void 
 mn_mailboxes_check (MNMailboxes * self)
-#line 1255 "mn-mailboxes.c"
+#line 1273 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::check"
-#line 521 "mn-mailboxes.gob"
+#line 551 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 521 "mn-mailboxes.gob"
+#line 551 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 1262 "mn-mailboxes.c"
+#line 1280 "mn-mailboxes.c"
 {
-#line 523 "mn-mailboxes.gob"
+#line 553 "mn-mailboxes.gob"
 	
     GList *l;
 
@@ -1268,263 +1286,200 @@ mn_mailboxes_check (MNMailboxes * self)
       {
 	MNMailbox *mailbox = l->data;
 
-	if (mailbox->must_poll)
+	if (mn_mailbox_get_poll(mailbox))
 	  mn_mailbox_check(mailbox);
       }
   }}
-#line 1276 "mn-mailboxes.c"
+#line 1294 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 535 "mn-mailboxes.gob"
-GSList * 
-mn_mailboxes_get_messages (MNMailboxes * self)
-#line 1282 "mn-mailboxes.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailboxes::get_messages"
-#line 535 "mn-mailboxes.gob"
-	g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 535 "mn-mailboxes.gob"
-	g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 1289 "mn-mailboxes.c"
-{
-#line 537 "mn-mailboxes.gob"
-	
-    GSList *messages = NULL;
-    GList *l;
-
-    MN_LIST_FOREACH(l, self->list)
-      {
-	MNMailbox *mailbox = l->data;
-	messages = g_slist_concat(messages, mn_g_object_slist_copy(mailbox->messages));
-      }
-
-    messages = mn_message_slist_sort_by_sent_time(messages);
-    messages = g_slist_reverse(messages);
-
-    return messages;
-  }}
-#line 1307 "mn-mailboxes.c"
-#undef __GOB_FUNCTION__
-
-#line 553 "mn-mailboxes.gob"
+#line 565 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_add_real (MNMailboxes * self, MNMailbox * mailbox)
-#line 1313 "mn-mailboxes.c"
+#line 1300 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::add_real"
-#line 553 "mn-mailboxes.gob"
+#line 565 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 553 "mn-mailboxes.gob"
+#line 565 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 553 "mn-mailboxes.gob"
+#line 565 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 553 "mn-mailboxes.gob"
+#line 565 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1324 "mn-mailboxes.c"
+#line 1311 "mn-mailboxes.c"
 {
-#line 555 "mn-mailboxes.gob"
+#line 567 "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 1332 "mn-mailboxes.c"
+#line 1319 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 561 "mn-mailboxes.gob"
+#line 573 "mn-mailboxes.gob"
 void 
 mn_mailboxes_add (MNMailboxes * self, MNMailbox * mailbox)
-#line 1338 "mn-mailboxes.c"
+#line 1325 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::add"
-#line 561 "mn-mailboxes.gob"
+#line 573 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 561 "mn-mailboxes.gob"
+#line 573 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 561 "mn-mailboxes.gob"
+#line 573 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 561 "mn-mailboxes.gob"
+#line 573 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1349 "mn-mailboxes.c"
+#line 1336 "mn-mailboxes.c"
 {
-#line 563 "mn-mailboxes.gob"
+#line 575 "mn-mailboxes.gob"
 	
     self_add_real(self, mailbox);
     self_list_changed(self);
     self_save(self);
   }}
-#line 1357 "mn-mailboxes.c"
+#line 1344 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 569 "mn-mailboxes.gob"
+#line 581 "mn-mailboxes.gob"
 void 
 mn_mailboxes_queue_add (MNMailboxes * self, MNMailbox * mailbox)
-#line 1363 "mn-mailboxes.c"
+#line 1350 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::queue_add"
-#line 569 "mn-mailboxes.gob"
+#line 581 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 569 "mn-mailboxes.gob"
+#line 581 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 569 "mn-mailboxes.gob"
+#line 581 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 569 "mn-mailboxes.gob"
+#line 581 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1374 "mn-mailboxes.c"
+#line 1361 "mn-mailboxes.c"
 {
-#line 571 "mn-mailboxes.gob"
+#line 583 "mn-mailboxes.gob"
 	
     g_object_ref(mailbox);
     selfp->add_queue = g_slist_append(selfp->add_queue, mailbox);
 
-    if (! selfp->queue_idle_id)
-      selfp->queue_idle_id = g_idle_add(self_queue_idle_cb, self);
+    if (! selfp->queue_idle_source)
+      selfp->queue_idle_source = mn_g_idle_add_gdk_locked(self_queue_idle_cb, self);
   }}
-#line 1384 "mn-mailboxes.c"
+#line 1371 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 579 "mn-mailboxes.gob"
+#line 591 "mn-mailboxes.gob"
 static void 
 mn_mailboxes_remove_real (MNMailboxes * self, MNMailbox * mailbox)
-#line 1390 "mn-mailboxes.c"
+#line 1377 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::remove_real"
-#line 579 "mn-mailboxes.gob"
+#line 591 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 579 "mn-mailboxes.gob"
+#line 591 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 579 "mn-mailboxes.gob"
+#line 591 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 579 "mn-mailboxes.gob"
+#line 591 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1401 "mn-mailboxes.c"
+#line 1388 "mn-mailboxes.c"
 {
-#line 581 "mn-mailboxes.gob"
+#line 593 "mn-mailboxes.gob"
 	
     self->list = g_list_remove(self->list, mailbox);
     self_mailbox_removed(self, mailbox);
     g_object_unref(mailbox);
   }}
-#line 1409 "mn-mailboxes.c"
+#line 1396 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 587 "mn-mailboxes.gob"
-void 
-mn_mailboxes_remove (MNMailboxes * self, MNMailbox * mailbox)
-#line 1415 "mn-mailboxes.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailboxes::remove"
-#line 587 "mn-mailboxes.gob"
-	g_return_if_fail (self != NULL);
-#line 587 "mn-mailboxes.gob"
-	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 587 "mn-mailboxes.gob"
-	g_return_if_fail (mailbox != NULL);
-#line 587 "mn-mailboxes.gob"
-	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1426 "mn-mailboxes.c"
-{
-#line 589 "mn-mailboxes.gob"
-	
-    self_remove_real(self, mailbox);
-    self_list_changed(self);
-    self_save(self);
-  }}
-#line 1434 "mn-mailboxes.c"
-#undef __GOB_FUNCTION__
-
-#line 595 "mn-mailboxes.gob"
+#line 599 "mn-mailboxes.gob"
 void 
 mn_mailboxes_queue_remove (MNMailboxes * self, MNMailbox * mailbox)
-#line 1440 "mn-mailboxes.c"
+#line 1402 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::queue_remove"
-#line 595 "mn-mailboxes.gob"
+#line 599 "mn-mailboxes.gob"
 	g_return_if_fail (self != NULL);
-#line 595 "mn-mailboxes.gob"
+#line 599 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 595 "mn-mailboxes.gob"
+#line 599 "mn-mailboxes.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 595 "mn-mailboxes.gob"
+#line 599 "mn-mailboxes.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 1451 "mn-mailboxes.c"
+#line 1413 "mn-mailboxes.c"
 {
-#line 597 "mn-mailboxes.gob"
+#line 601 "mn-mailboxes.gob"
 	
     g_object_ref(mailbox);
     selfp->remove_queue = g_slist_append(selfp->remove_queue, mailbox);
 
-    if (! selfp->queue_idle_id)
-      selfp->queue_idle_id = g_idle_add(self_queue_idle_cb, self);
+    if (! selfp->queue_idle_source)
+      selfp->queue_idle_source = mn_g_idle_add_gdk_locked(self_queue_idle_cb, self);
   }}
-#line 1461 "mn-mailboxes.c"
+#line 1423 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 605 "mn-mailboxes.gob"
+#line 609 "mn-mailboxes.gob"
 static gboolean 
 mn_mailboxes_queue_idle_cb (gpointer data)
-#line 1467 "mn-mailboxes.c"
+#line 1429 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::queue_idle_cb"
 {
-#line 607 "mn-mailboxes.gob"
+#line 611 "mn-mailboxes.gob"
 	
     Self *self = data;
     GSList *l;
 
-    GDK_THREADS_ENTER();
-
     MN_LIST_FOREACH(l, selfp->add_queue)
       self_add_real(self, l->data);
 
-    mn_g_object_slist_free(selfp->add_queue);
-    selfp->add_queue = NULL;
+    mn_g_object_slist_clear(&selfp->add_queue);
 
     MN_LIST_FOREACH(l, selfp->remove_queue)
       self_remove_real(self, l->data);
 
-    mn_g_object_slist_free(selfp->remove_queue);
-    selfp->remove_queue = NULL;
+    mn_g_object_slist_clear(&selfp->remove_queue);
 
     self_list_changed(self);
     self_save(self);
 
-    selfp->queue_idle_id = 0;
-
-    GDK_THREADS_LEAVE();
-
+    selfp->queue_idle_source = NULL;
     return FALSE;		/* remove */
   }}
-#line 1499 "mn-mailboxes.c"
+#line 1454 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 635 "mn-mailboxes.gob"
+#line 632 "mn-mailboxes.gob"
 int 
 mn_mailboxes_compare_by_name_func (gconstpointer a, gconstpointer b)
-#line 1505 "mn-mailboxes.c"
+#line 1460 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::compare_by_name_func"
 {
-#line 637 "mn-mailboxes.gob"
+#line 634 "mn-mailboxes.gob"
 	
     MNMailbox *mailbox_a = (MNMailbox *) a;
     MNMailbox *mailbox_b = (MNMailbox *) b;
 
-    return mn_utf8_strcasecoll(mailbox_a->runtime_name, mailbox_b->runtime_name);
+    return g_utf8_collate(mailbox_a->runtime_name, mailbox_b->runtime_name);
   }}
-#line 1516 "mn-mailboxes.c"
+#line 1471 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
 
-#line 644 "mn-mailboxes.gob"
+#line 641 "mn-mailboxes.gob"
 MNMailboxes * 
 mn_mailboxes_new (void)
-#line 1522 "mn-mailboxes.c"
+#line 1477 "mn-mailboxes.c"
 {
 #define __GOB_FUNCTION__ "MN:Mailboxes::new"
 {
-#line 646 "mn-mailboxes.gob"
+#line 643 "mn-mailboxes.gob"
 	
     return GET_NEW;
   }}
-#line 1530 "mn-mailboxes.c"
+#line 1485 "mn-mailboxes.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-mailboxes.gob b/src/mn-mailboxes.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,22 +16,29 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-mailbox.h"
 %}
 
+%privateheader{
+#include "mn-locked-callback.h"
+%}
+
 %{
 #include "config.h"
+#include <stdio.h>
 #include <unistd.h>
+#include <fcntl.h>
+#include <sys/stat.h>
 #include <stdarg.h>
+#include <errno.h>
 #include <glib/gi18n.h>
 #include <libxml/parser.h>
 #include <libxml/tree.h>
 #include <eel/eel.h>
 #include "mn-conf.h"
-#include "mn-util.h"
 #include "mn-message.h"
 #include "mn-mailbox-private.h"
 %}
@@ -39,13 +46,12 @@ requires 2.0.12
 class MN:Mailboxes from G:Object
 {
   public GList *list destroywith eel_g_object_list_free;
-
-  private unsigned int timeout_id;
+  public GSList *messages destroywith mn_g_object_slist_free;
 
   private GSList *add_queue destroywith mn_g_object_slist_free;
   private GSList *remove_queue destroywith mn_g_object_slist_free;
-  private unsigned int queue_idle_id;
-    
+  private MNLockedGSource *queue_idle_source;
+
   /**
    * mailbox-added:
    * @self: the object which received the signal
@@ -61,12 +67,13 @@ class MN:Mailboxes from G:Object
 		     "signal::messages-changed", self_mailbox_messages_changed_h, self,
 		     "signal::notify", self_mailbox_notify_h, self,
 		     "signal::notify::error", self_mailbox_notify_error_h, self,
-		     "signal::notify::must-poll", self_mailbox_notify_must_poll_h, self,
+		     "signal::notify::poll", self_mailbox_notify_poll_h, self,
 		     NULL);
 
-    mn_mailbox_check(mailbox);
+    /* emit the "added" signal on the mailbox */
+    mn_mailbox_added(mailbox);
   }
-  
+
   /**
    * mailbox-removed:
    * @self: the object which received the signal
@@ -83,7 +90,7 @@ class MN:Mailboxes from G:Object
 			"any-signal", self_mailbox_messages_changed_h, self,
 			"any-signal", self_mailbox_notify_h, self,
 			"any-signal", self_mailbox_notify_error_h, self,
-			"any-signal", self_mailbox_notify_must_poll_h, self,
+			"any-signal", self_mailbox_notify_poll_h, self,
 			NULL);
 
     /* emit the "removed" signal on the mailbox */
@@ -93,7 +100,7 @@ class MN:Mailboxes from G:Object
     self_messages_changed(self, FALSE);
     self_error_changed(self);
   }
-  
+
   signal (DETAILED) private NONE (OBJECT, POINTER)
     void mailbox_notify (self,
 			 MN:Mailbox *mailbox (check null type),
@@ -110,27 +117,47 @@ class MN:Mailboxes from G:Object
   signal first private NONE (NONE)
     void list_changed (self)
   {
-    /* must-poll has possibly changed */
-    g_object_notify(G_OBJECT(self), "must-poll");
+    /* poll has possibly changed */
+    g_object_notify(G_OBJECT(self), "poll");
   }
-  
+
   /**
    * messages-changed:
    * @self: the object which received the signal
    * @has_new: whether a new message has been received or not
    *
-   * This signal gets emitted whenever a call to
-   * mn_mailboxes_get_messages() may possibly lead to a different list
-   * than before the signal emission, either because one of the
-   * mailboxes messages property has changed, or because a mailbox has
-   * been removed from the list.
+   * This signal gets emitted whenever the messages member has
+   * potentially changed, either because one of the mailboxes messages
+   * property has changed, or because a mailbox has been removed from
+   * the list.
    *
-   * Note: messages are only compared by id, therefore two messages
-   * having the same id and different data are not considered
-   * different.
+   * Note: messages are only compared by id (in
+   * mn_mailbox_filter_messages()), therefore two messages having the
+   * same id and different data are not considered different.
    **/
-  signal private NONE (BOOLEAN)
-    void messages_changed (self, gboolean has_new);
+  signal first private NONE (BOOLEAN)
+    void messages_changed (self, gboolean has_new)
+  {
+    GList *la;
+
+    mn_g_object_slist_clear(&self->messages);
+
+    MN_LIST_FOREACH(la, self->list)
+      {
+	MNMailbox *mailbox = la->data;
+	GSList *lb;
+
+	MN_LIST_FOREACH(lb, mailbox->messages)
+	  self->messages = g_slist_insert_sorted(self->messages, g_object_ref(lb->data), (GCompareFunc) self_messages_sort_cb);
+      }
+  }
+
+  private int
+    messages_sort_cb (MNMessage *a, MNMessage *b)
+  {
+    /* sort by sent time in descending order */
+    return b->sent_time - a->sent_time;
+  }
 
   /**
    * error-changed:
@@ -144,24 +171,24 @@ class MN:Mailboxes from G:Object
   signal private NONE (NONE)
     void error_changed (self);
 
-  property BOOLEAN must_poll (export)
+  property BOOLEAN poll (export)
     get
     {
-      gboolean must_poll = FALSE;
+      gboolean global_poll = FALSE;
       GList *l;
 
       MN_LIST_FOREACH(l, self->list)
 	{
 	  MNMailbox *mailbox = l->data;
 
-	  if (mailbox->must_poll)
+	  if (mn_mailbox_get_poll(mailbox))
 	    {
-	      must_poll = TRUE;
+	      global_poll = TRUE;
 	      break;
 	    }
 	}
 
-      g_value_set_boolean(VAL, must_poll);
+      g_value_set_boolean(VAL, global_poll);
     };
 
   init (self)
@@ -180,6 +207,7 @@ class MN:Mailboxes from G:Object
 	GSList *gconf_mailboxes;
 	GSList *l;
 	GSList *invalid_uri_list = NULL;
+	gboolean list_changed = FALSE;
 
 	gconf_mailboxes = eel_gconf_get_string_list(MN_CONF_OBSOLETE_MAILBOXES);
 	MN_LIST_FOREACH(l, gconf_mailboxes)
@@ -191,53 +219,42 @@ class MN:Mailboxes from G:Object
 	    if (mailbox)
 	      {
 		mn_mailbox_seal(mailbox);
-		self_queue_add(self, mailbox);
+		self_add_real(self, mailbox);
 		g_object_unref(mailbox);
+
+		list_changed = TRUE;
 	      }
 	    else
 	      invalid_uri_list = g_slist_append(invalid_uri_list, (gpointer) uri);
 	  }
 
+	if (list_changed)
+	  {
+	    self_list_changed(self);
+	    self_save(self);	/* save the imported mailboxes */
+	  }
+
 	if (invalid_uri_list)
 	  {
 	    mn_invalid_uri_list_dialog(NULL, _("An error has occurred while importing old mailboxes"), invalid_uri_list);
 	    g_slist_free(invalid_uri_list);
 	  }
-	
+
 	eel_g_slist_free_deep(gconf_mailboxes);
       }
-
-    self_install_timeout(self);
-
-    mn_conf_notification_add(self, MN_CONF_DELAY_NAMESPACE, self_notify_delay_cb, self);
   }
-  
+
   override (G:Object) void
     finalize (GObject *object)
   {
     Self *self = SELF(object);
 
-    if (selfp->timeout_id)
-      g_source_remove(selfp->timeout_id);
-    if (selfp->queue_idle_id)
-      g_source_remove(selfp->queue_idle_id);
+    if (selfp->queue_idle_source)
+      mn_locked_g_source_remove(selfp->queue_idle_source);
 
     PARENT_HANDLER(object);
   }
 
-  private void
-    notify_delay_cb (GConfClient *client,
-		     unsigned int cnxn_id,
-		     GConfEntry *entry,
-		     gpointer user_data)
-  {
-    Self *self = user_data;
-
-    GDK_THREADS_ENTER();
-    self_install_timeout(self);
-    GDK_THREADS_LEAVE();
-  }
-
   public void
     load (self)
   {
@@ -245,11 +262,11 @@ class MN:Mailboxes from G:Object
 
     if (! self_load_real(self, &err))
       {
-	mn_error_dialog(NULL, NULL, NULL, _("Unable to load the mailboxes configuration"), "%s", err->message);
+	mn_error_dialog(NULL, _("Unable to load the mailboxes configuration"), "%s", err->message);
 	g_error_free(err);
       }
   }
-  
+
   private void
     add_error (GString **errors (check null),
 	       int *n_errors (check null),
@@ -272,7 +289,7 @@ class MN:Mailboxes from G:Object
 
     (*n_errors)++;
   }
-  
+
   private gboolean
     load_real (self, GError **err)
   {
@@ -292,9 +309,9 @@ class MN:Mailboxes from G:Object
     if (! doc)
       {
 	g_set_error(err, 0, 0, _("Unable to parse the XML document."));
-	goto error;
+	return FALSE;
       }
-    
+
     root = xmlDocGetRootElement(doc);
     if (! root)
       {
@@ -315,14 +332,14 @@ class MN:Mailboxes from G:Object
 	    {
 	      MNMailbox *mailbox;
 	      GError *tmp_err = NULL;
-	  
+
 	      mailbox = mn_mailbox_new_from_xml_node(node, &tmp_err);
 	      if (mailbox)
 		{
 		  mn_mailbox_seal(mailbox);
 		  self_add_real(self, mailbox);
 		  g_object_unref(mailbox);
-		  
+
 		  list_changed = TRUE;
 		}
 	      else
@@ -341,15 +358,13 @@ class MN:Mailboxes from G:Object
     if (errors)
       {
 	mn_error_dialog(NULL,
-			NULL,
-			NULL,
 			ngettext("An error has occurred while loading the mailboxes configuration",
 				 "Errors have occurred while loading the mailboxes configuration",
 				 n_errors),
 			"%s", errors->str);
 	g_string_free(errors, TRUE);
       }
-    
+
     goto end;
 
   error:
@@ -368,22 +383,23 @@ class MN:Mailboxes from G:Object
 
     if (! self_save_real(self, &err))
       {
-	mn_error_dialog(NULL, NULL, NULL, _("Unable to save the mailboxes configuration"), "%s", err->message);
+	mn_error_dialog(NULL, _("Unable to save the mailboxes configuration"), "%s", err->message);
 	g_error_free(err);
       }
   }
-  
+
   private gboolean
     save_real (self, GError **err)
   {
+    int indent;
     xmlDoc *doc;
     xmlNode *root;
-    int indent;
     GList *l;
     char *filename;
     char *tmp_filename;
     char *old_filename;
-    int result;
+    int fd = -1;
+    FILE *f = NULL;
     gboolean old_exists;
     gboolean status = TRUE;
 
@@ -402,31 +418,61 @@ class MN:Mailboxes from G:Object
 	node = mn_mailbox_xml_node_new(mailbox);
 	xmlAddChild(root, node); /* owns node */
       }
-    
+
     filename = g_build_filename(mn_conf_dot_dir, "mailboxes.xml", NULL);
     tmp_filename = g_strconcat(filename, ".tmp", NULL);
     old_filename = g_strconcat(filename, ".old", NULL);
 
-    result = xmlSaveFormatFile(tmp_filename, doc, 1);
-    xmlFreeDoc(doc);
+    if (g_file_test(tmp_filename, G_FILE_TEST_EXISTS) && unlink(tmp_filename) < 0)
+      {
+	g_set_error(err, 0, 0, _("Unable to remove %s: %s."), tmp_filename, g_strerror(errno));
+	goto error;
+      }
 
-    xmlIndentTreeOutput = indent;
+    /* the file may contain passwords; restrict permissions (600) */
+    fd = open(tmp_filename, O_WRONLY | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+    if (fd < 0)
+      {
+	g_set_error(err, 0, 0, _("Unable to create %s: %s."), tmp_filename, g_strerror(errno));
+	goto error;
+      }
 
-    if (result < 0)
+    f = fdopen(fd, "w");
+    if (! f)
+      {
+	g_set_error(err, 0, 0, _("Unable to open %s for writing: %s."), tmp_filename, g_strerror(errno));
+	goto error;
+      }
+    fd = -1;			/* now owned by f */
+
+    if (xmlDocFormatDump(f, doc, 1) < 0)
       {
 	g_set_error(err, 0, 0, _("Unable to write the XML document."));
 	goto error;
       }
 
+    if (fclose(f) != 0)
+      {
+	g_set_error(err, 0, 0, _("Unable to close %s: %s."), tmp_filename, g_strerror(errno));
+	goto error;
+      }
+    f = NULL;
+
     old_exists = g_file_test(filename, G_FILE_TEST_EXISTS);
     if (old_exists)
       {
-	if (! mn_rename(filename, old_filename, err))
-	  goto error;
+	if (rename(filename, old_filename) < 0)
+	  {
+	    g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), filename, old_filename, g_strerror(errno));
+	    goto error;
+	  }
       }
 
-    if (! mn_rename(tmp_filename, filename, err))
-      goto error;
+    if (rename(tmp_filename, filename) < 0)
+      {
+	g_set_error(err, 0, 0, _("Unable to rename %s to %s: %s."), tmp_filename, filename, g_strerror(errno));
+	goto error;
+      }
 
     if (old_exists)
       if (unlink(old_filename) < 0) /* non fatal */
@@ -438,10 +484,18 @@ class MN:Mailboxes from G:Object
     status = FALSE;
 
   end:
+    xmlFreeDoc(doc);
+    xmlIndentTreeOutput = indent;
+
     g_free(filename);
     g_free(tmp_filename);
     g_free(old_filename);
 
+    if (fd >= 0)
+      close(fd);
+    if (f)
+      fclose(f);
+
     return status;
   }
 
@@ -451,15 +505,13 @@ class MN:Mailboxes from G:Object
 				gpointer user_data)
   {
     Self *self = user_data;
-    int n_messages;
 
-    n_messages = g_slist_length(mailbox->messages);
-    mn_info(ngettext("%s has %i new message", "%s has %i new messages", n_messages),
-	    mailbox->runtime_name, n_messages);
-    
+    mn_info(ngettext("%s has %i new message", "%s has %i new messages", mailbox->n_messages),
+	    mailbox->runtime_name, mailbox->n_messages);
+
     self_messages_changed(self, has_new);
   }
-  
+
   private void
     mailbox_notify_h (GObject *object, GParamSpec *pspec, gpointer user_data)
   {
@@ -470,7 +522,7 @@ class MN:Mailboxes from G:Object
     g_signal_emit_by_name(self, detailed_signal, object, pspec);
     g_free(detailed_signal);
   }
-  
+
   private void
     mailbox_notify_error_h (GObject *object,
 			    GParamSpec *pspec,
@@ -486,36 +538,14 @@ class MN:Mailboxes from G:Object
   }
 
   private void
-    mailbox_notify_must_poll_h (GObject *object,
-				GParamSpec *pspec,
-				gpointer user_data)
+    mailbox_notify_poll_h (GObject *object,
+			   GParamSpec *pspec,
+			   gpointer user_data)
   {
     Self *self = user_data;
 
-    /* must-poll has possibly changed */
-    g_object_notify(G_OBJECT(self), "must-poll");
-  }
-  
-  private void
-    install_timeout (self)
-  {
-    mn_source_clear(&selfp->timeout_id);
-    selfp->timeout_id = mn_timeout_add(MN_CONF_DELAY_MINUTES,
-				       MN_CONF_DELAY_SECONDS,
-				       self_timeout_cb,
-				       self);
-  }
-
-  private gboolean
-    timeout_cb (gpointer data)
-  {
-    Self *self = data;
-
-    GDK_THREADS_ENTER();
-    self_check(self);
-    GDK_THREADS_LEAVE();
-    
-    return TRUE;		/* continue */
+    /* poll has possibly changed */
+    g_object_notify(G_OBJECT(self), "poll");
   }
 
   public void
@@ -527,29 +557,11 @@ class MN:Mailboxes from G:Object
       {
 	MNMailbox *mailbox = l->data;
 
-	if (mailbox->must_poll)
+	if (mn_mailbox_get_poll(mailbox))
 	  mn_mailbox_check(mailbox);
       }
   }
 
-  public GSList *
-    get_messages (self)
-  {
-    GSList *messages = NULL;
-    GList *l;
-
-    MN_LIST_FOREACH(l, self->list)
-      {
-	MNMailbox *mailbox = l->data;
-	messages = g_slist_concat(messages, mn_g_object_slist_copy(mailbox->messages));
-      }
-
-    messages = mn_message_slist_sort_by_sent_time(messages);
-    messages = g_slist_reverse(messages);
-
-    return messages;
-  }
-
   private void
     add_real (self, MN:Mailbox *mailbox (check null type))
   {
@@ -557,7 +569,7 @@ class MN:Mailboxes from G:Object
     self->list = g_list_insert_sorted(self->list, mailbox, self_compare_by_name_func);
     self_mailbox_added(self, mailbox);
   }
-  
+
   public void
     add (self, MN:Mailbox *mailbox (check null type))
   {
@@ -572,8 +584,8 @@ class MN:Mailboxes from G:Object
     g_object_ref(mailbox);
     selfp->add_queue = g_slist_append(selfp->add_queue, mailbox);
 
-    if (! selfp->queue_idle_id)
-      selfp->queue_idle_id = g_idle_add(self_queue_idle_cb, self);
+    if (! selfp->queue_idle_source)
+      selfp->queue_idle_source = mn_g_idle_add_gdk_locked(self_queue_idle_cb, self);
   }
 
   private void
@@ -585,62 +597,47 @@ 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);
-    self_save(self);
-  }
-  
-  public void
     queue_remove (self, MN:Mailbox *mailbox (check null type))
   {
     g_object_ref(mailbox);
     selfp->remove_queue = g_slist_append(selfp->remove_queue, mailbox);
 
-    if (! selfp->queue_idle_id)
-      selfp->queue_idle_id = g_idle_add(self_queue_idle_cb, self);
+    if (! selfp->queue_idle_source)
+      selfp->queue_idle_source = mn_g_idle_add_gdk_locked(self_queue_idle_cb, self);
   }
-  
+
   private gboolean
     queue_idle_cb (gpointer data)
   {
     Self *self = data;
     GSList *l;
 
-    GDK_THREADS_ENTER();
-
     MN_LIST_FOREACH(l, selfp->add_queue)
       self_add_real(self, l->data);
 
-    mn_g_object_slist_free(selfp->add_queue);
-    selfp->add_queue = NULL;
+    mn_g_object_slist_clear(&selfp->add_queue);
 
     MN_LIST_FOREACH(l, selfp->remove_queue)
       self_remove_real(self, l->data);
 
-    mn_g_object_slist_free(selfp->remove_queue);
-    selfp->remove_queue = NULL;
+    mn_g_object_slist_clear(&selfp->remove_queue);
 
     self_list_changed(self);
     self_save(self);
 
-    selfp->queue_idle_id = 0;
-
-    GDK_THREADS_LEAVE();
-
+    selfp->queue_idle_source = NULL;
     return FALSE;		/* remove */
   }
-  
+
   public int
     compare_by_name_func (gconstpointer a, gconstpointer b)
   {
     MNMailbox *mailbox_a = (MNMailbox *) a;
     MNMailbox *mailbox_b = (MNMailbox *) b;
 
-    return mn_utf8_strcasecoll(mailbox_a->runtime_name, mailbox_b->runtime_name);
+    return g_utf8_collate(mailbox_a->runtime_name, mailbox_b->runtime_name);
   }
-  
+
   public MNMailboxes *
     new (void)
   {
diff --git a/src/mn-mailboxes.gob.stamp b/src/mn-mailboxes.gob.stamp
diff --git a/src/mn-mailboxes.h b/src/mn-mailboxes.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -39,6 +39,7 @@ struct _MNMailboxes {
 	GObject __parent__;
 	/*< public >*/
 	GList * list;
+	GSList * messages;
 	/*< private >*/
 	MNMailboxesPrivate *_priv;
 };
@@ -62,17 +63,14 @@ struct _MNMailboxesClass {
  * Public methods
  */
 GType	mn_mailboxes_get_type	(void);
-gboolean 	mn_mailboxes_get_must_poll	(MNMailboxes * self);
+gboolean 	mn_mailboxes_get_poll	(MNMailboxes * self);
 void 	mn_mailboxes_load	(MNMailboxes * self);
 void 	mn_mailboxes_save	(MNMailboxes * self);
 void 	mn_mailboxes_check	(MNMailboxes * self);
-GSList * 	mn_mailboxes_get_messages	(MNMailboxes * self);
 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,
@@ -127,9 +125,9 @@ MNMailboxes * 	mn_mailboxes_new	(void);
  * Argument wrapping macros
  */
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-#define MN_MAILBOXES_GET_PROP_MUST_POLL(arg)	"must_poll", __extension__ ({gboolean *z = (arg); z;})
+#define MN_MAILBOXES_GET_PROP_POLL(arg)	"poll", __extension__ ({gboolean *z = (arg); z;})
 #else /* __GNUC__ && !__STRICT_ANSI__ */
-#define MN_MAILBOXES_GET_PROP_MUST_POLL(arg)	"must_poll",(gboolean *)(arg)
+#define MN_MAILBOXES_GET_PROP_POLL(arg)	"poll",(gboolean *)(arg)
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
 
 
diff --git a/src/mn-maildir-mailbox-backend-private.h b/src/mn-maildir-mailbox-backend-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MAILDIR_MAILBOX_BACKEND_PRIVATE_H__
 #define __MN_MAILDIR_MAILBOX_BACKEND_PRIVATE_H__
diff --git a/src/mn-maildir-mailbox-backend.c b/src/mn-maildir-mailbox-backend.c
@@ -1,16 +1,13 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:55 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
-#include <string.h> /* memset() */
-
 #include "mn-maildir-mailbox-backend.h"
 
 #include "mn-maildir-mailbox-backend-private.h"
@@ -26,6 +23,7 @@
 #line 25 "mn-maildir-mailbox-backend.gob"
 
 #include "config.h"
+#include <string.h>
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include "mn-mailbox-private.h"
@@ -35,7 +33,7 @@
 #include "mn-util.h"
 #include "mn-message-mime.h"
 
-#line 39 "mn-maildir-mailbox-backend.c"
+#line 37 "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)
@@ -54,11 +52,16 @@ static void mn_maildir_mailbox_backend_init (MNMaildirMailboxBackend * o) G_GNUC
 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 void ___4_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend, unsigned long check_id) 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;
 
 /* pointer to the class of our parent */
 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
 GType
 mn_maildir_mailbox_backend_get_type (void)
 {
@@ -107,53 +110,53 @@ mn_maildir_mailbox_backend_init (MNMaildirMailboxBackend * o G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::init"
 }
 #undef __GOB_FUNCTION__
-#line 39 "mn-maildir-mailbox-backend.gob"
+#line 40 "mn-maildir-mailbox-backend.gob"
 static void 
 mn_maildir_mailbox_backend_class_init (MNMaildirMailboxBackendClass * class G_GNUC_UNUSED)
-#line 114 "mn-maildir-mailbox-backend.c"
+#line 117 "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 44 "mn-maildir-mailbox-backend.gob"
+#line 45 "mn-maildir-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->monitor_cb = ___2_mn_maildir_mailbox_backend_monitor_cb;
-#line 66 "mn-maildir-mailbox-backend.gob"
+#line 67 "mn-maildir-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->is = ___3_mn_maildir_mailbox_backend_is;
-#line 88 "mn-maildir-mailbox-backend.gob"
-	mn_vfs_mailbox_backend_class->check = ___4_mn_maildir_mailbox_backend_check;
-#line 127 "mn-maildir-mailbox-backend.c"
+#line 182 "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 40 "mn-maildir-mailbox-backend.gob"
+#line 41 "mn-maildir-mailbox-backend.gob"
 
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Maildir";
   
-#line 133 "mn-maildir-mailbox-backend.c"
+#line 136 "mn-maildir-mailbox-backend.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 44 "mn-maildir-mailbox-backend.gob"
+#line 45 "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 143 "mn-maildir-mailbox-backend.c"
+#line 146 "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 48 "mn-maildir-mailbox-backend.gob"
+#line 49 "mn-maildir-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)
       {
 	char *filename;
-	    
+
 	filename = eel_uri_get_basename(info_uri);
 	if (filename)
 	  {
@@ -164,14 +167,14 @@ ___2_mn_maildir_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC
 	  }
       }
   }}
-#line 168 "mn-maildir-mailbox-backend.c"
+#line 171 "mn-maildir-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 66 "mn-maildir-mailbox-backend.gob"
+#line 67 "mn-maildir-mailbox-backend.gob"
 static gboolean 
 ___3_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailbox * mailbox)
-#line 175 "mn-maildir-mailbox-backend.c"
+#line 178 "mn-maildir-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): \
@@ -179,7 +182,7 @@ ___3_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, M
 {
 #define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::is"
 {
-#line 68 "mn-maildir-mailbox-backend.gob"
+#line 69 "mn-maildir-mailbox-backend.gob"
 	
     int i; 
     const char *constitutive_dirs[] = { "cur", "new", "tmp" };
@@ -188,90 +191,172 @@ ___3_mn_maildir_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, M
     for (i = 0; i < G_N_ELEMENTS(constitutive_dirs); i++)
       {
 	GnomeVFSURI *dir_uri;
-	
+
 	dir_uri = gnome_vfs_uri_append_path(mailbox->vfs_uri, constitutive_dirs[i]);
 	is = mn_vfs_test(dir_uri, G_FILE_TEST_IS_DIR);
 	gnome_vfs_uri_unref(dir_uri);
-	
+
 	if (! is)
 	  break;
       }
 
     return is;
   }}
-#line 203 "mn-maildir-mailbox-backend.c"
+#line 206 "mn-maildir-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 88 "mn-maildir-mailbox-backend.gob"
+#line 89 "mn-maildir-mailbox-backend.gob"
 static void 
-___4_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, unsigned long check_id)
-#line 210 "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); }
+mn_maildir_mailbox_backend_monitor_directory (MNMaildirMailboxBackend * self, unsigned long check_id, const char * dir)
+#line 213 "mn-maildir-mailbox-backend.c"
 {
-#define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::check"
+#define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::monitor_directory"
+#line 89 "mn-maildir-mailbox-backend.gob"
+	g_return_if_fail (self != NULL);
+#line 89 "mn-maildir-mailbox-backend.gob"
+	g_return_if_fail (MN_IS_MAILDIR_MAILBOX_BACKEND (self));
+#line 89 "mn-maildir-mailbox-backend.gob"
+	g_return_if_fail (dir != NULL);
+#line 222 "mn-maildir-mailbox-backend.c"
 {
-#line 90 "mn-maildir-mailbox-backend.gob"
+#line 91 "mn-maildir-mailbox-backend.gob"
 	
-    GnomeVFSURI *new_uri;
-    char *new_text_uri;
+    MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self);
+    GnomeVFSURI *uri;
+    char *text_uri;
+
+    uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, dir);
+    text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE);
+    gnome_vfs_uri_unref(uri);
+
+    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"
+#undef __GOB_FUNCTION__
+
+#line 104 "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"
+{
+#define __GOB_FUNCTION__ "MN:Maildir:Mailbox:Backend::scan_directory"
+#line 104 "mn-maildir-mailbox-backend.gob"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 104 "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"
+	g_return_val_if_fail (dir != NULL, (gboolean )0);
+#line 104 "mn-maildir-mailbox-backend.gob"
+	g_return_val_if_fail (messages != NULL, (gboolean )0);
+#line 254 "mn-maildir-mailbox-backend.c"
+{
+#line 111 "mn-maildir-mailbox-backend.gob"
+	
+    MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self);
+    GnomeVFSURI *uri;
     GnomeVFSResult result;
     GnomeVFSResult close_result;
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
-    GSList *messages = NULL;
-    
-    new_uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, "new");
+    gboolean aborted = FALSE;
 
-    new_text_uri = gnome_vfs_uri_to_string(new_uri, GNOME_VFS_URI_HIDE_NONE);
-    mn_vfs_mailbox_backend_monitor(backend, check_id, new_text_uri, GNOME_VFS_MONITOR_DIRECTORY);
-    g_free(new_text_uri);
+    uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, dir);
 
-    result = gnome_vfs_directory_open_from_uri(&handle, new_uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
+    result = gnome_vfs_directory_open_from_uri(&handle, uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
     if (result != GNOME_VFS_OK)
       {
-	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 folder \"new\": %s"), gnome_vfs_result_to_string(result));
-
-	gdk_flush();
-	GDK_THREADS_LEAVE();
-
-	goto end;
+	g_set_error(err, 0, 0, _("unable to open folder \"%s\": %s"), dir, gnome_vfs_result_to_string(result));
+	gnome_vfs_uri_unref(uri);
+	return FALSE;
       }
-  
+
     file_info = gnome_vfs_file_info_new();
     while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK)
       if (file_info->name[0] != '.')
 	{
 	  GnomeVFSURI *message_uri;
+	  MNMessageFlags flags = 0;
 
 	  if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-	    break;
-
-	  message_uri = gnome_vfs_uri_append_file_name(new_uri, file_info->name);
-	  messages = g_slist_append(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri));
+	    {
+	      aborted = TRUE;
+	      break;
+	    }
+
+	  if (new)
+	    flags |= MN_MESSAGE_NEW;
+	  else
+	    {
+	      char *info;
+
+	      /* http://cr.yp.to/proto/maildir.html */
+
+	      info = strrchr(file_info->name, ':');
+	      if (! info
+		  || ! g_str_has_prefix(info + 1, "2,")
+		  || strpbrk(info + 3, "ST"))
+		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);
 	}
+    gnome_vfs_uri_unref(uri);
     gnome_vfs_file_info_unref(file_info);
     close_result = gnome_vfs_directory_close(handle);
 
-    GDK_THREADS_ENTER();
-	
-    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+    if (! aborted)
       {
 	if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK)
 	  {
 	    if (close_result == GNOME_VFS_OK)
-	      mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages);
+	      return TRUE;
 	    else
-	      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close folder \"new\": %s"), gnome_vfs_result_to_string(close_result));
+	      g_set_error(err, 0, 0, _("unable to close folder \"%s\": %s"), dir, gnome_vfs_result_to_string(close_result));
 	  }
 	else
-	  mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading folder \"new\": %s"), gnome_vfs_result_to_string(result));
+	  g_set_error(err, 0, 0, _("error while reading folder \"%s\": %s"), dir, gnome_vfs_result_to_string(result));
+      }
+
+    return FALSE;
+  }}
+#line 327 "mn-maildir-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+
+#line 182 "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"
+#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"
+	
+    Self *self = SELF(backend);
+    GSList *messages = NULL;
+    GError *err = NULL;
+    gboolean status;
+
+    self_monitor_directory(self, check_id, "cur");
+    self_monitor_directory(self, check_id, "new");
+
+    status = self_scan_directory(self, check_id, "cur", FALSE, &messages, &err)
+      && self_scan_directory(self, check_id, "new", TRUE, &messages, &err);
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+      {
+	if (status)
+	  mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages);
+	else
+	  mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), "%s", err->message);
       }
 
     mn_g_object_slist_free(messages);
@@ -279,9 +364,9 @@ ___4_mn_maildir_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUS
     gdk_flush();
     GDK_THREADS_LEAVE();
 
-  end:
-    gnome_vfs_uri_unref(new_uri);
+    if (err)
+      g_error_free(err);
   }}
-#line 286 "mn-maildir-mailbox-backend.c"
+#line 371 "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,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-vfs-mailbox-backend.h"
@@ -24,6 +24,7 @@ requires 2.0.12
 
 %{
 #include "config.h"
+#include <string.h>
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include "mn-mailbox-private.h"
@@ -51,7 +52,7 @@ class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	|| event_type == GNOME_VFS_MONITOR_EVENT_CREATED)
       {
 	char *filename;
-	    
+
 	filename = eel_uri_get_basename(info_uri);
 	if (filename)
 	  {
@@ -73,78 +74,133 @@ class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend
     for (i = 0; i < G_N_ELEMENTS(constitutive_dirs); i++)
       {
 	GnomeVFSURI *dir_uri;
-	
+
 	dir_uri = gnome_vfs_uri_append_path(mailbox->vfs_uri, constitutive_dirs[i]);
 	is = mn_vfs_test(dir_uri, G_FILE_TEST_IS_DIR);
 	gnome_vfs_uri_unref(dir_uri);
-	
+
 	if (! is)
 	  break;
       }
 
     return is;
   }
-  
-  override (MN:VFS:Mailbox:Backend) void
-    check (MNVFSMailboxBackend *backend, unsigned long check_id)
+
+  private void
+    monitor_directory (self, unsigned long check_id, const char *dir (check null))
+  {
+    MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self);
+    GnomeVFSURI *uri;
+    char *text_uri;
+
+    uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, dir);
+    text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE);
+    gnome_vfs_uri_unref(uri);
+
+    mn_vfs_mailbox_backend_monitor(backend, check_id, text_uri, GNOME_VFS_MONITOR_DIRECTORY);
+    g_free(text_uri);
+  }
+
+  private gboolean
+    scan_directory (self,
+		    unsigned long check_id,
+		    const char *dir (check null),
+		    gboolean new,
+		    GSList **messages (check null),
+		    GError **err)
   {
-    GnomeVFSURI *new_uri;
-    char *new_text_uri;
+    MNVFSMailboxBackend *backend = MN_VFS_MAILBOX_BACKEND(self);
+    GnomeVFSURI *uri;
     GnomeVFSResult result;
     GnomeVFSResult close_result;
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
-    GSList *messages = NULL;
-    
-    new_uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, "new");
+    gboolean aborted = FALSE;
 
-    new_text_uri = gnome_vfs_uri_to_string(new_uri, GNOME_VFS_URI_HIDE_NONE);
-    mn_vfs_mailbox_backend_monitor(backend, check_id, new_text_uri, GNOME_VFS_MONITOR_DIRECTORY);
-    g_free(new_text_uri);
+    uri = gnome_vfs_uri_append_path(backend->mailbox->vfs_uri, dir);
 
-    result = gnome_vfs_directory_open_from_uri(&handle, new_uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
+    result = gnome_vfs_directory_open_from_uri(&handle, uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
     if (result != GNOME_VFS_OK)
       {
-	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 folder \"new\": %s"), gnome_vfs_result_to_string(result));
-
-	gdk_flush();
-	GDK_THREADS_LEAVE();
-
-	goto end;
+	g_set_error(err, 0, 0, _("unable to open folder \"%s\": %s"), dir, gnome_vfs_result_to_string(result));
+	gnome_vfs_uri_unref(uri);
+	return FALSE;
       }
-  
+
     file_info = gnome_vfs_file_info_new();
     while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK)
       if (file_info->name[0] != '.')
 	{
 	  GnomeVFSURI *message_uri;
+	  MNMessageFlags flags = 0;
 
 	  if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
-	    break;
-
-	  message_uri = gnome_vfs_uri_append_file_name(new_uri, file_info->name);
-	  messages = g_slist_append(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri));
+	    {
+	      aborted = TRUE;
+	      break;
+	    }
+
+	  if (new)
+	    flags |= MN_MESSAGE_NEW;
+	  else
+	    {
+	      char *info;
+
+	      /* http://cr.yp.to/proto/maildir.html */
+
+	      info = strrchr(file_info->name, ':');
+	      if (! info
+		  || ! g_str_has_prefix(info + 1, "2,")
+		  || strpbrk(info + 3, "ST"))
+		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);
 	}
+    gnome_vfs_uri_unref(uri);
     gnome_vfs_file_info_unref(file_info);
     close_result = gnome_vfs_directory_close(handle);
 
-    GDK_THREADS_ENTER();
-	
-    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+    if (! aborted)
       {
 	if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK)
 	  {
 	    if (close_result == GNOME_VFS_OK)
-	      mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages);
+	      return TRUE;
 	    else
-	      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("unable to close folder \"new\": %s"), gnome_vfs_result_to_string(close_result));
+	      g_set_error(err, 0, 0, _("unable to close folder \"%s\": %s"), dir, gnome_vfs_result_to_string(close_result));
 	  }
 	else
-	  mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading folder \"new\": %s"), gnome_vfs_result_to_string(result));
+	  g_set_error(err, 0, 0, _("error while reading folder \"%s\": %s"), dir, gnome_vfs_result_to_string(result));
+      }
+
+    return FALSE;
+  }
+
+  override (MN:VFS:Mailbox:Backend) void
+    check (MNVFSMailboxBackend *backend, unsigned long check_id)
+  {
+    Self *self = SELF(backend);
+    GSList *messages = NULL;
+    GError *err = NULL;
+    gboolean status;
+
+    self_monitor_directory(self, check_id, "cur");
+    self_monitor_directory(self, check_id, "new");
+
+    status = self_scan_directory(self, check_id, "cur", FALSE, &messages, &err)
+      && self_scan_directory(self, check_id, "new", TRUE, &messages, &err);
+
+    GDK_THREADS_ENTER();
+
+    if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
+      {
+	if (status)
+	  mn_mailbox_set_messages(MN_MAILBOX(backend->mailbox), messages);
+	else
+	  mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), "%s", err->message);
       }
 
     mn_g_object_slist_free(messages);
@@ -152,7 +208,7 @@ class MN:Maildir:Mailbox:Backend from MN:VFS:Mailbox:Backend
     gdk_flush();
     GDK_THREADS_LEAVE();
 
-  end:
-    gnome_vfs_uri_unref(new_uri);
+    if (err)
+      g_error_free(err);
   }
 }
diff --git a/src/mn-maildir-mailbox-backend.gob.stamp b/src/mn-maildir-mailbox-backend.gob.stamp
diff --git a/src/mn-maildir-mailbox-backend.h b/src/mn-maildir-mailbox-backend.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-main-window-private.h b/src/mn-main-window-private.h
@@ -1,56 +0,0 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
-
-#ifndef __MN_MAIN_WINDOW_PRIVATE_H__
-#define __MN_MAIN_WINDOW_PRIVATE_H__
-
-#include "mn-main-window.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-#line 25 "mn-main-window.gob"
-
-#include "egg-toolbars-model.h"
-
-#line 18 "mn-main-window-private.h"
-struct _MNMainWindowPrivate {
-#line 54 "mn-main-window.gob"
-	GtkWidget * menubar;
-#line 55 "mn-main-window.gob"
-	GtkWidget * toolbar;
-#line 56 "mn-main-window.gob"
-	GtkWidget * message_view;
-#line 57 "mn-main-window.gob"
-	GtkWidget * statusbar;
-#line 59 "mn-main-window.gob"
-	GtkUIManager * ui_manager;
-#line 60 "mn-main-window.gob"
-	GtkActionGroup * action_group;
-#line 62 "mn-main-window.gob"
-	EggToolbarsModel * toolbars_model;
-#line 63 "mn-main-window.gob"
-	unsigned int toolbars_model_save_idle_id;
-#line 65 "mn-main-window.gob"
-	unsigned int help_cid;
-#line 66 "mn-main-window.gob"
-	unsigned int count_cid;
-#line 68 "mn-main-window.gob"
-	GtkWidget * leave_fullscreen_popup;
-#line 69 "mn-main-window.gob"
-	gboolean leave_fullscreen_popup_visible;
-#line 70 "mn-main-window.gob"
-	unsigned int leave_fullscreen_timeout_id;
-#line 72 "mn-main-window.gob"
-	GtkWidget * edit_toolbars_dialog;
-#line 73 "mn-main-window.gob"
-	GtkWidget * edit_toolbars_editor;
-#line 50 "mn-main-window-private.h"
-};
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/src/mn-main-window.c b/src/mn-main-window.c
@@ -1,1468 +0,0 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (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 12
-
-#define selfp (self->_priv)
-
-#include <string.h> /* memset() */
-
-#include "mn-main-window.h"
-
-#include "mn-main-window-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-main-window.gob"
-
-#include "config.h"
-#include <gnome.h>
-#include <eel/eel.h>
-#include "egg-editable-toolbar.h"
-#include "egg-toolbar-editor.h"
-#include "mn-util.h"
-#include "mn-stock.h"
-#include "mn-shell.h"
-#include "mn-conf.h"
-#include "mn-properties-dialog.h"
-#include "mn-message-view.h"
-
-#define STATUS_PUSH(cid, str) \
-  gtk_statusbar_push(GTK_STATUSBAR(selfp->statusbar), (cid), (str))
-#define STATUS_POP(cid) \
-  gtk_statusbar_pop(GTK_STATUSBAR(selfp->statusbar), (cid))
-#define GET_ACTION(name) \
-  gtk_action_group_get_action(selfp->action_group, (name))
-#define FULLSCREEN \
-  (selfp->leave_fullscreen_popup != NULL)
-
-#line 50 "mn-main-window.c"
-/* self casting macros */
-#define SELF(x) MN_MAIN_WINDOW(x)
-#define SELF_CONST(x) MN_MAIN_WINDOW_CONST(x)
-#define IS_SELF(x) MN_IS_MAIN_WINDOW(x)
-#define TYPE_SELF MN_TYPE_MAIN_WINDOW
-#define SELF_CLASS(x) MN_MAIN_WINDOW_CLASS(x)
-
-#define SELF_GET_CLASS(x) MN_MAIN_WINDOW_GET_CLASS(x)
-
-/* self typedefs */
-typedef MNMainWindow Self;
-typedef MNMainWindowClass SelfClass;
-
-/* here are local prototypes */
-static void mn_main_window_class_init (MNMainWindowClass * c) G_GNUC_UNUSED;
-static void mn_main_window_init (MNMainWindow * self) G_GNUC_UNUSED;
-static void ___2_mn_main_window_dispose (GObject * object) G_GNUC_UNUSED;
-static void mn_main_window_create_ui_manager (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_create_toolbars_model (MNMainWindow * self, gboolean use_dot_file) G_GNUC_UNUSED;
-static void mn_main_window_update_toolbars_visibility (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_update_statusbar_visibility (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_notify_mail_reader_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
-static void mn_main_window_update_messages (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_update_sensitivity (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_ui_manager_connect_proxy_h (MNMainWindow * self, GtkAction * action, GtkWidget * proxy, GtkUIManager * manager) G_GNUC_UNUSED;
-static void mn_main_window_ui_manager_disconnect_proxy_h (MNMainWindow * self, GtkAction * action, GtkWidget * proxy, GtkUIManager * manager) G_GNUC_UNUSED;
-static void mn_main_window_menu_item_select_h (MNMainWindow * self, GtkMenuItem * item) G_GNUC_UNUSED;
-static void mn_main_window_menu_item_deselect_h (MNMainWindow * self, GtkMenuItem * item) G_GNUC_UNUSED;
-static gboolean mn_main_window_window_state_event_h (MNMainWindow * self, GdkEventWindowState * event, gpointer user_data) G_GNUC_UNUSED;
-static void mn_main_window_update_toolbars_style_changed_h (GtkRadioAction * action, GtkRadioAction * current, Self * self) G_GNUC_UNUSED;
-static void mn_main_window_update_toolbars_style (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_toolbars_model_save_changes (MNMainWindow * self) G_GNUC_UNUSED;
-static gboolean mn_main_window_toolbars_model_save_changes_cb (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_toolbars_model_update_flags_and_save_changes (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_mail_reader_activate_h (GtkAction * action, Self * self) G_GNUC_UNUSED;
-static void mn_main_window_update_activate_h (GtkAction * action, Self * self) G_GNUC_UNUSED;
-static void mn_main_window_close_activate_h (GtkAction * action, Self * self) G_GNUC_UNUSED;
-static void mn_main_window_quit_activate_h (GtkAction * action, Self * self) G_GNUC_UNUSED;
-static void mn_main_window_edit_toolbars_activate_h (GtkAction * action, Self * self) G_GNUC_UNUSED;
-static void mn_main_window_edit_toolbars_response_h (MNMainWindow * self, int response, GtkDialog * dialog) G_GNUC_UNUSED;
-static void mn_main_window_edit_toolbars_create_editor (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_edit_toolbars_weak_notify_cb (MNMainWindow * self, GObject * former_object) G_GNUC_UNUSED;
-static void mn_main_window_preferences_activate_h (GtkAction * action, Self * self) G_GNUC_UNUSED;
-static void mn_main_window_help_contents_activate_h (GtkAction * action, Self * self) G_GNUC_UNUSED;
-static void mn_main_window_about_activate_h (GtkAction * action, Self * self) G_GNUC_UNUSED;
-static void mn_main_window_fullscreen (MNMainWindow * self) G_GNUC_UNUSED;
-static void mn_main_window_unfullscreen (MNMainWindow * self) G_GNUC_UNUSED;
-static gboolean mn_main_window_leave_fullscreen_timeout_cb (MNMainWindow * self) G_GNUC_UNUSED;
-static gboolean mn_main_window_leave_fullscreen_enter_notify_event_h (MNMainWindow * self, GdkEventCrossing * event, GtkWidget * widget) G_GNUC_UNUSED;
-static gboolean mn_main_window_leave_fullscreen_leave_notify_event_h (MNMainWindow * self, GdkEventCrossing * event, GtkWidget * widget) G_GNUC_UNUSED;
-static void mn_main_window_update_leave_fullscreen_popup_position (MNMainWindow * self) G_GNUC_UNUSED;
-static gboolean mn_main_window_fullscreen_key_press_event_h (MNMainWindow * self, GdkEventKey * event, gpointer user_data) G_GNUC_UNUSED;
-static void mn_main_window_fullscreen_menubar_deactivate_h (MNMainWindow * self, GtkMenuShell * menushell) G_GNUC_UNUSED;
-
-/* pointer to the class of our parent */
-static GtkWindowClass *parent_class = NULL;
-
-/* Short form macros */
-#define self_create_ui_manager mn_main_window_create_ui_manager
-#define self_create_toolbars_model mn_main_window_create_toolbars_model
-#define self_update_toolbars_visibility mn_main_window_update_toolbars_visibility
-#define self_update_statusbar_visibility mn_main_window_update_statusbar_visibility
-#define self_notify_mail_reader_cb mn_main_window_notify_mail_reader_cb
-#define self_update_messages mn_main_window_update_messages
-#define self_update_sensitivity mn_main_window_update_sensitivity
-#define self_ui_manager_connect_proxy_h mn_main_window_ui_manager_connect_proxy_h
-#define self_ui_manager_disconnect_proxy_h mn_main_window_ui_manager_disconnect_proxy_h
-#define self_menu_item_select_h mn_main_window_menu_item_select_h
-#define self_menu_item_deselect_h mn_main_window_menu_item_deselect_h
-#define self_window_state_event_h mn_main_window_window_state_event_h
-#define self_update_toolbars_style_changed_h mn_main_window_update_toolbars_style_changed_h
-#define self_update_toolbars_style mn_main_window_update_toolbars_style
-#define self_toolbars_model_save_changes mn_main_window_toolbars_model_save_changes
-#define self_toolbars_model_save_changes_cb mn_main_window_toolbars_model_save_changes_cb
-#define self_toolbars_model_update_flags_and_save_changes mn_main_window_toolbars_model_update_flags_and_save_changes
-#define self_mail_reader_activate_h mn_main_window_mail_reader_activate_h
-#define self_update_activate_h mn_main_window_update_activate_h
-#define self_close_activate_h mn_main_window_close_activate_h
-#define self_quit_activate_h mn_main_window_quit_activate_h
-#define self_edit_toolbars_activate_h mn_main_window_edit_toolbars_activate_h
-#define self_edit_toolbars_response_h mn_main_window_edit_toolbars_response_h
-#define self_edit_toolbars_create_editor mn_main_window_edit_toolbars_create_editor
-#define self_edit_toolbars_weak_notify_cb mn_main_window_edit_toolbars_weak_notify_cb
-#define self_preferences_activate_h mn_main_window_preferences_activate_h
-#define self_help_contents_activate_h mn_main_window_help_contents_activate_h
-#define self_about_activate_h mn_main_window_about_activate_h
-#define self_fullscreen mn_main_window_fullscreen
-#define self_unfullscreen mn_main_window_unfullscreen
-#define self_leave_fullscreen_timeout_cb mn_main_window_leave_fullscreen_timeout_cb
-#define self_leave_fullscreen_enter_notify_event_h mn_main_window_leave_fullscreen_enter_notify_event_h
-#define self_leave_fullscreen_leave_notify_event_h mn_main_window_leave_fullscreen_leave_notify_event_h
-#define self_update_leave_fullscreen_popup_position mn_main_window_update_leave_fullscreen_popup_position
-#define self_fullscreen_key_press_event_h mn_main_window_fullscreen_key_press_event_h
-#define self_fullscreen_menubar_deactivate_h mn_main_window_fullscreen_menubar_deactivate_h
-GType
-mn_main_window_get_type (void)
-{
-	static GType type = 0;
-
-	if ___GOB_UNLIKELY(type == 0) {
-		static const GTypeInfo info = {
-			sizeof (MNMainWindowClass),
-			(GBaseInitFunc) NULL,
-			(GBaseFinalizeFunc) NULL,
-			(GClassInitFunc) mn_main_window_class_init,
-			(GClassFinalizeFunc) NULL,
-			NULL /* class_data */,
-			sizeof (MNMainWindow),
-			0 /* n_preallocs */,
-			(GInstanceInitFunc) mn_main_window_init,
-			NULL
-		};
-
-		type = g_type_register_static (GTK_TYPE_WINDOW, "MNMainWindow", &info, (GTypeFlags)0);
-	}
-
-	return type;
-}
-
-/* a macro for creating a new object of our type */
-#define GET_NEW ((MNMainWindow *)g_object_new(mn_main_window_get_type(), NULL))
-
-/* a function for creating a new object of our type */
-#include <stdarg.h>
-static MNMainWindow * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
-static MNMainWindow *
-GET_NEW_VARG (const char *first, ...)
-{
-	MNMainWindow *ret;
-	va_list ap;
-	va_start (ap, first);
-	ret = (MNMainWindow *)g_object_new_valist (mn_main_window_get_type (), first, ap);
-	va_end (ap);
-	return ret;
-}
-
-
-static void
-___dispose (GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::dispose"
-	MNMainWindow *self G_GNUC_UNUSED = MN_MAIN_WINDOW (obj_self);
-#line 138 "mn-main-window.gob"
-	___2_mn_main_window_dispose(obj_self);
-#line 195 "mn-main-window.c"
-#line 59 "mn-main-window.gob"
-	if(self->_priv->ui_manager) { g_object_unref ((gpointer) self->_priv->ui_manager); self->_priv->ui_manager = NULL; }
-#line 198 "mn-main-window.c"
-#line 60 "mn-main-window.gob"
-	if(self->_priv->action_group) { g_object_unref ((gpointer) self->_priv->action_group); self->_priv->action_group = NULL; }
-#line 201 "mn-main-window.c"
-#line 62 "mn-main-window.gob"
-	if(self->_priv->toolbars_model) { g_object_unref ((gpointer) self->_priv->toolbars_model); self->_priv->toolbars_model = NULL; }
-#line 204 "mn-main-window.c"
-}
-#undef __GOB_FUNCTION__
-
-
-static void
-___finalize(GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::finalize"
-	MNMainWindow *self G_GNUC_UNUSED = MN_MAIN_WINDOW (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_main_window_class_init (MNMainWindowClass * c G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::class_init"
-	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
-
-	g_type_class_add_private(c,sizeof(MNMainWindowPrivate));
-
-	parent_class = g_type_class_ref (GTK_TYPE_WINDOW);
-
-#line 138 "mn-main-window.gob"
-	g_object_class->dispose = ___dispose;
-#line 232 "mn-main-window.c"
-	g_object_class->finalize = ___finalize;
-}
-#undef __GOB_FUNCTION__
-#line 75 "mn-main-window.gob"
-static void 
-mn_main_window_init (MNMainWindow * self G_GNUC_UNUSED)
-#line 239 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::init"
-	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_MAIN_WINDOW,MNMainWindowPrivate);
- {
-#line 76 "mn-main-window.gob"
-
-    GtkWidget *scrolled;
-    GtkWidget *vbox;
-
-    self_create_ui_manager(self);
-    self_create_toolbars_model(self, TRUE);
-
-    selfp->menubar = gtk_ui_manager_get_widget(selfp->ui_manager, "/menubar");
-    selfp->toolbar = egg_editable_toolbar_new_with_model(selfp->ui_manager, selfp->toolbars_model);
-
-    scrolled = gtk_scrolled_window_new(NULL, NULL);
-    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
-				   GTK_POLICY_AUTOMATIC,
-				   GTK_POLICY_AUTOMATIC);
-
-    selfp->message_view = mn_message_view_new(FALSE, TRUE);
-    gtk_widget_set_name(selfp->message_view, "mn-message-view");
-    gtk_container_set_border_width(GTK_CONTAINER(selfp->message_view), 12);
-    gtk_container_add(GTK_CONTAINER(scrolled), selfp->message_view);
-
-    selfp->statusbar = gtk_statusbar_new();
-
-    vbox = gtk_vbox_new(FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), selfp->menubar, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), selfp->toolbar, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), scrolled, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), selfp->statusbar, FALSE, FALSE, 0);
-    gtk_widget_show_all(vbox);
-    gtk_container_add(GTK_CONTAINER(self), vbox);
-
-    selfp->help_cid = gtk_statusbar_get_context_id(GTK_STATUSBAR(selfp->statusbar), _("Help messages"));
-    selfp->count_cid = gtk_statusbar_get_context_id(GTK_STATUSBAR(selfp->statusbar), _("Count messages"));
-
-    mn_conf_link(self, MN_CONF_MAIN_WINDOW_DIMENSIONS,
-		 GET_ACTION("ViewToolbars"), MN_CONF_MAIN_WINDOW_VIEW_TOOLBARS,
-		 GET_ACTION("ViewStatusbar"), MN_CONF_MAIN_WINDOW_VIEW_STATUSBAR,
-		 GET_ACTION("ViewToolbarsStyleDesktopDefault"), MN_CONF_MAIN_WINDOW_TOOLBARS_STYLE, MN_TYPE_TOOLBAR_STYLE,
-		 NULL);
-
-    self_update_toolbars_visibility(self);
-    self_update_statusbar_visibility(self);
-
-    g_signal_connect_swapped(GET_ACTION("ViewToolbars"), "toggled", G_CALLBACK(self_update_toolbars_visibility), self);
-    g_signal_connect_swapped(GET_ACTION("ViewStatusbar"), "toggled", G_CALLBACK(self_update_statusbar_visibility), self);
-
-    self_update_messages(self);
-    self_update_sensitivity(self);
-
-    mn_conf_notification_add(self,
-			     MN_CONF_COMMANDS_MAIL_READER_NAMESPACE,
-			     self_notify_mail_reader_cb,
-			     self);
-    mn_g_object_connect(self,
-			mn_shell->mailboxes,
-			"swapped-signal::notify::must-poll", self_update_sensitivity, self,
-			"swapped-signal::messages-changed", self_update_messages, self,
-			NULL);
-    g_signal_connect(self, "window-state-event", G_CALLBACK(self_window_state_event_h), NULL);
-
-    gtk_widget_grab_focus(selfp->message_view);
-  
-#line 306 "mn-main-window.c"
- }
-}
-#undef __GOB_FUNCTION__
-
-
-
-#line 138 "mn-main-window.gob"
-static void 
-___2_mn_main_window_dispose (GObject * object G_GNUC_UNUSED)
-#line 316 "mn-main-window.c"
-#define PARENT_HANDLER(___object) \
-	{ if(G_OBJECT_CLASS(parent_class)->dispose) \
-		(* G_OBJECT_CLASS(parent_class)->dispose)(___object); }
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::dispose"
-{
-#line 140 "mn-main-window.gob"
-	
-    Self *self = SELF(object);
-
-    mn_source_clear(&selfp->toolbars_model_save_idle_id);
-
-    if (FULLSCREEN)
-      self_unfullscreen(self);
-
-    PARENT_HANDLER(object);
-  }}
-#line 334 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 151 "mn-main-window.gob"
-static void 
-mn_main_window_create_ui_manager (MNMainWindow * self)
-#line 341 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::create_ui_manager"
-#line 151 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 151 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 348 "mn-main-window.c"
-{
-#line 153 "mn-main-window.gob"
-	
-    static GtkActionEntry menu_entries[] = {
-      /* Toplevel */
-      { "Mail", NULL, N_("_Mail") },
-      { "Edit", NULL, N_("_Edit") },
-      { "View", NULL, N_("_View") },
-      { "Help", NULL, N_("_Help") },
-
-      /* Mail menu */
-      {
-	"MailMailReader",
-	MN_STOCK_MAIL_READER,
-	N_("_Mail Reader"),
-	"<control>M",
-	N_("Launch the mail reader"),
-	G_CALLBACK(self_mail_reader_activate_h)
-      },
-      {
-	"MailUpdate",
-	GTK_STOCK_REFRESH,
-	N_("_Update"),
-	"<control>R",		/* Reload */
-	N_("Update the mail status"),
-	G_CALLBACK(self_update_activate_h)
-      },
-      {
-	"MailClose",
-	GTK_STOCK_CLOSE,
-	N_("_Close"),
-	"<control>W",
-	N_("Close this window"),
-	G_CALLBACK(self_close_activate_h)
-      },
-      {
-	"MailQuit",
-	GTK_STOCK_QUIT,
-	N_("_Quit"),
-	"<control>Q",
-	N_("Quit Mail Notification"),
-	G_CALLBACK(self_quit_activate_h)
-      },
-
-      /* Edit menu */
-      {
-	"EditToolbars",
-	NULL,
-	N_("_Toolbars"),
-	NULL,
-	N_("Customize the toolbars"),
-	G_CALLBACK(self_edit_toolbars_activate_h)
-      },
-      {
-	"EditPreferences",
-	GTK_STOCK_PREFERENCES,
-	N_("_Preferences"),
-	NULL,
-	N_("Configure Mail Notification"),
-	G_CALLBACK(self_preferences_activate_h)
-      },
-
-      /* View menu */
-      {
-	"ViewToolbarsStyle",
-	NULL,
-	N_("Toolbars Styl_e"),
-	NULL,
-	N_("Customize the toolbars style"),
-	NULL
-      },
-
-      /* Help menu */
-      {
-	"HelpContents",
-	GTK_STOCK_HELP,
-	N_("_Contents"),
-	"F1",
-	N_("Display help"),
-	G_CALLBACK(self_help_contents_activate_h)
-      },
-      {
-	"HelpAbout",
-	GTK_STOCK_ABOUT,
-	N_("_About"),
-	NULL,
-	N_("Display credits"),
-	G_CALLBACK(self_about_activate_h)
-      }
-    };
-
-    static GtkToggleActionEntry toggle_entries[] = {
-      /* View menu */
-      {
-	"ViewToolbars",
-	NULL,
-	N_("_Toolbars"),
-	NULL,
-	N_("Show or hide the toolbars"),
-	NULL,
-	FALSE
-      },
-      {
-	"ViewStatusbar",
-	NULL,
-	N_("_Statusbar"),
-	NULL,
-	N_("Show or hide the statusbar"),
-	NULL,
-	FALSE
-      }
-    };
-
-    static GtkRadioActionEntry toolbars_style_entries[] = {
-      /* View menu */
-      {
-	"ViewToolbarsStyleDesktopDefault",
-	NULL,
-	N_("_Desktop Default"),
-	NULL,
-	N_("Set the toolbars style to the desktop default setting"),
-	MN_TOOLBAR_STYLE_DESKTOP_DEFAULT
-      },
-      {
-	"ViewToolbarsStyleIconsOnly",
-	NULL,
-	N_("I_cons Only"),
-	NULL,
-	N_("Only display the toolbars icons"),
-	MN_TOOLBAR_STYLE_ICONS
-      },
-      {
-	"ViewToolbarsStyleTextOnly",
-	NULL,
-	N_("_Text Only"),
-	NULL,
-	N_("Only display the toolbars text"),
-	MN_TOOLBAR_STYLE_TEXT
-      },
-      {
-	"ViewToolbarsStyleTextBelowIcons",
-	NULL,
-	N_("Text Belo_w Icons"),
-	NULL,
-	N_("Display the toolbars text below the icons"),
-	MN_TOOLBAR_STYLE_BOTH
-      },
-      {
-	"ViewToolbarsStyleTextBesideIcons",
-	NULL,
-	N_("Text Be_side Icons"),
-	NULL,
-	N_("Display the toolbars text beside the icons"),
-	MN_TOOLBAR_STYLE_BOTH_HORIZ
-      }
-    };
-
-    GError *err = NULL;
-    GtkAccelGroup *accel_group;
-
-    g_return_if_fail(selfp->ui_manager == NULL);
-
-    selfp->ui_manager = gtk_ui_manager_new();
-
-    g_object_connect(selfp->ui_manager,
-		     "swapped-signal::connect-proxy", self_ui_manager_connect_proxy_h, self,
-		     "swapped-signal::disconnect-proxy", self_ui_manager_disconnect_proxy_h, self,
-		     NULL);
-
-    selfp->action_group = gtk_action_group_new("MainWindowActions");
-    gtk_action_group_set_translation_domain(selfp->action_group, NULL);
-    
-    gtk_action_group_add_actions(selfp->action_group,
-				 menu_entries,
-				 G_N_ELEMENTS(menu_entries),
-				 self);
-    gtk_action_group_add_toggle_actions(selfp->action_group,
-					toggle_entries,
-					G_N_ELEMENTS(toggle_entries),
-					self);
-    gtk_action_group_add_radio_actions(selfp->action_group,
-				       toolbars_style_entries,
-				       G_N_ELEMENTS(toolbars_style_entries),
-				       -1,
-				       G_CALLBACK(self_update_toolbars_style_changed_h),
-				       self);
-    gtk_ui_manager_insert_action_group(selfp->ui_manager, selfp->action_group, 0);
-
-    g_object_set(G_OBJECT(GET_ACTION("MailMailReader")),
-		 "is-important", TRUE,
-		 NULL);
-
-    if (! gtk_ui_manager_add_ui_from_file(selfp->ui_manager, MN_INTERFACE_FILE("menus.xml"), &err))
-      {
-	g_critical(_("unable to load menus.xml: %s"), err->message);
-	g_error_free(err);
-      }
-
-    accel_group = gtk_ui_manager_get_accel_group(selfp->ui_manager);
-    gtk_window_add_accel_group(GTK_WINDOW(self), accel_group);
-
-    /*
-     * ~/.gnome2/accels/mail-notification is automatically loaded by
-     * the libgnomeui module, we just need to save it ourselves.
-     */
-    g_signal_connect(accel_group, "accel-changed", G_CALLBACK(gnome_accelerators_sync), NULL);
-  }}
-#line 556 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 359 "mn-main-window.gob"
-static void 
-mn_main_window_create_toolbars_model (MNMainWindow * self, gboolean use_dot_file)
-#line 562 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::create_toolbars_model"
-#line 359 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 359 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 569 "mn-main-window.c"
-{
-#line 361 "mn-main-window.gob"
-	
-    gboolean load_default_toolbars = TRUE;
-
-    if (selfp->toolbars_model)
-      g_object_unref(selfp->toolbars_model);
-
-    selfp->toolbars_model = egg_toolbars_model_new();
-
-    g_object_connect(selfp->toolbars_model,
-		     "swapped-signal-after::item-added", self_toolbars_model_save_changes, self,
-		     "swapped-signal-after::item-removed", self_toolbars_model_save_changes, self,
-		     "swapped-signal-after::toolbar-added", self_toolbars_model_update_flags_and_save_changes, self,
-		     "swapped-signal-after::toolbar-removed", self_toolbars_model_update_flags_and_save_changes, self,
-		     NULL);
-
-    if (use_dot_file)
-      {
-	char *filename;
-
-	filename = g_build_filename(mn_conf_dot_dir, "toolbars.xml", NULL);
-	load_default_toolbars = ! egg_toolbars_model_load(selfp->toolbars_model, filename);
-	g_free(filename);
-      }
-
-    if (load_default_toolbars)
-      {
-	if (! egg_toolbars_model_load(selfp->toolbars_model, MN_INTERFACE_FILE("toolbars.xml")))
-	  g_critical(_("unable to load toolbars.xml"));
-      }
-  
-  if (egg_toolbars_model_n_toolbars(selfp->toolbars_model) < 1)
-    egg_toolbars_model_add_toolbar(selfp->toolbars_model, 0, "DefaultToolbar");
-
-  if (selfp->toolbar)
-    egg_editable_toolbar_set_model(EGG_EDITABLE_TOOLBAR(selfp->toolbar), selfp->toolbars_model);
-  }}
-#line 608 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 398 "mn-main-window.gob"
-static void 
-mn_main_window_update_toolbars_visibility (MNMainWindow * self)
-#line 614 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::update_toolbars_visibility"
-#line 398 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 398 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 621 "mn-main-window.c"
-{
-#line 400 "mn-main-window.gob"
-	
-    g_object_set(G_OBJECT(selfp->toolbar), "visible", gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(GET_ACTION("ViewToolbars"))), NULL);
-  }}
-#line 627 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 404 "mn-main-window.gob"
-static void 
-mn_main_window_update_statusbar_visibility (MNMainWindow * self)
-#line 633 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::update_statusbar_visibility"
-#line 404 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 404 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 640 "mn-main-window.c"
-{
-#line 406 "mn-main-window.gob"
-	
-    g_object_set(G_OBJECT(selfp->statusbar), "visible", ! FULLSCREEN && gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(GET_ACTION("ViewStatusbar"))), NULL);
-  }}
-#line 646 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 410 "mn-main-window.gob"
-static void 
-mn_main_window_notify_mail_reader_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 652 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::notify_mail_reader_cb"
-{
-#line 415 "mn-main-window.gob"
-	
-    Self *self = user_data;
-
-    GDK_THREADS_ENTER();
-    self_update_sensitivity(self);
-    GDK_THREADS_LEAVE();
-  }}
-#line 664 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 423 "mn-main-window.gob"
-static void 
-mn_main_window_update_messages (MNMainWindow * self)
-#line 670 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::update_messages"
-#line 423 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 423 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 677 "mn-main-window.c"
-{
-#line 425 "mn-main-window.gob"
-	
-    GSList *messages;
-    int count;
-
-    messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
-    count = g_slist_length(messages);
-
-    mn_message_view_set_messages(MN_MESSAGE_VIEW(selfp->message_view), messages);
-    mn_g_object_slist_free(messages);
-
-    if (count > 0)
-      {
-	char *status;
-	
-	status = g_strdup_printf(ngettext("%i new message", "%i new messages", count), count);
-	STATUS_PUSH(selfp->count_cid, status);
-	g_free(status);
-      }
-    else
-      STATUS_POP(selfp->count_cid);
-  }}
-#line 701 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 447 "mn-main-window.gob"
-static void 
-mn_main_window_update_sensitivity (MNMainWindow * self)
-#line 707 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::update_sensitivity"
-#line 447 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 447 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 714 "mn-main-window.c"
-{
-#line 449 "mn-main-window.gob"
-	
-    gtk_action_set_sensitive(GET_ACTION("MailMailReader"), mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READER_NAMESPACE));
-    gtk_action_set_sensitive(GET_ACTION("MailUpdate"), mn_mailboxes_get_must_poll(mn_shell->mailboxes));
-  }}
-#line 721 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 454 "mn-main-window.gob"
-static void 
-mn_main_window_ui_manager_connect_proxy_h (MNMainWindow * self, GtkAction * action, GtkWidget * proxy, GtkUIManager * manager)
-#line 727 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::ui_manager_connect_proxy_h"
-#line 454 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 454 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 734 "mn-main-window.c"
-{
-#line 459 "mn-main-window.gob"
-	
-    if (GTK_IS_MENU_ITEM(proxy))
-      g_object_connect(proxy,
-		       "swapped-signal::select", self_menu_item_select_h, self,
-		       "swapped-signal::deselect", self_menu_item_deselect_h, self,
-		       NULL);
-  }}
-#line 744 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 467 "mn-main-window.gob"
-static void 
-mn_main_window_ui_manager_disconnect_proxy_h (MNMainWindow * self, GtkAction * action, GtkWidget * proxy, GtkUIManager * manager)
-#line 750 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::ui_manager_disconnect_proxy_h"
-#line 467 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 467 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 757 "mn-main-window.c"
-{
-#line 472 "mn-main-window.gob"
-	
-    if (GTK_IS_MENU_ITEM(proxy))
-      g_object_disconnect(proxy,
-			  "any-signal", self_menu_item_select_h, self,
-			  "any-signal", self_menu_item_deselect_h, self,
-			  NULL);
-  }}
-#line 767 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 480 "mn-main-window.gob"
-static void 
-mn_main_window_menu_item_select_h (MNMainWindow * self, GtkMenuItem * item)
-#line 773 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::menu_item_select_h"
-#line 480 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 480 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 780 "mn-main-window.c"
-{
-#line 482 "mn-main-window.gob"
-	
-    GtkAction *action;
-    char *tooltip = NULL;
-
-    action = g_object_get_data(G_OBJECT(item), "gtk-action");
-    g_return_if_fail(action != NULL);
-  
-    g_object_get(G_OBJECT(action), "tooltip", &tooltip, NULL);
-    if (tooltip)
-      {
-	STATUS_PUSH(selfp->help_cid, tooltip);
-	g_free(tooltip);
-      }
-  }}
-#line 797 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 497 "mn-main-window.gob"
-static void 
-mn_main_window_menu_item_deselect_h (MNMainWindow * self, GtkMenuItem * item)
-#line 803 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::menu_item_deselect_h"
-#line 497 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 497 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 810 "mn-main-window.c"
-{
-#line 499 "mn-main-window.gob"
-	
-    STATUS_POP(selfp->help_cid);
-  }}
-#line 816 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 503 "mn-main-window.gob"
-static gboolean 
-mn_main_window_window_state_event_h (MNMainWindow * self, GdkEventWindowState * event, gpointer user_data)
-#line 822 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::window_state_event_h"
-#line 503 "mn-main-window.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 503 "mn-main-window.gob"
-	g_return_val_if_fail (MN_IS_MAIN_WINDOW (self), (gboolean )0);
-#line 829 "mn-main-window.c"
-{
-#line 505 "mn-main-window.gob"
-	
-    if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
-      {
-	if (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)
-	  self_fullscreen(self);
-	else
-	  self_unfullscreen(self);
-      }
-    
-    return FALSE;		/* propagate event */
-  }}
-#line 843 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 517 "mn-main-window.gob"
-static void 
-mn_main_window_update_toolbars_style_changed_h (GtkRadioAction * action, GtkRadioAction * current, Self * self)
-#line 849 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::update_toolbars_style_changed_h"
-{
-#line 521 "mn-main-window.gob"
-	
-    self_update_toolbars_style(self);
-  }}
-#line 857 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 525 "mn-main-window.gob"
-static void 
-mn_main_window_update_toolbars_style (MNMainWindow * self)
-#line 863 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::update_toolbars_style"
-#line 525 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 525 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 870 "mn-main-window.c"
-{
-#line 527 "mn-main-window.gob"
-	
-    MNToolbarStyle style;
-    EggTbModelFlags flag;
-    int n_toolbars;
-    int i;
-
-    style = gtk_radio_action_get_current_value(GTK_RADIO_ACTION(GET_ACTION("ViewToolbarsStyleDesktopDefault")));
-    if (style == MN_TOOLBAR_STYLE_DESKTOP_DEFAULT)
-      g_object_get(gtk_widget_get_settings(selfp->toolbar), "gtk-toolbar-style", &style, NULL);
-
-    if (FULLSCREEN && style == MN_TOOLBAR_STYLE_BOTH)
-      style = MN_TOOLBAR_STYLE_ICONS;
-
-    switch (style)
-      {
-      case MN_TOOLBAR_STYLE_ICONS:	flag = EGG_TB_MODEL_ICONS; break;
-      case MN_TOOLBAR_STYLE_TEXT:	flag = EGG_TB_MODEL_TEXT; break;
-      case MN_TOOLBAR_STYLE_BOTH:	flag = EGG_TB_MODEL_BOTH; break;
-      case MN_TOOLBAR_STYLE_BOTH_HORIZ:	flag = EGG_TB_MODEL_BOTH_HORIZ; break;
-      default:				g_assert_not_reached();
-      }
-    
-    n_toolbars = egg_toolbars_model_n_toolbars(selfp->toolbars_model);
-
-    for (i = 0; i < n_toolbars; i++)
-      {
-	EggTbModelFlags flags;
-
-	flags = egg_toolbars_model_get_flags(selfp->toolbars_model, i);
-	flags &= ~ (EGG_TB_MODEL_ICONS
-		    | EGG_TB_MODEL_TEXT
-		    | EGG_TB_MODEL_BOTH
-		    | EGG_TB_MODEL_BOTH_HORIZ);
-	flags |= flag;
-	egg_toolbars_model_set_flags(selfp->toolbars_model, i, flags);
-      }
-  }}
-#line 910 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 565 "mn-main-window.gob"
-static void 
-mn_main_window_toolbars_model_save_changes (MNMainWindow * self)
-#line 916 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::toolbars_model_save_changes"
-#line 565 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 565 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 923 "mn-main-window.c"
-{
-#line 567 "mn-main-window.gob"
-	
-    if (! selfp->toolbars_model_save_idle_id)
-      selfp->toolbars_model_save_idle_id = g_idle_add((GSourceFunc) self_toolbars_model_save_changes_cb, self);
-  }}
-#line 930 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 572 "mn-main-window.gob"
-static gboolean 
-mn_main_window_toolbars_model_save_changes_cb (MNMainWindow * self)
-#line 936 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::toolbars_model_save_changes_cb"
-#line 572 "mn-main-window.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 572 "mn-main-window.gob"
-	g_return_val_if_fail (MN_IS_MAIN_WINDOW (self), (gboolean )0);
-#line 943 "mn-main-window.c"
-{
-#line 574 "mn-main-window.gob"
-	
-    char *filename;
-
-    GDK_THREADS_ENTER();
-
-    filename = g_build_filename(mn_conf_dot_dir, "toolbars.xml", NULL);
-    egg_toolbars_model_save(selfp->toolbars_model, filename, "1.0");
-    g_free(filename);
-
-    GDK_THREADS_LEAVE();
-
-    selfp->toolbars_model_save_idle_id = 0;
-    return FALSE;		/* remove */
-  }}
-#line 960 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 589 "mn-main-window.gob"
-static void 
-mn_main_window_toolbars_model_update_flags_and_save_changes (MNMainWindow * self)
-#line 966 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::toolbars_model_update_flags_and_save_changes"
-#line 589 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 589 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 973 "mn-main-window.c"
-{
-#line 591 "mn-main-window.gob"
-	
-    int i;
-    int n_toolbars;
-    EggTbModelFlags flag = EGG_TB_MODEL_ACCEPT_ITEMS_ONLY;
-
-    n_toolbars = egg_toolbars_model_n_toolbars(selfp->toolbars_model);
-  
-    if (n_toolbars <= 1)
-      flag |= EGG_TB_MODEL_NOT_REMOVABLE;
-
-    for (i = 0; i < n_toolbars; i++)
-      {
-	EggTbModelFlags flags;
-	
-	flags = egg_toolbars_model_get_flags(selfp->toolbars_model, i);
-	flags &= ~EGG_TB_MODEL_NOT_REMOVABLE;
-	flags |= flag;
-	egg_toolbars_model_set_flags(selfp->toolbars_model, i, flags);
-      }
-
-    self_toolbars_model_save_changes(self);
-  }}
-#line 998 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 614 "mn-main-window.gob"
-static void 
-mn_main_window_mail_reader_activate_h (GtkAction * action, Self * self)
-#line 1004 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::mail_reader_activate_h"
-{
-#line 616 "mn-main-window.gob"
-	
-    mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
-  }}
-#line 1012 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 620 "mn-main-window.gob"
-static void 
-mn_main_window_update_activate_h (GtkAction * action, Self * self)
-#line 1018 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::update_activate_h"
-{
-#line 622 "mn-main-window.gob"
-	
-    mn_mailboxes_check(mn_shell->mailboxes);
-  }}
-#line 1026 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 626 "mn-main-window.gob"
-static void 
-mn_main_window_close_activate_h (GtkAction * action, Self * self)
-#line 1032 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::close_activate_h"
-{
-#line 628 "mn-main-window.gob"
-	
-    gtk_widget_destroy(GTK_WIDGET(self));
-  }}
-#line 1040 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 632 "mn-main-window.gob"
-static void 
-mn_main_window_quit_activate_h (GtkAction * action, Self * self)
-#line 1046 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::quit_activate_h"
-{
-#line 634 "mn-main-window.gob"
-	
-    g_object_unref(mn_shell);
-  }}
-#line 1054 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 638 "mn-main-window.gob"
-static void 
-mn_main_window_edit_toolbars_activate_h (GtkAction * action, Self * self)
-#line 1060 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::edit_toolbars_activate_h"
-{
-#line 640 "mn-main-window.gob"
-	
-    if (selfp->edit_toolbars_dialog)
-      {
-	gtk_window_present(GTK_WINDOW(selfp->edit_toolbars_dialog));
-	return;
-      }
-  
-    mn_create_interface(MN_INTERFACE_FILE("edit-toolbars-dialog.glade"),
-			"dialog", &selfp->edit_toolbars_dialog,
-			NULL);
-
-    eel_add_weak_pointer(&selfp->edit_toolbars_dialog);
-    g_object_weak_ref(G_OBJECT(selfp->edit_toolbars_dialog), (GWeakNotify) self_edit_toolbars_weak_notify_cb, self);
-    
-    gtk_window_set_transient_for(GTK_WINDOW(selfp->edit_toolbars_dialog), GTK_WINDOW(self));
-
-    self_edit_toolbars_create_editor(self);
-    egg_editable_toolbar_set_edit_mode(EGG_EDITABLE_TOOLBAR(selfp->toolbar), TRUE);
-
-    mn_conf_link(selfp->edit_toolbars_dialog, MN_CONF_MAIN_WINDOW_EDIT_TOOLBARS_DIALOG, NULL);
-
-    g_signal_connect_swapped(selfp->edit_toolbars_dialog, "response", G_CALLBACK(self_edit_toolbars_response_h), self);
-
-    gtk_widget_show(selfp->edit_toolbars_dialog);
-  }}
-#line 1090 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 666 "mn-main-window.gob"
-static void 
-mn_main_window_edit_toolbars_response_h (MNMainWindow * self, int response, GtkDialog * dialog)
-#line 1096 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::edit_toolbars_response_h"
-#line 666 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 666 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 1103 "mn-main-window.c"
-{
-#line 668 "mn-main-window.gob"
-	
-    switch (response)
-      {
-      case GTK_RESPONSE_HELP:
-	mn_display_help(GTK_WINDOW(dialog), "main-window-edit-toolbars");
-	break;
-
-      case 1:			/* use default */
-	/* recreate the model, discarding the dot file */
-	self_create_toolbars_model(self, FALSE);
-	/* and recreate the editor, since the model has changed */
-	self_edit_toolbars_create_editor(self);
-	break;
-
-      case 2:			/* add toolbar */
-	egg_toolbars_model_add_toolbar(selfp->toolbars_model, -1, "UserCreated");
-	break;
-	
-      case GTK_RESPONSE_CLOSE:
-	gtk_widget_destroy(GTK_WIDGET(dialog));
-	break;
-      }
-  }}
-#line 1129 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 692 "mn-main-window.gob"
-static void 
-mn_main_window_edit_toolbars_create_editor (MNMainWindow * self)
-#line 1135 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::edit_toolbars_create_editor"
-#line 692 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 692 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 1142 "mn-main-window.c"
-{
-#line 694 "mn-main-window.gob"
-	
-    g_return_if_fail(selfp->edit_toolbars_dialog != NULL);
-
-    if (selfp->edit_toolbars_editor)
-      gtk_widget_destroy(selfp->edit_toolbars_editor);
-
-    selfp->edit_toolbars_editor = egg_toolbar_editor_new(selfp->ui_manager, selfp->toolbars_model);
-    eel_add_weak_pointer(&selfp->edit_toolbars_editor);
-
-    gtk_container_set_border_width(GTK_CONTAINER(selfp->edit_toolbars_editor), 5);
-    gtk_box_set_spacing(GTK_BOX(selfp->edit_toolbars_editor), 6);
-  
-    egg_toolbar_editor_load_actions(EGG_TOOLBAR_EDITOR(selfp->edit_toolbars_editor), MN_INTERFACE_FILE("toolbars.xml"));
-
-    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(selfp->edit_toolbars_dialog)->vbox), selfp->edit_toolbars_editor);
-    gtk_widget_show(selfp->edit_toolbars_editor);
-  }}
-#line 1162 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 712 "mn-main-window.gob"
-static void 
-mn_main_window_edit_toolbars_weak_notify_cb (MNMainWindow * self, GObject * former_object)
-#line 1168 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::edit_toolbars_weak_notify_cb"
-#line 712 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 712 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 1175 "mn-main-window.c"
-{
-#line 714 "mn-main-window.gob"
-	
-    egg_editable_toolbar_set_edit_mode(EGG_EDITABLE_TOOLBAR(selfp->toolbar), FALSE);
-  }}
-#line 1181 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 718 "mn-main-window.gob"
-static void 
-mn_main_window_preferences_activate_h (GtkAction * action, Self * self)
-#line 1187 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::preferences_activate_h"
-{
-#line 720 "mn-main-window.gob"
-	
-    mn_shell_display_properties_dialog(mn_shell, GTK_WINDOW(self));
-  }}
-#line 1195 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 724 "mn-main-window.gob"
-static void 
-mn_main_window_help_contents_activate_h (GtkAction * action, Self * self)
-#line 1201 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::help_contents_activate_h"
-{
-#line 726 "mn-main-window.gob"
-	
-    mn_display_help(GTK_WINDOW(self), "main-window");
-  }}
-#line 1209 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 730 "mn-main-window.gob"
-static void 
-mn_main_window_about_activate_h (GtkAction * action, Self * self)
-#line 1215 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::about_activate_h"
-{
-#line 732 "mn-main-window.gob"
-	
-    mn_shell_display_about_dialog(mn_shell, GTK_WINDOW(self));
-  }}
-#line 1223 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 736 "mn-main-window.gob"
-static void 
-mn_main_window_fullscreen (MNMainWindow * self)
-#line 1229 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::fullscreen"
-#line 736 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 736 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 1236 "mn-main-window.c"
-{
-#line 738 "mn-main-window.gob"
-	
-    GtkWidget *button;
-
-    selfp->leave_fullscreen_popup = gtk_window_new(GTK_WINDOW_POPUP);
-    eel_add_weak_pointer(&selfp->leave_fullscreen_popup);
-
-    button = gtk_button_new_from_stock(MN_STOCK_LEAVE_FULLSCREEN);
-    gtk_container_add(GTK_CONTAINER(selfp->leave_fullscreen_popup), button);
-    gtk_widget_show(button);
-
-    g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_window_unfullscreen), self);
-
-    gtk_widget_hide(selfp->menubar);
-    self_update_toolbars_style(self);
-    self_update_statusbar_visibility(self);
-
-    selfp->leave_fullscreen_popup_visible = TRUE;
-    self_update_leave_fullscreen_popup_position(self);
-    gtk_widget_show(selfp->leave_fullscreen_popup);
-
-    g_signal_connect_swapped(gdk_screen_get_default(),
-			     "size-changed",
-			     G_CALLBACK(self_update_leave_fullscreen_popup_position),
-			     self);
-    g_signal_connect(self,
-		     "key-press-event",
-		     G_CALLBACK(self_fullscreen_key_press_event_h),
-		     NULL);
-
-    g_object_connect(selfp->leave_fullscreen_popup,
-		     "swapped-signal::enter-notify-event", self_leave_fullscreen_enter_notify_event_h, self,
-		     "swapped-signal::leave-notify-event", self_leave_fullscreen_leave_notify_event_h, self,
-		     NULL);
-
-    selfp->leave_fullscreen_timeout_id = g_timeout_add(5000, (GSourceFunc) self_leave_fullscreen_timeout_cb, self);
-  }}
-#line 1275 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 775 "mn-main-window.gob"
-static void 
-mn_main_window_unfullscreen (MNMainWindow * self)
-#line 1281 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::unfullscreen"
-#line 775 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 775 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 1288 "mn-main-window.c"
-{
-#line 777 "mn-main-window.gob"
-	
-    g_signal_handlers_disconnect_by_func(gdk_screen_get_default(), self_update_leave_fullscreen_popup_position, self);
-
-    mn_source_clear(&selfp->leave_fullscreen_timeout_id);
-    gtk_widget_destroy(selfp->leave_fullscreen_popup);
-
-    g_signal_handlers_disconnect_by_func(self, self_fullscreen_key_press_event_h, NULL);
-      
-    gtk_widget_show(selfp->menubar);
-    self_update_toolbars_style(self);
-    self_update_statusbar_visibility(self);
-  }}
-#line 1303 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 790 "mn-main-window.gob"
-static gboolean 
-mn_main_window_leave_fullscreen_timeout_cb (MNMainWindow * self)
-#line 1309 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::leave_fullscreen_timeout_cb"
-#line 790 "mn-main-window.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 790 "mn-main-window.gob"
-	g_return_val_if_fail (MN_IS_MAIN_WINDOW (self), (gboolean )0);
-#line 1316 "mn-main-window.c"
-{
-#line 792 "mn-main-window.gob"
-	
-    selfp->leave_fullscreen_popup_visible = FALSE;
-
-    GDK_THREADS_ENTER();
-    self_update_leave_fullscreen_popup_position(self);
-    GDK_THREADS_LEAVE();
-    
-    selfp->leave_fullscreen_timeout_id = 0;
-    return FALSE;		/* remove timeout */
-  }}
-#line 1329 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 803 "mn-main-window.gob"
-static gboolean 
-mn_main_window_leave_fullscreen_enter_notify_event_h (MNMainWindow * self, GdkEventCrossing * event, GtkWidget * widget)
-#line 1335 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::leave_fullscreen_enter_notify_event_h"
-#line 803 "mn-main-window.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 803 "mn-main-window.gob"
-	g_return_val_if_fail (MN_IS_MAIN_WINDOW (self), (gboolean )0);
-#line 1342 "mn-main-window.c"
-{
-#line 807 "mn-main-window.gob"
-	
-    mn_source_clear(&selfp->leave_fullscreen_timeout_id);
-    selfp->leave_fullscreen_popup_visible = TRUE;
-    self_update_leave_fullscreen_popup_position(self);
-
-    return FALSE;		/* propagate event */
-  }}
-#line 1352 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 815 "mn-main-window.gob"
-static gboolean 
-mn_main_window_leave_fullscreen_leave_notify_event_h (MNMainWindow * self, GdkEventCrossing * event, GtkWidget * widget)
-#line 1358 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::leave_fullscreen_leave_notify_event_h"
-#line 815 "mn-main-window.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 815 "mn-main-window.gob"
-	g_return_val_if_fail (MN_IS_MAIN_WINDOW (self), (gboolean )0);
-#line 1365 "mn-main-window.c"
-{
-#line 819 "mn-main-window.gob"
-	
-    mn_source_clear(&selfp->leave_fullscreen_timeout_id);
-    selfp->leave_fullscreen_timeout_id = g_timeout_add(5000, (GSourceFunc) self_leave_fullscreen_timeout_cb, self);
-
-    return FALSE;		/* propagate event */
-  }}
-#line 1374 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 826 "mn-main-window.gob"
-static void 
-mn_main_window_update_leave_fullscreen_popup_position (MNMainWindow * self)
-#line 1380 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::update_leave_fullscreen_popup_position"
-#line 826 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 826 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 1387 "mn-main-window.c"
-{
-#line 828 "mn-main-window.gob"
-	
-    GdkScreen *screen;
-    int monitor_num;
-    GdkRectangle screen_rect;
-    int popup_width;
-    int popup_height;
-    int y;
-
-    g_return_if_fail(selfp->leave_fullscreen_popup != NULL);
-
-    screen = gdk_screen_get_default();
-    monitor_num = gdk_screen_get_monitor_at_window(screen, GTK_WIDGET(self)->window);
-    gdk_screen_get_monitor_geometry(screen, monitor_num, &screen_rect);
-    gtk_window_get_size(GTK_WINDOW(selfp->leave_fullscreen_popup), &popup_width, &popup_height);
-
-    y = screen_rect.y;
-    if (! selfp->leave_fullscreen_popup_visible)
-      y -= popup_height - 2;
-
-    gtk_window_move(GTK_WINDOW(selfp->leave_fullscreen_popup), screen_rect.width - popup_width, y);
-  }}
-#line 1411 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 850 "mn-main-window.gob"
-static gboolean 
-mn_main_window_fullscreen_key_press_event_h (MNMainWindow * self, GdkEventKey * event, gpointer user_data)
-#line 1417 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::fullscreen_key_press_event_h"
-#line 850 "mn-main-window.gob"
-	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 850 "mn-main-window.gob"
-	g_return_val_if_fail (MN_IS_MAIN_WINDOW (self), (gboolean )0);
-#line 1424 "mn-main-window.c"
-{
-#line 852 "mn-main-window.gob"
-	
-    unsigned int modifiers = gtk_accelerator_get_default_mod_mask();
-
-    if (event->keyval == GDK_Escape && (event->state & modifiers) == 0)
-      {
-	gtk_window_unfullscreen(GTK_WINDOW(self));
-	return TRUE;		/* do not propagate event */
-      }
-    else if (event->keyval == GDK_F10 && (event->state & modifiers) == 0)
-      {
-	g_signal_connect_swapped(selfp->menubar, "deactivate", G_CALLBACK(self_fullscreen_menubar_deactivate_h), self);
-
-	gtk_widget_show(selfp->menubar);
-	gtk_menu_shell_select_first(GTK_MENU_SHELL(selfp->menubar), FALSE);
-
-	return TRUE;		/* do not propagate event */
-      }
-    else
-      return FALSE;		/* propagate event */
-  }}
-#line 1447 "mn-main-window.c"
-#undef __GOB_FUNCTION__
-
-#line 873 "mn-main-window.gob"
-static void 
-mn_main_window_fullscreen_menubar_deactivate_h (MNMainWindow * self, GtkMenuShell * menushell)
-#line 1453 "mn-main-window.c"
-{
-#define __GOB_FUNCTION__ "MN:Main:Window::fullscreen_menubar_deactivate_h"
-#line 873 "mn-main-window.gob"
-	g_return_if_fail (self != NULL);
-#line 873 "mn-main-window.gob"
-	g_return_if_fail (MN_IS_MAIN_WINDOW (self));
-#line 1460 "mn-main-window.c"
-{
-#line 875 "mn-main-window.gob"
-	
-    g_signal_handlers_disconnect_by_func(selfp->menubar, G_CALLBACK(self_fullscreen_menubar_deactivate_h), self);
-    gtk_menu_shell_deselect(menushell);
-    gtk_widget_hide(selfp->menubar);
-  }}
-#line 1468 "mn-main-window.c"
-#undef __GOB_FUNCTION__
diff --git a/src/mn-main-window.gob b/src/mn-main-window.gob
@@ -1,880 +0,0 @@
-/* 
- * 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.
- */
-
-requires 2.0.12
-
-%headertop{
-#include <gtk/gtk.h>
-%}
-
-%privateheader{
-#include "egg-toolbars-model.h"
-%}
-
-%{
-#include "config.h"
-#include <gnome.h>
-#include <eel/eel.h>
-#include "egg-editable-toolbar.h"
-#include "egg-toolbar-editor.h"
-#include "mn-util.h"
-#include "mn-stock.h"
-#include "mn-shell.h"
-#include "mn-conf.h"
-#include "mn-properties-dialog.h"
-#include "mn-message-view.h"
-
-#define STATUS_PUSH(cid, str) \
-  gtk_statusbar_push(GTK_STATUSBAR(selfp->statusbar), (cid), (str))
-#define STATUS_POP(cid) \
-  gtk_statusbar_pop(GTK_STATUSBAR(selfp->statusbar), (cid))
-#define GET_ACTION(name) \
-  gtk_action_group_get_action(selfp->action_group, (name))
-#define FULLSCREEN \
-  (selfp->leave_fullscreen_popup != NULL)
-%}
-
-class MN:Main:Window from Gtk:Window
-{
-  private GtkWidget *menubar;
-  private GtkWidget *toolbar;
-  private GtkWidget *message_view;
-  private GtkWidget *statusbar;
-
-  private GtkUIManager *ui_manager unrefwith g_object_unref;
-  private GtkActionGroup *action_group unrefwith g_object_unref;
-
-  private EggToolbarsModel *toolbars_model unrefwith g_object_unref;
-  private unsigned int toolbars_model_save_idle_id;
-
-  private unsigned int help_cid;
-  private unsigned int count_cid;
-
-  private GtkWidget *leave_fullscreen_popup;
-  private gboolean leave_fullscreen_popup_visible;
-  private unsigned int leave_fullscreen_timeout_id;
-
-  private GtkWidget *edit_toolbars_dialog;
-  private GtkWidget *edit_toolbars_editor;
-
-  init (self)
-  {
-    GtkWidget *scrolled;
-    GtkWidget *vbox;
-
-    self_create_ui_manager(self);
-    self_create_toolbars_model(self, TRUE);
-
-    selfp->menubar = gtk_ui_manager_get_widget(selfp->ui_manager, "/menubar");
-    selfp->toolbar = egg_editable_toolbar_new_with_model(selfp->ui_manager, selfp->toolbars_model);
-
-    scrolled = gtk_scrolled_window_new(NULL, NULL);
-    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled),
-				   GTK_POLICY_AUTOMATIC,
-				   GTK_POLICY_AUTOMATIC);
-
-    selfp->message_view = mn_message_view_new(FALSE, TRUE);
-    gtk_widget_set_name(selfp->message_view, "mn-message-view");
-    gtk_container_set_border_width(GTK_CONTAINER(selfp->message_view), 12);
-    gtk_container_add(GTK_CONTAINER(scrolled), selfp->message_view);
-
-    selfp->statusbar = gtk_statusbar_new();
-
-    vbox = gtk_vbox_new(FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), selfp->menubar, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), selfp->toolbar, FALSE, FALSE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), scrolled, TRUE, TRUE, 0);
-    gtk_box_pack_start(GTK_BOX(vbox), selfp->statusbar, FALSE, FALSE, 0);
-    gtk_widget_show_all(vbox);
-    gtk_container_add(GTK_CONTAINER(self), vbox);
-
-    selfp->help_cid = gtk_statusbar_get_context_id(GTK_STATUSBAR(selfp->statusbar), _("Help messages"));
-    selfp->count_cid = gtk_statusbar_get_context_id(GTK_STATUSBAR(selfp->statusbar), _("Count messages"));
-
-    mn_conf_link(self, MN_CONF_MAIN_WINDOW_DIMENSIONS,
-		 GET_ACTION("ViewToolbars"), MN_CONF_MAIN_WINDOW_VIEW_TOOLBARS,
-		 GET_ACTION("ViewStatusbar"), MN_CONF_MAIN_WINDOW_VIEW_STATUSBAR,
-		 GET_ACTION("ViewToolbarsStyleDesktopDefault"), MN_CONF_MAIN_WINDOW_TOOLBARS_STYLE, MN_TYPE_TOOLBAR_STYLE,
-		 NULL);
-
-    self_update_toolbars_visibility(self);
-    self_update_statusbar_visibility(self);
-
-    g_signal_connect_swapped(GET_ACTION("ViewToolbars"), "toggled", G_CALLBACK(self_update_toolbars_visibility), self);
-    g_signal_connect_swapped(GET_ACTION("ViewStatusbar"), "toggled", G_CALLBACK(self_update_statusbar_visibility), self);
-
-    self_update_messages(self);
-    self_update_sensitivity(self);
-
-    mn_conf_notification_add(self,
-			     MN_CONF_COMMANDS_MAIL_READER_NAMESPACE,
-			     self_notify_mail_reader_cb,
-			     self);
-    mn_g_object_connect(self,
-			mn_shell->mailboxes,
-			"swapped-signal::notify::must-poll", self_update_sensitivity, self,
-			"swapped-signal::messages-changed", self_update_messages, self,
-			NULL);
-    g_signal_connect(self, "window-state-event", G_CALLBACK(self_window_state_event_h), NULL);
-
-    gtk_widget_grab_focus(selfp->message_view);
-  }
-
-  override (G:Object) void
-    dispose (GObject *object)
-  {
-    Self *self = SELF(object);
-
-    mn_source_clear(&selfp->toolbars_model_save_idle_id);
-
-    if (FULLSCREEN)
-      self_unfullscreen(self);
-
-    PARENT_HANDLER(object);
-  }
-
-  private void
-    create_ui_manager (self)
-  {
-    static GtkActionEntry menu_entries[] = {
-      /* Toplevel */
-      { "Mail", NULL, N_("_Mail") },
-      { "Edit", NULL, N_("_Edit") },
-      { "View", NULL, N_("_View") },
-      { "Help", NULL, N_("_Help") },
-
-      /* Mail menu */
-      {
-	"MailMailReader",
-	MN_STOCK_MAIL_READER,
-	N_("_Mail Reader"),
-	"<control>M",
-	N_("Launch the mail reader"),
-	G_CALLBACK(self_mail_reader_activate_h)
-      },
-      {
-	"MailUpdate",
-	GTK_STOCK_REFRESH,
-	N_("_Update"),
-	"<control>R",		/* Reload */
-	N_("Update the mail status"),
-	G_CALLBACK(self_update_activate_h)
-      },
-      {
-	"MailClose",
-	GTK_STOCK_CLOSE,
-	N_("_Close"),
-	"<control>W",
-	N_("Close this window"),
-	G_CALLBACK(self_close_activate_h)
-      },
-      {
-	"MailQuit",
-	GTK_STOCK_QUIT,
-	N_("_Quit"),
-	"<control>Q",
-	N_("Quit Mail Notification"),
-	G_CALLBACK(self_quit_activate_h)
-      },
-
-      /* Edit menu */
-      {
-	"EditToolbars",
-	NULL,
-	N_("_Toolbars"),
-	NULL,
-	N_("Customize the toolbars"),
-	G_CALLBACK(self_edit_toolbars_activate_h)
-      },
-      {
-	"EditPreferences",
-	GTK_STOCK_PREFERENCES,
-	N_("_Preferences"),
-	NULL,
-	N_("Configure Mail Notification"),
-	G_CALLBACK(self_preferences_activate_h)
-      },
-
-      /* View menu */
-      {
-	"ViewToolbarsStyle",
-	NULL,
-	N_("Toolbars Styl_e"),
-	NULL,
-	N_("Customize the toolbars style"),
-	NULL
-      },
-
-      /* Help menu */
-      {
-	"HelpContents",
-	GTK_STOCK_HELP,
-	N_("_Contents"),
-	"F1",
-	N_("Display help"),
-	G_CALLBACK(self_help_contents_activate_h)
-      },
-      {
-	"HelpAbout",
-	GTK_STOCK_ABOUT,
-	N_("_About"),
-	NULL,
-	N_("Display credits"),
-	G_CALLBACK(self_about_activate_h)
-      }
-    };
-
-    static GtkToggleActionEntry toggle_entries[] = {
-      /* View menu */
-      {
-	"ViewToolbars",
-	NULL,
-	N_("_Toolbars"),
-	NULL,
-	N_("Show or hide the toolbars"),
-	NULL,
-	FALSE
-      },
-      {
-	"ViewStatusbar",
-	NULL,
-	N_("_Statusbar"),
-	NULL,
-	N_("Show or hide the statusbar"),
-	NULL,
-	FALSE
-      }
-    };
-
-    static GtkRadioActionEntry toolbars_style_entries[] = {
-      /* View menu */
-      {
-	"ViewToolbarsStyleDesktopDefault",
-	NULL,
-	N_("_Desktop Default"),
-	NULL,
-	N_("Set the toolbars style to the desktop default setting"),
-	MN_TOOLBAR_STYLE_DESKTOP_DEFAULT
-      },
-      {
-	"ViewToolbarsStyleIconsOnly",
-	NULL,
-	N_("I_cons Only"),
-	NULL,
-	N_("Only display the toolbars icons"),
-	MN_TOOLBAR_STYLE_ICONS
-      },
-      {
-	"ViewToolbarsStyleTextOnly",
-	NULL,
-	N_("_Text Only"),
-	NULL,
-	N_("Only display the toolbars text"),
-	MN_TOOLBAR_STYLE_TEXT
-      },
-      {
-	"ViewToolbarsStyleTextBelowIcons",
-	NULL,
-	N_("Text Belo_w Icons"),
-	NULL,
-	N_("Display the toolbars text below the icons"),
-	MN_TOOLBAR_STYLE_BOTH
-      },
-      {
-	"ViewToolbarsStyleTextBesideIcons",
-	NULL,
-	N_("Text Be_side Icons"),
-	NULL,
-	N_("Display the toolbars text beside the icons"),
-	MN_TOOLBAR_STYLE_BOTH_HORIZ
-      }
-    };
-
-    GError *err = NULL;
-    GtkAccelGroup *accel_group;
-
-    g_return_if_fail(selfp->ui_manager == NULL);
-
-    selfp->ui_manager = gtk_ui_manager_new();
-
-    g_object_connect(selfp->ui_manager,
-		     "swapped-signal::connect-proxy", self_ui_manager_connect_proxy_h, self,
-		     "swapped-signal::disconnect-proxy", self_ui_manager_disconnect_proxy_h, self,
-		     NULL);
-
-    selfp->action_group = gtk_action_group_new("MainWindowActions");
-    gtk_action_group_set_translation_domain(selfp->action_group, NULL);
-    
-    gtk_action_group_add_actions(selfp->action_group,
-				 menu_entries,
-				 G_N_ELEMENTS(menu_entries),
-				 self);
-    gtk_action_group_add_toggle_actions(selfp->action_group,
-					toggle_entries,
-					G_N_ELEMENTS(toggle_entries),
-					self);
-    gtk_action_group_add_radio_actions(selfp->action_group,
-				       toolbars_style_entries,
-				       G_N_ELEMENTS(toolbars_style_entries),
-				       -1,
-				       G_CALLBACK(self_update_toolbars_style_changed_h),
-				       self);
-    gtk_ui_manager_insert_action_group(selfp->ui_manager, selfp->action_group, 0);
-
-    g_object_set(G_OBJECT(GET_ACTION("MailMailReader")),
-		 "is-important", TRUE,
-		 NULL);
-
-    if (! gtk_ui_manager_add_ui_from_file(selfp->ui_manager, MN_INTERFACE_FILE("menus.xml"), &err))
-      {
-	g_critical(_("unable to load menus.xml: %s"), err->message);
-	g_error_free(err);
-      }
-
-    accel_group = gtk_ui_manager_get_accel_group(selfp->ui_manager);
-    gtk_window_add_accel_group(GTK_WINDOW(self), accel_group);
-
-    /*
-     * ~/.gnome2/accels/mail-notification is automatically loaded by
-     * the libgnomeui module, we just need to save it ourselves.
-     */
-    g_signal_connect(accel_group, "accel-changed", G_CALLBACK(gnome_accelerators_sync), NULL);
-  }
-
-  private void
-    create_toolbars_model (self, gboolean use_dot_file)
-  {
-    gboolean load_default_toolbars = TRUE;
-
-    if (selfp->toolbars_model)
-      g_object_unref(selfp->toolbars_model);
-
-    selfp->toolbars_model = egg_toolbars_model_new();
-
-    g_object_connect(selfp->toolbars_model,
-		     "swapped-signal-after::item-added", self_toolbars_model_save_changes, self,
-		     "swapped-signal-after::item-removed", self_toolbars_model_save_changes, self,
-		     "swapped-signal-after::toolbar-added", self_toolbars_model_update_flags_and_save_changes, self,
-		     "swapped-signal-after::toolbar-removed", self_toolbars_model_update_flags_and_save_changes, self,
-		     NULL);
-
-    if (use_dot_file)
-      {
-	char *filename;
-
-	filename = g_build_filename(mn_conf_dot_dir, "toolbars.xml", NULL);
-	load_default_toolbars = ! egg_toolbars_model_load(selfp->toolbars_model, filename);
-	g_free(filename);
-      }
-
-    if (load_default_toolbars)
-      {
-	if (! egg_toolbars_model_load(selfp->toolbars_model, MN_INTERFACE_FILE("toolbars.xml")))
-	  g_critical(_("unable to load toolbars.xml"));
-      }
-  
-  if (egg_toolbars_model_n_toolbars(selfp->toolbars_model) < 1)
-    egg_toolbars_model_add_toolbar(selfp->toolbars_model, 0, "DefaultToolbar");
-
-  if (selfp->toolbar)
-    egg_editable_toolbar_set_model(EGG_EDITABLE_TOOLBAR(selfp->toolbar), selfp->toolbars_model);
-  }
-  
-  private void
-    update_toolbars_visibility (self)
-  {
-    g_object_set(G_OBJECT(selfp->toolbar), "visible", gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(GET_ACTION("ViewToolbars"))), NULL);
-  }
-
-  private void
-    update_statusbar_visibility (self)
-  {
-    g_object_set(G_OBJECT(selfp->statusbar), "visible", ! FULLSCREEN && gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(GET_ACTION("ViewStatusbar"))), NULL);
-  }
-
-  private void
-    notify_mail_reader_cb (GConfClient *client,
-			   unsigned int cnxn_id,
-			   GConfEntry *entry,
-			   gpointer user_data)
-  {
-    Self *self = user_data;
-
-    GDK_THREADS_ENTER();
-    self_update_sensitivity(self);
-    GDK_THREADS_LEAVE();
-  }
-
-  private void
-    update_messages (self)
-  {
-    GSList *messages;
-    int count;
-
-    messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
-    count = g_slist_length(messages);
-
-    mn_message_view_set_messages(MN_MESSAGE_VIEW(selfp->message_view), messages);
-    mn_g_object_slist_free(messages);
-
-    if (count > 0)
-      {
-	char *status;
-	
-	status = g_strdup_printf(ngettext("%i new message", "%i new messages", count), count);
-	STATUS_PUSH(selfp->count_cid, status);
-	g_free(status);
-      }
-    else
-      STATUS_POP(selfp->count_cid);
-  }
-
-  private void
-    update_sensitivity (self)
-  {
-    gtk_action_set_sensitive(GET_ACTION("MailMailReader"), mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READER_NAMESPACE));
-    gtk_action_set_sensitive(GET_ACTION("MailUpdate"), mn_mailboxes_get_must_poll(mn_shell->mailboxes));
-  }
-
-  private void
-    ui_manager_connect_proxy_h (self,
-				GtkAction *action,
-				GtkWidget *proxy,
-				GtkUIManager *manager)
-  {
-    if (GTK_IS_MENU_ITEM(proxy))
-      g_object_connect(proxy,
-		       "swapped-signal::select", self_menu_item_select_h, self,
-		       "swapped-signal::deselect", self_menu_item_deselect_h, self,
-		       NULL);
-  }
-
-  private void
-    ui_manager_disconnect_proxy_h (self,
-				   GtkAction *action,
-				   GtkWidget *proxy,
-				   GtkUIManager *manager)
-  {
-    if (GTK_IS_MENU_ITEM(proxy))
-      g_object_disconnect(proxy,
-			  "any-signal", self_menu_item_select_h, self,
-			  "any-signal", self_menu_item_deselect_h, self,
-			  NULL);
-  }
-
-  private void
-    menu_item_select_h (self, GtkMenuItem *item)
-  {
-    GtkAction *action;
-    char *tooltip = NULL;
-
-    action = g_object_get_data(G_OBJECT(item), "gtk-action");
-    g_return_if_fail(action != NULL);
-  
-    g_object_get(G_OBJECT(action), "tooltip", &tooltip, NULL);
-    if (tooltip)
-      {
-	STATUS_PUSH(selfp->help_cid, tooltip);
-	g_free(tooltip);
-      }
-  }
-
-  private void
-    menu_item_deselect_h (self, GtkMenuItem *item)
-  {
-    STATUS_POP(selfp->help_cid);
-  }
-
-  private gboolean
-    window_state_event_h (self, GdkEventWindowState *event, gpointer user_data)
-  {
-    if (event->changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
-      {
-	if (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)
-	  self_fullscreen(self);
-	else
-	  self_unfullscreen(self);
-      }
-    
-    return FALSE;		/* propagate event */
-  }
-  
-  private void
-    update_toolbars_style_changed_h (GtkRadioAction *action,
-				     GtkRadioAction *current,
-				     Self *self)
-  {
-    self_update_toolbars_style(self);
-  }
-  
-  private void
-    update_toolbars_style (self)
-  {
-    MNToolbarStyle style;
-    EggTbModelFlags flag;
-    int n_toolbars;
-    int i;
-
-    style = gtk_radio_action_get_current_value(GTK_RADIO_ACTION(GET_ACTION("ViewToolbarsStyleDesktopDefault")));
-    if (style == MN_TOOLBAR_STYLE_DESKTOP_DEFAULT)
-      g_object_get(gtk_widget_get_settings(selfp->toolbar), "gtk-toolbar-style", &style, NULL);
-
-    if (FULLSCREEN && style == MN_TOOLBAR_STYLE_BOTH)
-      style = MN_TOOLBAR_STYLE_ICONS;
-
-    switch (style)
-      {
-      case MN_TOOLBAR_STYLE_ICONS:	flag = EGG_TB_MODEL_ICONS; break;
-      case MN_TOOLBAR_STYLE_TEXT:	flag = EGG_TB_MODEL_TEXT; break;
-      case MN_TOOLBAR_STYLE_BOTH:	flag = EGG_TB_MODEL_BOTH; break;
-      case MN_TOOLBAR_STYLE_BOTH_HORIZ:	flag = EGG_TB_MODEL_BOTH_HORIZ; break;
-      default:				g_assert_not_reached();
-      }
-    
-    n_toolbars = egg_toolbars_model_n_toolbars(selfp->toolbars_model);
-
-    for (i = 0; i < n_toolbars; i++)
-      {
-	EggTbModelFlags flags;
-
-	flags = egg_toolbars_model_get_flags(selfp->toolbars_model, i);
-	flags &= ~ (EGG_TB_MODEL_ICONS
-		    | EGG_TB_MODEL_TEXT
-		    | EGG_TB_MODEL_BOTH
-		    | EGG_TB_MODEL_BOTH_HORIZ);
-	flags |= flag;
-	egg_toolbars_model_set_flags(selfp->toolbars_model, i, flags);
-      }
-  }
-
-  private void
-    toolbars_model_save_changes (self)
-  {
-    if (! selfp->toolbars_model_save_idle_id)
-      selfp->toolbars_model_save_idle_id = g_idle_add((GSourceFunc) self_toolbars_model_save_changes_cb, self);
-  }
-
-  private gboolean
-    toolbars_model_save_changes_cb (self)
-  {
-    char *filename;
-
-    GDK_THREADS_ENTER();
-
-    filename = g_build_filename(mn_conf_dot_dir, "toolbars.xml", NULL);
-    egg_toolbars_model_save(selfp->toolbars_model, filename, "1.0");
-    g_free(filename);
-
-    GDK_THREADS_LEAVE();
-
-    selfp->toolbars_model_save_idle_id = 0;
-    return FALSE;		/* remove */
-  }
-
-  private void
-    toolbars_model_update_flags_and_save_changes (self)
-  {
-    int i;
-    int n_toolbars;
-    EggTbModelFlags flag = EGG_TB_MODEL_ACCEPT_ITEMS_ONLY;
-
-    n_toolbars = egg_toolbars_model_n_toolbars(selfp->toolbars_model);
-  
-    if (n_toolbars <= 1)
-      flag |= EGG_TB_MODEL_NOT_REMOVABLE;
-
-    for (i = 0; i < n_toolbars; i++)
-      {
-	EggTbModelFlags flags;
-	
-	flags = egg_toolbars_model_get_flags(selfp->toolbars_model, i);
-	flags &= ~EGG_TB_MODEL_NOT_REMOVABLE;
-	flags |= flag;
-	egg_toolbars_model_set_flags(selfp->toolbars_model, i, flags);
-      }
-
-    self_toolbars_model_save_changes(self);
-  }
-
-  private void
-    mail_reader_activate_h (GtkAction *action, Self *self)
-  {
-    mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
-  }
-
-  private void
-    update_activate_h (GtkAction *action, Self *self)
-  {
-    mn_mailboxes_check(mn_shell->mailboxes);
-  }
-
-  private void
-    close_activate_h (GtkAction *action, Self *self)
-  {
-    gtk_widget_destroy(GTK_WIDGET(self));
-  }
-  
-  private void
-    quit_activate_h (GtkAction *action, Self *self)
-  {
-    g_object_unref(mn_shell);
-  }
-
-  private void
-    edit_toolbars_activate_h (GtkAction *action, Self *self)
-  {
-    if (selfp->edit_toolbars_dialog)
-      {
-	gtk_window_present(GTK_WINDOW(selfp->edit_toolbars_dialog));
-	return;
-      }
-  
-    mn_create_interface(MN_INTERFACE_FILE("edit-toolbars-dialog.glade"),
-			"dialog", &selfp->edit_toolbars_dialog,
-			NULL);
-
-    eel_add_weak_pointer(&selfp->edit_toolbars_dialog);
-    g_object_weak_ref(G_OBJECT(selfp->edit_toolbars_dialog), (GWeakNotify) self_edit_toolbars_weak_notify_cb, self);
-    
-    gtk_window_set_transient_for(GTK_WINDOW(selfp->edit_toolbars_dialog), GTK_WINDOW(self));
-
-    self_edit_toolbars_create_editor(self);
-    egg_editable_toolbar_set_edit_mode(EGG_EDITABLE_TOOLBAR(selfp->toolbar), TRUE);
-
-    mn_conf_link(selfp->edit_toolbars_dialog, MN_CONF_MAIN_WINDOW_EDIT_TOOLBARS_DIALOG, NULL);
-
-    g_signal_connect_swapped(selfp->edit_toolbars_dialog, "response", G_CALLBACK(self_edit_toolbars_response_h), self);
-
-    gtk_widget_show(selfp->edit_toolbars_dialog);
-  }
-
-  private void
-    edit_toolbars_response_h (self, int response, GtkDialog *dialog)
-  {
-    switch (response)
-      {
-      case GTK_RESPONSE_HELP:
-	mn_display_help(GTK_WINDOW(dialog), "main-window-edit-toolbars");
-	break;
-
-      case 1:			/* use default */
-	/* recreate the model, discarding the dot file */
-	self_create_toolbars_model(self, FALSE);
-	/* and recreate the editor, since the model has changed */
-	self_edit_toolbars_create_editor(self);
-	break;
-
-      case 2:			/* add toolbar */
-	egg_toolbars_model_add_toolbar(selfp->toolbars_model, -1, "UserCreated");
-	break;
-	
-      case GTK_RESPONSE_CLOSE:
-	gtk_widget_destroy(GTK_WIDGET(dialog));
-	break;
-      }
-  }
-  
-  private void
-    edit_toolbars_create_editor (self)
-  {
-    g_return_if_fail(selfp->edit_toolbars_dialog != NULL);
-
-    if (selfp->edit_toolbars_editor)
-      gtk_widget_destroy(selfp->edit_toolbars_editor);
-
-    selfp->edit_toolbars_editor = egg_toolbar_editor_new(selfp->ui_manager, selfp->toolbars_model);
-    eel_add_weak_pointer(&selfp->edit_toolbars_editor);
-
-    gtk_container_set_border_width(GTK_CONTAINER(selfp->edit_toolbars_editor), 5);
-    gtk_box_set_spacing(GTK_BOX(selfp->edit_toolbars_editor), 6);
-  
-    egg_toolbar_editor_load_actions(EGG_TOOLBAR_EDITOR(selfp->edit_toolbars_editor), MN_INTERFACE_FILE("toolbars.xml"));
-
-    gtk_container_add(GTK_CONTAINER(GTK_DIALOG(selfp->edit_toolbars_dialog)->vbox), selfp->edit_toolbars_editor);
-    gtk_widget_show(selfp->edit_toolbars_editor);
-  }
-
-  private void
-    edit_toolbars_weak_notify_cb (self, GObject *former_object)
-  {
-    egg_editable_toolbar_set_edit_mode(EGG_EDITABLE_TOOLBAR(selfp->toolbar), FALSE);
-  }
-
-  private void
-    preferences_activate_h (GtkAction *action, Self *self)
-  {
-    mn_shell_display_properties_dialog(mn_shell, GTK_WINDOW(self));
-  }
-
-  private void
-    help_contents_activate_h (GtkAction *action, Self *self)
-  {
-    mn_display_help(GTK_WINDOW(self), "main-window");
-  }
-
-  private void
-    about_activate_h (GtkAction *action, Self *self)
-  {
-    mn_shell_display_about_dialog(mn_shell, GTK_WINDOW(self));
-  }
-
-  private void
-    fullscreen (self)
-  {
-    GtkWidget *button;
-
-    selfp->leave_fullscreen_popup = gtk_window_new(GTK_WINDOW_POPUP);
-    eel_add_weak_pointer(&selfp->leave_fullscreen_popup);
-
-    button = gtk_button_new_from_stock(MN_STOCK_LEAVE_FULLSCREEN);
-    gtk_container_add(GTK_CONTAINER(selfp->leave_fullscreen_popup), button);
-    gtk_widget_show(button);
-
-    g_signal_connect_swapped(button, "clicked", G_CALLBACK(gtk_window_unfullscreen), self);
-
-    gtk_widget_hide(selfp->menubar);
-    self_update_toolbars_style(self);
-    self_update_statusbar_visibility(self);
-
-    selfp->leave_fullscreen_popup_visible = TRUE;
-    self_update_leave_fullscreen_popup_position(self);
-    gtk_widget_show(selfp->leave_fullscreen_popup);
-
-    g_signal_connect_swapped(gdk_screen_get_default(),
-			     "size-changed",
-			     G_CALLBACK(self_update_leave_fullscreen_popup_position),
-			     self);
-    g_signal_connect(self,
-		     "key-press-event",
-		     G_CALLBACK(self_fullscreen_key_press_event_h),
-		     NULL);
-
-    g_object_connect(selfp->leave_fullscreen_popup,
-		     "swapped-signal::enter-notify-event", self_leave_fullscreen_enter_notify_event_h, self,
-		     "swapped-signal::leave-notify-event", self_leave_fullscreen_leave_notify_event_h, self,
-		     NULL);
-
-    selfp->leave_fullscreen_timeout_id = g_timeout_add(5000, (GSourceFunc) self_leave_fullscreen_timeout_cb, self);
-  }
-
-  private void
-    unfullscreen (self)
-  {
-    g_signal_handlers_disconnect_by_func(gdk_screen_get_default(), self_update_leave_fullscreen_popup_position, self);
-
-    mn_source_clear(&selfp->leave_fullscreen_timeout_id);
-    gtk_widget_destroy(selfp->leave_fullscreen_popup);
-
-    g_signal_handlers_disconnect_by_func(self, self_fullscreen_key_press_event_h, NULL);
-      
-    gtk_widget_show(selfp->menubar);
-    self_update_toolbars_style(self);
-    self_update_statusbar_visibility(self);
-  }
-
-  private gboolean
-    leave_fullscreen_timeout_cb (self)
-  {
-    selfp->leave_fullscreen_popup_visible = FALSE;
-
-    GDK_THREADS_ENTER();
-    self_update_leave_fullscreen_popup_position(self);
-    GDK_THREADS_LEAVE();
-    
-    selfp->leave_fullscreen_timeout_id = 0;
-    return FALSE;		/* remove timeout */
-  }
-
-  private gboolean
-    leave_fullscreen_enter_notify_event_h (self,
-					   GdkEventCrossing *event,
-					   GtkWidget *widget)
-  {
-    mn_source_clear(&selfp->leave_fullscreen_timeout_id);
-    selfp->leave_fullscreen_popup_visible = TRUE;
-    self_update_leave_fullscreen_popup_position(self);
-
-    return FALSE;		/* propagate event */
-  }
-
-  private gboolean
-    leave_fullscreen_leave_notify_event_h (self,
-					   GdkEventCrossing *event,
-					   GtkWidget *widget)
-  {
-    mn_source_clear(&selfp->leave_fullscreen_timeout_id);
-    selfp->leave_fullscreen_timeout_id = g_timeout_add(5000, (GSourceFunc) self_leave_fullscreen_timeout_cb, self);
-
-    return FALSE;		/* propagate event */
-  }
-  
-  private void
-    update_leave_fullscreen_popup_position (self)
-  {
-    GdkScreen *screen;
-    int monitor_num;
-    GdkRectangle screen_rect;
-    int popup_width;
-    int popup_height;
-    int y;
-
-    g_return_if_fail(selfp->leave_fullscreen_popup != NULL);
-
-    screen = gdk_screen_get_default();
-    monitor_num = gdk_screen_get_monitor_at_window(screen, GTK_WIDGET(self)->window);
-    gdk_screen_get_monitor_geometry(screen, monitor_num, &screen_rect);
-    gtk_window_get_size(GTK_WINDOW(selfp->leave_fullscreen_popup), &popup_width, &popup_height);
-
-    y = screen_rect.y;
-    if (! selfp->leave_fullscreen_popup_visible)
-      y -= popup_height - 2;
-
-    gtk_window_move(GTK_WINDOW(selfp->leave_fullscreen_popup), screen_rect.width - popup_width, y);
-  }
-
-  private gboolean
-    fullscreen_key_press_event_h (self, GdkEventKey *event, gpointer user_data)
-  {
-    unsigned int modifiers = gtk_accelerator_get_default_mod_mask();
-
-    if (event->keyval == GDK_Escape && (event->state & modifiers) == 0)
-      {
-	gtk_window_unfullscreen(GTK_WINDOW(self));
-	return TRUE;		/* do not propagate event */
-      }
-    else if (event->keyval == GDK_F10 && (event->state & modifiers) == 0)
-      {
-	g_signal_connect_swapped(selfp->menubar, "deactivate", G_CALLBACK(self_fullscreen_menubar_deactivate_h), self);
-
-	gtk_widget_show(selfp->menubar);
-	gtk_menu_shell_select_first(GTK_MENU_SHELL(selfp->menubar), FALSE);
-
-	return TRUE;		/* do not propagate event */
-      }
-    else
-      return FALSE;		/* propagate event */
-  }
-
-  private void
-    fullscreen_menubar_deactivate_h (self, GtkMenuShell *menushell)
-  {
-    g_signal_handlers_disconnect_by_func(selfp->menubar, G_CALLBACK(self_fullscreen_menubar_deactivate_h), self);
-    gtk_menu_shell_deselect(menushell);
-    gtk_widget_hide(selfp->menubar);
-  }
-}
diff --git a/src/mn-main-window.h b/src/mn-main-window.h
@@ -1,62 +0,0 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
-
-#include <glib.h>
-#include <glib-object.h>
-
-
-#include <gtk/gtk.h>
-
-#ifndef __MN_MAIN_WINDOW_H__
-#define __MN_MAIN_WINDOW_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-
-/*
- * Type checking and casting macros
- */
-#define MN_TYPE_MAIN_WINDOW	(mn_main_window_get_type())
-#define MN_MAIN_WINDOW(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_main_window_get_type(), MNMainWindow)
-#define MN_MAIN_WINDOW_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_main_window_get_type(), MNMainWindow const)
-#define MN_MAIN_WINDOW_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_main_window_get_type(), MNMainWindowClass)
-#define MN_IS_MAIN_WINDOW(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_main_window_get_type ())
-
-#define MN_MAIN_WINDOW_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_main_window_get_type(), MNMainWindowClass)
-
-/* Private structure type */
-typedef struct _MNMainWindowPrivate MNMainWindowPrivate;
-
-/*
- * Main object structure
- */
-#ifndef __TYPEDEF_MN_MAIN_WINDOW__
-#define __TYPEDEF_MN_MAIN_WINDOW__
-typedef struct _MNMainWindow MNMainWindow;
-#endif
-struct _MNMainWindow {
-	GtkWindow __parent__;
-	/*< private >*/
-	MNMainWindowPrivate *_priv;
-};
-
-/*
- * Class definition
- */
-typedef struct _MNMainWindowClass MNMainWindowClass;
-struct _MNMainWindowClass {
-	GtkWindowClass __parent__;
-};
-
-
-/*
- * Public methods
- */
-GType	mn_main_window_get_type	(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif
diff --git a/src/mn-main.c b/src/mn-main.c
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -21,16 +21,17 @@
 #include <signal.h>
 #include <gnome.h>
 #include <libgnomevfs/gnome-vfs.h>
-#ifdef WITH_MIME
+#if WITH_MIME
 #include <gmime/gmime.h>
 #include "mn-gmime-stream-vfs.h"
 #endif
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #include "mn-vfs-mailbox.h"
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
 #include "mn-corba-object.h"
 #endif
+#include "mn-locked-callback.h"
 #include "mn-conf.h"
 #include "mn-util.h"
 #include "mn-stock.h"
@@ -43,6 +44,18 @@
 #define AUTOMATION_IID			"OAFIID:GNOME_MailNotification_Automation"
 #define AUTOMATION_FACTORY_IID		"OAFIID:GNOME_MailNotification_Automation_Factory"
 
+#define AUTOMATION_METHOD(method) \
+  GNOME_MailNotification_Automation_ ## method(automation, &env); \
+  mn_main_handle_bonobo_exception(&env, "GNOME:MailNotification:Automation:" #method)
+
+/*** types *******************************************************************/
+
+typedef struct
+{
+  const char	*name;
+  gboolean	enabled;
+} Component;
+
 /*** variables ***************************************************************/
 
 static gboolean arg_enable_info = FALSE;
@@ -52,13 +65,17 @@ static gboolean arg_enable_info = FALSE;
 static BonoboObject *mn_main_automation_factory_cb (BonoboGenericFactory *factory,
 						    const char *iid,
 						    gpointer closure);
-static void	mn_main_list_features	(void);
+static void	mn_main_print_components (const Component *components,
+					  int n_components);
+static void	mn_main_print_version	(void);
 static void	mn_main_info_log_cb	(const char	*log_domain,
 					 GLogLevelFlags	log_level,
 					 const char	*message,
 					 gpointer	user_data);
 
 static void	mn_main_init_classes	(void);
+static void	mn_main_handle_bonobo_exception (CORBA_Environment *env,
+						 const char        *method);
 
 /*** implementation **********************************************************/
 
@@ -70,71 +87,65 @@ mn_main_automation_factory_cb (BonoboGenericFactory *factory,
   if (! strcmp(iid, AUTOMATION_IID))
     return BONOBO_OBJECT(mn_automation_new());
 
-  g_return_val_if_reached(NULL);
+  g_assert_not_reached();
+  return NULL;
 }
 
 static void
-mn_main_list_features (void)
+mn_main_print_components (const Component *components, int n_components)
 {
-  gboolean first;
-
-#define PRINT_COMPONENT(feature)	\
-  {					\
-    if (first)				\
-      first = FALSE;			\
-    else				\
-      g_print(", ");			\
-					\
-    g_print("%s", (feature));		\
-  }
+  int i;
 
+  for (i = 0; i < n_components; i++)
+    g_print("  %-30s %s\n", components[i].name, components[i].enabled ? _("yes") : _("no"));
+}
+
+static void
+mn_main_print_version (void)
+{
   /*
    * Here and everywhere else, we order the backends by descending
    * order of (believed) popularity.
    */
 
-  first = TRUE; g_print(_("Compiled-in mailbox backends: "));
-#ifdef WITH_MBOX
-  PRINT_COMPONENT("mbox");
-#endif
-#ifdef WITH_MH
-  PRINT_COMPONENT("MH");
-#endif
-#ifdef WITH_MAILDIR
-  PRINT_COMPONENT("Maildir");
-#endif
-#ifdef WITH_POP3
-  PRINT_COMPONENT("POP3");
-#endif
-#ifdef WITH_IMAP
-  PRINT_COMPONENT("IMAP");
-#endif
-#ifdef WITH_GMAIL
-  PRINT_COMPONENT("Gmail");
-#endif
-#ifdef WITH_EVOLUTION
-  PRINT_COMPONENT("Evolution");
-#endif
-#ifdef WITH_SYLPHEED
-  PRINT_COMPONENT("Sylpheed");
-#endif
+  Component mailbox_backends[] = {
+    { "mbox",			WITH_MBOX		},
+    { "mh",			WITH_MH			},
+    { "Maildir",		WITH_MAILDIR		},
+    { "POP3",			WITH_POP3		},
+    { "IMAP",			WITH_IMAP		},
+    { "Gmail",			WITH_GMAIL		},
+    { "Evolution",		WITH_EVOLUTION		},
+    { "Sylpheed",		WITH_SYLPHEED		}
+  };
+
+  Component pi_features[] = {
+    { "SSL/TLS",		WITH_SSL		},
+    { "SASL",			WITH_SASL		},
+    { "IPv6",			WITH_IPV6		}
+  };
+
+  Component sylpheed_features[] = {
+    { ".sylpheed_mark locking",	WITH_SYLPHEED_LOCKING	}
+  };
+
+  g_print(_("%s version %s\n"), _("Mail Notification"), VERSION);
+  g_print("Copyright (C) 2003-2006 Jean-Yves Lefort.\n");
+
   g_print("\n");
-  
-#if defined(WITH_POP3) || defined(WITH_IMAP)
-  first = TRUE; g_print(_("Compiled-in POP3 and IMAP features: "));
-#ifdef WITH_SSL
-  PRINT_COMPONENT("SSL/TLS");
-#endif
-#ifdef WITH_SASL
-  PRINT_COMPONENT("SASL");
-#endif
-#ifdef WITH_IPV6
-  PRINT_COMPONENT("IPv6");
-#endif
+
+  g_print(_("Mailbox backends:\n"));
+  mn_main_print_components(mailbox_backends, G_N_ELEMENTS(mailbox_backends));
+
   g_print("\n");
-#endif /* WITH_POP3 || WITH_IMAP */
 
-#undef PRINT_COMPONENT
+  g_print(_("POP3 and IMAP features:\n"));
+  mn_main_print_components(pi_features, G_N_ELEMENTS(pi_features));
+
+  g_print("\n");
+
+  g_print(_("Sylpheed features:\n"));
+  mn_main_print_components(sylpheed_features, G_N_ELEMENTS(sylpheed_features));
 }
 
 static void
@@ -153,7 +164,7 @@ mn_main_init_classes (void)
   int i;
 
   g_type_class_ref(MN_TYPE_AUTOMATION);
-#ifdef WITH_MIME
+#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);
@@ -161,11 +172,11 @@ mn_main_init_classes (void)
 #endif /* WITH_MIME */
   for (i = 0; mn_mailbox_types[i]; i++)
     g_type_class_ref(mn_mailbox_types[i]);
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || 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]);
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
   g_type_class_ref(MN_TYPE_CORBA_OBJECT);
 #endif
   g_type_class_ref(MN_TYPE_MAILBOXES);
@@ -173,11 +184,26 @@ mn_main_init_classes (void)
   g_type_class_ref(MN_TYPE_SHELL);
 }
 
+static void
+mn_main_handle_bonobo_exception (CORBA_Environment *env, const char *method)
+{
+  g_return_if_fail(env != NULL);
+  g_return_if_fail(method != NULL);
+
+  if (BONOBO_EX(env))
+    {
+      char *errmsg;
+
+      errmsg = bonobo_exception_get_text(env);
+      mn_fatal_error_dialog(NULL, _("A Bonobo exception (%s) has occurred in %s()."), errmsg, method);
+      g_free(errmsg);
+    }
+}
+
 int
 main (int argc, char **argv)
 {
-  gboolean arg_list_features = FALSE;
-  gboolean arg_display_main_window = FALSE;
+  gboolean arg_version = FALSE;
   gboolean arg_display_properties = FALSE;
   gboolean arg_display_about = FALSE;
   gboolean arg_close_popup = FALSE;
@@ -186,30 +212,21 @@ main (int argc, char **argv)
   gboolean arg_quit = FALSE;
   const struct poptOption popt_options[] = {
     {
-      "enable-info",
-      'i',
-      POPT_ARG_NONE,
-      &arg_enable_info,
-      0,
-      N_("Enable informational output"),
-      NULL
-    },
-    {
-      "list-features",
-      'l',
+      "version",
+      'v',
       POPT_ARG_NONE,
-      &arg_list_features,
+      &arg_version,
       0,
-      N_("List the compiled-in features"),
+      N_("Show version information"),
       NULL
     },
     {
-      "display-main-window",
-      'm',
+      "enable-info",
+      'i',
       POPT_ARG_NONE,
-      &arg_display_main_window,
+      &arg_enable_info,
       0,
-      N_("Display the main window"),
+      N_("Enable informational output"),
       NULL
     },
     {
@@ -272,7 +289,7 @@ main (int argc, char **argv)
   BonoboGenericFactory *automation_factory;
   GClosure *automation_factory_closure;
   Bonobo_RegistrationResult result;
-      
+
   g_log_set_fatal_mask(G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL);
   g_log_set_handler(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, mn_main_info_log_cb, NULL);
 
@@ -287,8 +304,8 @@ main (int argc, char **argv)
   g_thread_init(NULL);
   if (! g_thread_supported())
     /*
-     * We can't use mn_error_dialog() because gtk_init() has not been
-     * called yet.
+     * We cannot use mn_fatal_error_dialog() because gtk_init() has
+     * not been called yet.
      */
     g_critical(_("multi-threading is not available"));
   gdk_threads_init();
@@ -303,14 +320,9 @@ main (int argc, char **argv)
 		     GNOME_PARAM_POPT_TABLE, popt_options,
 		     NULL);
 
-  mn_mailbox_init_types();
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
-  mn_vfs_mailbox_init_types();
-#endif
-
-  if (arg_list_features)
+  if (arg_version)
     {
-      mn_main_list_features();
+      mn_main_print_version();
       exit(0);
     }
 
@@ -319,13 +331,10 @@ main (int argc, char **argv)
       mn_conf_unset_obsolete();
       exit(0);
     }
-  
-  /* mn-client-session uses sockets, we don't want to die on SIGPIPE */
-  signal(SIGPIPE, SIG_IGN);
 
   GDK_THREADS_ENTER();
 
-  icon = mn_pixbuf_new(MN_IMAGE_FILE(GNOMEPIXMAPSDIR, "mail-notification.png"));
+  icon = mn_pixbuf_new(GNOMEPIXMAPSDIR G_DIR_SEPARATOR_S "mail-notification.png");
   if (icon)
     {
       gtk_window_set_default_icon(icon);
@@ -347,7 +356,8 @@ main (int argc, char **argv)
       {
 	CORBA_Environment env;
 	GNOME_MailNotification_Automation automation;
-	
+	gboolean display_properties;
+
 	CORBA_exception_init(&env);
 
 	automation = bonobo_activation_activate_from_id(AUTOMATION_IID, 0, NULL, &env);
@@ -359,7 +369,7 @@ main (int argc, char **argv)
 	    if (result == Bonobo_ACTIVATION_REG_ALREADY_ACTIVE)
 	      {
 		g_message(_("quitting Mail Notification"));
-		GNOME_MailNotification_Automation_quit(automation, &env);
+		AUTOMATION_METHOD(quit);
 	      }
 	    else
 	      g_message(_("Mail Notification is not running"));
@@ -368,16 +378,26 @@ 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
+		mn_vfs_mailbox_init_types();
+#endif
+
+		/* mn-client-session uses sockets, we don't want to die on SIGPIPE */
+		signal(SIGPIPE, SIG_IGN);
+
 		if (! gnome_vfs_init())
 		  mn_fatal_error_dialog(NULL, _("Unable to initialize the GnomeVFS library."));
 
 		gnome_authentication_manager_init();
 
-#ifdef WITH_MIME
+#if WITH_MIME
 		g_mime_init(0);
 #endif
-	      
+
+		mn_locked_callback_init();
 		mn_conf_init();
+
 		/*
 		 * Work around
 		 * http://bugzilla.gnome.org/show_bug.cgi?id=64764:
@@ -385,35 +405,48 @@ main (int argc, char **argv)
 		 * thread is created.
 		 */
 		mn_main_init_classes();
+
 		mn_shell_new();
 	      }
-      
-	    if (arg_display_main_window)
-	      GNOME_MailNotification_Automation_displayMainWindow(automation, &env);
+
 	    if (arg_display_properties)
-	      GNOME_MailNotification_Automation_displayProperties(automation, &env);
+	      display_properties = TRUE;
+	    else /* also display the properties dialog if there are no mailboxes */
+	      {
+		CORBA_boolean has;
+		has = AUTOMATION_METHOD(hasMailboxes);
+		display_properties = has == CORBA_FALSE;
+	      }
+
+	    if (display_properties)
+	      {
+		AUTOMATION_METHOD(displayProperties);
+	      }
 	    if (arg_display_about)
-	      GNOME_MailNotification_Automation_displayAbout(automation, &env);
+	      {
+		AUTOMATION_METHOD(displayAbout);
+	      }
 	    if (arg_close_popup)
-	      GNOME_MailNotification_Automation_closePopup(automation, &env);
-	    
+	      {
+		AUTOMATION_METHOD(closePopup);
+	      }
+
 	    if (result == Bonobo_ACTIVATION_REG_ALREADY_ACTIVE)
 	      {
 		if (arg_update)
 		  {
 		    g_message(_("updating the mail status"));
-		    GNOME_MailNotification_Automation_update(automation, &env);
+		    AUTOMATION_METHOD(update);
 		  }
-		
-		if (! (arg_display_main_window
-		       || arg_display_properties
+
+		if (! (display_properties
 		       || arg_display_about
 		       || arg_close_popup
 		       || arg_update))
 		  g_message(_("Mail Notification is already running"));
 	      }
 	  }
-      
+
 	bonobo_object_release_unref(automation, &env);
 	CORBA_exception_free(&env);
       }
@@ -428,11 +461,12 @@ main (int argc, char **argv)
       break;
 
     default:
-      g_return_val_if_reached(1);
+      g_assert_not_reached();
+      return 1;
     }
 
   gdk_notify_startup_complete();
-  
+
   if (result != Bonobo_ACTIVATION_REG_ALREADY_ACTIVE && ! arg_quit)
     gtk_main();
 
diff --git a/src/mn-mbox-mailbox-backend-private.h b/src/mn-mbox-mailbox-backend-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MBOX_MAILBOX_BACKEND_PRIVATE_H__
 #define __MN_MBOX_MAILBOX_BACKEND_PRIVATE_H__
@@ -10,13 +10,17 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNmboxMailboxBackendPrivate {
-#line 39 "mn-mbox-mailbox-backend.gob"
-	GnomeVFSFileSize last_size;
 #line 40 "mn-mbox-mailbox-backend.gob"
-	time_t last_mtime;
+	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 20 "mn-mbox-mailbox-backend-private.h"
+#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
@@ -1,16 +1,13 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:55 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
-#include <string.h> /* memset() */
-
 #include "mn-mbox-mailbox-backend.h"
 
 #include "mn-mbox-mailbox-backend-private.h"
@@ -22,6 +19,21 @@
 #define ___GOB_LIKELY(expr) (expr)
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
+
+#line 25 "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-message-mime.h"
+#include "mn-gmime-stream-vfs.h"
+#include "mn-util.h"
+
+#line 37 "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)
@@ -40,10 +52,13 @@ static void mn_mbox_mailbox_backend_init (MNmboxMailboxBackend * o) G_GNUC_UNUSE
 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;
 
 /* pointer to the class of our parent */
 static MNVFSMailboxBackendClass *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)
 {
@@ -88,6 +103,20 @@ GET_NEW_VARG (const char *first, ...)
 
 
 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"
@@ -95,6 +124,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 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__
 
@@ -103,12 +135,15 @@ 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"
 }
 #undef __GOB_FUNCTION__
-#line 43 "mn-mbox-mailbox-backend.gob"
+#line 47 "mn-mbox-mailbox-backend.gob"
 static void 
 mn_mbox_mailbox_backend_class_init (MNmboxMailboxBackendClass * class G_GNUC_UNUSED)
-#line 112 "mn-mbox-mailbox-backend.c"
+#line 147 "mn-mbox-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:mbox:Mailbox:Backend::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -118,28 +153,29 @@ mn_mbox_mailbox_backend_class_init (MNmboxMailboxBackendClass * class G_GNUC_UNU
 
 	parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND);
 
-#line 48 "mn-mbox-mailbox-backend.gob"
+#line 52 "mn-mbox-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->is = ___2_mn_mbox_mailbox_backend_is;
-#line 82 "mn-mbox-mailbox-backend.gob"
+#line 117 "mn-mbox-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->check = ___3_mn_mbox_mailbox_backend_check;
-#line 126 "mn-mbox-mailbox-backend.c"
+#line 161 "mn-mbox-mailbox-backend.c"
+	g_object_class->dispose = ___dispose;
 	g_object_class->finalize = ___finalize;
  {
-#line 44 "mn-mbox-mailbox-backend.gob"
+#line 48 "mn-mbox-mailbox-backend.gob"
 
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "mbox";
   
-#line 133 "mn-mbox-mailbox-backend.c"
+#line 169 "mn-mbox-mailbox-backend.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 48 "mn-mbox-mailbox-backend.gob"
+#line 52 "mn-mbox-mailbox-backend.gob"
 static gboolean 
 ___2_mn_mbox_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailbox * mailbox)
-#line 143 "mn-mbox-mailbox-backend.c"
+#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): \
@@ -147,60 +183,92 @@ ___2_mn_mbox_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVF
 {
 #define __GOB_FUNCTION__ "MN:mbox:Mailbox:Backend::is"
 {
-#line 50 "mn-mbox-mailbox-backend.gob"
+#line 54 "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(mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK
-	&& (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) != 0
-	&& file_info->type == GNOME_VFS_FILE_TYPE_REGULAR)
+
+    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)
       {
-	GnomeVFSHandle *handle;
-		
-	if (gnome_vfs_open_uri(&handle, mailbox->vfs_uri, GNOME_VFS_OPEN_READ) == GNOME_VFS_OK)
+	GnomeVFSURI *uncompressed_uri;
+
+	/* handle a compressed mailbox */
+	uncompressed_uri = self_get_uncompressed_uri(uri, file_info);
+	if (uncompressed_uri)
 	  {
-	    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);
+	    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;
   }}
-#line 183 "mn-mbox-mailbox-backend.c"
+#line 250 "mn-mbox-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 82 "mn-mbox-mailbox-backend.gob"
+#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 190 "mn-mbox-mailbox-backend.c"
+#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 84 "mn-mbox-mailbox-backend.gob"
+#line 119 "mn-mbox-mailbox-backend.gob"
 	
     Self *self = SELF(backend);
     gboolean aborted;
-    gboolean must_poll;
+    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();
@@ -210,16 +278,16 @@ ___3_mn_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED,
     else
       {
 	aborted = FALSE;
-	must_poll = MN_MAILBOX(backend->mailbox)->must_poll;
+	polled = mn_mailbox_get_poll(MN_MAILBOX(backend->mailbox));
       }
-    
+
     gdk_flush();
     GDK_THREADS_LEAVE();
 
     if (aborted)
       return;
 
-    if (must_poll)
+    if (polled)
       {
 	GnomeVFSFileInfo *file_info;
 	GnomeVFSResult result;
@@ -233,7 +301,7 @@ ___3_mn_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED,
 	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);
 
-	mn_vfs_mailbox_backend_lock(backend);
+	g_mutex_lock(selfp->mutex);
 
 	if (result == GNOME_VFS_OK
 	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) != 0
@@ -264,7 +332,7 @@ ___3_mn_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED,
 	      check = FALSE;
 	  }
 
-	mn_vfs_mailbox_backend_unlock(backend);
+	g_mutex_unlock(selfp->mutex);
 
 	gnome_vfs_file_info_unref(file_info);
 
@@ -272,48 +340,84 @@ ___3_mn_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED,
 	  return;
       }
 
-    result = gnome_vfs_open_uri(&handle, backend->mailbox->vfs_uri, GNOME_VFS_OPEN_READ);
+    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, backend->mailbox->vfs_uri, &result);
+
+	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 && strpbrk(status, "OR")))
-		      messages = g_slist_append(messages, mn_message_new_from_mime_message(MN_MAILBOX(backend->mailbox), mime_message));
-		    
+		    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)
@@ -321,9 +425,9 @@ ___3_mn_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED,
 		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();
 
@@ -334,13 +438,59 @@ ___3_mn_mbox_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED,
       }
 
     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 345 "mn-mbox-mailbox-backend.c"
+#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,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,14 +16,15 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-vfs-mailbox-backend.h"
 %}
 
-%h{
+%{
 #include "config.h"
+#include <string.h>
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
 #include "mn-mailbox-private.h"
@@ -36,10 +37,13 @@ requires 2.0.12
 
 class MN:mbox:Mailbox:Backend from MN:VFS: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";
@@ -49,33 +53,64 @@ class MN:mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend
     is (MNVFSMailboxBackend *dummy, 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(mailbox->vfs_uri, file_info, GNOME_VFS_FILE_INFO_FOLLOW_LINKS) == GNOME_VFS_OK
-	&& (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_TYPE) != 0
-	&& file_info->type == GNOME_VFS_FILE_TYPE_REGULAR)
+
+    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)
       {
-	GnomeVFSHandle *handle;
-		
-	if (gnome_vfs_open_uri(&handle, mailbox->vfs_uri, GNOME_VFS_OPEN_READ) == 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)
 	  {
-	    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);
+	    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;
   }
 
@@ -84,10 +119,11 @@ class MN:mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend
   {
     Self *self = SELF(backend);
     gboolean aborted;
-    gboolean must_poll;
+    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();
@@ -97,16 +133,16 @@ class MN:mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend
     else
       {
 	aborted = FALSE;
-	must_poll = MN_MAILBOX(backend->mailbox)->must_poll;
+	polled = mn_mailbox_get_poll(MN_MAILBOX(backend->mailbox));
       }
-    
+
     gdk_flush();
     GDK_THREADS_LEAVE();
 
     if (aborted)
       return;
 
-    if (must_poll)
+    if (polled)
       {
 	GnomeVFSFileInfo *file_info;
 	GnomeVFSResult result;
@@ -120,7 +156,7 @@ class MN:mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	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);
 
-	mn_vfs_mailbox_backend_lock(backend);
+	g_mutex_lock(selfp->mutex);
 
 	if (result == GNOME_VFS_OK
 	    && (file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE) != 0
@@ -151,7 +187,7 @@ class MN:mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	      check = FALSE;
 	  }
 
-	mn_vfs_mailbox_backend_unlock(backend);
+	g_mutex_unlock(selfp->mutex);
 
 	gnome_vfs_file_info_unref(file_info);
 
@@ -159,48 +195,84 @@ class MN:mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	  return;
       }
 
-    result = gnome_vfs_open_uri(&handle, backend->mailbox->vfs_uri, GNOME_VFS_OPEN_READ);
+    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, backend->mailbox->vfs_uri, &result);
+
+	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 && strpbrk(status, "OR")))
-		      messages = g_slist_append(messages, mn_message_new_from_mime_message(MN_MAILBOX(backend->mailbox), mime_message));
-		    
+		    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)
@@ -208,9 +280,9 @@ class MN:mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend
 		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();
 
@@ -221,11 +293,45 @@ class MN:mbox:Mailbox:Backend from MN:VFS:Mailbox:Backend
       }
 
     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;
+  }
 }
diff --git a/src/mn-mbox-mailbox-backend.gob.stamp b/src/mn-mbox-mailbox-backend.gob.stamp
diff --git a/src/mn-mbox-mailbox-backend.h b/src/mn-mbox-mailbox-backend.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -14,18 +14,6 @@ extern "C" {
 #endif /* __cplusplus */
 
 
-
-#include "config.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"
-
-
 /*
  * Type checking and casting macros
  */
diff --git a/src/mn-md5.c b/src/mn-md5.c
@@ -244,7 +244,7 @@ mn_md5_end (MNMD5Context *context, char *buf)
   buf[i + i] = '\0';
 
   return buf;
-} 
+}
 
 static void
 mn_md5_transform (u_int32_t state[4], const unsigned char block[64])
diff --git a/src/mn-message-mime.c b/src/mn-message-mime.c
@@ -17,6 +17,7 @@
  */
 
 #include "config.h"
+#include <string.h>
 #include <glib/gi18n.h>
 #include <libgnomevfs/gnome-vfs.h>
 #include "mn-message-mime.h"
@@ -52,7 +53,9 @@ mn_message_mime_header_decode_text (const char *str)
 
 MNMessage *
 mn_message_new_from_mime_message (MNMailbox *mailbox,
-				  GMimeMessage *mime_message)
+				  GMimeMessage *mime_message,
+				  MNMessageFlags flags,
+				  gboolean handle_status)
 {
   MNMessage *message;
   const char *message_id;
@@ -64,7 +67,7 @@ mn_message_new_from_mime_message (MNMailbox *mailbox,
 
   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);
@@ -73,7 +76,18 @@ mn_message_new_from_mime_message (MNMailbox *mailbox,
   decoded_from = from ? mn_message_mime_header_decode_text(from) : NULL;
   decoded_subject = subject ? mn_message_mime_header_decode_text(subject) : NULL;
 
-  message = mn_message_new(mailbox, NULL, sent_time, message_id, decoded_from, decoded_subject);
+  if (handle_status)
+    {
+      const char *status;
+
+      status = g_mime_message_get_header(mime_message, "Status");
+      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);
 
   g_free(decoded_from);
   g_free(decoded_subject);
@@ -82,7 +96,10 @@ mn_message_new_from_mime_message (MNMailbox *mailbox,
 }
 
 MNMessage *
-mn_message_new_from_mime_stream (MNMailbox *mailbox, GMimeStream *mime_stream)
+mn_message_new_from_mime_stream (MNMailbox *mailbox,
+				 GMimeStream *mime_stream,
+				 MNMessageFlags flags,
+				 gboolean handle_status)
 {
   GMimeParser *parser;
   GMimeMessage *mime_message;
@@ -97,17 +114,20 @@ mn_message_new_from_mime_stream (MNMailbox *mailbox, GMimeStream *mime_stream)
 
   if (mime_message)
     {
-      message = mn_message_new_from_mime_message(mailbox, mime_message);
+      message = mn_message_new_from_mime_message(mailbox, mime_message, flags, handle_status);
       g_object_unref(mime_message);
     }
   else
-    message = mn_message_new_from_error(mailbox, _("unable to parse MIME message"));
-    
+    message = mn_message_new_from_error(mailbox, _("unable to parse MIME message"), flags);
+
   return message;
 }
 
 MNMessage *
-mn_message_new_from_uri (MNMailbox *mailbox, GnomeVFSURI *uri)
+mn_message_new_from_uri (MNMailbox *mailbox,
+			 GnomeVFSURI *uri,
+			 MNMessageFlags flags,
+			 gboolean handle_status)
 {
   GnomeVFSResult result;
   GnomeVFSHandle *handle;
@@ -125,7 +145,7 @@ mn_message_new_from_uri (MNMailbox *mailbox, GnomeVFSURI *uri)
 	{
 	  MNMessage *message;
 
-	  message = mn_message_new_from_mime_stream(mailbox, stream);
+	  message = mn_message_new_from_mime_stream(mailbox, stream, flags, handle_status);
 	  g_object_unref(stream);
 
 	  result = gnome_vfs_close(handle);
@@ -138,13 +158,15 @@ mn_message_new_from_uri (MNMailbox *mailbox, GnomeVFSURI *uri)
 	gnome_vfs_close(handle);
     }
 
-  return mn_message_new_from_error(mailbox, gnome_vfs_result_to_string(result));
+  return mn_message_new_from_error(mailbox, gnome_vfs_result_to_string(result), flags);
 }
 
 MNMessage *
 mn_message_new_from_buffer (MNMailbox *mailbox,
 			    const char *buffer,
-			    unsigned int len)
+			    unsigned int len,
+			    MNMessageFlags flags,
+			    gboolean handle_status)
 {
   GMimeStream *stream;
   MNMessage *message;
@@ -153,7 +175,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);
+  message = mn_message_new_from_mime_stream(mailbox, stream, flags, handle_status);
   g_object_unref(stream);
 
   return message;
diff --git a/src/mn-message-mime.h b/src/mn-message-mime.h
@@ -23,13 +23,21 @@
 #include "mn-message.h"
 
 MNMessage *mn_message_new_from_mime_message (MNMailbox *mailbox,
-					     GMimeMessage *mime_message);
+					     GMimeMessage *mime_message,
+					     MNMessageFlags flags,
+					     gboolean handle_status);
 MNMessage *mn_message_new_from_mime_stream (MNMailbox *mailbox,
-					    GMimeStream *mime_stream);
+					    GMimeStream *mime_stream,
+					    MNMessageFlags flags,
+					    gboolean handle_status);
 MNMessage *mn_message_new_from_uri (MNMailbox *mailbox,
-				    GnomeVFSURI *uri);
+				    GnomeVFSURI *uri,
+				    MNMessageFlags flags,
+				    gboolean handle_status);
 MNMessage *mn_message_new_from_buffer (MNMailbox *mailbox,
 				       const char *buffer,
-				       unsigned int len);
+				       unsigned int len,
+				       MNMessageFlags flags,
+				       gboolean handle_status);
 
 #endif /* _MN_MESSAGE_MIME_H */
diff --git a/src/mn-message-private.h b/src/mn-message-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MESSAGE_PRIVATE_H__
 #define __MN_MESSAGE_PRIVATE_H__
diff --git a/src/mn-message-view-private.h b/src/mn-message-view-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MESSAGE_VIEW_PRIVATE_H__
 #define __MN_MESSAGE_VIEW_PRIVATE_H__
@@ -9,23 +9,18 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 25 "mn-message-view.gob"
+
+#include <time.h>
+
+#line 18 "mn-message-view-private.h"
 struct _MNMessageViewPrivate {
-#line 44 "mn-message-view.gob"
-	GtkTextBuffer * buffer;
-#line 45 "mn-message-view.gob"
-	GtkTextTag * header_tag;
-#line 46 "mn-message-view.gob"
-	unsigned int update_tabs_idle_id;
 #line 47 "mn-message-view.gob"
-	unsigned int update_sent_timeout_id;
-#line 49 "mn-message-view.gob"
-	gboolean transparent;
-#line 52 "mn-message-view.gob"
-	gboolean text_pointer;
-#line 55 "mn-message-view.gob"
-	GSList * messages;
-#line 28 "mn-message-view-private.h"
+	GSList * past_time_cells;
+#line 22 "mn-message-view-private.h"
 };
+void 	mn_message_view_append_past_time_cell	(MNMessageView * self, time_t past_time, time_t now);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-message-view.c b/src/mn-message-view.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,24 +22,23 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-message-view.gob"
+#line 29 "mn-message-view.gob"
 
-#include "config.h"
-#include <glib/gi18n.h>
-#include <eel/eel.h>
-#include "mn-message.h"
+#include "mn-locked-callback.h"
 #include "mn-util.h"
 
 typedef struct
 {
-  MNMessage	*message;
-  GSList	*header_marks;
-  char		*last_sent;
-  GtkTextMark	*sent_start;
-  GtkTextMark	*sent_end;
-} MessageInfo;
-
-#line 44 "mn-message-view.c"
+  MNMessageView		*self;
+  MNTextTableCell	*cell;
+  GList			*link;
+  time_t		past_time;
+} PastTimeCell;
+
+static GQueue *past_time_cells;
+static MNLockedGSource *past_time_cells_timeout_source = NULL;
+
+#line 42 "mn-message-view.c"
 /* self casting macros */
 #define SELF(x) MN_MESSAGE_VIEW(x)
 #define SELF_CONST(x) MN_MESSAGE_VIEW_CONST(x)
@@ -56,45 +54,31 @@ typedef MNMessageViewClass SelfClass;
 
 /* here are local prototypes */
 static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec);
-static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
 static void mn_message_view_init (MNMessageView * o) G_GNUC_UNUSED;
-static void mn_message_view_class_init (MNMessageViewClass * c) G_GNUC_UNUSED;
-static GObject * ___2_mn_message_view_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
-static void mn_message_view_update_tabs (MNMessageView * self) G_GNUC_UNUSED;
-static void mn_message_view_style_set_h (GtkWidget * widget, GtkStyle * previous_style, gpointer user_data) G_GNUC_UNUSED;
-static gboolean mn_message_view_update_tabs_cb (gpointer data) G_GNUC_UNUSED;
-static void mn_message_view_realize_h (GtkWidget * widget, gpointer user_data) G_GNUC_UNUSED;
-static void mn_message_view_message_info_free (MessageInfo * info) G_GNUC_UNUSED;
-static void ___8_mn_message_view_finalize (GObject * object) G_GNUC_UNUSED;
-static gboolean mn_message_view_update_sent_cb (gpointer data) G_GNUC_UNUSED;
-static void mn_message_view_clear (MNMessageView * self) G_GNUC_UNUSED;
-static MessageInfo * mn_message_view_append_message (MNMessageView * self, MNMessage * message) G_GNUC_UNUSED;
-static void mn_message_view_append (MNMessageView * self, const char * text) G_GNUC_UNUSED;
-static void mn_message_view_append_row (MNMessageView * self, const char * name, const char * value, GSList ** header_marks, GtkTextMark ** value_start_mark, GtkTextMark ** value_end_mark) G_GNUC_UNUSED;
+static void mn_message_view_class_init (MNMessageViewClass * class) G_GNUC_UNUSED;
+static void ___3_mn_message_view_finalize (GObject * object) G_GNUC_UNUSED;
+static void ___4_mn_message_view_realize (GtkWidget * widget) G_GNUC_UNUSED;
+static void mn_message_view_update (MNMessageView * self, GSList * messages) G_GNUC_UNUSED;
+static void ___6_mn_message_view_clear (MNTextTable * table) G_GNUC_UNUSED;
+static void mn_message_view_clear_past_time_cells (MNMessageView * self) G_GNUC_UNUSED;
+static gboolean mn_message_view_update_past_time_cells_cb (gpointer data) G_GNUC_UNUSED;
+static void mn_message_view_update_past_time_cell (PastTimeCell * pcell, time_t now) G_GNUC_UNUSED;
 
 enum {
 	PROP_0,
-	PROP_TRANSPARENT,
-	PROP_TEXT_POINTER,
 	PROP_MESSAGES
 };
 
 /* pointer to the class of our parent */
-static GtkTextViewClass *parent_class = NULL;
+static MNTextTableClass *parent_class = NULL;
 
 /* Short form macros */
 #define self_set_messages mn_message_view_set_messages
-#define self_update_tabs mn_message_view_update_tabs
-#define self_style_set_h mn_message_view_style_set_h
-#define self_update_tabs_cb mn_message_view_update_tabs_cb
-#define self_realize_h mn_message_view_realize_h
-#define self_message_info_free mn_message_view_message_info_free
-#define self_update_sent_cb mn_message_view_update_sent_cb
-#define self_clear mn_message_view_clear
-#define self_append_message mn_message_view_append_message
-#define self_append mn_message_view_append
-#define self_append_row mn_message_view_append_row
-#define self_new mn_message_view_new
+#define self_update mn_message_view_update
+#define self_append_past_time_cell mn_message_view_append_past_time_cell
+#define self_clear_past_time_cells mn_message_view_clear_past_time_cells
+#define self_update_past_time_cells_cb mn_message_view_update_past_time_cells_cb
+#define self_update_past_time_cell mn_message_view_update_past_time_cell
 GType
 mn_message_view_get_type (void)
 {
@@ -114,7 +98,7 @@ mn_message_view_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (GTK_TYPE_TEXT_VIEW, "MNMessageView", &info, (GTypeFlags)0);
+		type = g_type_register_static (MN_TYPE_TEXT_TABLE, "MNMessageView", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -144,9 +128,9 @@ ___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 233 "mn-message-view.gob"
-	___8_mn_message_view_finalize(obj_self);
-#line 150 "mn-message-view.c"
+#line 60 "mn-message-view.gob"
+	___3_mn_message_view_finalize(obj_self);
+#line 134 "mn-message-view.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -157,44 +141,33 @@ 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"
 static void 
-mn_message_view_class_init (MNMessageViewClass * c G_GNUC_UNUSED)
+mn_message_view_class_init (MNMessageViewClass * class G_GNUC_UNUSED)
+#line 148 "mn-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Message:View::class_init"
-	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+	GtkWidgetClass *gtk_widget_class = (GtkWidgetClass *)class;
+	MNTextTableClass *mn_text_table_class = (MNTextTableClass *)class;
 
-	g_type_class_add_private(c,sizeof(MNMessageViewPrivate));
+	g_type_class_add_private(class,sizeof(MNMessageViewPrivate));
 
-	parent_class = g_type_class_ref (GTK_TYPE_TEXT_VIEW);
+	parent_class = g_type_class_ref (MN_TYPE_TEXT_TABLE);
 
-#line 95 "mn-message-view.gob"
-	g_object_class->constructor = ___2_mn_message_view_constructor;
-#line 233 "mn-message-view.gob"
+#line 60 "mn-message-view.gob"
 	g_object_class->finalize = ___finalize;
-#line 175 "mn-message-view.c"
-	g_object_class->get_property = ___object_get_property;
+#line 70 "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"
+	mn_text_table_class->clear = ___6_mn_message_view_clear;
+#line 167 "mn-message-view.c"
 	g_object_class->set_property = ___object_set_property;
     {
 	GParamSpec   *param_spec;
 
-	param_spec = g_param_spec_boolean
-		("transparent" /* name */,
-		 NULL /* nick */,
-		 NULL /* blurb */,
-		 FALSE /* default_value */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
-	g_object_class_install_property (g_object_class,
-		PROP_TRANSPARENT,
-		param_spec);
-	param_spec = g_param_spec_boolean
-		("text_pointer" /* name */,
-		 NULL /* nick */,
-		 NULL /* blurb */,
-		 FALSE /* default_value */,
-		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
-	g_object_class_install_property (g_object_class,
-		PROP_TEXT_POINTER,
-		param_spec);
 	param_spec = g_param_spec_pointer
 		("messages" /* name */,
 		 NULL /* nick */,
@@ -204,6 +177,13 @@ mn_message_view_class_init (MNMessageViewClass * c G_GNUC_UNUSED)
 		PROP_MESSAGES,
 		param_spec);
     }
+ {
+#line 56 "mn-message-view.gob"
+
+    past_time_cells = g_queue_new();
+  
+#line 186 "mn-message-view.c"
+ }
 }
 #undef __GOB_FUNCTION__
 
@@ -219,98 +199,13 @@ ___object_set_property (GObject *object,
 	self = MN_MESSAGE_VIEW (object);
 
 	switch (property_id) {
-	case PROP_TRANSPARENT:
-		{
-#line 50 "mn-message-view.gob"
-self->_priv->transparent = g_value_get_boolean (VAL);
-#line 227 "mn-message-view.c"
-		}
-		break;
-	case PROP_TEXT_POINTER:
-		{
-#line 53 "mn-message-view.gob"
-self->_priv->text_pointer = g_value_get_boolean (VAL);
-#line 234 "mn-message-view.c"
-		}
-		break;
 	case PROP_MESSAGES:
 		{
-#line 58 "mn-message-view.gob"
-
-      GSList *messages;
-      MessageInfo *info;
-      GSList *l;
-      gboolean need_updates = FALSE;
-
-      eel_g_slist_free_deep_custom(selfp->messages, (GFunc) self_message_info_free, NULL);
-      selfp->messages = NULL;
-      
-      self_clear(self);
-
-      messages = g_value_get_pointer(VAL);
-      if (messages)
-	MN_LIST_FOREACH(l, messages)
-          {
-	    info = self_append_message(self, l->data);
-	    
-	    if (info->last_sent)
-	      need_updates = TRUE;
-	    
-	    if (l->next)
-	      self_append(self, "\n\n");
-	  }
-      else
-	self_append(self, _("You have no new mail."));
-
-      self_update_tabs(self);
-
-      if (need_updates)
-	{
-	  if (! selfp->update_sent_timeout_id)
-	    selfp->update_sent_timeout_id = g_timeout_add(500, self_update_sent_cb, self);
-	}
-      else
-	mn_source_clear(&selfp->update_sent_timeout_id);
-    
-#line 276 "mn-message-view.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 51 "mn-message-view.gob"
 
-static void
-___object_get_property (GObject *object,
-	guint property_id,
-	GValue *VAL G_GNUC_UNUSED,
-	GParamSpec *pspec G_GNUC_UNUSED)
-#define __GOB_FUNCTION__ "MN:Message:View::get_property"
-{
-	MNMessageView *self G_GNUC_UNUSED;
-
-	self = MN_MESSAGE_VIEW (object);
-
-	switch (property_id) {
-	case PROP_TRANSPARENT:
-		{
-#line 50 "mn-message-view.gob"
-g_value_set_boolean (VAL, self->_priv->transparent);
-#line 307 "mn-message-view.c"
-		}
-		break;
-	case PROP_TEXT_POINTER:
-		{
-#line 53 "mn-message-view.gob"
-g_value_set_boolean (VAL, self->_priv->text_pointer);
-#line 314 "mn-message-view.c"
+      self_update(self, g_value_get_pointer(VAL));
+    
+#line 209 "mn-message-view.c"
 		}
 		break;
 	default:
@@ -326,473 +221,216 @@ g_value_set_boolean (VAL, self->_priv->text_pointer);
 #undef __GOB_FUNCTION__
 
 
-
-#line 58 "mn-message-view.gob"
+#line 51 "mn-message-view.gob"
 void 
 mn_message_view_set_messages (MNMessageView * self, gpointer val)
-#line 334 "mn-message-view.c"
+#line 228 "mn-message-view.c"
 {
 #define __GOB_FUNCTION__ "MN:Message:View::set_messages"
 {
-#line 56 "mn-message-view.gob"
+#line 49 "mn-message-view.gob"
 		g_object_set (G_OBJECT (self), "messages", val, NULL);
 }}
-#line 341 "mn-message-view.c"
+#line 235 "mn-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 95 "mn-message-view.gob"
-static GObject * 
-___2_mn_message_view_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 347 "mn-message-view.c"
-#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
-	((G_OBJECT_CLASS(parent_class)->constructor)? \
-		(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
-		((GObject * )0))
-{
-#define __GOB_FUNCTION__ "MN:Message:View::constructor"
-{
-#line 97 "mn-message-view.gob"
-	
-    GObject *object;
-    Self *self;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    self = SELF(object);
-
-    selfp->buffer = gtk_text_buffer_new(NULL);
-    selfp->header_tag = gtk_text_buffer_create_tag(selfp->buffer,
-						   NULL,
-						   "weight", PANGO_WEIGHT_BOLD,
-						   NULL);
-
-    gtk_text_view_set_buffer(GTK_TEXT_VIEW(self), selfp->buffer);
-    gtk_text_view_set_editable(GTK_TEXT_VIEW(self), FALSE);
-    gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(self), FALSE);
-
-    g_object_connect(self,
-		     "signal-after::style-set", self_style_set_h, NULL,
-		     "signal-after::realize", self_realize_h, NULL,
-		     NULL);
-
-    return object;
-  }}
-#line 380 "mn-message-view.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 122 "mn-message-view.gob"
-static void 
-mn_message_view_update_tabs (MNMessageView * self)
-#line 387 "mn-message-view.c"
-{
-#define __GOB_FUNCTION__ "MN:Message:View::update_tabs"
-#line 122 "mn-message-view.gob"
-	g_return_if_fail (self != NULL);
-#line 122 "mn-message-view.gob"
-	g_return_if_fail (MN_IS_MESSAGE_VIEW (self));
-#line 394 "mn-message-view.c"
-{
-#line 124 "mn-message-view.gob"
-	
-    GSList *l;
-    int longest_header_len = 0;
-    PangoTabArray *tabs;
-
-    MN_LIST_FOREACH(l, selfp->messages)
-      {
-	MessageInfo *info = l->data;
-	GSList *m;
-
-	MN_LIST_FOREACH(m, info->header_marks)
-	  {
-	    GtkTextMark *mark = m->data;
-	    GtkTextIter iter;
-	    GdkRectangle rect;
 
-	    gtk_text_buffer_get_iter_at_mark(selfp->buffer, &iter, mark);
-	    gtk_text_view_get_iter_location(GTK_TEXT_VIEW(self), &iter, &rect);
-
-	    if (rect.x > longest_header_len)
-	      longest_header_len = rect.x;
-	  }
-      }
-
-    tabs = pango_tab_array_new_with_positions(1, TRUE, PANGO_TAB_LEFT, longest_header_len + 12);
-    gtk_text_view_set_tabs(GTK_TEXT_VIEW(self), tabs);
-    pango_tab_array_free(tabs);
-  }}
-#line 425 "mn-message-view.c"
-#undef __GOB_FUNCTION__
-
-#line 153 "mn-message-view.gob"
+#line 60 "mn-message-view.gob"
 static void 
-mn_message_view_style_set_h (GtkWidget * widget, GtkStyle * previous_style, gpointer user_data)
-#line 431 "mn-message-view.c"
-{
-#define __GOB_FUNCTION__ "MN:Message:View::style_set_h"
-{
-#line 157 "mn-message-view.gob"
-	
-    Self *self = SELF(widget);
-
-    if (selfp->update_tabs_idle_id)
-      g_source_remove(selfp->update_tabs_idle_id);
-
-    selfp->update_tabs_idle_id = g_idle_add(self_update_tabs_cb, self);
-  }}
-#line 444 "mn-message-view.c"
-#undef __GOB_FUNCTION__
-
-#line 166 "mn-message-view.gob"
-static gboolean 
-mn_message_view_update_tabs_cb (gpointer data)
-#line 450 "mn-message-view.c"
+___3_mn_message_view_finalize (GObject * object G_GNUC_UNUSED)
+#line 242 "mn-message-view.c"
+#define PARENT_HANDLER(___object) \
+	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
+		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
-#define __GOB_FUNCTION__ "MN:Message:View::update_tabs_cb"
+#define __GOB_FUNCTION__ "MN:Message:View::finalize"
 {
-#line 168 "mn-message-view.gob"
+#line 62 "mn-message-view.gob"
 	
-    Self *self = data;
+    Self *self = SELF(object);
 
-    GDK_THREADS_ENTER();
-    self_update_tabs(self);
-    selfp->update_tabs_idle_id = 0;
-    GDK_THREADS_LEAVE();
+    self_clear_past_time_cells(self);
 
-    return FALSE;		/* remove */
+    PARENT_HANDLER(object);
   }}
-#line 465 "mn-message-view.c"
+#line 257 "mn-message-view.c"
 #undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
 
-#line 179 "mn-message-view.gob"
+#line 70 "mn-message-view.gob"
 static void 
-mn_message_view_realize_h (GtkWidget * widget, gpointer user_data)
-#line 471 "mn-message-view.c"
+___4_mn_message_view_realize (GtkWidget * widget G_GNUC_UNUSED)
+#line 264 "mn-message-view.c"
+#define PARENT_HANDLER(___widget) \
+	{ if(GTK_WIDGET_CLASS(parent_class)->realize) \
+		(* GTK_WIDGET_CLASS(parent_class)->realize)(___widget); }
 {
-#define __GOB_FUNCTION__ "MN:Message:View::realize_h"
+#define __GOB_FUNCTION__ "MN:Message:View::realize"
 {
-#line 181 "mn-message-view.gob"
+#line 72 "mn-message-view.gob"
 	
-    Self *self = SELF(widget);
+    GtkWidget *toplevel;
     GtkStateType state;
 
-    if (selfp->transparent)
-      {
-	GtkWidget *toplevel;
-	
-	toplevel = gtk_widget_get_toplevel(widget);
-	g_return_if_fail(toplevel != NULL);
-	g_return_if_fail(toplevel->style != NULL);
-	
-	for (state = GTK_STATE_NORMAL; state <= GTK_STATE_INSENSITIVE; state++)
-	  gtk_widget_modify_base(widget, state, &toplevel->style->bg[state]);
-      }
-
-    if (! selfp->text_pointer)
-      {
-	GdkWindow *window;
+    PARENT_HANDLER(widget);
 
-	window = gtk_text_view_get_window(GTK_TEXT_VIEW(self), GTK_TEXT_WINDOW_TEXT);
-	g_return_if_fail(window != NULL);
+    /* set a transparent background */
 
-	gdk_window_set_cursor(window, NULL);
-      }
+    toplevel = gtk_widget_get_toplevel(widget);
+    g_assert(toplevel != NULL);
+    g_assert(toplevel->style != NULL);
 
-    g_return_if_fail(widget->style != NULL);
     for (state = GTK_STATE_NORMAL; state <= GTK_STATE_INSENSITIVE; state++)
-      gtk_widget_modify_bg(widget, state, &widget->style->base[state]);
+      gtk_widget_modify_bg(widget, state, &toplevel->style->bg[state]);
   }}
-#line 506 "mn-message-view.c"
+#line 287 "mn-message-view.c"
 #undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
 
-#line 212 "mn-message-view.gob"
+#line 88 "mn-message-view.gob"
 static void 
-mn_message_view_message_info_free (MessageInfo * info)
-#line 512 "mn-message-view.c"
+mn_message_view_update (MNMessageView * self, GSList * messages)
+#line 294 "mn-message-view.c"
 {
-#define __GOB_FUNCTION__ "MN:Message:View::message_info_free"
-#line 212 "mn-message-view.gob"
-	g_return_if_fail (info != NULL);
-#line 517 "mn-message-view.c"
-{
-#line 214 "mn-message-view.gob"
-	
-    GSList *l;
-
-    g_object_unref(info->message);
-    
-    MN_LIST_FOREACH(l, info->header_marks)
-      gtk_text_buffer_delete_mark(gtk_text_mark_get_buffer(l->data), l->data);
-    g_slist_free(info->header_marks);
+	MNMessageViewClass *klass;
+#line 88 "mn-message-view.gob"
+	g_return_if_fail (self != NULL);
+#line 88 "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);
 
-    if (info->sent_start)
-      {
-	gtk_text_buffer_delete_mark(gtk_text_mark_get_buffer(info->sent_start), info->sent_start);
-	gtk_text_buffer_delete_mark(gtk_text_mark_get_buffer(info->sent_end), info->sent_end);
-      }
-    
-    g_free(info->last_sent);
-    g_free(info);
-  }}
-#line 538 "mn-message-view.c"
-#undef __GOB_FUNCTION__
+	if(klass->update)
+		(*klass->update)(self,messages);
+}
 
-#line 233 "mn-message-view.gob"
+#line 91 "mn-message-view.gob"
 static void 
-___8_mn_message_view_finalize (GObject * object G_GNUC_UNUSED)
-#line 544 "mn-message-view.c"
-#define PARENT_HANDLER(___object) \
-	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
-		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+___6_mn_message_view_clear (MNTextTable * table G_GNUC_UNUSED)
+#line 311 "mn-message-view.c"
+#define PARENT_HANDLER(___table) \
+	{ if(MN_TEXT_TABLE_CLASS(parent_class)->clear) \
+		(* MN_TEXT_TABLE_CLASS(parent_class)->clear)(___table); }
 {
-#define __GOB_FUNCTION__ "MN:Message:View::finalize"
+#define __GOB_FUNCTION__ "MN:Message:View::clear"
 {
-#line 235 "mn-message-view.gob"
+#line 93 "mn-message-view.gob"
 	
-    Self *self = SELF(object);
-
-    if (selfp->update_tabs_idle_id)
-      g_source_remove(selfp->update_tabs_idle_id);
-    if (selfp->update_sent_timeout_id)
-      g_source_remove(selfp->update_sent_timeout_id);
-
-    eel_g_slist_free_deep_custom(selfp->messages, (GFunc) self_message_info_free, NULL);
-    g_object_unref(selfp->buffer);
+    self_clear_past_time_cells(SELF(table));
 
-    PARENT_HANDLER(object);
+    PARENT_HANDLER(table);
   }}
-#line 565 "mn-message-view.c"
+#line 324 "mn-message-view.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 249 "mn-message-view.gob"
-static gboolean 
-mn_message_view_update_sent_cb (gpointer data)
-#line 572 "mn-message-view.c"
+#line 99 "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::update_sent_cb"
+#define __GOB_FUNCTION__ "MN:Message:View::append_past_time_cell"
+#line 99 "mn-message-view.gob"
+	g_return_if_fail (self != NULL);
+#line 99 "mn-message-view.gob"
+	g_return_if_fail (MN_IS_MESSAGE_VIEW (self));
+#line 338 "mn-message-view.c"
 {
-#line 251 "mn-message-view.gob"
+#line 101 "mn-message-view.gob"
 	
-    Self *self = data;
-    GSList *l;
+    PastTimeCell *pcell;
 
-    GDK_THREADS_ENTER();
-    MN_LIST_FOREACH(l, selfp->messages)
-      {
-	MessageInfo *info = l->data;
-
-	if (info->last_sent)
-	  {
-	    char *sent;
-	    
-	    sent = mn_message_format_sent_time(info->message);
-	    if (! sent || strcmp(sent, info->last_sent))
-	      {
-		GtkTextIter start;
-		GtkTextIter end;
-
-		gtk_text_buffer_get_iter_at_mark(selfp->buffer, &start, info->sent_start);
-		gtk_text_buffer_get_iter_at_mark(selfp->buffer, &end, info->sent_end);
-
-		gtk_text_buffer_delete(selfp->buffer, &start, &end);
-
-		if (sent)
-		  {
-		    gtk_text_buffer_insert(selfp->buffer, &end, sent, -1);
-		    gtk_text_buffer_move_mark(selfp->buffer, info->sent_end, &end);
-		  }
-
-		g_free(info->last_sent);
-		info->last_sent = sent;
-	      }
-	    else
-	      g_free(sent);
-	  }
-      }
-    GDK_THREADS_LEAVE();
+    pcell = g_new(PastTimeCell, 1);
+    pcell->self = self;
+    pcell->cell = mn_text_table_append_text_cell(MN_TEXT_TABLE(self), NULL);
+    pcell->link = g_list_alloc();
+    pcell->link->data = pcell;
+    pcell->past_time = past_time;
+
+    self_update_past_time_cell(pcell, now);
 
-    return TRUE;		/* continue */
+    selfp->past_time_cells = g_slist_prepend(selfp->past_time_cells, pcell);
+    g_queue_push_tail_link(past_time_cells, pcell->link);
+
+    if (! past_time_cells_timeout_source)
+      past_time_cells_timeout_source = mn_g_timeout_add_gdk_locked(500, self_update_past_time_cells_cb, NULL);
   }}
-#line 618 "mn-message-view.c"
+#line 359 "mn-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 293 "mn-message-view.gob"
+#line 120 "mn-message-view.gob"
 static void 
-mn_message_view_clear (MNMessageView * self)
-#line 624 "mn-message-view.c"
+mn_message_view_clear_past_time_cells (MNMessageView * self)
+#line 365 "mn-message-view.c"
 {
-#define __GOB_FUNCTION__ "MN:Message:View::clear"
-#line 293 "mn-message-view.gob"
+#define __GOB_FUNCTION__ "MN:Message:View::clear_past_time_cells"
+#line 120 "mn-message-view.gob"
 	g_return_if_fail (self != NULL);
-#line 293 "mn-message-view.gob"
+#line 120 "mn-message-view.gob"
 	g_return_if_fail (MN_IS_MESSAGE_VIEW (self));
-#line 631 "mn-message-view.c"
+#line 372 "mn-message-view.c"
 {
-#line 295 "mn-message-view.gob"
+#line 122 "mn-message-view.gob"
 	
-    GtkTextIter start;
-    GtkTextIter end;
+    GSList *l;
 
-    gtk_text_buffer_get_start_iter(selfp->buffer, &start);
-    gtk_text_buffer_get_end_iter(selfp->buffer, &end);
-    gtk_text_buffer_delete(selfp->buffer, &start, &end);
-  }}
-#line 642 "mn-message-view.c"
-#undef __GOB_FUNCTION__
+    if (! selfp->past_time_cells)
+      return;
 
-#line 304 "mn-message-view.gob"
-static MessageInfo * 
-mn_message_view_append_message (MNMessageView * self, MNMessage * message)
-#line 648 "mn-message-view.c"
-{
-#define __GOB_FUNCTION__ "MN:Message:View::append_message"
-#line 304 "mn-message-view.gob"
-	g_return_val_if_fail (self != NULL, (MessageInfo * )0);
-#line 304 "mn-message-view.gob"
-	g_return_val_if_fail (MN_IS_MESSAGE_VIEW (self), (MessageInfo * )0);
-#line 304 "mn-message-view.gob"
-	g_return_val_if_fail (message != NULL, (MessageInfo * )0);
-#line 304 "mn-message-view.gob"
-	g_return_val_if_fail (MN_IS_MESSAGE (message), (MessageInfo * )0);
-#line 659 "mn-message-view.c"
-{
-#line 306 "mn-message-view.gob"
-	
-    MessageInfo *info;
-
-    info = g_new0(MessageInfo, 1);
-    info->message = g_object_ref(message);
-
-    self_append_row(self,
-		    _("Mailbox"),
-		    message->mailbox_name,
-		    &info->header_marks,
-		    NULL,
-		    NULL);
-    self_append(self, "\n");
-    
-    if (message->error)
-      self_append_row(self,
-		      _("Unreadable message"),
-		      message->error,
-		      &info->header_marks,
-		      NULL,
-		      NULL);
-    else
+    MN_LIST_FOREACH(l, selfp->past_time_cells)
       {
-	self_append_row(self,
-			_("From"),
-			message->from,
-			&info->header_marks,
-			NULL,
-			NULL);
-	self_append(self, "\n");
-
-	self_append_row(self,
-			_("Subject"),
-			message->subject,
-			&info->header_marks,
-			NULL,
-			NULL);
-
-	info->last_sent = mn_message_format_sent_time(message);
-	if (info->last_sent)
-	  {
-	    self_append(self, "\n");
-	    self_append_row(self,
-			    _("Sent"),
-			    info->last_sent,
-			    &info->header_marks,
-			    &info->sent_start,
-			    &info->sent_end);
-	  }
+	PastTimeCell *pcell = l->data;
+
+	g_queue_delete_link(past_time_cells, pcell->link);
+	g_free(pcell);
       }
 
-    selfp->messages = g_slist_append(selfp->messages, info);
-    
-    return info;
-  }}
-#line 717 "mn-message-view.c"
-#undef __GOB_FUNCTION__
+    mn_g_slist_clear(&selfp->past_time_cells);
 
-#line 362 "mn-message-view.gob"
-static void 
-mn_message_view_append (MNMessageView * self, const char * text)
-#line 723 "mn-message-view.c"
-{
-#define __GOB_FUNCTION__ "MN:Message:View::append"
-#line 362 "mn-message-view.gob"
-	g_return_if_fail (self != NULL);
-#line 362 "mn-message-view.gob"
-	g_return_if_fail (MN_IS_MESSAGE_VIEW (self));
-#line 362 "mn-message-view.gob"
-	g_return_if_fail (text != NULL);
-#line 732 "mn-message-view.c"
-{
-#line 364 "mn-message-view.gob"
-	
-    GtkTextIter end;
-    
-    gtk_text_buffer_get_end_iter(selfp->buffer, &end);
-    gtk_text_buffer_insert(selfp->buffer, &end, text, -1);
+    if (g_queue_is_empty(past_time_cells))
+      mn_locked_g_source_clear(&past_time_cells_timeout_source);
   }}
-#line 741 "mn-message-view.c"
+#line 394 "mn-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 371 "mn-message-view.gob"
-static void 
-mn_message_view_append_row (MNMessageView * self, const char * name, const char * value, GSList ** header_marks, GtkTextMark ** value_start_mark, GtkTextMark ** value_end_mark)
-#line 747 "mn-message-view.c"
+#line 142 "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::append_row"
-#line 371 "mn-message-view.gob"
-	g_return_if_fail (self != NULL);
-#line 371 "mn-message-view.gob"
-	g_return_if_fail (MN_IS_MESSAGE_VIEW (self));
-#line 371 "mn-message-view.gob"
-	g_return_if_fail (name != NULL);
-#line 371 "mn-message-view.gob"
-	g_return_if_fail (value != NULL);
-#line 371 "mn-message-view.gob"
-	g_return_if_fail (header_marks != NULL);
-#line 760 "mn-message-view.c"
+#define __GOB_FUNCTION__ "MN:Message:View::update_past_time_cells_cb"
 {
-#line 378 "mn-message-view.gob"
+#line 144 "mn-message-view.gob"
 	
-    GtkTextIter end;
-
-    gtk_text_buffer_get_end_iter(selfp->buffer, &end);
-    
-    gtk_text_buffer_insert_with_tags(selfp->buffer, &end, name, -1, selfp->header_tag, NULL);
-    gtk_text_buffer_insert_with_tags(selfp->buffer, &end, ":", -1, selfp->header_tag, NULL);
+    time_t now;
+    GList *l;
 
-    *header_marks = g_slist_append(*header_marks, gtk_text_buffer_create_mark(selfp->buffer, NULL, &end, TRUE));
-    gtk_text_buffer_insert(selfp->buffer, &end, "\t", -1);
+    now = mn_time();
+    MN_QUEUE_FOREACH(l, past_time_cells)
+      self_update_past_time_cell(l->data, now);
 
-    if (value_start_mark)
-      *value_start_mark = gtk_text_buffer_create_mark(selfp->buffer, NULL, &end, TRUE);
-
-    gtk_text_buffer_insert(selfp->buffer, &end, value, -1);
-
-    if (value_end_mark)
-      *value_end_mark = gtk_text_buffer_create_mark(selfp->buffer, NULL, &end, TRUE);
+    return TRUE;		/* keep source */
   }}
-#line 782 "mn-message-view.c"
+#line 415 "mn-message-view.c"
 #undef __GOB_FUNCTION__
 
-#line 398 "mn-message-view.gob"
-GtkWidget * 
-mn_message_view_new (gboolean transparent, gboolean text_pointer)
-#line 788 "mn-message-view.c"
+#line 155 "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::new"
+#define __GOB_FUNCTION__ "MN:Message:View::update_past_time_cell"
+#line 155 "mn-message-view.gob"
+	g_return_if_fail (pcell != NULL);
+#line 426 "mn-message-view.c"
 {
-#line 400 "mn-message-view.gob"
+#line 157 "mn-message-view.gob"
 	
-    return GTK_WIDGET(GET_NEW_VARG(MN_MESSAGE_VIEW_PROP_TRANSPARENT(transparent),
-				   MN_MESSAGE_VIEW_PROP_TEXT_POINTER(text_pointer),
-				   NULL));
+    char *formatted;
+
+    formatted = mn_format_past_time(pcell->past_time, now);
+    mn_text_table_cell_set_text(MN_TEXT_TABLE(pcell->self), pcell->cell, formatted);
+    g_free(formatted);
   }}
-#line 798 "mn-message-view.c"
+#line 436 "mn-message-view.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-message-view.gob b/src/mn-message-view.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,390 +16,149 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
-#include <gtk/gtk.h>
+#include "mn-text-table.h"
+%}
+
+%privateheader{
+#include <time.h>
 %}
 
 %{
-#include "config.h"
-#include <glib/gi18n.h>
-#include <eel/eel.h>
-#include "mn-message.h"
+#include "mn-locked-callback.h"
 #include "mn-util.h"
 
 typedef struct
 {
-  MNMessage	*message;
-  GSList	*header_marks;
-  char		*last_sent;
-  GtkTextMark	*sent_start;
-  GtkTextMark	*sent_end;
-} MessageInfo;
+  MNMessageView		*self;
+  MNTextTableCell	*cell;
+  GList			*link;
+  time_t		past_time;
+} PastTimeCell;
+
+static GQueue *past_time_cells;
+static MNLockedGSource *past_time_cells_timeout_source = NULL;
 %}
 
-class MN:Message:View from Gtk:Text:View
+class MN:Message:View from MN:Text:Table (abstract)
 {
-  private GtkTextBuffer *buffer;
-  private GtkTextTag *header_tag;
-  private unsigned int update_tabs_idle_id;
-  private unsigned int update_sent_timeout_id;
-
-  private gboolean transparent;
-  property BOOLEAN transparent (flags = CONSTRUCT_ONLY, link);
-
-  private gboolean text_pointer;
-  property BOOLEAN text_pointer (flags = CONSTRUCT_ONLY, link);
+  private GSList *past_time_cells;
 
-  private GSList *messages;
   property POINTER messages (export)
     set
     {
-      GSList *messages;
-      MessageInfo *info;
-      GSList *l;
-      gboolean need_updates = FALSE;
-
-      eel_g_slist_free_deep_custom(selfp->messages, (GFunc) self_message_info_free, NULL);
-      selfp->messages = NULL;
-      
-      self_clear(self);
-
-      messages = g_value_get_pointer(VAL);
-      if (messages)
-	MN_LIST_FOREACH(l, messages)
-          {
-	    info = self_append_message(self, l->data);
-	    
-	    if (info->last_sent)
-	      need_updates = TRUE;
-	    
-	    if (l->next)
-	      self_append(self, "\n\n");
-	  }
-      else
-	self_append(self, _("You have no new mail."));
-
-      self_update_tabs(self);
-
-      if (need_updates)
-	{
-	  if (! selfp->update_sent_timeout_id)
-	    selfp->update_sent_timeout_id = g_timeout_add(500, self_update_sent_cb, self);
-	}
-      else
-	mn_source_clear(&selfp->update_sent_timeout_id);
+      self_update(self, g_value_get_pointer(VAL));
     };
 
-  override (G:Object) GObject *
-    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  class_init (class)
   {
-    GObject *object;
-    Self *self;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    self = SELF(object);
-
-    selfp->buffer = gtk_text_buffer_new(NULL);
-    selfp->header_tag = gtk_text_buffer_create_tag(selfp->buffer,
-						   NULL,
-						   "weight", PANGO_WEIGHT_BOLD,
-						   NULL);
+    past_time_cells = g_queue_new();
+  }
 
-    gtk_text_view_set_buffer(GTK_TEXT_VIEW(self), selfp->buffer);
-    gtk_text_view_set_editable(GTK_TEXT_VIEW(self), FALSE);
-    gtk_text_view_set_cursor_visible(GTK_TEXT_VIEW(self), FALSE);
+  override (G:Object) void
+    finalize (GObject *object)
+  {
+    Self *self = SELF(object);
 
-    g_object_connect(self,
-		     "signal-after::style-set", self_style_set_h, NULL,
-		     "signal-after::realize", self_realize_h, NULL,
-		     NULL);
+    self_clear_past_time_cells(self);
 
-    return object;
+    PARENT_HANDLER(object);
   }
-  
-  private void
-    update_tabs (self)
-  {
-    GSList *l;
-    int longest_header_len = 0;
-    PangoTabArray *tabs;
 
-    MN_LIST_FOREACH(l, selfp->messages)
-      {
-	MessageInfo *info = l->data;
-	GSList *m;
+  override (Gtk:Widget) void
+    realize (GtkWidget *widget)
+  {
+    GtkWidget *toplevel;
+    GtkStateType state;
 
-	MN_LIST_FOREACH(m, info->header_marks)
-	  {
-	    GtkTextMark *mark = m->data;
-	    GtkTextIter iter;
-	    GdkRectangle rect;
+    PARENT_HANDLER(widget);
 
-	    gtk_text_buffer_get_iter_at_mark(selfp->buffer, &iter, mark);
-	    gtk_text_view_get_iter_location(GTK_TEXT_VIEW(self), &iter, &rect);
+    /* set a transparent background */
 
-	    if (rect.x > longest_header_len)
-	      longest_header_len = rect.x;
-	  }
-      }
+    toplevel = gtk_widget_get_toplevel(widget);
+    g_assert(toplevel != NULL);
+    g_assert(toplevel->style != NULL);
 
-    tabs = pango_tab_array_new_with_positions(1, TRUE, PANGO_TAB_LEFT, longest_header_len + 12);
-    gtk_text_view_set_tabs(GTK_TEXT_VIEW(self), tabs);
-    pango_tab_array_free(tabs);
+    for (state = GTK_STATE_NORMAL; state <= GTK_STATE_INSENSITIVE; state++)
+      gtk_widget_modify_bg(widget, state, &toplevel->style->bg[state]);
   }
-  
-  private void
-    style_set_h (GtkWidget *widget,
-		 GtkStyle *previous_style,
-		 gpointer user_data)
-  {
-    Self *self = SELF(widget);
 
-    if (selfp->update_tabs_idle_id)
-      g_source_remove(selfp->update_tabs_idle_id);
-
-    selfp->update_tabs_idle_id = g_idle_add(self_update_tabs_cb, self);
-  }
+  virtual private void
+    update (self, GSList *messages);
 
-  private gboolean
-    update_tabs_cb (gpointer data)
+  override (MN:Text:Table) void
+    clear (MNTextTable *table)
   {
-    Self *self = data;
-
-    GDK_THREADS_ENTER();
-    self_update_tabs(self);
-    selfp->update_tabs_idle_id = 0;
-    GDK_THREADS_LEAVE();
+    self_clear_past_time_cells(SELF(table));
 
-    return FALSE;		/* remove */
+    PARENT_HANDLER(table);
   }
-  
-  private void
-    realize_h (GtkWidget *widget, gpointer user_data)
-  {
-    Self *self = SELF(widget);
-    GtkStateType state;
 
-    if (selfp->transparent)
-      {
-	GtkWidget *toplevel;
-	
-	toplevel = gtk_widget_get_toplevel(widget);
-	g_return_if_fail(toplevel != NULL);
-	g_return_if_fail(toplevel->style != NULL);
-	
-	for (state = GTK_STATE_NORMAL; state <= GTK_STATE_INSENSITIVE; state++)
-	  gtk_widget_modify_base(widget, state, &toplevel->style->bg[state]);
-      }
+  protected void
+    append_past_time_cell (self, time_t past_time, time_t now)
+  {
+    PastTimeCell *pcell;
 
-    if (! selfp->text_pointer)
-      {
-	GdkWindow *window;
+    pcell = g_new(PastTimeCell, 1);
+    pcell->self = self;
+    pcell->cell = mn_text_table_append_text_cell(MN_TEXT_TABLE(self), NULL);
+    pcell->link = g_list_alloc();
+    pcell->link->data = pcell;
+    pcell->past_time = past_time;
 
-	window = gtk_text_view_get_window(GTK_TEXT_VIEW(self), GTK_TEXT_WINDOW_TEXT);
-	g_return_if_fail(window != NULL);
+    self_update_past_time_cell(pcell, now);
 
-	gdk_window_set_cursor(window, NULL);
-      }
+    selfp->past_time_cells = g_slist_prepend(selfp->past_time_cells, pcell);
+    g_queue_push_tail_link(past_time_cells, pcell->link);
 
-    g_return_if_fail(widget->style != NULL);
-    for (state = GTK_STATE_NORMAL; state <= GTK_STATE_INSENSITIVE; state++)
-      gtk_widget_modify_bg(widget, state, &widget->style->base[state]);
+    if (! past_time_cells_timeout_source)
+      past_time_cells_timeout_source = mn_g_timeout_add_gdk_locked(500, self_update_past_time_cells_cb, NULL);
   }
 
   private void
-    message_info_free (MessageInfo *info (check null))
+    clear_past_time_cells (self)
   {
     GSList *l;
 
-    g_object_unref(info->message);
-    
-    MN_LIST_FOREACH(l, info->header_marks)
-      gtk_text_buffer_delete_mark(gtk_text_mark_get_buffer(l->data), l->data);
-    g_slist_free(info->header_marks);
+    if (! selfp->past_time_cells)
+      return;
 
-    if (info->sent_start)
+    MN_LIST_FOREACH(l, selfp->past_time_cells)
       {
-	gtk_text_buffer_delete_mark(gtk_text_mark_get_buffer(info->sent_start), info->sent_start);
-	gtk_text_buffer_delete_mark(gtk_text_mark_get_buffer(info->sent_end), info->sent_end);
-      }
-    
-    g_free(info->last_sent);
-    g_free(info);
-  }
-  
-  override (G:Object) void
-    finalize (GObject *object)
-  {
-    Self *self = SELF(object);
+	PastTimeCell *pcell = l->data;
 
-    if (selfp->update_tabs_idle_id)
-      g_source_remove(selfp->update_tabs_idle_id);
-    if (selfp->update_sent_timeout_id)
-      g_source_remove(selfp->update_sent_timeout_id);
+	g_queue_delete_link(past_time_cells, pcell->link);
+	g_free(pcell);
+      }
 
-    eel_g_slist_free_deep_custom(selfp->messages, (GFunc) self_message_info_free, NULL);
-    g_object_unref(selfp->buffer);
+    mn_g_slist_clear(&selfp->past_time_cells);
 
-    PARENT_HANDLER(object);
+    if (g_queue_is_empty(past_time_cells))
+      mn_locked_g_source_clear(&past_time_cells_timeout_source);
   }
 
   private gboolean
-    update_sent_cb (gpointer data)
-  {
-    Self *self = data;
-    GSList *l;
-
-    GDK_THREADS_ENTER();
-    MN_LIST_FOREACH(l, selfp->messages)
-      {
-	MessageInfo *info = l->data;
-
-	if (info->last_sent)
-	  {
-	    char *sent;
-	    
-	    sent = mn_message_format_sent_time(info->message);
-	    if (! sent || strcmp(sent, info->last_sent))
-	      {
-		GtkTextIter start;
-		GtkTextIter end;
-
-		gtk_text_buffer_get_iter_at_mark(selfp->buffer, &start, info->sent_start);
-		gtk_text_buffer_get_iter_at_mark(selfp->buffer, &end, info->sent_end);
-
-		gtk_text_buffer_delete(selfp->buffer, &start, &end);
-
-		if (sent)
-		  {
-		    gtk_text_buffer_insert(selfp->buffer, &end, sent, -1);
-		    gtk_text_buffer_move_mark(selfp->buffer, info->sent_end, &end);
-		  }
-
-		g_free(info->last_sent);
-		info->last_sent = sent;
-	      }
-	    else
-	      g_free(sent);
-	  }
-      }
-    GDK_THREADS_LEAVE();
-
-    return TRUE;		/* continue */
-  }
-  
-  private void
-    clear (self)
+    update_past_time_cells_cb (gpointer data)
   {
-    GtkTextIter start;
-    GtkTextIter end;
+    time_t now;
+    GList *l;
 
-    gtk_text_buffer_get_start_iter(selfp->buffer, &start);
-    gtk_text_buffer_get_end_iter(selfp->buffer, &end);
-    gtk_text_buffer_delete(selfp->buffer, &start, &end);
-  }
-  
-  private MessageInfo *
-    append_message (self, MN:Message *message (check null type))
-  {
-    MessageInfo *info;
-
-    info = g_new0(MessageInfo, 1);
-    info->message = g_object_ref(message);
-
-    self_append_row(self,
-		    _("Mailbox"),
-		    message->mailbox_name,
-		    &info->header_marks,
-		    NULL,
-		    NULL);
-    self_append(self, "\n");
-    
-    if (message->error)
-      self_append_row(self,
-		      _("Unreadable message"),
-		      message->error,
-		      &info->header_marks,
-		      NULL,
-		      NULL);
-    else
-      {
-	self_append_row(self,
-			_("From"),
-			message->from,
-			&info->header_marks,
-			NULL,
-			NULL);
-	self_append(self, "\n");
-
-	self_append_row(self,
-			_("Subject"),
-			message->subject,
-			&info->header_marks,
-			NULL,
-			NULL);
-
-	info->last_sent = mn_message_format_sent_time(message);
-	if (info->last_sent)
-	  {
-	    self_append(self, "\n");
-	    self_append_row(self,
-			    _("Sent"),
-			    info->last_sent,
-			    &info->header_marks,
-			    &info->sent_start,
-			    &info->sent_end);
-	  }
-      }
+    now = mn_time();
+    MN_QUEUE_FOREACH(l, past_time_cells)
+      self_update_past_time_cell(l->data, now);
 
-    selfp->messages = g_slist_append(selfp->messages, info);
-    
-    return info;
+    return TRUE;		/* keep source */
   }
 
   private void
-    append (self, const char *text (check null))
-  {
-    GtkTextIter end;
-    
-    gtk_text_buffer_get_end_iter(selfp->buffer, &end);
-    gtk_text_buffer_insert(selfp->buffer, &end, text, -1);
-  }
-  
-  private void
-    append_row (self,
-		const char *name (check null),
-		const char *value (check null),
-		GSList **header_marks (check null),
-		GtkTextMark **value_start_mark,
-		GtkTextMark **value_end_mark)
+    update_past_time_cell (PastTimeCell *pcell (check null), time_t now)
   {
-    GtkTextIter end;
-
-    gtk_text_buffer_get_end_iter(selfp->buffer, &end);
-    
-    gtk_text_buffer_insert_with_tags(selfp->buffer, &end, name, -1, selfp->header_tag, NULL);
-    gtk_text_buffer_insert_with_tags(selfp->buffer, &end, ":", -1, selfp->header_tag, NULL);
-
-    *header_marks = g_slist_append(*header_marks, gtk_text_buffer_create_mark(selfp->buffer, NULL, &end, TRUE));
-    gtk_text_buffer_insert(selfp->buffer, &end, "\t", -1);
+    char *formatted;
 
-    if (value_start_mark)
-      *value_start_mark = gtk_text_buffer_create_mark(selfp->buffer, NULL, &end, TRUE);
-
-    gtk_text_buffer_insert(selfp->buffer, &end, value, -1);
-
-    if (value_end_mark)
-      *value_end_mark = gtk_text_buffer_create_mark(selfp->buffer, NULL, &end, TRUE);
-  }
-  
-  public GtkWidget *
-    new (gboolean transparent, gboolean text_pointer)
-  {
-    return GTK_WIDGET(GET_NEW_VARG(MN_MESSAGE_VIEW_PROP_TRANSPARENT(transparent),
-				   MN_MESSAGE_VIEW_PROP_TEXT_POINTER(text_pointer),
-				   NULL));
+    formatted = mn_format_past_time(pcell->past_time, now);
+    mn_text_table_cell_set_text(MN_TEXT_TABLE(pcell->self), pcell->cell, formatted);
+    g_free(formatted);
   }
 }
diff --git a/src/mn-message-view.gob.stamp b/src/mn-message-view.gob.stamp
diff --git a/src/mn-message-view.h b/src/mn-message-view.h
@@ -1,10 +1,10 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
 
 
-#include <gtk/gtk.h>
+#include "mn-text-table.h"
 
 #ifndef __MN_MESSAGE_VIEW_H__
 #define __MN_MESSAGE_VIEW_H__
@@ -36,7 +36,7 @@ typedef struct _MNMessageViewPrivate MNMessageViewPrivate;
 typedef struct _MNMessageView MNMessageView;
 #endif
 struct _MNMessageView {
-	GtkTextView __parent__;
+	MNTextTable __parent__;
 	/*< private >*/
 	MNMessageViewPrivate *_priv;
 };
@@ -46,7 +46,8 @@ struct _MNMessageView {
  */
 typedef struct _MNMessageViewClass MNMessageViewClass;
 struct _MNMessageViewClass {
-	GtkTextViewClass __parent__;
+	MNTextTableClass __parent__;
+	void (* update) (MNMessageView * self, GSList * messages);
 };
 
 
@@ -56,23 +57,13 @@ struct _MNMessageViewClass {
 GType	mn_message_view_get_type	(void);
 void 	mn_message_view_set_messages	(MNMessageView * self,
 					gpointer val);
-GtkWidget * 	mn_message_view_new	(gboolean transparent,
-					gboolean text_pointer);
 
 /*
  * Argument wrapping macros
  */
 #if defined(__GNUC__) && !defined(__STRICT_ANSI__)
-#define MN_MESSAGE_VIEW_PROP_TRANSPARENT(arg)    	"transparent", __extension__ ({gboolean z = (arg); z;})
-#define MN_MESSAGE_VIEW_GET_PROP_TRANSPARENT(arg)	"transparent", __extension__ ({gboolean *z = (arg); z;})
-#define MN_MESSAGE_VIEW_PROP_TEXT_POINTER(arg)    	"text_pointer", __extension__ ({gboolean z = (arg); z;})
-#define MN_MESSAGE_VIEW_GET_PROP_TEXT_POINTER(arg)	"text_pointer", __extension__ ({gboolean *z = (arg); z;})
 #define MN_MESSAGE_VIEW_PROP_MESSAGES(arg)    	"messages", __extension__ ({gpointer z = (arg); z;})
 #else /* __GNUC__ && !__STRICT_ANSI__ */
-#define MN_MESSAGE_VIEW_PROP_TRANSPARENT(arg)    	"transparent",(gboolean )(arg)
-#define MN_MESSAGE_VIEW_GET_PROP_TRANSPARENT(arg)	"transparent",(gboolean *)(arg)
-#define MN_MESSAGE_VIEW_PROP_TEXT_POINTER(arg)    	"text_pointer",(gboolean )(arg)
-#define MN_MESSAGE_VIEW_GET_PROP_TEXT_POINTER(arg)	"text_pointer",(gboolean *)(arg)
 #define MN_MESSAGE_VIEW_PROP_MESSAGES(arg)    	"messages",(gpointer )(arg)
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
 
diff --git a/src/mn-message.c b/src/mn-message.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,13 +22,13 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 26 "mn-message.gob"
+#line 33 "mn-message.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
 #include "mn-util.h"
 
-#line 33 "mn-message.c"
+#line 32 "mn-message.c"
 /* self casting macros */
 #define SELF(x) MN_MESSAGE(x)
 #define SELF_CONST(x) MN_MESSAGE_CONST(x)
@@ -49,8 +48,6 @@ 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 int mn_message_slist_find_by_id_compare_func (gconstpointer a, gconstpointer b) G_GNUC_UNUSED;
-static int mn_message_slist_sort_by_sent_time_compare_func (gconstpointer a, gconstpointer b) G_GNUC_UNUSED;
 
 enum {
 	PROP_0,
@@ -59,20 +56,16 @@ enum {
 	PROP_SENT_TIME,
 	PROP_ID,
 	PROP_FROM,
-	PROP_SUBJECT
+	PROP_SUBJECT,
+	PROP_FLAGS
 };
 
 /* pointer to the class of our parent */
 static GObjectClass *parent_class = NULL;
 
 /* Short form macros */
-#define self_format_sent_time mn_message_format_sent_time
 #define self_new mn_message_new
 #define self_new_from_error mn_message_new_from_error
-#define self_slist_find_by_id mn_message_slist_find_by_id
-#define self_slist_find_by_id_compare_func mn_message_slist_find_by_id_compare_func
-#define self_slist_sort_by_sent_time mn_message_slist_sort_by_sent_time
-#define self_slist_sort_by_sent_time_compare_func mn_message_slist_sort_by_sent_time_compare_func
 GType
 mn_message_get_type (void)
 {
@@ -123,21 +116,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 35 "mn-message.gob"
+#line 42 "mn-message.gob"
 	if(self->mailbox_name) { g_free ((gpointer) self->mailbox_name); self->mailbox_name = NULL; }
-#line 129 "mn-message.c"
-#line 39 "mn-message.gob"
+#line 122 "mn-message.c"
+#line 46 "mn-message.gob"
 	if(self->error) { g_free ((gpointer) self->error); self->error = NULL; }
-#line 132 "mn-message.c"
-#line 47 "mn-message.gob"
+#line 125 "mn-message.c"
+#line 54 "mn-message.gob"
 	if(self->id) { g_free ((gpointer) self->id); self->id = NULL; }
-#line 135 "mn-message.c"
-#line 51 "mn-message.gob"
+#line 128 "mn-message.c"
+#line 58 "mn-message.gob"
 	if(self->from) { g_free ((gpointer) self->from); self->from = NULL; }
-#line 138 "mn-message.c"
-#line 55 "mn-message.gob"
+#line 131 "mn-message.c"
+#line 62 "mn-message.gob"
 	if(self->subject) { g_free ((gpointer) self->subject); self->subject = NULL; }
-#line 141 "mn-message.c"
+#line 134 "mn-message.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -155,9 +148,9 @@ mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 58 "mn-message.gob"
+#line 68 "mn-message.gob"
 	g_object_class->constructor = ___1_mn_message_constructor;
-#line 161 "mn-message.c"
+#line 154 "mn-message.c"
 	g_object_class->finalize = ___finalize;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
@@ -220,6 +213,17 @@ mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
 	g_object_class_install_property (g_object_class,
 		PROP_SUBJECT,
 		param_spec);
+	param_spec = g_param_spec_uint
+		("flags" /* name */,
+		 NULL /* nick */,
+		 NULL /* blurb */,
+		 0 /* minimum */,
+		 G_MAXUINT /* maximum */,
+		 0 /* default_value */,
+		 (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+	g_object_class_install_property (g_object_class,
+		PROP_FLAGS,
+		param_spec);
     }
 }
 #undef __GOB_FUNCTION__
@@ -238,44 +242,51 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX_NAME:
 		{
-#line 36 "mn-message.gob"
+#line 43 "mn-message.gob"
 { char *old = self->mailbox_name; self->mailbox_name = g_value_dup_string (VAL); g_free (old); }
-#line 244 "mn-message.c"
+#line 248 "mn-message.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 40 "mn-message.gob"
+#line 47 "mn-message.gob"
 { char *old = self->error; self->error = g_value_dup_string (VAL); g_free (old); }
-#line 251 "mn-message.c"
+#line 255 "mn-message.c"
 		}
 		break;
 	case PROP_SENT_TIME:
 		{
-#line 44 "mn-message.gob"
+#line 51 "mn-message.gob"
 self->sent_time = g_value_get_ulong (VAL);
-#line 258 "mn-message.c"
+#line 262 "mn-message.c"
 		}
 		break;
 	case PROP_ID:
 		{
-#line 48 "mn-message.gob"
+#line 55 "mn-message.gob"
 { char *old = self->id; self->id = g_value_dup_string (VAL); g_free (old); }
-#line 265 "mn-message.c"
+#line 269 "mn-message.c"
 		}
 		break;
 	case PROP_FROM:
 		{
-#line 52 "mn-message.gob"
+#line 59 "mn-message.gob"
 { char *old = self->from; self->from = g_value_dup_string (VAL); g_free (old); }
-#line 272 "mn-message.c"
+#line 276 "mn-message.c"
 		}
 		break;
 	case PROP_SUBJECT:
 		{
-#line 56 "mn-message.gob"
+#line 63 "mn-message.gob"
 { char *old = self->subject; self->subject = g_value_dup_string (VAL); g_free (old); }
-#line 279 "mn-message.c"
+#line 283 "mn-message.c"
+		}
+		break;
+	case PROP_FLAGS:
+		{
+#line 66 "mn-message.gob"
+self->flags = g_value_get_uint (VAL);
+#line 290 "mn-message.c"
 		}
 		break;
 	default:
@@ -304,44 +315,51 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_MAILBOX_NAME:
 		{
-#line 36 "mn-message.gob"
+#line 43 "mn-message.gob"
 g_value_set_string (VAL, self->mailbox_name);
-#line 310 "mn-message.c"
+#line 321 "mn-message.c"
 		}
 		break;
 	case PROP_ERROR:
 		{
-#line 40 "mn-message.gob"
+#line 47 "mn-message.gob"
 g_value_set_string (VAL, self->error);
-#line 317 "mn-message.c"
+#line 328 "mn-message.c"
 		}
 		break;
 	case PROP_SENT_TIME:
 		{
-#line 44 "mn-message.gob"
+#line 51 "mn-message.gob"
 g_value_set_ulong (VAL, self->sent_time);
-#line 324 "mn-message.c"
+#line 335 "mn-message.c"
 		}
 		break;
 	case PROP_ID:
 		{
-#line 48 "mn-message.gob"
+#line 55 "mn-message.gob"
 g_value_set_string (VAL, self->id);
-#line 331 "mn-message.c"
+#line 342 "mn-message.c"
 		}
 		break;
 	case PROP_FROM:
 		{
-#line 52 "mn-message.gob"
+#line 59 "mn-message.gob"
 g_value_set_string (VAL, self->from);
-#line 338 "mn-message.c"
+#line 349 "mn-message.c"
 		}
 		break;
 	case PROP_SUBJECT:
 		{
-#line 56 "mn-message.gob"
+#line 63 "mn-message.gob"
 g_value_set_string (VAL, self->subject);
-#line 345 "mn-message.c"
+#line 356 "mn-message.c"
+		}
+		break;
+	case PROP_FLAGS:
+		{
+#line 66 "mn-message.gob"
+g_value_set_uint (VAL, self->flags);
+#line 363 "mn-message.c"
 		}
 		break;
 	default:
@@ -358,10 +376,10 @@ g_value_set_string (VAL, self->subject);
 
 
 
-#line 58 "mn-message.gob"
+#line 68 "mn-message.gob"
 static GObject * 
 ___1_mn_message_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 365 "mn-message.c"
+#line 383 "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): \
@@ -369,7 +387,7 @@ ___1_mn_message_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_
 {
 #define __GOB_FUNCTION__ "MN:Message::constructor"
 {
-#line 60 "mn-message.gob"
+#line 70 "mn-message.gob"
 	
     GObject *object;
     Self *self;
@@ -384,13 +402,15 @@ ___1_mn_message_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_
 	/*
 	 * An ID should (not mandatory):
 	 *
-	 *	- be unique, application-wise
+	 *	- be unique (application-wise, because we use the ID
+	 *	  to check if a message has already been displayed in
+	 *	  the mail summary popup)
 	 *	- persist across checks if the message does not change
 	 */
 
 	id = g_string_new(NULL);
 
-	if (self->sent_time)
+	if (self->sent_time > 0)
 	  g_string_append_printf(id, ":sent-time:%u:", self->sent_time);
 	if (self->from)
 	  g_string_append_printf(id, ":from:%s:", self->from);
@@ -415,77 +435,18 @@ ___1_mn_message_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_
 
     return object;
   }}
-#line 419 "mn-message.c"
+#line 439 "mn-message.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 106 "mn-message.gob"
-char * 
-mn_message_format_sent_time (MNMessage * self)
-#line 426 "mn-message.c"
-{
-#define __GOB_FUNCTION__ "MN:Message::format_sent_time"
-#line 106 "mn-message.gob"
-	g_return_val_if_fail (self != NULL, (char * )0);
-#line 106 "mn-message.gob"
-	g_return_val_if_fail (MN_IS_MESSAGE (self), (char * )0);
-#line 433 "mn-message.c"
-{
-#line 108 "mn-message.gob"
-	
-    char *formatted = NULL;
-
-    if (self->sent_time)
-      {
-	time_t now;
-	
-	now = mn_time();
-	if (now > 0)
-	  {
-	    time_t diff;
-	    
-	    diff = now - self->sent_time;
-	    if (diff >= 0)
-	      {
-		if (diff < 60)
-		  formatted = g_strdup_printf(ngettext("%i second ago", "%i seconds ago", diff), diff);
-		else if (diff < 60 * 60)
-		  {
-		    int minutes = diff / 60;
-		    formatted = g_strdup_printf(ngettext("about %i minute ago", "about %i minutes ago", minutes), minutes);
-		  }
-		else if (diff < 60 * 60 * 24)
-		  {
-		    int hours = diff / (60 * 60);
-		    formatted = g_strdup_printf(ngettext("about %i hour ago", "about %i hours ago", hours), hours);
-		  }
-		else if (diff < 60 * 60 * 24 * 7)
-		  {
-		    int days = diff / (60 * 60 * 24);
-		    formatted = g_strdup_printf(ngettext("about %i day ago", "about %i days ago", days), days);
-		  }
-		else
-		  {
-		    int weeks = diff / (60 * 60 * 24 * 7);
-		    formatted = g_strdup_printf(ngettext("about %i week ago", "about %i weeks ago", weeks), weeks);
-		  }
-	      }
-	  }
-      }
-
-    return formatted;
-  }}
-#line 479 "mn-message.c"
-#undef __GOB_FUNCTION__
-
-#line 152 "mn-message.gob"
+#line 118 "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)
-#line 485 "mn-message.c"
+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"
 {
 #define __GOB_FUNCTION__ "MN:Message::new"
 {
-#line 159 "mn-message.gob"
+#line 126 "mn-message.gob"
 	
     g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), NULL);
 
@@ -496,93 +457,27 @@ mn_message_new (MNMailbox * mailbox, const char * error, time_t sent_time, const
 			MN_MESSAGE_PROP_ID((char *) id),
 			MN_MESSAGE_PROP_FROM((char *) from),
 			MN_MESSAGE_PROP_SUBJECT((char *) subject),
+			MN_MESSAGE_PROP_FLAGS(flags),
 			NULL);
   }}
-#line 502 "mn-message.c"
+#line 464 "mn-message.c"
 #undef __GOB_FUNCTION__
 
-#line 172 "mn-message.gob"
+#line 140 "mn-message.gob"
 MNMessage * 
-mn_message_new_from_error (MNMailbox * mailbox, const char * error)
-#line 508 "mn-message.c"
+mn_message_new_from_error (MNMailbox * mailbox, const char * error, MNMessageFlags flags)
+#line 470 "mn-message.c"
 {
 #define __GOB_FUNCTION__ "MN:Message::new_from_error"
-#line 172 "mn-message.gob"
+#line 140 "mn-message.gob"
 	g_return_val_if_fail (error != NULL, (MNMessage * )0);
-#line 513 "mn-message.c"
+#line 475 "mn-message.c"
 {
-#line 174 "mn-message.gob"
+#line 144 "mn-message.gob"
 	
     g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), NULL);
 
-    return self_new(mailbox, error, 0, NULL, NULL, NULL);
-  }}
-#line 521 "mn-message.c"
-#undef __GOB_FUNCTION__
-
-#line 180 "mn-message.gob"
-GSList * 
-mn_message_slist_find_by_id (GSList * list, MNMessage * self)
-#line 527 "mn-message.c"
-{
-#define __GOB_FUNCTION__ "MN:Message::slist_find_by_id"
-#line 180 "mn-message.gob"
-	g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 180 "mn-message.gob"
-	g_return_val_if_fail (MN_IS_MESSAGE (self), (GSList * )0);
-#line 534 "mn-message.c"
-{
-#line 182 "mn-message.gob"
-	
-    return g_slist_find_custom(list, self, self_slist_find_by_id_compare_func);
-  }}
-#line 540 "mn-message.c"
-#undef __GOB_FUNCTION__
-
-#line 186 "mn-message.gob"
-static int 
-mn_message_slist_find_by_id_compare_func (gconstpointer a, gconstpointer b)
-#line 546 "mn-message.c"
-{
-#define __GOB_FUNCTION__ "MN:Message::slist_find_by_id_compare_func"
-{
-#line 188 "mn-message.gob"
-	
-    Self *message_a = (Self *) a;
-    Self *message_b = (Self *) b;
-
-    return strcmp(message_a->id, message_b->id);
-  }}
-#line 557 "mn-message.c"
-#undef __GOB_FUNCTION__
-
-#line 195 "mn-message.gob"
-GSList * 
-mn_message_slist_sort_by_sent_time (GSList * list)
-#line 563 "mn-message.c"
-{
-#define __GOB_FUNCTION__ "MN:Message::slist_sort_by_sent_time"
-{
-#line 197 "mn-message.gob"
-	
-    return g_slist_sort(list, self_slist_sort_by_sent_time_compare_func);
-  }}
-#line 571 "mn-message.c"
-#undef __GOB_FUNCTION__
-
-#line 201 "mn-message.gob"
-static int 
-mn_message_slist_sort_by_sent_time_compare_func (gconstpointer a, gconstpointer b)
-#line 577 "mn-message.c"
-{
-#define __GOB_FUNCTION__ "MN:Message::slist_sort_by_sent_time_compare_func"
-{
-#line 203 "mn-message.gob"
-	
-    Self *message_a = (Self *) a;
-    Self *message_b = (Self *) b;
-
-    return message_a->sent_time - message_b->sent_time;
+    return self_new(mailbox, error, 0, NULL, NULL, NULL, flags);
   }}
-#line 588 "mn-message.c"
+#line 483 "mn-message.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-message.gob b/src/mn-message.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,13 +16,20 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <time.h>
 #include "mn-mailbox.h"
 %}
 
+%h{
+typedef enum
+{
+  MN_MESSAGE_NEW	= 1 << 0	/* unseen message */
+} MNMessageFlags;
+%}
+
 %{
 #include "config.h"
 #include <glib/gi18n.h>
@@ -34,7 +41,7 @@ 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 */
   public char *error destroywith g_free;
   property STRING error (flags = CONSTRUCT_ONLY, link);
@@ -46,7 +53,7 @@ class MN:Message from G:Object
   /* always set */
   public char *id destroywith g_free;
   property STRING id (flags = CONSTRUCT_ONLY, link);
-  
+
   /* always set */
   public char *from destroywith g_free;
   property STRING from (flags = CONSTRUCT_ONLY, link);
@@ -55,6 +62,9 @@ class MN:Message from G:Object
   public char *subject destroywith g_free;
   property STRING subject (flags = CONSTRUCT_ONLY, link);
 
+  public MNMessageFlags flags;
+  property UINT flags (flags = CONSTRUCT_ONLY, link, type = MNMessageFlags);
+
   override (G:Object) GObject *
     constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
   {
@@ -71,13 +81,15 @@ class MN:Message from G:Object
 	/*
 	 * An ID should (not mandatory):
 	 *
-	 *	- be unique, application-wise
+	 *	- be unique (application-wise, because we use the ID
+	 *	  to check if a message has already been displayed in
+	 *	  the mail summary popup)
 	 *	- persist across checks if the message does not change
 	 */
 
 	id = g_string_new(NULL);
 
-	if (self->sent_time)
+	if (self->sent_time > 0)
 	  g_string_append_printf(id, ":sent-time:%u:", self->sent_time);
 	if (self->from)
 	  g_string_append_printf(id, ":from:%s:", self->from);
@@ -102,60 +114,15 @@ class MN:Message from G:Object
 
     return object;
   }
-  
-  public char *
-    format_sent_time (self)
-  {
-    char *formatted = NULL;
 
-    if (self->sent_time)
-      {
-	time_t now;
-	
-	now = mn_time();
-	if (now > 0)
-	  {
-	    time_t diff;
-	    
-	    diff = now - self->sent_time;
-	    if (diff >= 0)
-	      {
-		if (diff < 60)
-		  formatted = g_strdup_printf(ngettext("%i second ago", "%i seconds ago", diff), diff);
-		else if (diff < 60 * 60)
-		  {
-		    int minutes = diff / 60;
-		    formatted = g_strdup_printf(ngettext("about %i minute ago", "about %i minutes ago", minutes), minutes);
-		  }
-		else if (diff < 60 * 60 * 24)
-		  {
-		    int hours = diff / (60 * 60);
-		    formatted = g_strdup_printf(ngettext("about %i hour ago", "about %i hours ago", hours), hours);
-		  }
-		else if (diff < 60 * 60 * 24 * 7)
-		  {
-		    int days = diff / (60 * 60 * 24);
-		    formatted = g_strdup_printf(ngettext("about %i day ago", "about %i days ago", days), days);
-		  }
-		else
-		  {
-		    int weeks = diff / (60 * 60 * 24 * 7);
-		    formatted = g_strdup_printf(ngettext("about %i week ago", "about %i weeks ago", weeks), weeks);
-		  }
-	      }
-	  }
-      }
-
-    return formatted;
-  }
-  
   public MNMessage *
     new (MNMailbox *mailbox,
 	 const char *error,
 	 time_t sent_time,
 	 const char *id,
 	 const char *from,
-	 const char *subject)
+	 const char *subject,
+	 MNMessageFlags flags)
   {
     g_return_val_if_fail(mailbox == NULL || MN_IS_MAILBOX(mailbox), NULL);
 
@@ -166,44 +133,17 @@ class MN:Message from G:Object
 			MN_MESSAGE_PROP_ID((char *) id),
 			MN_MESSAGE_PROP_FROM((char *) from),
 			MN_MESSAGE_PROP_SUBJECT((char *) subject),
+			MN_MESSAGE_PROP_FLAGS(flags),
 			NULL);
   }
 
   public MNMessage *
-    new_from_error (MNMailbox *mailbox, const char *error (check null))
+    new_from_error (MNMailbox *mailbox,
+		    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);
-  }
-  
-  public GSList *
-    slist_find_by_id (GSList *list, MN:Message *self (check null type))
-  {
-    return g_slist_find_custom(list, self, self_slist_find_by_id_compare_func);
-  }
-
-  private int
-    slist_find_by_id_compare_func (gconstpointer a, gconstpointer b)
-  {
-    Self *message_a = (Self *) a;
-    Self *message_b = (Self *) b;
-
-    return strcmp(message_a->id, message_b->id);
-  }
-  
-  public GSList *
-    slist_sort_by_sent_time (GSList *list)
-  {
-    return g_slist_sort(list, self_slist_sort_by_sent_time_compare_func);
-  }
-
-  private int
-    slist_sort_by_sent_time_compare_func (gconstpointer a, gconstpointer b)
-  {
-    Self *message_a = (Self *) a;
-    Self *message_b = (Self *) b;
-
-    return message_a->sent_time - message_b->sent_time;
+    return self_new(mailbox, error, 0, NULL, NULL, NULL, flags);
   }
 }
diff --git a/src/mn-message.gob.stamp b/src/mn-message.gob.stamp
diff --git a/src/mn-message.h b/src/mn-message.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -15,6 +15,13 @@ extern "C" {
 #endif /* __cplusplus */
 
 
+
+typedef enum
+{
+  MN_MESSAGE_NEW	= 1 << 0	/* unseen message */
+} MNMessageFlags;
+
+
 /*
  * Type checking and casting macros
  */
@@ -42,6 +49,7 @@ struct _MNMessage {
 	char * id;
 	char * from;
 	char * subject;
+	MNMessageFlags flags;
 };
 
 /*
@@ -57,18 +65,16 @@ struct _MNMessageClass {
  * Public methods
  */
 GType	mn_message_get_type	(void);
-char * 	mn_message_format_sent_time	(MNMessage * self);
 MNMessage * 	mn_message_new	(MNMailbox * mailbox,
 					const char * error,
 					time_t sent_time,
 					const char * id,
 					const char * from,
-					const char * subject);
+					const char * subject,
+					MNMessageFlags flags);
 MNMessage * 	mn_message_new_from_error	(MNMailbox * mailbox,
-					const char * error);
-GSList * 	mn_message_slist_find_by_id	(GSList * list,
-					MNMessage * self);
-GSList * 	mn_message_slist_sort_by_sent_time	(GSList * list);
+					const char * error,
+					MNMessageFlags flags);
 
 /*
  * Argument wrapping macros
@@ -86,6 +92,8 @@ GSList * 	mn_message_slist_sort_by_sent_time	(GSList * list);
 #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;})
 #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)
@@ -99,6 +107,8 @@ GSList * 	mn_message_slist_sort_by_sent_time	(GSList * list);
 #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)
 #endif /* __GNUC__ && !__STRICT_ANSI__ */
 
 
diff --git a/src/mn-mh-mailbox-backend-private.h b/src/mn-mh-mailbox-backend-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_MH_MAILBOX_BACKEND_PRIVATE_H__
 #define __MN_MH_MAILBOX_BACKEND_PRIVATE_H__
diff --git a/src/mn-mh-mailbox-backend.c b/src/mn-mh-mailbox-backend.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:55 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -37,7 +36,7 @@
 
 #define SEQUENCES_FILE			".mh_sequences"
 
-#line 41 "mn-mh-mailbox-backend.c"
+#line 40 "mn-mh-mailbox-backend.c"
 /* self casting macros */
 #define SELF(x) MN_MH_MAILBOX_BACKEND(x)
 #define SELF_CONST(x) MN_MH_MAILBOX_BACKEND_CONST(x)
@@ -112,7 +111,7 @@ mn_mh_mailbox_backend_init (MNMHMailboxBackend * o G_GNUC_UNUSED)
 #line 41 "mn-mh-mailbox-backend.gob"
 static void 
 mn_mh_mailbox_backend_class_init (MNMHMailboxBackendClass * class G_GNUC_UNUSED)
-#line 116 "mn-mh-mailbox-backend.c"
+#line 115 "mn-mh-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:MH:Mailbox:Backend::class_init"
 	MNVFSMailboxBackendClass *mn_vfs_mailbox_backend_class = (MNVFSMailboxBackendClass *)class;
@@ -125,13 +124,13 @@ mn_mh_mailbox_backend_class_init (MNMHMailboxBackendClass * class G_GNUC_UNUSED)
 	mn_vfs_mailbox_backend_class->is = ___3_mn_mh_mailbox_backend_is;
 #line 81 "mn-mh-mailbox-backend.gob"
 	mn_vfs_mailbox_backend_class->check = ___4_mn_mh_mailbox_backend_check;
-#line 129 "mn-mh-mailbox-backend.c"
+#line 128 "mn-mh-mailbox-backend.c"
  {
 #line 42 "mn-mh-mailbox-backend.gob"
 
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "MH";
   
-#line 135 "mn-mh-mailbox-backend.c"
+#line 134 "mn-mh-mailbox-backend.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -141,7 +140,7 @@ mn_mh_mailbox_backend_class_init (MNMHMailboxBackendClass * class G_GNUC_UNUSED)
 #line 46 "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 145 "mn-mh-mailbox-backend.c"
+#line 144 "mn-mh-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); }
@@ -155,25 +154,25 @@ ___2_mn_mh_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUS
 	|| event_type == GNOME_VFS_MONITOR_EVENT_CREATED)
       {
 	char *filename;
-	
+
 	filename = eel_uri_get_basename(info_uri);
 	if (filename)
 	  {
 	    if (! strcmp(filename, SEQUENCES_FILE) || mn_str_isnumeric(filename))
 	      mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(backend->mailbox));
-		
+
 	    g_free(filename);
 	  }
       }
   }}
-#line 170 "mn-mh-mailbox-backend.c"
+#line 169 "mn-mh-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 68 "mn-mh-mailbox-backend.gob"
 static gboolean 
 ___3_mn_mh_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailbox * mailbox)
-#line 177 "mn-mh-mailbox-backend.c"
+#line 176 "mn-mh-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): \
@@ -192,14 +191,14 @@ ___3_mn_mh_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSM
 
     return is;
   }}
-#line 196 "mn-mh-mailbox-backend.c"
+#line 195 "mn-mh-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 81 "mn-mh-mailbox-backend.gob"
 static void 
 ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, unsigned long check_id)
-#line 203 "mn-mh-mailbox-backend.c"
+#line 202 "mn-mh-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); }
@@ -231,7 +230,7 @@ ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, u
 	      int first;
 	      char **elements;
 	      int i;
-	      
+
 	      elements = g_strsplit(line + 8, " ", 0);
 	      for (i = 0; elements[i]; i++)
 		{
@@ -245,7 +244,7 @@ ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, u
 
 		      if (n == 1)
 			last = first;
-		  
+
 		      for (j = first; j <= last; j++)
 			{
 			  char *filename;
@@ -256,12 +255,18 @@ ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, u
 			      g_strfreev(elements);
 			      goto loop_end;
 			    }
-			  
+
 			  filename = g_strdup_printf("%i", j);
 			  message_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, filename);
 			  g_free(filename);
 
-			  messages = g_slist_append(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri));
+			  /*
+			   * We set handle_status to FALSE, since
+			   * messages in the unseen sequence are by
+			   * definition unseen (that is, new).
+			   */
+
+			  messages = g_slist_prepend(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, MN_MESSAGE_NEW, FALSE));
 			  gnome_vfs_uri_unref(message_uri);
 			}
 		    }
@@ -274,7 +279,7 @@ ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, u
 	close_result = gnome_vfs_close(handle);
 
 	GDK_THREADS_ENTER();
-	    
+
 	if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
 	  {
 	    if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK)
@@ -287,7 +292,7 @@ ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, u
 	    else
 	      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(result));
 	  }
-	    
+
 	mn_g_object_slist_free(messages);
 
 	gdk_flush();
@@ -296,14 +301,14 @@ ___4_mn_mh_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, u
     else
       {
 	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 %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(result));
-	
+
 	gdk_flush();
 	GDK_THREADS_LEAVE();
       }
   }}
-#line 308 "mn-mh-mailbox-backend.c"
+#line 313 "mn-mh-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
diff --git a/src/mn-mh-mailbox-backend.gob b/src/mn-mh-mailbox-backend.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-vfs-mailbox-backend.h"
@@ -53,13 +53,13 @@ class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	|| event_type == GNOME_VFS_MONITOR_EVENT_CREATED)
       {
 	char *filename;
-	
+
 	filename = eel_uri_get_basename(info_uri);
 	if (filename)
 	  {
 	    if (! strcmp(filename, SEQUENCES_FILE) || mn_str_isnumeric(filename))
 	      mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(backend->mailbox));
-		
+
 	    g_free(filename);
 	  }
       }
@@ -104,7 +104,7 @@ class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	      int first;
 	      char **elements;
 	      int i;
-	      
+
 	      elements = g_strsplit(line + 8, " ", 0);
 	      for (i = 0; elements[i]; i++)
 		{
@@ -118,7 +118,7 @@ class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend
 
 		      if (n == 1)
 			last = first;
-		  
+
 		      for (j = first; j <= last; j++)
 			{
 			  char *filename;
@@ -129,12 +129,18 @@ class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend
 			      g_strfreev(elements);
 			      goto loop_end;
 			    }
-			  
+
 			  filename = g_strdup_printf("%i", j);
 			  message_uri = gnome_vfs_uri_append_file_name(backend->mailbox->vfs_uri, filename);
 			  g_free(filename);
 
-			  messages = g_slist_append(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri));
+			  /*
+			   * We set handle_status to FALSE, since
+			   * messages in the unseen sequence are by
+			   * definition unseen (that is, new).
+			   */
+
+			  messages = g_slist_prepend(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, MN_MESSAGE_NEW, FALSE));
 			  gnome_vfs_uri_unref(message_uri);
 			}
 		    }
@@ -147,7 +153,7 @@ class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	close_result = gnome_vfs_close(handle);
 
 	GDK_THREADS_ENTER();
-	    
+
 	if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
 	  {
 	    if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK)
@@ -160,7 +166,7 @@ class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	    else
 	      mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(result));
 	  }
-	    
+
 	mn_g_object_slist_free(messages);
 
 	gdk_flush();
@@ -169,10 +175,10 @@ class MN:MH:Mailbox:Backend from MN:VFS:Mailbox:Backend
     else
       {
 	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 %s: %s"), SEQUENCES_FILE, gnome_vfs_result_to_string(result));
-	
+
 	gdk_flush();
 	GDK_THREADS_LEAVE();
       }
diff --git a/src/mn-mh-mailbox-backend.gob.stamp b/src/mn-mh-mailbox-backend.gob.stamp
diff --git a/src/mn-mh-mailbox-backend.h b/src/mn-mh-mailbox-backend.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-pi-mailbox-private.h b/src/mn-pi-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_PI_MAILBOX_PRIVATE_H__
 #define __MN_PI_MAILBOX_PRIVATE_H__
@@ -9,9 +9,34 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 29 "mn-pi-mailbox.gob"
+
+#include <gtk/gtk.h>
+#include "mn-client-session.h"
+
+#define MN_PI_MAILBOX_SESSION_PRIVATE \
+  MNMailbox		*mailbox;	\
+  MNPIMailbox		*pi_mailbox;	\
+  MNClientSession	*session
+
+#line 24 "mn-pi-mailbox-private.h"
+struct _MNPIMailboxPrivate {
+#line 90 "mn-pi-mailbox.gob"
+	GtkWidget * auth_dialog;
+#line 93 "mn-pi-mailbox.gob"
+	gboolean auth_failed;
+#line 30 "mn-pi-mailbox-private.h"
+};
 gboolean 	mn_pi_mailbox_split_uri	(const char * uri, int maxlen, char * scheme, char * auth, char * location, gboolean * has_auth);
 gboolean 	mn_pi_mailbox_split_uri_auth	(const char * auth, int maxlen, char * username, char * authmech, gboolean * has_username, gboolean * has_authmech);
 void 	mn_pi_mailbox_split_uri_hostport	(const char * hostport, int maxlen, char * hostname, int * port);
+void 	mn_pi_mailbox_auth_failed	(MNPIMailbox * self);
+gboolean 	mn_pi_mailbox_fill_credentials	(MNPIMailbox * self, gboolean need_username, gboolean need_password);
+void 	mn_pi_mailbox_session_private_init	(MNPIMailbox * self, MNClientSessionPrivate * priv);
+gboolean 	mn_pi_mailbox_sasl_get_credentials_cb	(MNClientSession * session, MNClientSessionPrivate * priv, const char ** username, const char ** password);
+void 	mn_pi_mailbox_notice_cb	(MNClientSession * session, const char * message, MNClientSessionPrivate * priv);
+void 	mn_pi_mailbox_warning_cb	(MNClientSession * session, const char * message, MNClientSessionPrivate * priv);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-pi-mailbox-properties-private.h b/src/mn-pi-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-pi-mailbox-properties.c b/src/mn-pi-mailbox-properties.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -33,7 +32,7 @@
 #include "mn-util.h"
 #include "mn-stock.h"
 
-#line 37 "mn-pi-mailbox-properties.c"
+#line 36 "mn-pi-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_PI_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_PI_MAILBOX_PROPERTIES_CONST(x)
@@ -85,7 +84,7 @@ mn_pi_mailbox_properties_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES, "MNPIMailboxProperties", &info, (GTypeFlags)0);
+		type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES, "MNPIMailboxProperties", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -111,18 +110,18 @@ GET_NEW_VARG (const char *first, ...)
 #line 46 "mn-pi-mailbox-properties.gob"
 static void 
 mn_pi_mailbox_properties_class_init (MNPIMailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 115 "mn-pi-mailbox-properties.c"
+#line 114 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::class_init"
 	MNMailboxPropertiesClass *mn_mailbox_properties_class = (MNMailboxPropertiesClass *)class;
 
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX_PROPERTIES);
 
-#line 216 "mn-pi-mailbox-properties.gob"
+#line 217 "mn-pi-mailbox-properties.gob"
 	mn_mailbox_properties_class->set_mailbox = ___7_mn_pi_mailbox_properties_set_mailbox;
-#line 231 "mn-pi-mailbox-properties.gob"
+#line 232 "mn-pi-mailbox-properties.gob"
 	mn_mailbox_properties_class->get_mailbox = ___8_mn_pi_mailbox_properties_get_mailbox;
-#line 126 "mn-pi-mailbox-properties.c"
+#line 125 "mn-pi-mailbox-properties.c"
  {
 #line 47 "mn-pi-mailbox-properties.gob"
 
@@ -130,14 +129,14 @@ mn_pi_mailbox_properties_class_init (MNPIMailboxPropertiesClass * class G_GNUC_U
 
     p_class->stock_id = MN_STOCK_REMOTE;
   
-#line 134 "mn-pi-mailbox-properties.c"
+#line 133 "mn-pi-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
 #line 53 "mn-pi-mailbox-properties.gob"
 static void 
 mn_pi_mailbox_properties_init (MNPIMailboxProperties * self G_GNUC_UNUSED)
-#line 141 "mn-pi-mailbox-properties.c"
+#line 140 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::init"
  {
@@ -156,12 +155,12 @@ mn_pi_mailbox_properties_init (MNPIMailboxProperties * self G_GNUC_UNUSED)
       const char		*mnemonic;
     } connection_types[] = {
       { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL,		N_("sta_ndard")			},
-      { MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL,	N_("_in-band SSL/TLS")		},
+      { 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")	}
     };
-      
+
     hbox = mn_authenticated_mailbox_properties_field_new(auth,
-							 _("_Hostname:"),
+							 _("Ho_stname:"),
 							 &label,
 							 &self->hostname_entry);
 
@@ -175,21 +174,22 @@ mn_pi_mailbox_properties_init (MNPIMailboxProperties * self G_GNUC_UNUSED)
     gtk_size_group_add_widget(self->details_size_group, auth->password_label);
     gtk_size_group_add_widget(self->details_size_group, label);
 
-    mn_mailbox_properties_add_entries(properties,
-				      GTK_ENTRY(self->hostname_entry),
-				      GTK_ENTRY(auth->username_entry),
-				      GTK_ENTRY(auth->password_entry),
-				      NULL);
+    properties->entries = mn_g_slist_append_elements(properties->entries,
+						     self->hostname_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);
-    
+
     radio_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
     for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
@@ -200,10 +200,10 @@ mn_pi_mailbox_properties_init (MNPIMailboxProperties * self G_GNUC_UNUSED)
 
 	gtk_size_group_add_widget(radio_size_group, self->conn_radio[i]);
 
-	mn_mailbox_properties_add_entry(properties, GTK_ENTRY(self->port_spin[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);
 
 #ifndef WITH_SSL
@@ -233,21 +233,21 @@ mn_pi_mailbox_properties_init (MNPIMailboxProperties * self G_GNUC_UNUSED)
 
 
 
-#line 139 "mn-pi-mailbox-properties.gob"
+#line 140 "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"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::add_connection_type"
-#line 139 "mn-pi-mailbox-properties.gob"
+#line 140 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 139 "mn-pi-mailbox-properties.gob"
+#line 140 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
-#line 139 "mn-pi-mailbox-properties.gob"
+#line 140 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (mnemonic != NULL);
 #line 249 "mn-pi-mailbox-properties.c"
 {
-#line 143 "mn-pi-mailbox-properties.gob"
+#line 144 "mn-pi-mailbox-properties.gob"
 	
     GtkWidget *label;
     GtkWidget *hbox;
@@ -278,25 +278,25 @@ mn_pi_mailbox_properties_add_connection_type (MNPIMailboxProperties * self, MNPI
 #line 279 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 171 "mn-pi-mailbox-properties.gob"
+#line 172 "mn-pi-mailbox-properties.gob"
 static void 
 mn_pi_mailbox_properties_add_authentication (MNPIMailboxProperties * self)
 #line 285 "mn-pi-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::add_authentication"
-#line 171 "mn-pi-mailbox-properties.gob"
+#line 172 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 171 "mn-pi-mailbox-properties.gob"
+#line 172 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
 #line 292 "mn-pi-mailbox-properties.c"
 {
-#line 173 "mn-pi-mailbox-properties.gob"
+#line 174 "mn-pi-mailbox-properties.gob"
 	
     GtkWidget *hbox;
     GtkWidget *label;
 
     hbox = gtk_hbox_new(FALSE, 12);
-    label = gtk_label_new_with_mnemonic(_("_Authentication mechanism:"));
+    label = gtk_label_new_with_mnemonic(_("Authent_ication mechanism:"));
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
 
     self->auth_combo = mn_auth_combo_box_new();
@@ -312,14 +312,14 @@ mn_pi_mailbox_properties_add_authentication (MNPIMailboxProperties * self)
 #line 313 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 192 "mn-pi-mailbox-properties.gob"
+#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 194 "mn-pi-mailbox-properties.gob"
+#line 195 "mn-pi-mailbox-properties.gob"
 	
     Self *self = user_data;
 
@@ -331,21 +331,21 @@ mn_pi_mailbox_properties_notify_expanded_h (GObject * object, GParamSpec * pspec
 #line 332 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 203 "mn-pi-mailbox-properties.gob"
+#line 204 "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"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::radio_toggled_h"
-#line 203 "mn-pi-mailbox-properties.gob"
+#line 204 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (togglebutton != NULL);
-#line 203 "mn-pi-mailbox-properties.gob"
+#line 204 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (GTK_IS_TOGGLE_BUTTON (togglebutton));
-#line 203 "mn-pi-mailbox-properties.gob"
+#line 204 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (user_data != NULL);
 #line 347 "mn-pi-mailbox-properties.c"
 {
-#line 206 "mn-pi-mailbox-properties.gob"
+#line 207 "mn-pi-mailbox-properties.gob"
 	
     Self *self = user_data;
     int i;
@@ -358,7 +358,7 @@ mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpoint
 #line 359 "mn-pi-mailbox-properties.c"
 #undef __GOB_FUNCTION__
 
-#line 216 "mn-pi-mailbox-properties.gob"
+#line 217 "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"
@@ -367,17 +367,17 @@ ___7_mn_pi_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GN
 		(* MN_MAILBOX_PROPERTIES_CLASS(parent_class)->set_mailbox)(___properties,___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::set_mailbox"
-#line 216 "mn-pi-mailbox-properties.gob"
+#line 217 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (properties != NULL);
-#line 216 "mn-pi-mailbox-properties.gob"
+#line 217 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES (properties));
-#line 216 "mn-pi-mailbox-properties.gob"
+#line 217 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (mailbox != NULL);
-#line 216 "mn-pi-mailbox-properties.gob"
+#line 217 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_MAILBOX (mailbox));
 #line 379 "mn-pi-mailbox-properties.c"
 {
-#line 219 "mn-pi-mailbox-properties.gob"
+#line 220 "mn-pi-mailbox-properties.gob"
 	
     Self *self = SELF(properties);
     MNPIMailbox *pi_mailbox = MN_PI_MAILBOX(mailbox);
@@ -393,7 +393,7 @@ ___7_mn_pi_mailbox_properties_set_mailbox (MNMailboxProperties * properties G_GN
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 231 "mn-pi-mailbox-properties.gob"
+#line 232 "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"
@@ -404,7 +404,7 @@ ___8_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GN
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::get_mailbox"
 {
-#line 233 "mn-pi-mailbox-properties.gob"
+#line 234 "mn-pi-mailbox-properties.gob"
 	
     MNMailbox *mailbox;
     MNPIMailboxConnectionType connection_type;
@@ -421,10 +421,10 @@ ___8_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GN
 		      &port);
 
     g_object_set(mailbox,
-		 "connection-type", connection_type,
-		 "authmech", authmech,
-		 "hostname", hostname,
-		 "port", port,
+		 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_PORT(port),
 		 NULL);
 
     g_free(authmech);
@@ -435,26 +435,26 @@ ___8_mn_pi_mailbox_properties_get_mailbox (MNMailboxProperties * properties G_GN
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 260 "mn-pi-mailbox-properties.gob"
+#line 261 "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"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::get_contents"
-#line 260 "mn-pi-mailbox-properties.gob"
+#line 261 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (self != NULL);
-#line 260 "mn-pi-mailbox-properties.gob"
+#line 261 "mn-pi-mailbox-properties.gob"
 	g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
 #line 449 "mn-pi-mailbox-properties.c"
 {
-#line 266 "mn-pi-mailbox-properties.gob"
+#line 267 "mn-pi-mailbox-properties.gob"
 	
     MNPIMailboxConnectionType _connection_type;
 
     if (connection_type || port)
       {
 	int i;
-	
+
 	_connection_type = -1;
 
 	for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
@@ -464,9 +464,9 @@ mn_pi_mailbox_properties_get_contents (MNPIMailboxProperties * self, MNPIMailbox
 	      break;
 	    }
 
-	g_return_if_fail(_connection_type != -1);
+	g_assert(_connection_type != -1);
       }
-    
+
     if (connection_type)
       *connection_type = _connection_type;
     if (authmech)
diff --git a/src/mn-pi-mailbox-properties.gob b/src/mn-pi-mailbox-properties.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
@@ -34,7 +34,7 @@ requires 2.0.12
 #include "mn-stock.h"
 %}
 
-class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
+class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties (abstract)
 {
   protected GtkWidget *hostname_entry;
   protected GtkWidget *details_vbox;
@@ -65,12 +65,12 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
       const char		*mnemonic;
     } connection_types[] = {
       { MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL,		N_("sta_ndard")			},
-      { MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL,	N_("_in-band SSL/TLS")		},
+      { 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")	}
     };
-      
+
     hbox = mn_authenticated_mailbox_properties_field_new(auth,
-							 _("_Hostname:"),
+							 _("Ho_stname:"),
 							 &label,
 							 &self->hostname_entry);
 
@@ -84,21 +84,22 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
     gtk_size_group_add_widget(self->details_size_group, auth->password_label);
     gtk_size_group_add_widget(self->details_size_group, label);
 
-    mn_mailbox_properties_add_entries(properties,
-				      GTK_ENTRY(self->hostname_entry),
-				      GTK_ENTRY(auth->username_entry),
-				      GTK_ENTRY(auth->password_entry),
-				      NULL);
+    properties->entries = mn_g_slist_append_elements(properties->entries,
+						     self->hostname_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);
-    
+
     radio_size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 
     for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
@@ -109,10 +110,10 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
 
 	gtk_size_group_add_widget(radio_size_group, self->conn_radio[i]);
 
-	mn_mailbox_properties_add_entry(properties, GTK_ENTRY(self->port_spin[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);
 
 #ifndef WITH_SSL
@@ -167,7 +168,7 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
 
     gtk_size_group_add_widget(self->details_size_group, label);
   }
-  
+
   private void
     add_authentication (self)
   {
@@ -175,7 +176,7 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
     GtkWidget *label;
 
     hbox = gtk_hbox_new(FALSE, 12);
-    label = gtk_label_new_with_mnemonic(_("_Authentication mechanism:"));
+    label = gtk_label_new_with_mnemonic(_("Authent_ication mechanism:"));
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
 
     self->auth_combo = mn_auth_combo_box_new();
@@ -188,7 +189,7 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
 
     gtk_size_group_add_widget(self->details_size_group, label);
   }
-  
+
   private void
     notify_expanded_h (GObject *object, GParamSpec *pspec, gpointer user_data)
   {
@@ -199,7 +200,7 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
 			    ? GTK_SIZE_GROUP_HORIZONTAL
 			    : GTK_SIZE_GROUP_NONE);
   }
-  
+
   private void
     radio_toggled_h (Gtk:Toggle:Button *togglebutton (check null type),
 		     gpointer user_data (check null))
@@ -246,17 +247,17 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
 		      &port);
 
     g_object_set(mailbox,
-		 "connection-type", connection_type,
-		 "authmech", authmech,
-		 "hostname", hostname,
-		 "port", port,
+		 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_PORT(port),
 		 NULL);
 
     g_free(authmech);
 
     return mailbox;
   }
-  
+
   protected void
     get_contents (self,
 		  MNPIMailboxConnectionType *connection_type,
@@ -269,7 +270,7 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
     if (connection_type || port)
       {
 	int i;
-	
+
 	_connection_type = -1;
 
 	for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
@@ -279,9 +280,9 @@ class MN:PI:Mailbox:Properties from MN:Authenticated:Mailbox:Properties
 	      break;
 	    }
 
-	g_return_if_fail(_connection_type != -1);
+	g_assert(_connection_type != -1);
       }
-    
+
     if (connection_type)
       *connection_type = _connection_type;
     if (authmech)
diff --git a/src/mn-pi-mailbox-properties.gob.stamp b/src/mn-pi-mailbox-properties.gob.stamp
diff --git a/src/mn-pi-mailbox-properties.h b/src/mn-pi-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-pi-mailbox.c b/src/mn-pi-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,15 +22,24 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 29 "mn-pi-mailbox.gob"
+#line 39 "mn-pi-mailbox.gob"
 
 #include "config.h"
-#include <glib/gi18n.h>
+#include <gnome.h>
+#include <eel/eel.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
 #include "mn-stock.h"
 
-#line 35 "mn-pi-mailbox.c"
+static GHashTable *password_database;
+G_LOCK_DEFINE_STATIC(password_database);
+
+struct _MNClientSessionPrivate
+{
+  MN_PI_MAILBOX_SESSION_PRIVATE;
+};
+
+#line 43 "mn-pi-mailbox.c"
 static const GEnumValue _mn_pi_mailbox_connection_type_values[] = {
 	{ MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL, (char *)"MN_PI_MAILBOX_CONNECTION_TYPE_NORMAL", (char *)"normal" },
 	{ MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL, (char *)"MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL", (char *)"inband-ssl" },
@@ -64,11 +72,15 @@ typedef MNPIMailboxClass 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_pi_mailbox_init (MNPIMailbox * o) G_GNUC_UNUSED;
-static void mn_pi_mailbox_class_init (MNPIMailboxClass * c) G_GNUC_UNUSED;
-static GObject * ___1_mn_pi_mailbox_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
-static void ___2_mn_pi_mailbox_seal (MNMailbox * mailbox) G_GNUC_UNUSED;
-static void ___3_mn_pi_mailbox_impl_check (MNAuthenticatedMailbox * mailbox) G_GNUC_UNUSED;
+static void mn_pi_mailbox_class_init (MNPIMailboxClass * class) G_GNUC_UNUSED;
+static void mn_pi_mailbox_init (MNPIMailbox * self) G_GNUC_UNUSED;
+static void ___3_mn_pi_mailbox_removed (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___4_mn_pi_mailbox_seal (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___5_mn_pi_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox) G_GNUC_UNUSED;
+static gboolean mn_pi_mailbox_credentials_prompt (MNPIMailbox * self, char ** username, char ** password, const char * format, ...) G_GNUC_UNUSED;
+static char * mn_pi_mailbox_build_auth_id (MNPIMailbox * self, const char * username) G_GNUC_UNUSED;
+static char * mn_pi_mailbox_get_password (MNPIMailbox * self, const char * username) G_GNUC_UNUSED;
+static void mn_pi_mailbox_set_password (MNPIMailbox * self, const char * username, const char * password) G_GNUC_UNUSED;
 
 enum {
 	PROP_0,
@@ -85,6 +97,16 @@ static MNAuthenticatedMailboxClass *parent_class = NULL;
 #define self_split_uri mn_pi_mailbox_split_uri
 #define self_split_uri_auth mn_pi_mailbox_split_uri_auth
 #define self_split_uri_hostport mn_pi_mailbox_split_uri_hostport
+#define self_auth_failed mn_pi_mailbox_auth_failed
+#define self_fill_credentials mn_pi_mailbox_fill_credentials
+#define self_credentials_prompt mn_pi_mailbox_credentials_prompt
+#define self_build_auth_id mn_pi_mailbox_build_auth_id
+#define self_get_password mn_pi_mailbox_get_password
+#define self_set_password mn_pi_mailbox_set_password
+#define self_session_private_init mn_pi_mailbox_session_private_init
+#define self_sasl_get_credentials_cb mn_pi_mailbox_sasl_get_credentials_cb
+#define self_notice_cb mn_pi_mailbox_notice_cb
+#define self_warning_cb mn_pi_mailbox_warning_cb
 GType
 mn_pi_mailbox_get_type (void)
 {
@@ -104,7 +126,7 @@ mn_pi_mailbox_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX, "MNPIMailbox", &info, (GTypeFlags)0);
+		type = g_type_register_static (MN_TYPE_AUTHENTICATED_MAILBOX, "MNPIMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -133,40 +155,45 @@ ___finalize(GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::finalize"
 	MNPIMailbox *self G_GNUC_UNUSED = MN_PI_MAILBOX (obj_self);
+	gpointer priv G_GNUC_UNUSED = self->_priv;
 	if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 54 "mn-pi-mailbox.gob"
+#line 73 "mn-pi-mailbox.gob"
 	if(self->authmech) { g_free ((gpointer) self->authmech); self->authmech = NULL; }
-#line 141 "mn-pi-mailbox.c"
-#line 57 "mn-pi-mailbox.gob"
+#line 164 "mn-pi-mailbox.c"
+#line 76 "mn-pi-mailbox.gob"
 	if(self->hostname) { g_free ((gpointer) self->hostname); self->hostname = NULL; }
-#line 144 "mn-pi-mailbox.c"
+#line 167 "mn-pi-mailbox.c"
+#line 87 "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"
+	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"
 static void 
-mn_pi_mailbox_init (MNPIMailbox * o G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:PI:Mailbox::init"
-}
-#undef __GOB_FUNCTION__
-static void 
-mn_pi_mailbox_class_init (MNPIMailboxClass * c G_GNUC_UNUSED)
+mn_pi_mailbox_class_init (MNPIMailboxClass * class G_GNUC_UNUSED)
+#line 180 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::class_init"
-	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
-	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)c;
-	MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)c;
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
+	MNAuthenticatedMailboxClass *mn_authenticated_mailbox_class = (MNAuthenticatedMailboxClass *)class;
+
+	g_type_class_add_private(class,sizeof(MNPIMailboxPrivate));
 
 	parent_class = g_type_class_ref (MN_TYPE_AUTHENTICATED_MAILBOX);
 
-#line 68 "mn-pi-mailbox.gob"
-	g_object_class->constructor = ___1_mn_pi_mailbox_constructor;
-#line 82 "mn-pi-mailbox.gob"
-	mn_mailbox_class->seal = ___2_mn_pi_mailbox_seal;
-#line 98 "mn-pi-mailbox.gob"
-	mn_authenticated_mailbox_class->impl_check = ___3_mn_pi_mailbox_impl_check;
-#line 170 "mn-pi-mailbox.c"
+#line 111 "mn-pi-mailbox.gob"
+	mn_mailbox_class->removed = ___3_mn_pi_mailbox_removed;
+#line 122 "mn-pi-mailbox.gob"
+	mn_mailbox_class->seal = ___4_mn_pi_mailbox_seal;
+#line 138 "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;
 	g_object_class->get_property = ___object_get_property;
 	g_object_class->set_property = ___object_set_property;
@@ -213,6 +240,35 @@ mn_pi_mailbox_class_init (MNPIMailboxClass * c G_GNUC_UNUSED)
 		PROP_PORT,
 		param_spec);
     }
+ {
+#line 96 "mn-pi-mailbox.gob"
+
+    password_database = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+
+    /*
+     * 5 minutes is a good default check delay for remote POP3/IMAP
+     * mailboxes.
+     */
+    MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5;
+  
+#line 255 "mn-pi-mailbox.c"
+ }
+}
+#undef __GOB_FUNCTION__
+#line 106 "mn-pi-mailbox.gob"
+static void 
+mn_pi_mailbox_init (MNPIMailbox * self G_GNUC_UNUSED)
+#line 262 "mn-pi-mailbox.c"
+{
+#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"
+
+    mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_REMOTE);
+  
+#line 271 "mn-pi-mailbox.c"
+ }
 }
 #undef __GOB_FUNCTION__
 
@@ -230,30 +286,30 @@ ___object_set_property (GObject *object,
 	switch (property_id) {
 	case PROP_CONNECTION_TYPE:
 		{
-#line 49 "mn-pi-mailbox.gob"
+#line 68 "mn-pi-mailbox.gob"
 self->connection_type = g_value_get_enum (VAL);
-#line 236 "mn-pi-mailbox.c"
+#line 292 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_AUTHMECH:
 		{
-#line 55 "mn-pi-mailbox.gob"
+#line 74 "mn-pi-mailbox.gob"
 { char *old = self->authmech; self->authmech = g_value_dup_string (VAL); g_free (old); }
-#line 243 "mn-pi-mailbox.c"
+#line 299 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_HOSTNAME:
 		{
-#line 58 "mn-pi-mailbox.gob"
+#line 77 "mn-pi-mailbox.gob"
 { char *old = self->hostname; self->hostname = g_value_dup_string (VAL); g_free (old); }
-#line 250 "mn-pi-mailbox.c"
+#line 306 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_PORT:
 		{
-#line 61 "mn-pi-mailbox.gob"
+#line 80 "mn-pi-mailbox.gob"
 self->port = g_value_get_int (VAL);
-#line 257 "mn-pi-mailbox.c"
+#line 313 "mn-pi-mailbox.c"
 		}
 		break;
 	default:
@@ -282,30 +338,30 @@ ___object_get_property (GObject *object,
 	switch (property_id) {
 	case PROP_CONNECTION_TYPE:
 		{
-#line 49 "mn-pi-mailbox.gob"
+#line 68 "mn-pi-mailbox.gob"
 g_value_set_enum (VAL, self->connection_type);
-#line 288 "mn-pi-mailbox.c"
+#line 344 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_AUTHMECH:
 		{
-#line 55 "mn-pi-mailbox.gob"
+#line 74 "mn-pi-mailbox.gob"
 g_value_set_string (VAL, self->authmech);
-#line 295 "mn-pi-mailbox.c"
+#line 351 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_HOSTNAME:
 		{
-#line 58 "mn-pi-mailbox.gob"
+#line 77 "mn-pi-mailbox.gob"
 g_value_set_string (VAL, self->hostname);
-#line 302 "mn-pi-mailbox.c"
+#line 358 "mn-pi-mailbox.c"
 		}
 		break;
 	case PROP_PORT:
 		{
-#line 61 "mn-pi-mailbox.gob"
+#line 80 "mn-pi-mailbox.gob"
 g_value_set_int (VAL, self->port);
-#line 309 "mn-pi-mailbox.c"
+#line 365 "mn-pi-mailbox.c"
 		}
 		break;
 	default:
@@ -322,44 +378,40 @@ g_value_set_int (VAL, self->port);
 
 
 
-#line 68 "mn-pi-mailbox.gob"
-static GObject * 
-___1_mn_pi_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 329 "mn-pi-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): \
-		((GObject * )0))
+#line 111 "mn-pi-mailbox.gob"
+static void 
+___3_mn_pi_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 385 "mn-pi-mailbox.c"
+#define PARENT_HANDLER(___mailbox) \
+	{ if(MN_MAILBOX_CLASS(parent_class)->removed) \
+		(* MN_MAILBOX_CLASS(parent_class)->removed)(___mailbox); }
 {
-#define __GOB_FUNCTION__ "MN:PI:Mailbox::constructor"
+#define __GOB_FUNCTION__ "MN:PI:Mailbox::removed"
 {
-#line 70 "mn-pi-mailbox.gob"
+#line 113 "mn-pi-mailbox.gob"
 	
-    GObject *object;
-    MNMailbox *mailbox;
+    Self *self = SELF(mailbox);
 
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
-    
-    mn_mailbox_set_stock_id(mailbox, MN_STOCK_REMOTE);
+    if (selfp->auth_dialog)
+      gtk_dialog_response(GTK_DIALOG(selfp->auth_dialog), GTK_RESPONSE_CANCEL);
 
-    return object;
+    PARENT_HANDLER(mailbox);
   }}
-#line 349 "mn-pi-mailbox.c"
+#line 401 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 82 "mn-pi-mailbox.gob"
+#line 122 "mn-pi-mailbox.gob"
 static void 
-___2_mn_pi_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 356 "mn-pi-mailbox.c"
+___4_mn_pi_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 408 "mn-pi-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->seal) \
 		(* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::seal"
 {
-#line 84 "mn-pi-mailbox.gob"
+#line 124 "mn-pi-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -368,30 +420,28 @@ ___2_mn_pi_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
     /* do not save default port to mailboxes.xml */
     if (self->port == SELF_GET_CLASS(self)->default_ports[self->connection_type])
       self->port = 0;
-    
+
     self->runtime_port = self->port == 0
       ? SELF_GET_CLASS(self)->default_ports[self->connection_type]
       : self->port;
   }}
-#line 377 "mn-pi-mailbox.c"
+#line 429 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 98 "mn-pi-mailbox.gob"
+#line 138 "mn-pi-mailbox.gob"
 static void 
-___3_mn_pi_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
-#line 384 "mn-pi-mailbox.c"
+___5_mn_pi_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
+#line 436 "mn-pi-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
-	{ if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_check) \
-		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_check)(___mailbox); }
+	{ if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check) \
+		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->authenticated_check)(___mailbox); }
 {
-#define __GOB_FUNCTION__ "MN:PI:Mailbox::impl_check"
+#define __GOB_FUNCTION__ "MN:PI:Mailbox::authenticated_check"
 {
-#line 100 "mn-pi-mailbox.gob"
+#line 140 "mn-pi-mailbox.gob"
 	
-#ifndef WITH_SSL
     Self *self = SELF(mailbox);
-#endif
 
     PARENT_HANDLER(mailbox);
 
@@ -402,36 +452,39 @@ ___3_mn_pi_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
 	GDK_THREADS_ENTER();
 
 	mn_mailbox_set_error(MN_MAILBOX(mailbox), _("SSL/TLS support has not been compiled in"));
-	mn_mailbox_set_must_poll(MN_MAILBOX(mailbox), FALSE); /* disable the mailbox */
+	mn_mailbox_set_poll(MN_MAILBOX(mailbox), FALSE); /* disable the mailbox */
 
 	gdk_flush();
 	GDK_THREADS_LEAVE();
       }
 #endif
+
+    self->auth_prompted = FALSE;
+    selfp->auth_failed = FALSE;
   }}
-#line 413 "mn-pi-mailbox.c"
+#line 466 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 122 "mn-pi-mailbox.gob"
+#line 163 "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 420 "mn-pi-mailbox.c"
+#line 473 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::split_uri"
-#line 122 "mn-pi-mailbox.gob"
+#line 163 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 122 "mn-pi-mailbox.gob"
+#line 163 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (scheme != NULL, (gboolean )0);
-#line 122 "mn-pi-mailbox.gob"
+#line 163 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (auth != NULL, (gboolean )0);
-#line 122 "mn-pi-mailbox.gob"
+#line 163 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (location != NULL, (gboolean )0);
-#line 122 "mn-pi-mailbox.gob"
+#line 163 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (has_auth != NULL, (gboolean )0);
-#line 433 "mn-pi-mailbox.c"
+#line 486 "mn-pi-mailbox.c"
 {
-#line 129 "mn-pi-mailbox.gob"
+#line 170 "mn-pi-mailbox.gob"
 	
     char *pat;
     int n;
@@ -443,7 +496,7 @@ mn_pi_mailbox_split_uri (const char * uri, int maxlen, char * scheme, char * aut
     if (n >= 2)
       {
 	*has_auth = n == 3;
-	
+
 	if (! *has_auth)
 	  strcpy(location, auth);
 
@@ -452,28 +505,28 @@ mn_pi_mailbox_split_uri (const char * uri, int maxlen, char * scheme, char * aut
     else
       return FALSE;
   }}
-#line 456 "mn-pi-mailbox.c"
+#line 509 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 150 "mn-pi-mailbox.gob"
+#line 191 "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 462 "mn-pi-mailbox.c"
+#line 515 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::split_uri_auth"
-#line 150 "mn-pi-mailbox.gob"
+#line 191 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (auth != NULL, (gboolean )0);
-#line 150 "mn-pi-mailbox.gob"
+#line 191 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (username != NULL, (gboolean )0);
-#line 150 "mn-pi-mailbox.gob"
+#line 191 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (authmech != NULL, (gboolean )0);
-#line 150 "mn-pi-mailbox.gob"
+#line 191 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (has_username != NULL, (gboolean )0);
-#line 150 "mn-pi-mailbox.gob"
+#line 191 "mn-pi-mailbox.gob"
 	g_return_val_if_fail (has_authmech != NULL, (gboolean )0);
-#line 475 "mn-pi-mailbox.c"
+#line 528 "mn-pi-mailbox.c"
 {
-#line 157 "mn-pi-mailbox.gob"
+#line 198 "mn-pi-mailbox.gob"
 	
     char *pat;
     int n;
@@ -497,7 +550,7 @@ mn_pi_mailbox_split_uri_auth (const char * auth, int maxlen, char * username, ch
 	pat = g_strdup_printf(";AUTH=%%%is", maxlen);
 	n = sscanf(auth, pat, authmech);
 	g_free(pat);
-	
+
 	if (n < 1)
 	  return FALSE;
 
@@ -506,24 +559,24 @@ mn_pi_mailbox_split_uri_auth (const char * auth, int maxlen, char * username, ch
 
     return TRUE;
   }}
-#line 510 "mn-pi-mailbox.c"
+#line 563 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 190 "mn-pi-mailbox.gob"
+#line 231 "mn-pi-mailbox.gob"
 void 
 mn_pi_mailbox_split_uri_hostport (const char * hostport, int maxlen, char * hostname, int * port)
-#line 516 "mn-pi-mailbox.c"
+#line 569 "mn-pi-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:PI:Mailbox::split_uri_hostport"
-#line 190 "mn-pi-mailbox.gob"
+#line 231 "mn-pi-mailbox.gob"
 	g_return_if_fail (hostport != NULL);
-#line 190 "mn-pi-mailbox.gob"
+#line 231 "mn-pi-mailbox.gob"
 	g_return_if_fail (hostname != NULL);
-#line 190 "mn-pi-mailbox.gob"
+#line 231 "mn-pi-mailbox.gob"
 	g_return_if_fail (port != NULL);
-#line 525 "mn-pi-mailbox.c"
+#line 578 "mn-pi-mailbox.c"
 {
-#line 195 "mn-pi-mailbox.gob"
+#line 236 "mn-pi-mailbox.gob"
 	
     char *pat;
     int n;
@@ -546,5 +599,340 @@ mn_pi_mailbox_split_uri_hostport (const char * hostport, int maxlen, char * host
     if (n < 2)
       *port = 0;
   }}
-#line 550 "mn-pi-mailbox.c"
+#line 603 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 259 "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"
+	g_return_if_fail (self != NULL);
+#line 259 "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"
+	
+    MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(self);
+
+    if (! auth_mailbox->password)
+      {
+	g_free(self->runtime_password);
+	self->runtime_password = NULL;
+
+	if (self->runtime_username)
+	  self_set_password(self, self->runtime_username, NULL);
+      }
+
+    if (! auth_mailbox->username)
+      {
+	g_free(self->runtime_username);
+	self->runtime_username = NULL;
+      }
+
+    selfp->auth_failed = TRUE;
+  }}
+#line 639 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 282 "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"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 282 "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"
+	
+    MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(self);
+
+    g_return_val_if_fail(need_username || need_password, FALSE);
+
+    self->auth_cancelled = FALSE;
+
+    if (! self->runtime_username)
+      self->runtime_username = g_strdup(auth_mailbox->username);
+    if (! self->runtime_password)
+      self->runtime_password = g_strdup(auth_mailbox->password);
+
+    if (self->runtime_username && ! self->runtime_password && need_password)
+      self->runtime_password = self_get_password(self, self->runtime_username);
+
+    if (self->runtime_username)
+      need_username = FALSE;
+    if (self->runtime_password)
+      need_password = FALSE;
+
+    if (need_username || need_password)
+      {
+	char *username;
+	char *password;
+
+	GDK_THREADS_ENTER();
+
+	self->auth_prompted = TRUE;
+
+	if (self_credentials_prompt(self,
+				    need_username ? &username : NULL,
+				    need_password ? &password : NULL,
+				    selfp->auth_failed
+				    ? _("Mail Notification was unable to log into %s mailbox %s, possibly because the credentials you have entered are invalid.\n\nPlease re-enter your credentials.")
+				    : _("Enter your credentials for %s mailbox %s."),
+				    MN_MAILBOX(self)->format,
+				    MN_MAILBOX(self)->runtime_name))
+	  {
+	    if (need_username)
+	      self->runtime_username = username;
+	    if (need_password)
+	      self->runtime_password = password;
+	  }
+	else
+	  self->auth_cancelled = TRUE;
+
+	gdk_flush();
+	GDK_THREADS_LEAVE();
+      }
+
+    if (self->runtime_username && self->runtime_password)
+      self_set_password(self, self->runtime_username, self->runtime_password);
+
+    return ! self->auth_cancelled;
+  }}
+#line 710 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 340 "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"
+	g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 340 "mn-pi-mailbox.gob"
+	g_return_val_if_fail (MN_IS_PI_MAILBOX (self), (gboolean )0);
+#line 340 "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"
+	
+    va_list args;
+    char *message;
+    gboolean ok;
+
+    g_return_val_if_fail(selfp->auth_dialog == NULL, FALSE);
+    g_return_val_if_fail(username != NULL || password != NULL, FALSE);
+
+    va_start(args, format);
+    message = g_strdup_vprintf(format, args);
+    va_end(args);
+
+    /* keep the title in sync with gnome-authentication-manager */
+
+    /* translators: header capitalization */
+    selfp->auth_dialog = gnome_password_dialog_new(_("Authentication Required"),
+						   message,
+						   self->runtime_username,
+						   self->runtime_password,
+						   FALSE);
+    g_free(message);
+
+    eel_add_weak_pointer(&selfp->auth_dialog);
+
+    gnome_password_dialog_set_show_userpass_buttons(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), FALSE);
+    gnome_password_dialog_set_readonly_username(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), username == NULL);
+    gnome_password_dialog_set_show_password(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), password != NULL);
+
+    ok = gnome_password_dialog_run_and_block(GNOME_PASSWORD_DIALOG(selfp->auth_dialog));
+    if (ok)
+      {
+	if (username)
+	  *username = gnome_password_dialog_get_username(GNOME_PASSWORD_DIALOG(selfp->auth_dialog));
+	if (password)
+	  *password = gnome_password_dialog_get_password(GNOME_PASSWORD_DIALOG(selfp->auth_dialog));
+      }
+
+    gtk_widget_destroy(selfp->auth_dialog);
+
+    return ok;
+  }}
+#line 769 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 388 "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"
+	g_return_val_if_fail (self != NULL, (char * )0);
+#line 388 "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"
+	
+    return g_strdup_printf("%s:%s:%i:%i:%s",
+			   MN_MAILBOX_GET_CLASS(self)->type,
+			   self->hostname,
+			   self->runtime_port,
+			   self->connection_type,
+			   username);
+  }}
+#line 793 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 399 "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"
+	g_return_val_if_fail (self != NULL, (char * )0);
+#line 399 "mn-pi-mailbox.gob"
+	g_return_val_if_fail (MN_IS_PI_MAILBOX (self), (char * )0);
+#line 399 "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"
+	
+    char *auth_id;
+    char *password;
+
+    auth_id = self_build_auth_id(self, username);
+
+    G_LOCK(password_database);
+    password = g_strdup(g_hash_table_lookup(password_database, auth_id));
+    G_UNLOCK(password_database);
+
+    g_free(auth_id);
+
+    return password;
+  }}
+#line 825 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 416 "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"
+	g_return_if_fail (self != NULL);
+#line 416 "mn-pi-mailbox.gob"
+	g_return_if_fail (MN_IS_PI_MAILBOX (self));
+#line 416 "mn-pi-mailbox.gob"
+	g_return_if_fail (username != NULL);
+#line 840 "mn-pi-mailbox.c"
+{
+#line 418 "mn-pi-mailbox.gob"
+	
+    char *auth_id;
+
+    auth_id = self_build_auth_id(self, username);
+
+    G_LOCK(password_database);
+    if (password)
+      g_hash_table_insert(password_database, g_strdup(auth_id), g_strdup(password));
+    else
+      g_hash_table_remove(password_database, auth_id);
+    G_UNLOCK(password_database);
+
+    g_free(auth_id);
+  }}
+#line 857 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 433 "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"
+	g_return_if_fail (self != NULL);
+#line 433 "mn-pi-mailbox.gob"
+	g_return_if_fail (MN_IS_PI_MAILBOX (self));
+#line 433 "mn-pi-mailbox.gob"
+	g_return_if_fail (priv != NULL);
+#line 872 "mn-pi-mailbox.c"
+{
+#line 435 "mn-pi-mailbox.gob"
+	
+    priv->mailbox = MN_MAILBOX(self);
+    priv->pi_mailbox = MN_PI_MAILBOX(self);
+  }}
+#line 879 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 440 "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"
+	
+#if WITH_SASL
+    g_return_val_if_fail(username != NULL || password != NULL, FALSE);
+
+    if (self_fill_credentials(priv->pi_mailbox, username != NULL, password != NULL))
+      {
+	if (username)
+	  *username = priv->pi_mailbox->runtime_username;
+	if (password)
+	  *password = priv->pi_mailbox->runtime_password;
+
+	return TRUE;
+      }
+    else
+      return FALSE;
+#else
+    g_assert_not_reached();
+    return FALSE;
+#endif /* WITH_SASL */
+  }}
+#line 910 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 466 "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"
+	
+    mn_mailbox_notice(priv->mailbox, "%s", message);
+  }}
+#line 924 "mn-pi-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 474 "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"
+	
+    mn_mailbox_warning(priv->mailbox, "%s", message);
+  }}
+#line 938 "mn-pi-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pi-mailbox.gob b/src/mn-pi-mailbox.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-authenticated-mailbox.h"
@@ -26,12 +26,31 @@ requires 2.0.12
 #define MN_PI_MAILBOX_N_CONNECTION_TYPES	3
 %}
 
+%privateheader{
+#include <gtk/gtk.h>
+#include "mn-client-session.h"
+
+#define MN_PI_MAILBOX_SESSION_PRIVATE \
+  MNMailbox		*mailbox;	\
+  MNPIMailbox		*pi_mailbox;	\
+  MNClientSession	*session
+%}
+
 %{
 #include "config.h"
-#include <glib/gi18n.h>
+#include <gnome.h>
+#include <eel/eel.h>
 #include "mn-mailbox-private.h"
 #include "mn-util.h"
 #include "mn-stock.h"
+
+static GHashTable *password_database;
+G_LOCK_DEFINE_STATIC(password_database);
+
+struct _MNClientSessionPrivate
+{
+  MN_PI_MAILBOX_SESSION_PRIVATE;
+};
 %}
 
 enum MN_PI_MAILBOX_CONNECTION_TYPE
@@ -41,7 +60,7 @@ enum MN_PI_MAILBOX_CONNECTION_TYPE
   SSL,
 } MN:PI:Mailbox:Connection:Type;
 
-class MN:PI:Mailbox from MN:Authenticated:Mailbox
+class MN:PI:Mailbox from MN:Authenticated:Mailbox (abstract)
 {
   classwide int *default_ports;
 
@@ -65,18 +84,39 @@ class MN:PI:Mailbox from MN:Authenticated:Mailbox
 
   public int runtime_port;
 
-  override (G:Object) GObject *
-    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  public char *runtime_username destroywith g_free;
+  public char *runtime_password destroywith g_free;
+
+  private GtkWidget *auth_dialog;
+  protected gboolean auth_prompted;
+  protected gboolean auth_cancelled;
+  private gboolean auth_failed;
+
+  class_init (class)
+  {
+    password_database = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
+
+    /*
+     * 5 minutes is a good default check delay for remote POP3/IMAP
+     * mailboxes.
+     */
+    MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 5;
+  }
+
+  init (self)
+  {
+    mn_mailbox_set_stock_id(MN_MAILBOX(self), MN_STOCK_REMOTE);
+  }
+
+  override (MN:Mailbox) void
+    removed (MNMailbox *mailbox)
   {
-    GObject *object;
-    MNMailbox *mailbox;
+    Self *self = SELF(mailbox);
 
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
-    
-    mn_mailbox_set_stock_id(mailbox, MN_STOCK_REMOTE);
+    if (selfp->auth_dialog)
+      gtk_dialog_response(GTK_DIALOG(selfp->auth_dialog), GTK_RESPONSE_CANCEL);
 
-    return object;
+    PARENT_HANDLER(mailbox);
   }
 
   override (MN:Mailbox) void
@@ -89,18 +129,16 @@ class MN:PI:Mailbox from MN:Authenticated:Mailbox
     /* do not save default port to mailboxes.xml */
     if (self->port == SELF_GET_CLASS(self)->default_ports[self->connection_type])
       self->port = 0;
-    
+
     self->runtime_port = self->port == 0
       ? SELF_GET_CLASS(self)->default_ports[self->connection_type]
       : self->port;
   }
 
   override (MN:Authenticated:Mailbox) void
-    impl_check (MNAuthenticatedMailbox *mailbox)
+    authenticated_check (MNAuthenticatedMailbox *mailbox)
   {
-#ifndef WITH_SSL
     Self *self = SELF(mailbox);
-#endif
 
     PARENT_HANDLER(mailbox);
 
@@ -111,12 +149,15 @@ class MN:PI:Mailbox from MN:Authenticated:Mailbox
 	GDK_THREADS_ENTER();
 
 	mn_mailbox_set_error(MN_MAILBOX(mailbox), _("SSL/TLS support has not been compiled in"));
-	mn_mailbox_set_must_poll(MN_MAILBOX(mailbox), FALSE); /* disable the mailbox */
+	mn_mailbox_set_poll(MN_MAILBOX(mailbox), FALSE); /* disable the mailbox */
 
 	gdk_flush();
 	GDK_THREADS_LEAVE();
       }
 #endif
+
+    self->auth_prompted = FALSE;
+    selfp->auth_failed = FALSE;
   }
 
   protected gboolean
@@ -137,7 +178,7 @@ class MN:PI:Mailbox from MN:Authenticated:Mailbox
     if (n >= 2)
       {
 	*has_auth = n == 3;
-	
+
 	if (! *has_auth)
 	  strcpy(location, auth);
 
@@ -146,7 +187,7 @@ class MN:PI:Mailbox from MN:Authenticated:Mailbox
     else
       return FALSE;
   }
-  
+
   protected gboolean
     split_uri_auth (const char *auth (check null),
 		    int maxlen,
@@ -177,7 +218,7 @@ class MN:PI:Mailbox from MN:Authenticated:Mailbox
 	pat = g_strdup_printf(";AUTH=%%%is", maxlen);
 	n = sscanf(auth, pat, authmech);
 	g_free(pat);
-	
+
 	if (n < 1)
 	  return FALSE;
 
@@ -186,7 +227,7 @@ class MN:PI:Mailbox from MN:Authenticated:Mailbox
 
     return TRUE;
   }
-  
+
   protected void
     split_uri_hostport (const char *hostport (check null),
 			int maxlen,
@@ -214,4 +255,227 @@ class MN:PI:Mailbox from MN:Authenticated:Mailbox
     if (n < 2)
       *port = 0;
   }
+
+  protected void
+    auth_failed (self)
+  {
+    MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(self);
+
+    if (! auth_mailbox->password)
+      {
+	g_free(self->runtime_password);
+	self->runtime_password = NULL;
+
+	if (self->runtime_username)
+	  self_set_password(self, self->runtime_username, NULL);
+      }
+
+    if (! auth_mailbox->username)
+      {
+	g_free(self->runtime_username);
+	self->runtime_username = NULL;
+      }
+
+    selfp->auth_failed = TRUE;
+  }
+
+  protected gboolean
+    fill_credentials (self, gboolean need_username, gboolean need_password)
+  {
+    MNAuthenticatedMailbox *auth_mailbox = MN_AUTHENTICATED_MAILBOX(self);
+
+    g_return_val_if_fail(need_username || need_password, FALSE);
+
+    self->auth_cancelled = FALSE;
+
+    if (! self->runtime_username)
+      self->runtime_username = g_strdup(auth_mailbox->username);
+    if (! self->runtime_password)
+      self->runtime_password = g_strdup(auth_mailbox->password);
+
+    if (self->runtime_username && ! self->runtime_password && need_password)
+      self->runtime_password = self_get_password(self, self->runtime_username);
+
+    if (self->runtime_username)
+      need_username = FALSE;
+    if (self->runtime_password)
+      need_password = FALSE;
+
+    if (need_username || need_password)
+      {
+	char *username;
+	char *password;
+
+	GDK_THREADS_ENTER();
+
+	self->auth_prompted = TRUE;
+
+	if (self_credentials_prompt(self,
+				    need_username ? &username : NULL,
+				    need_password ? &password : NULL,
+				    selfp->auth_failed
+				    ? _("Mail Notification was unable to log into %s mailbox %s, possibly because the credentials you have entered are invalid.\n\nPlease re-enter your credentials.")
+				    : _("Enter your credentials for %s mailbox %s."),
+				    MN_MAILBOX(self)->format,
+				    MN_MAILBOX(self)->runtime_name))
+	  {
+	    if (need_username)
+	      self->runtime_username = username;
+	    if (need_password)
+	      self->runtime_password = password;
+	  }
+	else
+	  self->auth_cancelled = TRUE;
+
+	gdk_flush();
+	GDK_THREADS_LEAVE();
+      }
+
+    if (self->runtime_username && self->runtime_password)
+      self_set_password(self, self->runtime_username, self->runtime_password);
+
+    return ! self->auth_cancelled;
+  }
+
+  private gboolean
+    credentials_prompt (self,
+			char **username,
+			char **password,
+			const char *format (check null),
+			...)
+  {
+    va_list args;
+    char *message;
+    gboolean ok;
+
+    g_return_val_if_fail(selfp->auth_dialog == NULL, FALSE);
+    g_return_val_if_fail(username != NULL || password != NULL, FALSE);
+
+    va_start(args, format);
+    message = g_strdup_vprintf(format, args);
+    va_end(args);
+
+    /* keep the title in sync with gnome-authentication-manager */
+
+    /* translators: header capitalization */
+    selfp->auth_dialog = gnome_password_dialog_new(_("Authentication Required"),
+						   message,
+						   self->runtime_username,
+						   self->runtime_password,
+						   FALSE);
+    g_free(message);
+
+    eel_add_weak_pointer(&selfp->auth_dialog);
+
+    gnome_password_dialog_set_show_userpass_buttons(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), FALSE);
+    gnome_password_dialog_set_readonly_username(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), username == NULL);
+    gnome_password_dialog_set_show_password(GNOME_PASSWORD_DIALOG(selfp->auth_dialog), password != NULL);
+
+    ok = gnome_password_dialog_run_and_block(GNOME_PASSWORD_DIALOG(selfp->auth_dialog));
+    if (ok)
+      {
+	if (username)
+	  *username = gnome_password_dialog_get_username(GNOME_PASSWORD_DIALOG(selfp->auth_dialog));
+	if (password)
+	  *password = gnome_password_dialog_get_password(GNOME_PASSWORD_DIALOG(selfp->auth_dialog));
+      }
+
+    gtk_widget_destroy(selfp->auth_dialog);
+
+    return ok;
+  }
+
+  private char *
+    build_auth_id (self, const char *username)
+  {
+    return g_strdup_printf("%s:%s:%i:%i:%s",
+			   MN_MAILBOX_GET_CLASS(self)->type,
+			   self->hostname,
+			   self->runtime_port,
+			   self->connection_type,
+			   username);
+  }
+
+  private char *
+    get_password (self, const char *username (check null))
+  {
+    char *auth_id;
+    char *password;
+
+    auth_id = self_build_auth_id(self, username);
+
+    G_LOCK(password_database);
+    password = g_strdup(g_hash_table_lookup(password_database, auth_id));
+    G_UNLOCK(password_database);
+
+    g_free(auth_id);
+
+    return password;
+  }
+
+  private void
+    set_password (self, const char *username (check null), const char *password)
+  {
+    char *auth_id;
+
+    auth_id = self_build_auth_id(self, username);
+
+    G_LOCK(password_database);
+    if (password)
+      g_hash_table_insert(password_database, g_strdup(auth_id), g_strdup(password));
+    else
+      g_hash_table_remove(password_database, auth_id);
+    G_UNLOCK(password_database);
+
+    g_free(auth_id);
+  }
+
+  protected void
+    session_private_init (self, MNClientSessionPrivate *priv (check null))
+  {
+    priv->mailbox = MN_MAILBOX(self);
+    priv->pi_mailbox = MN_PI_MAILBOX(self);
+  }
+
+  protected gboolean
+    sasl_get_credentials_cb (MNClientSession *session,
+			     MNClientSessionPrivate *priv,
+			     const char **username,
+			     const char **password)
+  {
+#if WITH_SASL
+    g_return_val_if_fail(username != NULL || password != NULL, FALSE);
+
+    if (self_fill_credentials(priv->pi_mailbox, username != NULL, password != NULL))
+      {
+	if (username)
+	  *username = priv->pi_mailbox->runtime_username;
+	if (password)
+	  *password = priv->pi_mailbox->runtime_password;
+
+	return TRUE;
+      }
+    else
+      return FALSE;
+#else
+    g_assert_not_reached();
+    return FALSE;
+#endif /* WITH_SASL */
+  }
+
+  protected void
+    notice_cb (MNClientSession *session,
+	       const char *message,
+	       MNClientSessionPrivate *priv)
+  {
+    mn_mailbox_notice(priv->mailbox, "%s", message);
+  }
+
+  protected void
+    warning_cb (MNClientSession *session,
+		const char *message,
+		MNClientSessionPrivate *priv)
+  {
+    mn_mailbox_warning(priv->mailbox, "%s", message);
+  }
 }
diff --git a/src/mn-pi-mailbox.gob.stamp b/src/mn-pi-mailbox.gob.stamp
diff --git a/src/mn-pi-mailbox.h b/src/mn-pi-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -38,6 +38,9 @@ GType mn_pi_mailbox_connection_type_get_type (void);
 
 #define MN_PI_MAILBOX_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_pi_mailbox_get_type(), MNPIMailboxClass)
 
+/* Private structure type */
+typedef struct _MNPIMailboxPrivate MNPIMailboxPrivate;
+
 /*
  * Main object structure
  */
@@ -53,6 +56,12 @@ struct _MNPIMailbox {
 	char * hostname;
 	int port;
 	int runtime_port;
+	char * runtime_username;
+	char * runtime_password;
+	/*< private >*/
+	gboolean auth_prompted; /* protected */
+	gboolean auth_cancelled; /* protected */
+	MNPIMailboxPrivate *_priv;
 };
 
 /*
diff --git a/src/mn-pop3-mailbox-private.h b/src/mn-pop3-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_POP3_MAILBOX_PRIVATE_H__
 #define __MN_POP3_MAILBOX_PRIVATE_H__
@@ -10,9 +10,9 @@ extern "C" {
 #endif /* __cplusplus */
 
 struct _MNPOP3MailboxPrivate {
-#line 127 "mn-pop3-mailbox.gob"
+#line 124 "mn-pop3-mailbox.gob"
 	int login_delay;
-#line 128 "mn-pop3-mailbox.gob"
+#line 125 "mn-pop3-mailbox.gob"
 	GTimer * authentication_timer;
 #line 18 "mn-pop3-mailbox-private.h"
 };
diff --git a/src/mn-pop3-mailbox-properties-private.h b/src/mn-pop3-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_POP3_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_POP3_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-pop3-mailbox-properties.c b/src/mn-pop3-mailbox-properties.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:55 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -35,7 +34,7 @@
 #include "mn-properties-dialog.h"
 #include "mn-pop3-mailbox.h"
 
-#line 39 "mn-pop3-mailbox-properties.c"
+#line 38 "mn-pop3-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_POP3_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_POP3_MAILBOX_PROPERTIES_CONST(x)
@@ -108,7 +107,7 @@ GET_NEW_VARG (const char *first, ...)
 #line 79 "mn-pop3-mailbox-properties.gob"
 static void 
 mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 112 "mn-pop3-mailbox-properties.c"
+#line 111 "mn-pop3-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -132,14 +131,14 @@ mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GN
     p_class->type = "pop3";
     p_class->combo_label = "POP3";
   
-#line 136 "mn-pop3-mailbox-properties.c"
+#line 135 "mn-pop3-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
 #line 87 "mn-pop3-mailbox-properties.gob"
 static void 
 mn_pop3_mailbox_properties_init (MNPOP3MailboxProperties * self G_GNUC_UNUSED)
-#line 143 "mn-pop3-mailbox-properties.c"
+#line 142 "mn-pop3-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::init"
  {
@@ -154,7 +153,7 @@ mn_pop3_mailbox_properties_init (MNPOP3MailboxProperties * self G_GNUC_UNUSED)
     for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
       gtk_spin_button_set_value(GTK_SPIN_BUTTON(pi->port_spin[i]), mn_pop3_mailbox_default_ports[i]);
   
-#line 158 "mn-pop3-mailbox-properties.c"
+#line 157 "mn-pop3-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -178,7 +177,7 @@ ___object_get_property (GObject *object,
       MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
       gboolean complete;
       const char *hostname;
-      
+
       mn_pi_mailbox_properties_get_contents(pi,
 					    NULL,
 					    NULL,
@@ -193,7 +192,7 @@ ___object_get_property (GObject *object,
 
       g_value_set_boolean(VAL, complete);
     
-#line 197 "mn-pop3-mailbox-properties.c"
+#line 196 "mn-pop3-mailbox-properties.c"
 		}
 		break;
 	case PROP_DEFAULT_NAME:
@@ -214,7 +213,7 @@ ___object_get_property (GObject *object,
 
       g_value_take_string(VAL, mn_pop3_mailbox_build_name(username, hostname));
     
-#line 218 "mn-pop3-mailbox-properties.c"
+#line 217 "mn-pop3-mailbox-properties.c"
 		}
 		break;
 	default:
diff --git a/src/mn-pop3-mailbox-properties.gob b/src/mn-pop3-mailbox-properties.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-pi-mailbox-properties.h"
@@ -42,7 +42,7 @@ class MN:POP3:Mailbox:Properties from MN:PI:Mailbox:Properties
       MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
       gboolean complete;
       const char *hostname;
-      
+
       mn_pi_mailbox_properties_get_contents(pi,
 					    NULL,
 					    NULL,
@@ -75,7 +75,7 @@ class MN:POP3:Mailbox:Properties from MN:PI:Mailbox:Properties
 
       g_value_take_string(VAL, mn_pop3_mailbox_build_name(username, hostname));
     };
-  
+
   class_init (class)
   {
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
@@ -83,7 +83,7 @@ class MN:POP3:Mailbox:Properties from MN:PI:Mailbox:Properties
     p_class->type = "pop3";
     p_class->combo_label = "POP3";
   }
-  
+
   init (self)
   {
     MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
diff --git a/src/mn-pop3-mailbox-properties.gob.stamp b/src/mn-pop3-mailbox-properties.gob.stamp
diff --git a/src/mn-pop3-mailbox-properties.h b/src/mn-pop3-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-pop3-mailbox.c b/src/mn-pop3-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:55 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -32,7 +31,7 @@
 #include <glib/gi18n.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
 #include <eel/eel.h>
-#ifdef WITH_SASL
+#if WITH_SASL
 #include <sasl/saslutil.h>
 #endif /* WITH_SASL */
 #include "mn-mailbox-private.h"
@@ -47,10 +46,10 @@ enum
 {
   STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE,
   STATE_CAPA,
-#ifdef WITH_SSL
+#if WITH_SSL
   STATE_STLS,
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
   STATE_AUTH,
 #endif
   STATE_APOP,
@@ -63,21 +62,18 @@ enum
 
 struct _MNClientSessionPrivate
 {
-  MNMailbox			*mailbox;
-  MNAuthenticatedMailbox	*authenticated_mailbox;
-  MNPIMailbox			*pi_mailbox;
+  MN_PI_MAILBOX_SESSION_PRIVATE;
   MNPOP3Mailbox			*self;
-  MNClientSession		*session;
   gboolean			in_list;
   gboolean			in_retr_top;
   char				*apop_timestamp;
   GSList			*auth_mechanisms;
   gboolean			top_supported;
-#ifdef WITH_SSL
+#if WITH_SSL
   gboolean			stls_supported;
   gboolean			stls_completed;
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
   GSList			*sasl_remaining_mechanisms;
   const char			*sasl_mechanism;
   gboolean			sasl_had_clientout;
@@ -107,7 +103,7 @@ struct _MNClientSessionResponse
 
 int mn_pop3_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES] = { 110, 110, 995 };
 
-#line 111 "mn-pop3-mailbox.c"
+#line 107 "mn-pop3-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_POP3_MAILBOX(x)
 #define SELF_CONST(x) MN_POP3_MAILBOX_CONST(x)
@@ -122,9 +118,8 @@ typedef MNPOP3Mailbox Self;
 typedef MNPOP3MailboxClass SelfClass;
 
 /* here are local prototypes */
-static void mn_pop3_mailbox_init (MNPOP3Mailbox * o) G_GNUC_UNUSED;
 static void mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class) G_GNUC_UNUSED;
-static GObject * ___2_mn_pop3_mailbox_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void mn_pop3_mailbox_init (MNPOP3Mailbox * self) G_GNUC_UNUSED;
 static void ___3_mn_pop3_mailbox_seal (MNMailbox * mailbox) G_GNUC_UNUSED;
 static MNMailbox * ___4_mn_pop3_mailbox_parse_uri (MNMailbox * dummy, const char * uri) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
@@ -132,7 +127,6 @@ static int mn_pop3_mailbox_enter_capa_cb (MNClientSession * session, MNClientSes
 static int mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void mn_pop3_mailbox_sasl_get_credentials_cb (MNClientSession * session, MNClientSessionPrivate * priv, const char ** username, const char ** password) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
@@ -147,15 +141,12 @@ static int mn_pop3_mailbox_enter_retr_top_cb (MNClientSession * session, MNClien
 static int mn_pop3_mailbox_handle_retr_top_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void ___19_mn_pop3_mailbox_impl_check (MNAuthenticatedMailbox * mailbox) G_GNUC_UNUSED;
-static void mn_pop3_mailbox_notice_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void mn_pop3_mailbox_warning_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static void ___18_mn_pop3_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox) G_GNUC_UNUSED;
 static MNClientSessionResponse * mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static void mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop, gboolean tried_pass) G_GNUC_UNUSED;
 static int mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void mn_pop3_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, int code, MNClientSessionResponse * response) G_GNUC_UNUSED;
 static void mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response, gboolean in_retr_top) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
@@ -167,7 +158,6 @@ static MNPIMailboxClass *parent_class = NULL;
 #define self_handle_capa_cb mn_pop3_mailbox_handle_capa_cb
 #define self_enter_stls_cb mn_pop3_mailbox_enter_stls_cb
 #define self_handle_stls_cb mn_pop3_mailbox_handle_stls_cb
-#define self_sasl_get_credentials_cb mn_pop3_mailbox_sasl_get_credentials_cb
 #define self_enter_auth_cb mn_pop3_mailbox_enter_auth_cb
 #define self_handle_auth_cb mn_pop3_mailbox_handle_auth_cb
 #define self_enter_apop_cb mn_pop3_mailbox_enter_apop_cb
@@ -182,14 +172,11 @@ static MNPIMailboxClass *parent_class = NULL;
 #define self_handle_retr_top_cb mn_pop3_mailbox_handle_retr_top_cb
 #define self_enter_quit_cb mn_pop3_mailbox_enter_quit_cb
 #define self_handle_quit_cb mn_pop3_mailbox_handle_quit_cb
-#define self_notice_cb mn_pop3_mailbox_notice_cb
-#define self_warning_cb mn_pop3_mailbox_warning_cb
 #define self_response_new_cb mn_pop3_mailbox_response_new_cb
 #define self_response_free_cb mn_pop3_mailbox_response_free_cb
 #define self_session_authenticate mn_pop3_mailbox_session_authenticate
 #define self_session_authenticate_fallback mn_pop3_mailbox_session_authenticate_fallback
 #define self_session_authenticated mn_pop3_mailbox_session_authenticated
-#define self_session_set_error_from_arguments mn_pop3_mailbox_session_set_error_from_arguments
 #define self_handle_list_response mn_pop3_mailbox_handle_list_response
 #define self_build_name mn_pop3_mailbox_build_name
 GType
@@ -243,23 +230,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 128 "mn-pop3-mailbox.gob"
+#line 125 "mn-pop3-mailbox.gob"
 	if(self->_priv->authentication_timer) { g_timer_destroy ((gpointer) self->_priv->authentication_timer); self->_priv->authentication_timer = NULL; }
-#line 249 "mn-pop3-mailbox.c"
+#line 236 "mn-pop3-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
-static void 
-mn_pop3_mailbox_init (MNPOP3Mailbox * o G_GNUC_UNUSED)
-{
-#define __GOB_FUNCTION__ "MN:POP3:Mailbox::init"
-	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_POP3_MAILBOX,MNPOP3MailboxPrivate);
-}
-#undef __GOB_FUNCTION__
-#line 130 "mn-pop3-mailbox.gob"
+#line 127 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class G_GNUC_UNUSED)
-#line 263 "mn-pop3-mailbox.c"
+#line 243 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -270,67 +250,54 @@ mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX);
 
-#line 136 "mn-pop3-mailbox.gob"
-	g_object_class->constructor = ___2_mn_pop3_mailbox_constructor;
-#line 150 "mn-pop3-mailbox.gob"
+#line 138 "mn-pop3-mailbox.gob"
 	mn_mailbox_class->seal = ___3_mn_pop3_mailbox_seal;
-#line 163 "mn-pop3-mailbox.gob"
+#line 151 "mn-pop3-mailbox.gob"
 	mn_mailbox_class->parse_uri = ___4_mn_pop3_mailbox_parse_uri;
-#line 772 "mn-pop3-mailbox.gob"
-	mn_authenticated_mailbox_class->impl_check = ___19_mn_pop3_mailbox_impl_check;
-#line 282 "mn-pop3-mailbox.c"
+#line 735 "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 131 "mn-pop3-mailbox.gob"
+#line 128 "mn-pop3-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "pop3";
     MN_PI_MAILBOX_CLASS(class)->default_ports = mn_pop3_mailbox_default_ports;
   
-#line 290 "mn-pop3-mailbox.c"
+#line 268 "mn-pop3-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
-
-
-
-#line 136 "mn-pop3-mailbox.gob"
-static GObject * 
-___2_mn_pop3_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 300 "mn-pop3-mailbox.c"
-#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
-	((G_OBJECT_CLASS(parent_class)->constructor)? \
-		(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
-		((GObject * )0))
-{
-#define __GOB_FUNCTION__ "MN:POP3:Mailbox::constructor"
+#line 133 "mn-pop3-mailbox.gob"
+static void 
+mn_pop3_mailbox_init (MNPOP3Mailbox * self G_GNUC_UNUSED)
+#line 275 "mn-pop3-mailbox.c"
 {
-#line 138 "mn-pop3-mailbox.gob"
-	
-    GObject *object;
-    MNMailbox *mailbox;
+#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"
 
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
+    mn_mailbox_set_format(MN_MAILBOX(self), "POP3");
+  
+#line 284 "mn-pop3-mailbox.c"
+ }
+}
+#undef __GOB_FUNCTION__
 
-    mn_mailbox_set_format(mailbox, "POP3");
 
-    return object;
-  }}
-#line 320 "mn-pop3-mailbox.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
 
-#line 150 "mn-pop3-mailbox.gob"
+#line 138 "mn-pop3-mailbox.gob"
 static void 
 ___3_mn_pop3_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 327 "mn-pop3-mailbox.c"
+#line 294 "mn-pop3-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->seal) \
 		(* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::seal"
 {
-#line 152 "mn-pop3-mailbox.gob"
+#line 140 "mn-pop3-mailbox.gob"
 	
     PARENT_HANDLER(mailbox);
 
@@ -338,14 +305,14 @@ ___3_mn_pop3_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
       mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username,
 					      MN_PI_MAILBOX(mailbox)->hostname);
   }}
-#line 342 "mn-pop3-mailbox.c"
+#line 309 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 163 "mn-pop3-mailbox.gob"
+#line 151 "mn-pop3-mailbox.gob"
 static MNMailbox * 
 ___4_mn_pop3_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri)
-#line 349 "mn-pop3-mailbox.c"
+#line 316 "mn-pop3-mailbox.c"
 #define PARENT_HANDLER(___dummy,___uri) \
 	((MN_MAILBOX_CLASS(parent_class)->parse_uri)? \
 		(* MN_MAILBOX_CLASS(parent_class)->parse_uri)(___dummy,___uri): \
@@ -353,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 165 "mn-pop3-mailbox.gob"
+#line 153 "mn-pop3-mailbox.gob"
 	
     int len;
     int buflen;
@@ -365,7 +332,7 @@ ___4_mn_pop3_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * ur
 
     len = strlen(uri);
     buflen = len + 1;
-    
+
     {
       char scheme_buf[buflen];
       char auth_buf[buflen];
@@ -419,100 +386,97 @@ ___4_mn_pop3_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * ur
 
     return mailbox;
   }}
-#line 423 "mn-pop3-mailbox.c"
+#line 390 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 231 "mn-pop3-mailbox.gob"
+#line 219 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 430 "mn-pop3-mailbox.c"
+#line 397 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_greeting_cb"
 {
-#line 235 "mn-pop3-mailbox.gob"
+#line 223 "mn-pop3-mailbox.gob"
 	
     priv->session = session;
-    
+
     switch (response->type)
       {
       case RESPONSE_OK:
 	if (response->arguments)
 	  {
 	    char *timestamp;
-	    
+
 	    timestamp = strchr(response->arguments, '<');
 	    if (timestamp)
 	      {
 		char *timestamp_end;
-		
+
 		timestamp_end = strchr(timestamp, '>');
 		if (timestamp_end)
 		  priv->apop_timestamp = g_strndup(timestamp, timestamp_end - timestamp + 1);
 	      }
 	  }
 	return STATE_CAPA;
-	
+
       case RESPONSE_ERR:
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
+	return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 465 "mn-pop3-mailbox.c"
+#line 431 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 266 "mn-pop3-mailbox.gob"
+#line 253 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_capa_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 471 "mn-pop3-mailbox.c"
+#line 437 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_capa_cb"
 {
-#line 269 "mn-pop3-mailbox.gob"
+#line 256 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "CAPA");
   }}
-#line 479 "mn-pop3-mailbox.c"
+#line 445 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 273 "mn-pop3-mailbox.gob"
+#line 260 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 485 "mn-pop3-mailbox.c"
+#line 451 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_capa_cb"
 {
-#line 277 "mn-pop3-mailbox.gob"
+#line 264 "mn-pop3-mailbox.gob"
 	
     self_handle_list_response(priv, response, FALSE);
 
     switch (response->type)
       {
       case RESPONSE_OK:
-	eel_g_slist_free_deep(priv->auth_mechanisms);
-	priv->auth_mechanisms = NULL;
-#ifdef WITH_SASL
-	g_slist_free(priv->sasl_remaining_mechanisms);
-	priv->sasl_remaining_mechanisms = NULL;
+	mn_g_slist_clear_deep(&priv->auth_mechanisms);
+#if WITH_SASL
+	mn_g_slist_clear(&priv->sasl_remaining_mechanisms);
 #endif
 	priv->top_supported = FALSE;
 	priv->self->_priv->login_delay = 0;
 	priv->login_delay_user = FALSE;
-#ifdef WITH_SSL
+#if WITH_SSL
 	priv->stls_supported = FALSE;
 #endif
 
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
-	
+
       case RESPONSE_ERR:
       case RESPONSE_LIST_END:
 	if (priv->authenticated)
 	  return STATE_LIST;
 
-#ifdef WITH_SSL
+#if WITH_SSL
 	if (priv->pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL
 	    && ! priv->stls_completed)
 	  {
@@ -520,32 +484,32 @@ mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionRespon
 	      return STATE_STLS;
 	    else
 	      {
-		mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS"));
+		mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS"));
 		return STATE_QUIT;
 	      }
 	  }
 	else
 #endif /* WITH_SSL */
 	  return self_session_authenticate(priv);
-      
+
       case RESPONSE_LIST_ITEM:
 	{
 	  char **tokens;
 	  gboolean login_delay_error = FALSE;
-	  
+
 	  tokens = g_strsplit(response->arguments, " ", 0);
 	  if (tokens[0])
 	    {
 	      if (! strcmp(tokens[0], "SASL"))
 		{
 		  int i;
-		  
+
 		  for (i = 1; tokens[i]; i++)
 		    priv->auth_mechanisms = g_slist_append(priv->auth_mechanisms, g_strdup(tokens[i]));
 		}
 	      else if (! strcmp(tokens[0], "TOP"))
 		priv->top_supported = TRUE;
-#ifdef WITH_SSL
+#if WITH_SSL
 	      else if (! strcmp(tokens[0], "STLS"))
 		priv->stls_supported = TRUE;
 #endif /* WITH_SSL */
@@ -566,47 +530,48 @@ mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionRespon
 		}
 	    }
 	  g_strfreev(tokens);
-	  
+
 	  if (login_delay_error)
-	    return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("invalid arguments for the LOGIN-DELAY capability"));
+	    return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("invalid arguments for the LOGIN-DELAY capability"));
 	}
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
-	
+
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 580 "mn-pop3-mailbox.c"
+#line 544 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 368 "mn-pop3-mailbox.gob"
+#line 353 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 586 "mn-pop3-mailbox.c"
+#line 550 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_stls_cb"
 {
-#line 371 "mn-pop3-mailbox.gob"
+#line 356 "mn-pop3-mailbox.gob"
 	
-#ifdef WITH_SSL
+#if WITH_SSL
     return mn_client_session_write(session, "STLS");
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SSL */
   }}
-#line 598 "mn-pop3-mailbox.c"
+#line 563 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 379 "mn-pop3-mailbox.gob"
+#line 365 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 604 "mn-pop3-mailbox.c"
+#line 569 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_stls_cb"
 {
-#line 383 "mn-pop3-mailbox.gob"
+#line 369 "mn-pop3-mailbox.gob"
 	
-#ifdef WITH_SSL
+#if WITH_SSL
     switch (response->type)
       {
       case RESPONSE_OK:
@@ -624,56 +589,30 @@ mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionRespon
 	 */
 
       case RESPONSE_ERR:
-	return self_session_authenticate(priv);
+	mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
+	return STATE_QUIT;
 
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SSL */
   }}
-#line 637 "mn-pop3-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 412 "mn-pop3-mailbox.gob"
-static void 
-mn_pop3_mailbox_sasl_get_credentials_cb (MNClientSession * session, MNClientSessionPrivate * priv, const char ** username, const char ** password)
-#line 643 "mn-pop3-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:POP3:Mailbox::sasl_get_credentials_cb"
-{
-#line 417 "mn-pop3-mailbox.gob"
-	
-#ifdef WITH_SASL
-    g_return_if_fail(username != NULL || password != NULL);
-
-    mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox,
-					      username != NULL,
-					      password != NULL);
-
-    if (username)
-      *username = priv->authenticated_mailbox->runtime_username;
-
-    if (password)
-      *password = priv->authenticated_mailbox->runtime_password;
-#else
-    g_return_if_reached();
-#endif /* WITH_SASL */
-  }}
-#line 665 "mn-pop3-mailbox.c"
+#line 604 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 435 "mn-pop3-mailbox.gob"
+#line 400 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 671 "mn-pop3-mailbox.c"
+#line 610 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_auth_cb"
 {
-#line 438 "mn-pop3-mailbox.gob"
+#line 403 "mn-pop3-mailbox.gob"
 	
-#ifdef WITH_SASL
+#if WITH_SASL
     /*
      * RFC 2449 6.3 specifies that POP3 supports the initial client
      * response feature of SASL.
@@ -691,7 +630,7 @@ mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate
 						    priv->sasl_had_clientout ? NULL : &initial_clientout,
 						    priv->sasl_had_clientout ? NULL : &initial_clientoutlen))
       {
-	g_return_val_if_fail(priv->sasl_mechanism != NULL, 0);
+	g_assert(priv->sasl_mechanism != NULL);
 
 	if (initial_clientoutlen > 0)
 	  {
@@ -702,7 +641,7 @@ mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate
 
 	    result = sasl_encode64(initial_clientout, initial_clientoutlen, buf64, sizeof(buf64), &outlen);
 	    if (result != SASL_OK)
-	      return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode Base64: %s"), sasl_errstring(result, NULL, NULL));
+	      return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode Base64: %s"), sasl_errstring(result, NULL, NULL));
 
 	    str = g_strndup(buf64, outlen);
 	    result = mn_client_session_write(session, "AUTH %s %s", priv->sasl_mechanism, str);
@@ -718,35 +657,36 @@ mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate
 	  }
       }
     else
-      return priv->authenticated_mailbox->cancelled
+      return priv->pi_mailbox->auth_cancelled
 	? STATE_QUIT
 	: self_session_authenticate_fallback(priv, FALSE, FALSE);
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SASL */
   }}
-#line 729 "mn-pop3-mailbox.c"
+#line 669 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 492 "mn-pop3-mailbox.gob"
+#line 458 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 735 "mn-pop3-mailbox.c"
+#line 675 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_auth_cb"
 {
-#line 496 "mn-pop3-mailbox.gob"
+#line 462 "mn-pop3-mailbox.gob"
 	
-#ifdef WITH_SASL
+#if WITH_SASL
     switch (response->type)
       {
       case RESPONSE_OK:
 	return mn_client_session_sasl_authentication_done(session)
 	  ? self_session_authenticated(priv)
 	  : MN_CLIENT_SESSION_RESULT_DISCONNECT;
-	
+
       case RESPONSE_ERR:
-	if (priv->authenticated_mailbox->cancelled)
+	if (priv->pi_mailbox->auth_cancelled)
 	  return STATE_QUIT;
 	else
 	  {
@@ -758,7 +698,7 @@ mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionRespon
 		 * servers nevertheless, by retrying without the SASL
 		 * initial client response.
 		 */
-	      
+
 		mn_client_session_notice(session, _("SASL authentication with initial client response failed, retrying without initial client response"));
 		return STATE_AUTH;
 	      }
@@ -768,67 +708,66 @@ mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionRespon
 
       case RESPONSE_CONTINUATION:
 	return mn_client_session_sasl_authentication_step(session, response->arguments);
-	
+
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SASL */
   }}
-#line 780 "mn-pop3-mailbox.c"
+#line 721 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 537 "mn-pop3-mailbox.gob"
+#line 504 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 786 "mn-pop3-mailbox.c"
+#line 727 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_apop_cb"
 {
-#line 540 "mn-pop3-mailbox.gob"
+#line 507 "mn-pop3-mailbox.gob"
 	
     MNMD5Context context;
     char buf[33];
-  
-    g_return_val_if_fail(priv->apop_timestamp != NULL, 0);
 
-    mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox, TRUE, TRUE);
-    if (! priv->authenticated_mailbox->runtime_username
-	|| ! priv->authenticated_mailbox->runtime_password)
+    g_assert(priv->apop_timestamp != NULL);
+
+    if (! mn_pi_mailbox_fill_credentials(priv->pi_mailbox, TRUE, TRUE))
       return STATE_QUIT;
 
     mn_md5_init(&context);
     mn_md5_update(&context, priv->apop_timestamp, strlen(priv->apop_timestamp));
-    mn_md5_update(&context, priv->authenticated_mailbox->runtime_password, strlen(priv->authenticated_mailbox->runtime_password));
+    mn_md5_update(&context, priv->pi_mailbox->runtime_password, strlen(priv->pi_mailbox->runtime_password));
     mn_md5_end(&context, buf);
 
-    return mn_client_session_write(session, "APOP %s %s", priv->authenticated_mailbox->runtime_username, buf);
+    return mn_client_session_write(session, "APOP %s %s", priv->pi_mailbox->runtime_username, buf);
   }}
-#line 809 "mn-pop3-mailbox.c"
+#line 748 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 559 "mn-pop3-mailbox.gob"
+#line 524 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 815 "mn-pop3-mailbox.c"
+#line 754 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_apop_cb"
-#line 559 "mn-pop3-mailbox.gob"
+#line 524 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 559 "mn-pop3-mailbox.gob"
+#line 524 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (response != NULL, (int )0);
-#line 559 "mn-pop3-mailbox.gob"
+#line 524 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 824 "mn-pop3-mailbox.c"
+#line 763 "mn-pop3-mailbox.c"
 {
-#line 563 "mn-pop3-mailbox.gob"
+#line 528 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
       case RESPONSE_OK:
 	return self_session_authenticated(priv);
-	
+
       case RESPONSE_ERR:
 	return self_session_authenticate_fallback(priv, TRUE, FALSE);
 
@@ -836,41 +775,39 @@ mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionRespon
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 840 "mn-pop3-mailbox.c"
+#line 779 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 577 "mn-pop3-mailbox.gob"
+#line 542 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 846 "mn-pop3-mailbox.c"
+#line 785 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_user_cb"
-#line 577 "mn-pop3-mailbox.gob"
+#line 542 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (session != NULL, (int )0);
-#line 577 "mn-pop3-mailbox.gob"
+#line 542 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 853 "mn-pop3-mailbox.c"
+#line 792 "mn-pop3-mailbox.c"
 {
-#line 580 "mn-pop3-mailbox.gob"
+#line 545 "mn-pop3-mailbox.gob"
 	
-    mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox, TRUE, TRUE);
-    if (! priv->authenticated_mailbox->runtime_username
-	|| ! priv->authenticated_mailbox->runtime_password)
+    if (! mn_pi_mailbox_fill_credentials(priv->pi_mailbox, TRUE, TRUE))
       return STATE_QUIT;
 
-    return mn_client_session_write(session, "USER %s", priv->authenticated_mailbox->runtime_username);
+    return mn_client_session_write(session, "USER %s", priv->pi_mailbox->runtime_username);
   }}
-#line 864 "mn-pop3-mailbox.c"
+#line 801 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 589 "mn-pop3-mailbox.gob"
+#line 552 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 870 "mn-pop3-mailbox.c"
+#line 807 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_user_cb"
 {
-#line 593 "mn-pop3-mailbox.gob"
+#line 556 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -878,40 +815,40 @@ mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionRespon
 	return STATE_PASS;
 
       case RESPONSE_ERR:
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
+	mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 	return STATE_QUIT;
 
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 889 "mn-pop3-mailbox.c"
+#line 826 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 608 "mn-pop3-mailbox.gob"
+#line 571 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 895 "mn-pop3-mailbox.c"
+#line 832 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_pass_cb"
 {
-#line 611 "mn-pop3-mailbox.gob"
+#line 574 "mn-pop3-mailbox.gob"
 	
-    g_return_val_if_fail(priv->authenticated_mailbox->runtime_password != NULL, 0);
+    g_assert(priv->pi_mailbox->runtime_password != NULL);
 
-    return mn_client_session_write(session, "PASS %s", priv->authenticated_mailbox->runtime_password);
+    return mn_client_session_write(session, "PASS %s", priv->pi_mailbox->runtime_password);
   }}
-#line 905 "mn-pop3-mailbox.c"
+#line 842 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 617 "mn-pop3-mailbox.gob"
+#line 580 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 911 "mn-pop3-mailbox.c"
+#line 848 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_pass_cb"
 {
-#line 621 "mn-pop3-mailbox.gob"
+#line 584 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -925,31 +862,31 @@ mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionRespon
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 929 "mn-pop3-mailbox.c"
+#line 866 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 635 "mn-pop3-mailbox.gob"
+#line 598 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 935 "mn-pop3-mailbox.c"
+#line 872 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_list_cb"
 {
-#line 638 "mn-pop3-mailbox.gob"
+#line 601 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "LIST");
   }}
-#line 943 "mn-pop3-mailbox.c"
+#line 880 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 642 "mn-pop3-mailbox.gob"
+#line 605 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 949 "mn-pop3-mailbox.c"
+#line 886 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_cb"
 {
-#line 646 "mn-pop3-mailbox.gob"
+#line 609 "mn-pop3-mailbox.gob"
 	
     self_handle_list_response(priv, response, FALSE);
 
@@ -963,36 +900,35 @@ mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionRespon
 	return STATE_RETR_TOP;
 
       case RESPONSE_ERR:
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
+	return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 
       case RESPONSE_LIST_ITEM:
 	{
 	  int num;
 	  int size;
-	  
+
 	  if (sscanf(response->arguments, "%d %d", &num, &size) == 2)
-	    priv->message_numbers = g_slist_append(priv->message_numbers, GINT_TO_POINTER(num));
+	    priv->message_numbers = g_slist_prepend(priv->message_numbers, GINT_TO_POINTER(num));
 	  else			/* compliance error */
 	    return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 	}
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
-	
+
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 986 "mn-pop3-mailbox.c"
+#line 922 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 679 "mn-pop3-mailbox.gob"
+#line 641 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_retr_top_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 992 "mn-pop3-mailbox.c"
+#line 928 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_retr_top_cb"
 {
-#line 682 "mn-pop3-mailbox.gob"
+#line 644 "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));
@@ -1003,31 +939,30 @@ mn_pop3_mailbox_enter_retr_top_cb (MNClientSession * session, MNClientSessionPri
 	mn_mailbox_set_messages(priv->mailbox, priv->messages);
 
 	/*
-	 * In impl_check(), we do not hold the GDK lock while
+	 * In authenticated_check(), we do not hold the GDK lock while
 	 * unreffing the message list. We have just exposed the list
 	 * to other threads through our mn_mailbox_set_messages()
 	 * call, so unref it here, while we hold the GDK lock.
 	 */
-	mn_g_object_slist_free(priv->messages);
-	priv->messages = NULL;
+	mn_g_object_slist_clear(&priv->messages);
 
 	gdk_flush();
 	GDK_THREADS_LEAVE();
-	
+
 	return STATE_QUIT;
       }
   }}
-#line 1021 "mn-pop3-mailbox.c"
+#line 956 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 707 "mn-pop3-mailbox.gob"
+#line 668 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_retr_top_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1027 "mn-pop3-mailbox.c"
+#line 962 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_retr_top_cb"
 {
-#line 711 "mn-pop3-mailbox.gob"
+#line 672 "mn-pop3-mailbox.gob"
 	
     self_handle_list_response(priv, response, TRUE);
 
@@ -1040,17 +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_append(priv->messages,
-					mn_message_new_from_buffer(priv->mailbox,
-								   priv->current_message->str,
-								   priv->current_message->len));
+	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;
 
       case RESPONSE_ERR:
-	priv->messages = g_slist_append(priv->messages,
-					mn_message_new_from_error(priv->mailbox,
-								  response->arguments ? response->arguments : _("unknown error")));
+	priv->messages = g_slist_prepend(priv->messages,
+					 mn_message_new_from_error(priv->mailbox,
+								   response->arguments ? response->arguments : _("unknown error"),
+								   MN_MESSAGE_NEW));
 	priv->current_message_number = priv->current_message_number->next;
 	return STATE_RETR_TOP;
 
@@ -1062,31 +1000,31 @@ mn_pop3_mailbox_handle_retr_top_cb (MNClientSession * session, MNClientSessionRe
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 1066 "mn-pop3-mailbox.c"
+#line 1004 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 746 "mn-pop3-mailbox.gob"
+#line 710 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 1072 "mn-pop3-mailbox.c"
+#line 1010 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_quit_cb"
 {
-#line 749 "mn-pop3-mailbox.gob"
+#line 713 "mn-pop3-mailbox.gob"
 	
     return mn_client_session_write(session, "QUIT");
   }}
-#line 1080 "mn-pop3-mailbox.c"
+#line 1018 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 753 "mn-pop3-mailbox.gob"
+#line 717 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1086 "mn-pop3-mailbox.c"
+#line 1024 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_quit_cb"
 {
-#line 757 "mn-pop3-mailbox.gob"
+#line 721 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -1094,36 +1032,35 @@ mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionRespon
 	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
 
       case RESPONSE_ERR:
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
+	return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }}
-#line 1105 "mn-pop3-mailbox.c"
+#line 1042 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 772 "mn-pop3-mailbox.gob"
+#line 735 "mn-pop3-mailbox.gob"
 static void 
-___19_mn_pop3_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
-#line 1111 "mn-pop3-mailbox.c"
+___18_mn_pop3_mailbox_authenticated_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED)
+#line 1048 "mn-pop3-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
-	{ if(MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_check) \
-		(* MN_AUTHENTICATED_MAILBOX_CLASS(parent_class)->impl_check)(___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::impl_check"
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::authenticated_check"
 {
-#line 774 "mn-pop3-mailbox.gob"
+#line 737 "mn-pop3-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     MNClientSessionState states[] = {
       { STATE_GREETING,		NULL,			self_handle_greeting_cb },
       { STATE_CAPA,		self_enter_capa_cb,	self_handle_capa_cb },
-#ifdef WITH_SSL
+#if WITH_SSL
       { STATE_STLS,		self_enter_stls_cb,	self_handle_stls_cb },
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
       { STATE_AUTH,		self_enter_auth_cb,	self_handle_auth_cb },
 #endif
       { STATE_APOP,		self_enter_apop_cb,	self_handle_apop_cb },
@@ -1132,18 +1069,18 @@ ___19_mn_pop3_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
       { STATE_LIST,		self_enter_list_cb,	self_handle_list_cb },
       { STATE_RETR_TOP,		self_enter_retr_top_cb,	self_handle_retr_top_cb },
       { STATE_QUIT,		self_enter_quit_cb,	self_handle_quit_cb },
-      
+
       MN_CLIENT_SESSION_STATES_END
     };
     MNClientSessionCallbacks callbacks = {
-      self_notice_cb,
-      self_warning_cb,
+      mn_pi_mailbox_notice_cb,
+      mn_pi_mailbox_warning_cb,
       self_response_new_cb,
       self_response_free_cb,
       NULL,			/* pre_read */
       NULL,			/* post_read */
-#ifdef WITH_SASL
-      self_sasl_get_credentials_cb,
+#if WITH_SASL
+      mn_pi_mailbox_sasl_get_credentials_cb,
 #endif
     };
     MNClientSessionPrivate priv;
@@ -1153,7 +1090,7 @@ ___19_mn_pop3_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
     PARENT_HANDLER(mailbox);
 
     /* check if the parent handler has disabled the mailbox */
-    if (! MN_MAILBOX(self)->must_poll)
+    if (! mn_mailbox_get_poll(MN_MAILBOX(self)))
       return;
 
     if (selfp->login_delay && selfp->authentication_timer)
@@ -1166,7 +1103,7 @@ ___19_mn_pop3_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 	if (elapsed < selfp->login_delay)
 	  {
 	    int sleeptime;
-	    
+
 	    sleeptime = selfp->login_delay - elapsed;
 	    mn_mailbox_notice(MN_MAILBOX(self),
 			      ngettext("honouring LOGIN-DELAY, sleeping for %i second",
@@ -1176,16 +1113,14 @@ ___19_mn_pop3_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 	    sleep(sleeptime);
 	  }
       }
-  
+
     memset(&priv, 0, sizeof(priv));
-    priv.mailbox = MN_MAILBOX(self);
-    priv.authenticated_mailbox = mailbox;
-    priv.pi_mailbox = MN_PI_MAILBOX(self);
+    mn_pi_mailbox_session_private_init(MN_PI_MAILBOX(self), &priv);
     priv.self = self;
 
     status = mn_client_session_run(states,
 				   &callbacks,
-#ifdef WITH_SSL
+#if WITH_SSL
 				   priv.pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL,
 #endif
 				   priv.pi_mailbox->hostname,
@@ -1195,19 +1130,24 @@ ___19_mn_pop3_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
 
     if (! status)
       {
+	char *escaped;
+
+	escaped = mn_utf8_escape(err->message);
+	g_error_free(err);
+
 	GDK_THREADS_ENTER();
 
-	mn_mailbox_set_error(MN_MAILBOX(self), "%s", err->message);
+	mn_mailbox_set_error(MN_MAILBOX(self), "%s", escaped);
 
 	gdk_flush();
 	GDK_THREADS_LEAVE();
 
-	g_error_free(err);
+	g_free(escaped);
       }
 
     g_free(priv.apop_timestamp);
     eel_g_slist_free_deep(priv.auth_mechanisms);
-#ifdef WITH_SASL
+#if WITH_SASL
     g_slist_free(priv.sasl_remaining_mechanisms);
 #endif
     g_slist_free(priv.message_numbers);
@@ -1215,46 +1155,18 @@ ___19_mn_pop3_mailbox_impl_check (MNAuthenticatedMailbox * mailbox G_GNUC_UNUSED
     if (priv.current_message)
       g_string_free(priv.current_message, TRUE);
   }}
-#line 1219 "mn-pop3-mailbox.c"
+#line 1159 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 875 "mn-pop3-mailbox.gob"
-static void 
-mn_pop3_mailbox_notice_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv)
-#line 1226 "mn-pop3-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:POP3:Mailbox::notice_cb"
-{
-#line 879 "mn-pop3-mailbox.gob"
-	
-    mn_mailbox_notice(priv->mailbox, "%s", message);
-  }}
-#line 1234 "mn-pop3-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 883 "mn-pop3-mailbox.gob"
-static void 
-mn_pop3_mailbox_warning_cb (MNClientSession * session, const char * message, MNClientSessionPrivate * priv)
-#line 1240 "mn-pop3-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:POP3:Mailbox::warning_cb"
-{
-#line 887 "mn-pop3-mailbox.gob"
-	
-    mn_mailbox_warning(priv->mailbox, "%s", message);
-  }}
-#line 1248 "mn-pop3-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 891 "mn-pop3-mailbox.gob"
+#line 841 "mn-pop3-mailbox.gob"
 static MNClientSessionResponse * 
 mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
-#line 1254 "mn-pop3-mailbox.c"
+#line 1166 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_new_cb"
 {
-#line 895 "mn-pop3-mailbox.gob"
+#line 845 "mn-pop3-mailbox.gob"
 	
     MNClientSessionResponse *response = NULL;
 
@@ -1263,106 +1175,106 @@ mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, 
      *
      * RFC 1939 3 specifies that "keywords and arguments consist of
      * printable ASCII characters", however that refers to
-     * commands. Nothing is said about responses.
-     *
-     * We need responses to be valid UTF-8, because they might end up
-     * showing up in the UI (for instance, through
-     * session_set_error_from_arguments()).
+     * commands. Nothing is said about responses. We therefore do not
+     * check the encoding of responses.
      *
-     * However, RETR/TOP multiline responses do not need to (and must
-     * not) be validated: most servers send them in whatever charset
-     * the original message is, and our mn-message-mime implementation
-     * handles that.
+     * Safety:
+     *   - we ensure that GTK+ will only receive UTF-8 data by
+     *     escaping error messages in authenticated_check()
+     *   - responses ending up in mn_mailbox_notice() need not be
+     *     valid UTF-8, since g_log() escapes unsafe and non UTF-8
+     *     characters
+     *   - RETR/TOP multiline responses are passed to our
+     *     mn-message-mime implementation, which handles character set
+     *     conversions
      */
-    if (priv->in_retr_top || g_utf8_validate(input, -1, NULL))
+
+    if (priv->in_list)
       {
-	if (priv->in_list)
+	response = g_new0(MNClientSessionResponse, 1);
+	if (! strcmp(input, "."))
+	  response->type = RESPONSE_LIST_END;
+	else if (g_str_has_prefix(input, ".."))
+	  {
+	    response->type = RESPONSE_LIST_ITEM;
+	    response->arguments = g_strdup(input + 1); /* skip the initial dot */
+	  }
+	else
+	  {
+	    response->type = RESPONSE_LIST_ITEM;
+	    response->arguments = g_strdup(input);
+	  }
+      }
+    else
+      {
+	if (g_str_has_prefix(input, "+ "))
 	  {
 	    response = g_new0(MNClientSessionResponse, 1);
-	    if (! strcmp(input, "."))
-	      response->type = RESPONSE_LIST_END;
-	    else if (g_str_has_prefix(input, ".."))
-	      {
-		response->type = RESPONSE_LIST_ITEM;
-		response->arguments = g_strdup(input + 1); /* skip the initial dot */
-	      }
-	    else
-	      {
-		response->type = RESPONSE_LIST_ITEM;
-		response->arguments = g_strdup(input);
-	      }
+	    response->type = RESPONSE_CONTINUATION;
+	    response->arguments = g_strdup(input + 2);
 	  }
 	else
 	  {
-	    if (g_str_has_prefix(input, "+ "))
+	    ResponseType type;
+	    int after_status = 0;
+
+	    if (g_str_has_prefix(input, "+OK"))
 	      {
-		response = g_new0(MNClientSessionResponse, 1);
-		response->type = RESPONSE_CONTINUATION;
-		response->arguments = g_strdup(input + 2);
+		type = RESPONSE_OK;
+		after_status = 3;
 	      }
-	    else
+	    else if (g_str_has_prefix(input, "-ERR"))
 	      {
-		ResponseType type;
-		int after_status = 0;
-		
-		if (g_str_has_prefix(input, "+OK"))
-		  {
-		    type = RESPONSE_OK;
-		    after_status = 3;
-		  }
-		else if (g_str_has_prefix(input, "-ERR"))
-		  {
-		    type = RESPONSE_ERR;
-		    after_status = 4;
-		  }
-		
-		if (after_status)
+		type = RESPONSE_ERR;
+		after_status = 4;
+	      }
+
+	    if (after_status)
+	      {
+		if (input[after_status] == 0 || input[after_status] == ' ')
 		  {
-		    if (input[after_status] == 0 || input[after_status] == ' ')
-		      {
-			response = g_new0(MNClientSessionResponse, 1);
-			response->type = type;
-			if (input[after_status] == ' ')
-			  response->arguments = g_strdup(input + after_status + 1);
-		      }
+		    response = g_new0(MNClientSessionResponse, 1);
+		    response->type = type;
+		    if (input[after_status] == ' ')
+		      response->arguments = g_strdup(input + after_status + 1);
 		  }
 	      }
 	  }
       }
-    
+
     return response;
   }}
-#line 1336 "mn-pop3-mailbox.c"
+#line 1248 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 973 "mn-pop3-mailbox.gob"
+#line 923 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1342 "mn-pop3-mailbox.c"
+#line 1254 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_free_cb"
 {
-#line 977 "mn-pop3-mailbox.gob"
+#line 927 "mn-pop3-mailbox.gob"
 	
     g_free(response->arguments);
     g_free(response);
   }}
-#line 1351 "mn-pop3-mailbox.c"
+#line 1263 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 982 "mn-pop3-mailbox.gob"
+#line 932 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
-#line 1357 "mn-pop3-mailbox.c"
+#line 1269 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate"
-#line 982 "mn-pop3-mailbox.gob"
+#line 932 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1362 "mn-pop3-mailbox.c"
+#line 1274 "mn-pop3-mailbox.c"
 {
-#line 984 "mn-pop3-mailbox.gob"
+#line 934 "mn-pop3-mailbox.gob"
 	
-#ifdef WITH_SASL
+#if WITH_SASL
     g_slist_free(priv->sasl_remaining_mechanisms);
     priv->sasl_remaining_mechanisms = g_slist_copy(priv->auth_mechanisms);
 #endif /* WITH_SASL */
@@ -1371,10 +1283,10 @@ mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
       {
 	if (*priv->pi_mailbox->authmech != '+')
 	  {
-#ifdef WITH_SASL
+#if WITH_SASL
 	    return STATE_AUTH;
 #else
-	    mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in"));
+	    mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in"));
 	    return STATE_QUIT;
 #endif /* WITH_SASL */
 	  }
@@ -1386,7 +1298,7 @@ mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 		  return STATE_APOP;
 		else
 		  {
-		    mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support APOP authentication"));
+		    mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support APOP authentication"));
 		    return STATE_QUIT;
 		  }
 	      }
@@ -1394,14 +1306,14 @@ mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 	      return STATE_USER;
 	    else
 	      {
-		mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech);
+		mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech);
 		return STATE_QUIT;
 	      }
 	  }
       }
     else
       {
-#ifdef WITH_SASL
+#if WITH_SASL
 	if (priv->sasl_remaining_mechanisms)
 	  return STATE_AUTH;
 #endif /* WITH_SASL */
@@ -1411,24 +1323,24 @@ mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
 	  return STATE_USER;
       }
   }}
-#line 1415 "mn-pop3-mailbox.c"
+#line 1327 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1035 "mn-pop3-mailbox.gob"
+#line 985 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop, gboolean tried_pass)
-#line 1421 "mn-pop3-mailbox.c"
+#line 1333 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate_fallback"
-#line 1035 "mn-pop3-mailbox.gob"
+#line 985 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1426 "mn-pop3-mailbox.c"
+#line 1338 "mn-pop3-mailbox.c"
 {
-#line 1039 "mn-pop3-mailbox.gob"
+#line 989 "mn-pop3-mailbox.gob"
 	
     if (! priv->pi_mailbox->authmech)
       {
-#ifdef WITH_SASL
+#if WITH_SASL
 	if (priv->sasl_mechanism)
 	  {
 	    GSList *elem;
@@ -1461,31 +1373,31 @@ mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gb
 	  }
       }
 
-    if (priv->authenticated_mailbox->prompted)
+    if (priv->pi_mailbox->auth_prompted)
       {
-	mn_authenticated_mailbox_authentication_failed(priv->authenticated_mailbox);
+	mn_pi_mailbox_auth_failed(priv->pi_mailbox);
 	return self_session_authenticate(priv);
       }
     else
       {
-	mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed"));
+	mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed"));
 	return STATE_QUIT;
       }
   }}
-#line 1476 "mn-pop3-mailbox.c"
+#line 1388 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1087 "mn-pop3-mailbox.gob"
+#line 1037 "mn-pop3-mailbox.gob"
 static int 
 mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
-#line 1482 "mn-pop3-mailbox.c"
+#line 1394 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticated"
-#line 1087 "mn-pop3-mailbox.gob"
+#line 1037 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (priv != NULL, (int )0);
-#line 1487 "mn-pop3-mailbox.c"
+#line 1399 "mn-pop3-mailbox.c"
 {
-#line 1089 "mn-pop3-mailbox.gob"
+#line 1039 "mn-pop3-mailbox.gob"
 	
     priv->authenticated = TRUE;
     if (priv->self->_priv->login_delay)
@@ -1512,44 +1424,22 @@ mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
       ? STATE_CAPA
       : STATE_LIST;
   }}
-#line 1516 "mn-pop3-mailbox.c"
-#undef __GOB_FUNCTION__
-
-#line 1116 "mn-pop3-mailbox.gob"
-static void 
-mn_pop3_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, int code, MNClientSessionResponse * response)
-#line 1522 "mn-pop3-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_set_error_from_arguments"
-#line 1116 "mn-pop3-mailbox.gob"
-	g_return_if_fail (priv != NULL);
-#line 1116 "mn-pop3-mailbox.gob"
-	g_return_if_fail (response != NULL);
-#line 1529 "mn-pop3-mailbox.c"
-{
-#line 1120 "mn-pop3-mailbox.gob"
-	
-    if (response->arguments)
-      mn_client_session_error(priv->session, code, "\"%s\"", response->arguments);
-    else
-      mn_client_session_error(priv->session, code, _("unknown server error"));
-  }}
-#line 1538 "mn-pop3-mailbox.c"
+#line 1428 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1127 "mn-pop3-mailbox.gob"
+#line 1066 "mn-pop3-mailbox.gob"
 static void 
 mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response, gboolean in_retr_top)
-#line 1544 "mn-pop3-mailbox.c"
+#line 1434 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_response"
-#line 1127 "mn-pop3-mailbox.gob"
+#line 1066 "mn-pop3-mailbox.gob"
 	g_return_if_fail (priv != NULL);
-#line 1127 "mn-pop3-mailbox.gob"
+#line 1066 "mn-pop3-mailbox.gob"
 	g_return_if_fail (response != NULL);
-#line 1551 "mn-pop3-mailbox.c"
+#line 1441 "mn-pop3-mailbox.c"
 {
-#line 1131 "mn-pop3-mailbox.gob"
+#line 1070 "mn-pop3-mailbox.gob"
 	
     switch (response->type)
       {
@@ -1567,24 +1457,24 @@ mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSes
 	break;
       }
   }}
-#line 1571 "mn-pop3-mailbox.c"
+#line 1461 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 1149 "mn-pop3-mailbox.gob"
+#line 1088 "mn-pop3-mailbox.gob"
 char * 
 mn_pop3_mailbox_build_name (const char * username, const char * hostname)
-#line 1577 "mn-pop3-mailbox.c"
+#line 1467 "mn-pop3-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:POP3:Mailbox::build_name"
-#line 1149 "mn-pop3-mailbox.gob"
+#line 1088 "mn-pop3-mailbox.gob"
 	g_return_val_if_fail (hostname != NULL, (char * )0);
-#line 1582 "mn-pop3-mailbox.c"
+#line 1472 "mn-pop3-mailbox.c"
 {
-#line 1151 "mn-pop3-mailbox.gob"
+#line 1090 "mn-pop3-mailbox.gob"
 	
     return username
       ? g_strdup_printf("%s@%s", username, hostname)
       : g_strdup(hostname);
   }}
-#line 1590 "mn-pop3-mailbox.c"
+#line 1480 "mn-pop3-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-pop3-mailbox.gob b/src/mn-pop3-mailbox.gob
@@ -9,7 +9,7 @@
  *	- RFC 2595
  *	- RFC 2384
  *
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -26,7 +26,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-pi-mailbox.h"
@@ -46,7 +46,7 @@ extern int mn_pop3_mailbox_default_ports[MN_PI_MAILBOX_N_CONNECTION_TYPES];
 #include <glib/gi18n.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
 #include <eel/eel.h>
-#ifdef WITH_SASL
+#if WITH_SASL
 #include <sasl/saslutil.h>
 #endif /* WITH_SASL */
 #include "mn-mailbox-private.h"
@@ -61,10 +61,10 @@ enum
 {
   STATE_GREETING = MN_CLIENT_SESSION_INITIAL_STATE,
   STATE_CAPA,
-#ifdef WITH_SSL
+#if WITH_SSL
   STATE_STLS,
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
   STATE_AUTH,
 #endif
   STATE_APOP,
@@ -77,21 +77,18 @@ enum
 
 struct _MNClientSessionPrivate
 {
-  MNMailbox			*mailbox;
-  MNAuthenticatedMailbox	*authenticated_mailbox;
-  MNPIMailbox			*pi_mailbox;
+  MN_PI_MAILBOX_SESSION_PRIVATE;
   MNPOP3Mailbox			*self;
-  MNClientSession		*session;
   gboolean			in_list;
   gboolean			in_retr_top;
   char				*apop_timestamp;
   GSList			*auth_mechanisms;
   gboolean			top_supported;
-#ifdef WITH_SSL
+#if WITH_SSL
   gboolean			stls_supported;
   gboolean			stls_completed;
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
   GSList			*sasl_remaining_mechanisms;
   const char			*sasl_mechanism;
   gboolean			sasl_had_clientout;
@@ -133,18 +130,9 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
     MN_PI_MAILBOX_CLASS(class)->default_ports = mn_pop3_mailbox_default_ports;
   }
 
-  override (G:Object) GObject *
-    constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
+  init (self)
   {
-    GObject *object;
-    MNMailbox *mailbox;
-
-    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
-    mailbox = MN_MAILBOX(object);
-
-    mn_mailbox_set_format(mailbox, "POP3");
-
-    return object;
+    mn_mailbox_set_format(MN_MAILBOX(self), "POP3");
   }
 
   override (MN:Mailbox) void
@@ -156,7 +144,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
       mailbox->runtime_name = self_build_name(MN_AUTHENTICATED_MAILBOX(mailbox)->username,
 					      MN_PI_MAILBOX(mailbox)->hostname);
   }
-  
+
   /*
    * Parses a RFC 2384 POP URL.
    */
@@ -173,7 +161,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 
     len = strlen(uri);
     buflen = len + 1;
-    
+
     {
       char scheme_buf[buflen];
       char auth_buf[buflen];
@@ -227,36 +215,35 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 
     return mailbox;
   }
-  
+
   private int
     handle_greeting_cb (MNClientSession *session,
 			MNClientSessionResponse *response,
 			MNClientSessionPrivate *priv)
   {
     priv->session = session;
-    
+
     switch (response->type)
       {
       case RESPONSE_OK:
 	if (response->arguments)
 	  {
 	    char *timestamp;
-	    
+
 	    timestamp = strchr(response->arguments, '<');
 	    if (timestamp)
 	      {
 		char *timestamp_end;
-		
+
 		timestamp_end = strchr(timestamp, '>');
 		if (timestamp_end)
 		  priv->apop_timestamp = g_strndup(timestamp, timestamp_end - timestamp + 1);
 	      }
 	  }
 	return STATE_CAPA;
-	
+
       case RESPONSE_ERR:
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
+	return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
@@ -269,7 +256,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
   {
     return mn_client_session_write(session, "CAPA");
   }
-  
+
   private int
     handle_capa_cb (MNClientSession *session,
 		    MNClientSessionResponse *response,
@@ -280,27 +267,25 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
     switch (response->type)
       {
       case RESPONSE_OK:
-	eel_g_slist_free_deep(priv->auth_mechanisms);
-	priv->auth_mechanisms = NULL;
-#ifdef WITH_SASL
-	g_slist_free(priv->sasl_remaining_mechanisms);
-	priv->sasl_remaining_mechanisms = NULL;
+	mn_g_slist_clear_deep(&priv->auth_mechanisms);
+#if WITH_SASL
+	mn_g_slist_clear(&priv->sasl_remaining_mechanisms);
 #endif
 	priv->top_supported = FALSE;
 	priv->self->_priv->login_delay = 0;
 	priv->login_delay_user = FALSE;
-#ifdef WITH_SSL
+#if WITH_SSL
 	priv->stls_supported = FALSE;
 #endif
 
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
-	
+
       case RESPONSE_ERR:
       case RESPONSE_LIST_END:
 	if (priv->authenticated)
 	  return STATE_LIST;
 
-#ifdef WITH_SSL
+#if WITH_SSL
 	if (priv->pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_INBAND_SSL
 	    && ! priv->stls_completed)
 	  {
@@ -308,32 +293,32 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	      return STATE_STLS;
 	    else
 	      {
-		mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS"));
+		mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support in-band SSL/TLS"));
 		return STATE_QUIT;
 	      }
 	  }
 	else
 #endif /* WITH_SSL */
 	  return self_session_authenticate(priv);
-      
+
       case RESPONSE_LIST_ITEM:
 	{
 	  char **tokens;
 	  gboolean login_delay_error = FALSE;
-	  
+
 	  tokens = g_strsplit(response->arguments, " ", 0);
 	  if (tokens[0])
 	    {
 	      if (! strcmp(tokens[0], "SASL"))
 		{
 		  int i;
-		  
+
 		  for (i = 1; tokens[i]; i++)
 		    priv->auth_mechanisms = g_slist_append(priv->auth_mechanisms, g_strdup(tokens[i]));
 		}
 	      else if (! strcmp(tokens[0], "TOP"))
 		priv->top_supported = TRUE;
-#ifdef WITH_SSL
+#if WITH_SSL
 	      else if (! strcmp(tokens[0], "STLS"))
 		priv->stls_supported = TRUE;
 #endif /* WITH_SSL */
@@ -354,12 +339,12 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 		}
 	    }
 	  g_strfreev(tokens);
-	  
+
 	  if (login_delay_error)
-	    return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("invalid arguments for the LOGIN-DELAY capability"));
+	    return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("invalid arguments for the LOGIN-DELAY capability"));
 	}
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
-	
+
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
@@ -369,19 +354,20 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
     enter_stls_cb (MNClientSession *session,
 		   MNClientSessionPrivate *priv)
   {
-#ifdef WITH_SSL
+#if WITH_SSL
     return mn_client_session_write(session, "STLS");
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SSL */
   }
-  
+
   private int
     handle_stls_cb (MNClientSession *session,
 		    MNClientSessionResponse *response,
 		    MNClientSessionPrivate *priv)
   {
-#ifdef WITH_SSL
+#if WITH_SSL
     switch (response->type)
       {
       case RESPONSE_OK:
@@ -399,44 +385,23 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	 */
 
       case RESPONSE_ERR:
-	return self_session_authenticate(priv);
+	mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
+	return STATE_QUIT;
 
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SSL */
   }
-  
-  private void
-    sasl_get_credentials_cb (MNClientSession *session,
-			     MNClientSessionPrivate *priv,
-			     const char **username,
-			     const char **password)
-  {
-#ifdef WITH_SASL
-    g_return_if_fail(username != NULL || password != NULL);
-
-    mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox,
-					      username != NULL,
-					      password != NULL);
-
-    if (username)
-      *username = priv->authenticated_mailbox->runtime_username;
-
-    if (password)
-      *password = priv->authenticated_mailbox->runtime_password;
-#else
-    g_return_if_reached();
-#endif /* WITH_SASL */
-  }
 
   private int
     enter_auth_cb (MNClientSession *session,
 		   MNClientSessionPrivate *priv)
   {
-#ifdef WITH_SASL
+#if WITH_SASL
     /*
      * RFC 2449 6.3 specifies that POP3 supports the initial client
      * response feature of SASL.
@@ -454,7 +419,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 						    priv->sasl_had_clientout ? NULL : &initial_clientout,
 						    priv->sasl_had_clientout ? NULL : &initial_clientoutlen))
       {
-	g_return_val_if_fail(priv->sasl_mechanism != NULL, 0);
+	g_assert(priv->sasl_mechanism != NULL);
 
 	if (initial_clientoutlen > 0)
 	  {
@@ -465,7 +430,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 
 	    result = sasl_encode64(initial_clientout, initial_clientoutlen, buf64, sizeof(buf64), &outlen);
 	    if (result != SASL_OK)
-	      return mn_client_session_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode Base64: %s"), sasl_errstring(result, NULL, NULL));
+	      return mn_client_session_set_error(session, MN_CLIENT_SESSION_ERROR_OTHER, _("unable to encode Base64: %s"), sasl_errstring(result, NULL, NULL));
 
 	    str = g_strndup(buf64, outlen);
 	    result = mn_client_session_write(session, "AUTH %s %s", priv->sasl_mechanism, str);
@@ -481,29 +446,30 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	  }
       }
     else
-      return priv->authenticated_mailbox->cancelled
+      return priv->pi_mailbox->auth_cancelled
 	? STATE_QUIT
 	: self_session_authenticate_fallback(priv, FALSE, FALSE);
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SASL */
   }
-  
+
   private int
     handle_auth_cb (MNClientSession *session,
 		    MNClientSessionResponse *response,
 		    MNClientSessionPrivate *priv)
   {
-#ifdef WITH_SASL
+#if WITH_SASL
     switch (response->type)
       {
       case RESPONSE_OK:
 	return mn_client_session_sasl_authentication_done(session)
 	  ? self_session_authenticated(priv)
 	  : MN_CLIENT_SESSION_RESULT_DISCONNECT;
-	
+
       case RESPONSE_ERR:
-	if (priv->authenticated_mailbox->cancelled)
+	if (priv->pi_mailbox->auth_cancelled)
 	  return STATE_QUIT;
 	else
 	  {
@@ -515,7 +481,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 		 * servers nevertheless, by retrying without the SASL
 		 * initial client response.
 		 */
-	      
+
 		mn_client_session_notice(session, _("SASL authentication with initial client response failed, retrying without initial client response"));
 		return STATE_AUTH;
 	      }
@@ -525,12 +491,13 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 
       case RESPONSE_CONTINUATION:
 	return mn_client_session_sasl_authentication_step(session, response->arguments);
-	
+
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
 #else
-    g_return_val_if_reached(0);
+    g_assert_not_reached();
+    return 0;
 #endif /* WITH_SASL */
   }
 
@@ -540,20 +507,18 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
   {
     MNMD5Context context;
     char buf[33];
-  
-    g_return_val_if_fail(priv->apop_timestamp != NULL, 0);
 
-    mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox, TRUE, TRUE);
-    if (! priv->authenticated_mailbox->runtime_username
-	|| ! priv->authenticated_mailbox->runtime_password)
+    g_assert(priv->apop_timestamp != NULL);
+
+    if (! mn_pi_mailbox_fill_credentials(priv->pi_mailbox, TRUE, TRUE))
       return STATE_QUIT;
 
     mn_md5_init(&context);
     mn_md5_update(&context, priv->apop_timestamp, strlen(priv->apop_timestamp));
-    mn_md5_update(&context, priv->authenticated_mailbox->runtime_password, strlen(priv->authenticated_mailbox->runtime_password));
+    mn_md5_update(&context, priv->pi_mailbox->runtime_password, strlen(priv->pi_mailbox->runtime_password));
     mn_md5_end(&context, buf);
 
-    return mn_client_session_write(session, "APOP %s %s", priv->authenticated_mailbox->runtime_username, buf);
+    return mn_client_session_write(session, "APOP %s %s", priv->pi_mailbox->runtime_username, buf);
   }
 
   private int
@@ -565,7 +530,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
       {
       case RESPONSE_OK:
 	return self_session_authenticated(priv);
-	
+
       case RESPONSE_ERR:
 	return self_session_authenticate_fallback(priv, TRUE, FALSE);
 
@@ -578,14 +543,12 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
     enter_user_cb (MNClientSession *session (check null),
 		   MNClientSessionPrivate *priv (check null))
   {
-    mn_authenticated_mailbox_fill_credentials(priv->authenticated_mailbox, TRUE, TRUE);
-    if (! priv->authenticated_mailbox->runtime_username
-	|| ! priv->authenticated_mailbox->runtime_password)
+    if (! mn_pi_mailbox_fill_credentials(priv->pi_mailbox, TRUE, TRUE))
       return STATE_QUIT;
 
-    return mn_client_session_write(session, "USER %s", priv->authenticated_mailbox->runtime_username);
+    return mn_client_session_write(session, "USER %s", priv->pi_mailbox->runtime_username);
   }
-  
+
   private int
     handle_user_cb (MNClientSession *session,
 		    MNClientSessionResponse *response,
@@ -597,21 +560,21 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	return STATE_PASS;
 
       case RESPONSE_ERR:
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
+	mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 	return STATE_QUIT;
 
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }
-  
+
   private int
     enter_pass_cb (MNClientSession *session,
 		   MNClientSessionPrivate *priv)
   {
-    g_return_val_if_fail(priv->authenticated_mailbox->runtime_password != NULL, 0);
+    g_assert(priv->pi_mailbox->runtime_password != NULL);
 
-    return mn_client_session_write(session, "PASS %s", priv->authenticated_mailbox->runtime_password);
+    return mn_client_session_write(session, "PASS %s", priv->pi_mailbox->runtime_password);
   }
 
   private int
@@ -656,26 +619,25 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	return STATE_RETR_TOP;
 
       case RESPONSE_ERR:
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
+	return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 
       case RESPONSE_LIST_ITEM:
 	{
 	  int num;
 	  int size;
-	  
+
 	  if (sscanf(response->arguments, "%d %d", &num, &size) == 2)
-	    priv->message_numbers = g_slist_append(priv->message_numbers, GINT_TO_POINTER(num));
+	    priv->message_numbers = g_slist_prepend(priv->message_numbers, GINT_TO_POINTER(num));
 	  else			/* compliance error */
 	    return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
 	}
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
-	
+
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }
-  
+
   private int
     enter_retr_top_cb (MNClientSession *session,
 		       MNClientSessionPrivate *priv)
@@ -689,17 +651,16 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	mn_mailbox_set_messages(priv->mailbox, priv->messages);
 
 	/*
-	 * In impl_check(), we do not hold the GDK lock while
+	 * In authenticated_check(), we do not hold the GDK lock while
 	 * unreffing the message list. We have just exposed the list
 	 * to other threads through our mn_mailbox_set_messages()
 	 * call, so unref it here, while we hold the GDK lock.
 	 */
-	mn_g_object_slist_free(priv->messages);
-	priv->messages = NULL;
+	mn_g_object_slist_clear(&priv->messages);
 
 	gdk_flush();
 	GDK_THREADS_LEAVE();
-	
+
 	return STATE_QUIT;
       }
   }
@@ -720,17 +681,20 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	return MN_CLIENT_SESSION_RESULT_CONTINUE;
 
       case RESPONSE_LIST_END:
-	priv->messages = g_slist_append(priv->messages,
-					mn_message_new_from_buffer(priv->mailbox,
-								   priv->current_message->str,
-								   priv->current_message->len));
+	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;
 
       case RESPONSE_ERR:
-	priv->messages = g_slist_append(priv->messages,
-					mn_message_new_from_error(priv->mailbox,
-								  response->arguments ? response->arguments : _("unknown error")));
+	priv->messages = g_slist_prepend(priv->messages,
+					 mn_message_new_from_error(priv->mailbox,
+								   response->arguments ? response->arguments : _("unknown error"),
+								   MN_MESSAGE_NEW));
 	priv->current_message_number = priv->current_message_number->next;
 	return STATE_RETR_TOP;
 
@@ -742,7 +706,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }
-  
+
   private int
     enter_quit_cb (MNClientSession *session,
 		   MNClientSessionPrivate *priv)
@@ -761,25 +725,24 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
 
       case RESPONSE_ERR:
-	self_session_set_error_from_arguments(priv, MN_CLIENT_SESSION_ERROR_OTHER, response);
-	return MN_CLIENT_SESSION_RESULT_DISCONNECT;
+	return mn_client_session_set_error_from_response(session, MN_CLIENT_SESSION_ERROR_OTHER, response->arguments);
 
       default:
 	return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
       }
   }
-  
+
   override (MN:Authenticated:Mailbox) void
-    impl_check (MNAuthenticatedMailbox *mailbox)
+    authenticated_check (MNAuthenticatedMailbox *mailbox)
   {
     Self *self = SELF(mailbox);
     MNClientSessionState states[] = {
       { STATE_GREETING,		NULL,			self_handle_greeting_cb },
       { STATE_CAPA,		self_enter_capa_cb,	self_handle_capa_cb },
-#ifdef WITH_SSL
+#if WITH_SSL
       { STATE_STLS,		self_enter_stls_cb,	self_handle_stls_cb },
 #endif
-#ifdef WITH_SASL
+#if WITH_SASL
       { STATE_AUTH,		self_enter_auth_cb,	self_handle_auth_cb },
 #endif
       { STATE_APOP,		self_enter_apop_cb,	self_handle_apop_cb },
@@ -788,18 +751,18 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
       { STATE_LIST,		self_enter_list_cb,	self_handle_list_cb },
       { STATE_RETR_TOP,		self_enter_retr_top_cb,	self_handle_retr_top_cb },
       { STATE_QUIT,		self_enter_quit_cb,	self_handle_quit_cb },
-      
+
       MN_CLIENT_SESSION_STATES_END
     };
     MNClientSessionCallbacks callbacks = {
-      self_notice_cb,
-      self_warning_cb,
+      mn_pi_mailbox_notice_cb,
+      mn_pi_mailbox_warning_cb,
       self_response_new_cb,
       self_response_free_cb,
       NULL,			/* pre_read */
       NULL,			/* post_read */
-#ifdef WITH_SASL
-      self_sasl_get_credentials_cb,
+#if WITH_SASL
+      mn_pi_mailbox_sasl_get_credentials_cb,
 #endif
     };
     MNClientSessionPrivate priv;
@@ -809,7 +772,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
     PARENT_HANDLER(mailbox);
 
     /* check if the parent handler has disabled the mailbox */
-    if (! MN_MAILBOX(self)->must_poll)
+    if (! mn_mailbox_get_poll(MN_MAILBOX(self)))
       return;
 
     if (selfp->login_delay && selfp->authentication_timer)
@@ -822,7 +785,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	if (elapsed < selfp->login_delay)
 	  {
 	    int sleeptime;
-	    
+
 	    sleeptime = selfp->login_delay - elapsed;
 	    mn_mailbox_notice(MN_MAILBOX(self),
 			      ngettext("honouring LOGIN-DELAY, sleeping for %i second",
@@ -832,16 +795,14 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	    sleep(sleeptime);
 	  }
       }
-  
+
     memset(&priv, 0, sizeof(priv));
-    priv.mailbox = MN_MAILBOX(self);
-    priv.authenticated_mailbox = mailbox;
-    priv.pi_mailbox = MN_PI_MAILBOX(self);
+    mn_pi_mailbox_session_private_init(MN_PI_MAILBOX(self), &priv);
     priv.self = self;
 
     status = mn_client_session_run(states,
 				   &callbacks,
-#ifdef WITH_SSL
+#if WITH_SSL
 				   priv.pi_mailbox->connection_type == MN_PI_MAILBOX_CONNECTION_TYPE_SSL,
 #endif
 				   priv.pi_mailbox->hostname,
@@ -851,19 +812,24 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 
     if (! status)
       {
+	char *escaped;
+
+	escaped = mn_utf8_escape(err->message);
+	g_error_free(err);
+
 	GDK_THREADS_ENTER();
 
-	mn_mailbox_set_error(MN_MAILBOX(self), "%s", err->message);
+	mn_mailbox_set_error(MN_MAILBOX(self), "%s", escaped);
 
 	gdk_flush();
 	GDK_THREADS_LEAVE();
 
-	g_error_free(err);
+	g_free(escaped);
       }
 
     g_free(priv.apop_timestamp);
     eel_g_slist_free_deep(priv.auth_mechanisms);
-#ifdef WITH_SASL
+#if WITH_SASL
     g_slist_free(priv.sasl_remaining_mechanisms);
 #endif
     g_slist_free(priv.message_numbers);
@@ -871,22 +837,6 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
     if (priv.current_message)
       g_string_free(priv.current_message, TRUE);
   }
-  
-  private void
-    notice_cb (MNClientSession *session,
-	       const char *message,
-	       MNClientSessionPrivate *priv)
-  {
-    mn_mailbox_notice(priv->mailbox, "%s", message);
-  }
-
-  private void
-    warning_cb (MNClientSession *session,
-		const char *message,
-		MNClientSessionPrivate *priv)
-  {
-    mn_mailbox_warning(priv->mailbox, "%s", message);
-  }
 
   private MNClientSessionResponse *
     response_new_cb (MNClientSession *session,
@@ -900,73 +850,73 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
      *
      * RFC 1939 3 specifies that "keywords and arguments consist of
      * printable ASCII characters", however that refers to
-     * commands. Nothing is said about responses.
-     *
-     * We need responses to be valid UTF-8, because they might end up
-     * showing up in the UI (for instance, through
-     * session_set_error_from_arguments()).
+     * commands. Nothing is said about responses. We therefore do not
+     * check the encoding of responses.
      *
-     * However, RETR/TOP multiline responses do not need to (and must
-     * not) be validated: most servers send them in whatever charset
-     * the original message is, and our mn-message-mime implementation
-     * handles that.
+     * Safety:
+     *   - we ensure that GTK+ will only receive UTF-8 data by
+     *     escaping error messages in authenticated_check()
+     *   - responses ending up in mn_mailbox_notice() need not be
+     *     valid UTF-8, since g_log() escapes unsafe and non UTF-8
+     *     characters
+     *   - RETR/TOP multiline responses are passed to our
+     *     mn-message-mime implementation, which handles character set
+     *     conversions
      */
-    if (priv->in_retr_top || g_utf8_validate(input, -1, NULL))
+
+    if (priv->in_list)
+      {
+	response = g_new0(MNClientSessionResponse, 1);
+	if (! strcmp(input, "."))
+	  response->type = RESPONSE_LIST_END;
+	else if (g_str_has_prefix(input, ".."))
+	  {
+	    response->type = RESPONSE_LIST_ITEM;
+	    response->arguments = g_strdup(input + 1); /* skip the initial dot */
+	  }
+	else
+	  {
+	    response->type = RESPONSE_LIST_ITEM;
+	    response->arguments = g_strdup(input);
+	  }
+      }
+    else
       {
-	if (priv->in_list)
+	if (g_str_has_prefix(input, "+ "))
 	  {
 	    response = g_new0(MNClientSessionResponse, 1);
-	    if (! strcmp(input, "."))
-	      response->type = RESPONSE_LIST_END;
-	    else if (g_str_has_prefix(input, ".."))
-	      {
-		response->type = RESPONSE_LIST_ITEM;
-		response->arguments = g_strdup(input + 1); /* skip the initial dot */
-	      }
-	    else
-	      {
-		response->type = RESPONSE_LIST_ITEM;
-		response->arguments = g_strdup(input);
-	      }
+	    response->type = RESPONSE_CONTINUATION;
+	    response->arguments = g_strdup(input + 2);
 	  }
 	else
 	  {
-	    if (g_str_has_prefix(input, "+ "))
+	    ResponseType type;
+	    int after_status = 0;
+
+	    if (g_str_has_prefix(input, "+OK"))
 	      {
-		response = g_new0(MNClientSessionResponse, 1);
-		response->type = RESPONSE_CONTINUATION;
-		response->arguments = g_strdup(input + 2);
+		type = RESPONSE_OK;
+		after_status = 3;
 	      }
-	    else
+	    else if (g_str_has_prefix(input, "-ERR"))
 	      {
-		ResponseType type;
-		int after_status = 0;
-		
-		if (g_str_has_prefix(input, "+OK"))
-		  {
-		    type = RESPONSE_OK;
-		    after_status = 3;
-		  }
-		else if (g_str_has_prefix(input, "-ERR"))
-		  {
-		    type = RESPONSE_ERR;
-		    after_status = 4;
-		  }
-		
-		if (after_status)
+		type = RESPONSE_ERR;
+		after_status = 4;
+	      }
+
+	    if (after_status)
+	      {
+		if (input[after_status] == 0 || input[after_status] == ' ')
 		  {
-		    if (input[after_status] == 0 || input[after_status] == ' ')
-		      {
-			response = g_new0(MNClientSessionResponse, 1);
-			response->type = type;
-			if (input[after_status] == ' ')
-			  response->arguments = g_strdup(input + after_status + 1);
-		      }
+		    response = g_new0(MNClientSessionResponse, 1);
+		    response->type = type;
+		    if (input[after_status] == ' ')
+		      response->arguments = g_strdup(input + after_status + 1);
 		  }
 	      }
 	  }
       }
-    
+
     return response;
   }
 
@@ -982,7 +932,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
   private int
     session_authenticate (MNClientSessionPrivate *priv (check null))
   {
-#ifdef WITH_SASL
+#if WITH_SASL
     g_slist_free(priv->sasl_remaining_mechanisms);
     priv->sasl_remaining_mechanisms = g_slist_copy(priv->auth_mechanisms);
 #endif /* WITH_SASL */
@@ -991,10 +941,10 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
       {
 	if (*priv->pi_mailbox->authmech != '+')
 	  {
-#ifdef WITH_SASL
+#if WITH_SASL
 	    return STATE_AUTH;
 #else
-	    mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in"));
+	    mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("a SASL authentication mechanism was selected but SASL support has not been compiled in"));
 	    return STATE_QUIT;
 #endif /* WITH_SASL */
 	  }
@@ -1006,7 +956,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 		  return STATE_APOP;
 		else
 		  {
-		    mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support APOP authentication"));
+		    mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("server does not support APOP authentication"));
 		    return STATE_QUIT;
 		  }
 	      }
@@ -1014,14 +964,14 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	      return STATE_USER;
 	    else
 	      {
-		mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech);
+		mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("unknown authentication mechanism \"%s\""), priv->pi_mailbox->authmech);
 		return STATE_QUIT;
 	      }
 	  }
       }
     else
       {
-#ifdef WITH_SASL
+#if WITH_SASL
 	if (priv->sasl_remaining_mechanisms)
 	  return STATE_AUTH;
 #endif /* WITH_SASL */
@@ -1031,7 +981,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	  return STATE_USER;
       }
   }
-  
+
   private int
     session_authenticate_fallback (MNClientSessionPrivate *priv (check null),
 				   gboolean tried_apop,
@@ -1039,7 +989,7 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
   {
     if (! priv->pi_mailbox->authmech)
       {
-#ifdef WITH_SASL
+#if WITH_SASL
 	if (priv->sasl_mechanism)
 	  {
 	    GSList *elem;
@@ -1072,18 +1022,18 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
 	  }
       }
 
-    if (priv->authenticated_mailbox->prompted)
+    if (priv->pi_mailbox->auth_prompted)
       {
-	mn_authenticated_mailbox_authentication_failed(priv->authenticated_mailbox);
+	mn_pi_mailbox_auth_failed(priv->pi_mailbox);
 	return self_session_authenticate(priv);
       }
     else
       {
-	mn_client_session_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed"));
+	mn_client_session_set_error(priv->session, MN_CLIENT_SESSION_ERROR_OTHER, _("authentication failed"));
 	return STATE_QUIT;
       }
   }
-  
+
   private int
     session_authenticated (MNClientSessionPrivate *priv (check null))
   {
@@ -1114,17 +1064,6 @@ class MN:POP3:Mailbox from MN:PI:Mailbox
   }
 
   private void
-    session_set_error_from_arguments (MNClientSessionPrivate *priv (check null),
-				      int code,
-				      MNClientSessionResponse *response (check null))
-  {
-    if (response->arguments)
-      mn_client_session_error(priv->session, code, "\"%s\"", response->arguments);
-    else
-      mn_client_session_error(priv->session, code, _("unknown server error"));
-  }
-
-  private void
     handle_list_response (MNClientSessionPrivate *priv (check null),
 			  MNClientSessionResponse *response (check null),
 			  gboolean in_retr_top)
diff --git a/src/mn-pop3-mailbox.gob.stamp b/src/mn-pop3-mailbox.gob.stamp
diff --git a/src/mn-pop3-mailbox.h b/src/mn-pop3-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-properties-dialog-private.h b/src/mn-properties-dialog-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_PROPERTIES_DIALOG_PRIVATE_H__
 #define __MN_PROPERTIES_DIALOG_PRIVATE_H__
@@ -13,103 +13,104 @@ struct _MNPropertiesDialogPrivate {
 #line 47 "mn-properties-dialog.gob"
 	GtkWidget * notebook;
 #line 50 "mn-properties-dialog.gob"
-	GtkWidget * autostart_check;
+	GtkWidget * display_seen_mail_check;
 #line 51 "mn-properties-dialog.gob"
-	GtkWidget * blink_check;
+	GtkWidget * scrolled;
 #line 52 "mn-properties-dialog.gob"
-	GtkWidget * summary_tooltip_check;
+	GtkWidget * list;
 #line 53 "mn-properties-dialog.gob"
-	GtkWidget * command_mail_reader_check;
+	GtkWidget * selected_label;
 #line 54 "mn-properties-dialog.gob"
-	GtkWidget * command_mail_reader_entry;
+	GtkWidget * remove;
 #line 55 "mn-properties-dialog.gob"
-	GtkWidget * command_new_mail_check;
+	GtkWidget * properties;
 #line 56 "mn-properties-dialog.gob"
-	GtkWidget * command_new_mail_entry;
+	GtkWidget * command_new_mail_check;
 #line 57 "mn-properties-dialog.gob"
-	GtkWidget * command_mail_read_check;
+	GtkWidget * command_new_mail_entry;
 #line 58 "mn-properties-dialog.gob"
-	GtkWidget * command_mail_read_entry;
+	GtkWidget * command_mail_read_check;
 #line 59 "mn-properties-dialog.gob"
-	GtkWidget * action_main_window_radio;
-#line 60 "mn-properties-dialog.gob"
-	GtkWidget * action_mail_reader_radio;
-#line 61 "mn-properties-dialog.gob"
-	GtkWidget * action_update_radio;
+	GtkWidget * command_mail_read_entry;
+#line 62 "mn-properties-dialog.gob"
+	GtkWidget * icon_blink_check;
+#line 63 "mn-properties-dialog.gob"
+	GtkWidget * icon_always_display_check;
 #line 64 "mn-properties-dialog.gob"
-	GtkWidget * delay_label;
+	GtkWidget * icon_tooltip_mail_summary_standard_radio;
 #line 65 "mn-properties-dialog.gob"
-	GtkWidget * minutes_spin;
+	GtkWidget * icon_tooltip_mail_summary_compact_radio;
 #line 66 "mn-properties-dialog.gob"
-	GtkWidget * minutes_label;
+	GtkWidget * icon_tooltip_mail_summary_none_radio;
 #line 67 "mn-properties-dialog.gob"
-	GtkWidget * seconds_spin;
+	GtkWidget * icon_action_properties_dialog_radio;
 #line 68 "mn-properties-dialog.gob"
-	GtkWidget * seconds_label;
+	GtkWidget * icon_action_mail_reader_radio;
 #line 69 "mn-properties-dialog.gob"
-	GtkWidget * scrolled;
-#line 70 "mn-properties-dialog.gob"
-	GtkWidget * list;
-#line 71 "mn-properties-dialog.gob"
-	GtkWidget * selected_label;
+	GtkWidget * icon_action_update_radio;
 #line 72 "mn-properties-dialog.gob"
-	GtkWidget * remove;
+	GtkWidget * summary_enable_check;
 #line 73 "mn-properties-dialog.gob"
-	GtkWidget * properties;
+	GtkWidget * summary_autoclose_check;
+#line 74 "mn-properties-dialog.gob"
+	GtkWidget * summary_minutes_spin;
+#line 75 "mn-properties-dialog.gob"
+	GtkWidget * summary_minutes_label;
 #line 76 "mn-properties-dialog.gob"
-	GtkWidget * summary_enable_check;
+	GtkWidget * summary_seconds_spin;
 #line 77 "mn-properties-dialog.gob"
-	GtkWidget * summary_autoclose_check;
+	GtkWidget * summary_seconds_label;
 #line 78 "mn-properties-dialog.gob"
-	GtkWidget * summary_minutes_spin;
+	GtkWidget * summary_only_recent_check;
 #line 79 "mn-properties-dialog.gob"
-	GtkWidget * summary_minutes_label;
+	GtkWidget * summary_position_section_label;
 #line 80 "mn-properties-dialog.gob"
-	GtkWidget * summary_seconds_spin;
+	GtkWidget * summary_position_label;
 #line 81 "mn-properties-dialog.gob"
-	GtkWidget * summary_seconds_label;
+	GtkWidget * summary_position_combo;
 #line 82 "mn-properties-dialog.gob"
-	GtkWidget * summary_only_recent_check;
+	GtkWidget * summary_horizontal_offset_label;
 #line 83 "mn-properties-dialog.gob"
-	GtkWidget * summary_position_label;
+	GtkWidget * summary_horizontal_offset_spin;
 #line 84 "mn-properties-dialog.gob"
-	GtkWidget * summary_position_combo;
+	GtkWidget * summary_horizontal_pixels_label;
 #line 85 "mn-properties-dialog.gob"
-	GtkWidget * summary_horizontal_offset_label;
+	GtkWidget * summary_vertical_offset_label;
 #line 86 "mn-properties-dialog.gob"
-	GtkWidget * summary_horizontal_offset_spin;
+	GtkWidget * summary_vertical_offset_spin;
 #line 87 "mn-properties-dialog.gob"
-	GtkWidget * summary_horizontal_pixels_label;
+	GtkWidget * summary_vertical_pixels_label;
 #line 88 "mn-properties-dialog.gob"
-	GtkWidget * summary_vertical_offset_label;
+	GtkWidget * summary_layout_section_label;
 #line 89 "mn-properties-dialog.gob"
-	GtkWidget * summary_vertical_offset_spin;
+	GtkWidget * summary_layout_standard_radio;
 #line 90 "mn-properties-dialog.gob"
-	GtkWidget * summary_vertical_pixels_label;
+	GtkWidget * summary_layout_compact_radio;
 #line 91 "mn-properties-dialog.gob"
-	GtkWidget * summary_fonts_from_theme_radio;
+	GtkWidget * summary_fonts_section_label;
 #line 92 "mn-properties-dialog.gob"
-	GtkWidget * summary_custom_fonts_radio;
+	GtkWidget * summary_fonts_from_theme_radio;
 #line 93 "mn-properties-dialog.gob"
-	GtkWidget * summary_title_font_alignment;
+	GtkWidget * summary_custom_fonts_radio;
 #line 94 "mn-properties-dialog.gob"
-	GtkWidget * summary_title_font_label;
+	GtkWidget * summary_title_font_alignment;
 #line 95 "mn-properties-dialog.gob"
-	GtkWidget * summary_title_font_button;
+	GtkWidget * summary_title_font_label;
 #line 96 "mn-properties-dialog.gob"
-	GtkWidget * summary_contents_font_alignment;
+	GtkWidget * summary_title_font_button;
 #line 97 "mn-properties-dialog.gob"
-	GtkWidget * summary_contents_font_label;
+	GtkWidget * summary_contents_font_alignment;
 #line 98 "mn-properties-dialog.gob"
-	GtkWidget * summary_contents_font_button;
+	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 101 "mn-properties-dialog.gob"
+#line 102 "mn-properties-dialog.gob"
 	GtkWidget * test_popup;
-#line 110 "mn-properties-dialog-private.h"
+#line 112 "mn-properties-dialog-private.h"
 };
 void 	mn_properties_dialog_toggled_h	(MNPropertiesDialog * self, GtkToggleButton * button);
-void 	mn_properties_dialog_autostart_toggled_h	(MNPropertiesDialog * self, GtkToggleButton * togglebutton);
 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);
diff --git a/src/mn-properties-dialog.c b/src/mn-properties-dialog.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -43,7 +42,7 @@ enum
   POSITION_N_COLUMNS
 };
 
-#line 47 "mn-properties-dialog.c"
+#line 46 "mn-properties-dialog.c"
 /* self casting macros */
 #define SELF(x) MN_PROPERTIES_DIALOG(x)
 #define SELF_CONST(x) MN_PROPERTIES_DIALOG_CONST(x)
@@ -75,7 +74,6 @@ static MNDialogClass *parent_class = NULL;
 #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_autostart_toggled_h mn_properties_dialog_autostart_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
@@ -135,7 +133,7 @@ ___finalize(GObject *obj_self)
 #define test_popup (self->_priv->test_popup)
 #define VAR test_popup
 	{
-#line 103 "mn-properties-dialog.gob"
+#line 104 "mn-properties-dialog.gob"
 	
       if (VAR)
 	{
@@ -143,7 +141,7 @@ ___finalize(GObject *obj_self)
 	  gtk_widget_destroy(VAR);
 	}
     }
-#line 147 "mn-properties-dialog.c"
+#line 145 "mn-properties-dialog.c"
 	memset(&test_popup, 0, sizeof(test_popup));
 #undef VAR
 #undef test_popup
@@ -163,15 +161,15 @@ mn_properties_dialog_class_init (MNPropertiesDialogClass * c G_GNUC_UNUSED)
 	g_object_class->finalize = ___finalize;
 }
 #undef __GOB_FUNCTION__
-#line 111 "mn-properties-dialog.gob"
+#line 112 "mn-properties-dialog.gob"
 static void 
 mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
-#line 170 "mn-properties-dialog.c"
+#line 168 "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 112 "mn-properties-dialog.gob"
+#line 113 "mn-properties-dialog.gob"
 
     GtkSizeGroup *size_group;
     GtkTreeSelection *selection;
@@ -179,31 +177,27 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
     GtkCellRenderer *renderer;
 
     mn_container_create_interface(GTK_CONTAINER(self),
-				  MN_INTERFACE_FILE("properties-dialog.glade"),
+				  UIDIR G_DIR_SEPARATOR_S "properties-dialog.glade",
 				  "notebook",
 				  "mn_properties_dialog_",
 				  "notebook", &selfp->notebook,
-				  "autostart_check", &selfp->autostart_check,
-				  "blink_check", &selfp->blink_check,
-				  "summary_tooltip_check", &selfp->summary_tooltip_check,
-				  "command_mail_reader_check", &selfp->command_mail_reader_check,
-				  "command_mail_reader_entry", &selfp->command_mail_reader_entry,
-				  "command_new_mail_check", &selfp->command_new_mail_check,
-				  "command_new_mail_entry", &selfp->command_new_mail_entry,
-				  "command_mail_read_check", &selfp->command_mail_read_check,
-				  "command_mail_read_entry", &selfp->command_mail_read_entry,
-				  "action_main_window_radio", &selfp->action_main_window_radio,
-				  "action_mail_reader_radio", &selfp->action_mail_reader_radio,
-				  "action_update_radio", &selfp->action_update_radio,
-				  "delay_label", &selfp->delay_label,
-				  "minutes_spin", &selfp->minutes_spin,
-				  "minutes_label", &selfp->minutes_label,
-				  "seconds_spin", &selfp->seconds_spin,
-				  "seconds_label", &selfp->seconds_label,
+				  "display_seen_mail_check", &selfp->display_seen_mail_check,
 				  "scrolled", &selfp->scrolled,
 				  "selected_label", &selfp->selected_label,
 				  "remove", &selfp->remove,
 				  "properties", &selfp->properties,
+				  "command_new_mail_check", &selfp->command_new_mail_check,
+				  "command_new_mail_entry", &selfp->command_new_mail_entry,
+				  "command_mail_read_check", &selfp->command_mail_read_check,
+				  "command_mail_read_entry", &selfp->command_mail_read_entry,
+				  "icon_blink_check", &selfp->icon_blink_check,
+				  "icon_always_display_check", &selfp->icon_always_display_check,
+				  "icon_tooltip_mail_summary_standard_radio", &selfp->icon_tooltip_mail_summary_standard_radio,
+				  "icon_tooltip_mail_summary_compact_radio", &selfp->icon_tooltip_mail_summary_compact_radio,
+				  "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_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,
@@ -211,6 +205,7 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 				  "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,
@@ -219,6 +214,10 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 				  "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,
@@ -230,6 +229,7 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 				  "summary_test_button", &selfp->summary_test_button,
 				  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,
@@ -245,15 +245,14 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 		     "swapped-signal::changed", self_update_selected_label, self,
 		     "swapped-signal::changed", self_update_sensitivity, self,
 		     NULL);
-  
+
     mn_setup_dnd(selfp->scrolled);
 
     size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-    gtk_size_group_add_widget(size_group, selfp->command_mail_reader_check);
     gtk_size_group_add_widget(size_group, selfp->command_new_mail_check);
     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);
@@ -263,8 +262,6 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
     gtk_size_group_add_widget(size_group, selfp->summary_contents_font_alignment);
     g_object_unref(size_group);
 
-    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->autostart_check), mn_conf_get_autostart());
-
     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"));
@@ -280,18 +277,15 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 
     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->blink_check, MN_CONF_BLINK_ON_ERRORS, "active",
-		 selfp->summary_tooltip_check, MN_CONF_SUMMARY_TOOLTIP, "active",
-		 selfp->command_mail_reader_check, MN_CONF_COMMANDS_MAIL_READER_ENABLED, "active",
-		 selfp->command_mail_reader_entry, MN_CONF_COMMANDS_MAIL_READER_COMMAND, "text",
+		 selfp->display_seen_mail_check, MN_CONF_DISPLAY_SEEN_MAIL, "active",
 		 selfp->command_new_mail_check, MN_CONF_COMMANDS_NEW_MAIL_ENABLED, "active",
 		 selfp->command_new_mail_entry, MN_CONF_COMMANDS_NEW_MAIL_COMMAND, "text",
 		 selfp->command_mail_read_check, MN_CONF_COMMANDS_MAIL_READ_ENABLED, "active",
 		 selfp->command_mail_read_entry, MN_CONF_COMMANDS_MAIL_READ_COMMAND, "text",
-		 selfp->minutes_spin, MN_CONF_DELAY_MINUTES,
-		 selfp->seconds_spin, MN_CONF_DELAY_SECONDS,
+		 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,
@@ -302,11 +296,22 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 		 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",
 		 NULL);
+    mn_conf_link_radio_group_to_enum(MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY,
+				     MN_CONF_TOOLTIP_MAIL_SUMMARY,
+				     selfp->icon_tooltip_mail_summary_standard_radio, MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD,
+				     selfp->icon_tooltip_mail_summary_compact_radio, MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT,
+				     selfp->icon_tooltip_mail_summary_none_radio, MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE,
+				     NULL);
     mn_conf_link_radio_group_to_enum(MN_TYPE_ACTION,
-				     MN_CONF_DOUBLE_CLICK_ACTION_2,
-				     selfp->action_main_window_radio, MN_ACTION_DISPLAY_MAIN_WINDOW,
-				     selfp->action_mail_reader_radio, MN_ACTION_LAUNCH_MAIL_READER,
-				     selfp->action_update_radio, MN_ACTION_UPDATE_MAIL_STATUS,
+				     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_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,
 				     NULL);
     mn_conf_link_radio_group_to_enum(MN_TYPE_ASPECT_SOURCE,
 				     MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE,
@@ -320,11 +325,6 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
     self_update_selected_label(self);
     self_update_sensitivity(self);
 
-    mn_g_object_connect(self,
-			mn_shell->mailboxes,
-			"swapped-signal::notify::must-poll", self_update_sensitivity, self,
-			NULL);
-
     g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL);
   
 #line 331 "mn-properties-dialog.c"
@@ -334,19 +334,19 @@ mn_properties_dialog_init (MNPropertiesDialog * self G_GNUC_UNUSED)
 
 
 
-#line 268 "mn-properties-dialog.gob"
+#line 271 "mn-properties-dialog.gob"
 static void 
 mn_properties_dialog_response_h (MNPropertiesDialog * self, int response, gpointer user_data)
 #line 341 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::response_h"
-#line 268 "mn-properties-dialog.gob"
+#line 271 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 268 "mn-properties-dialog.gob"
+#line 271 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
 #line 348 "mn-properties-dialog.c"
 {
-#line 270 "mn-properties-dialog.gob"
+#line 273 "mn-properties-dialog.gob"
 	
     switch (response)
       {
@@ -355,17 +355,17 @@ mn_properties_dialog_response_h (MNPropertiesDialog * self, int response, gpoint
 	  int current_page;
 	  const char *sections[] = {
 	    "properties-general",
-	    "properties-mailboxes",
+	    "properties-status-icon",
 	    "properties-mail-summary-popup"
 	  };
-	
+
 	  current_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(selfp->notebook));
-	  g_return_if_fail(current_page >= 0 && current_page < G_N_ELEMENTS(sections));
+	  g_assert(current_page >= 0 && current_page < G_N_ELEMENTS(sections));
 
 	  mn_display_help(GTK_WINDOW(self), sections[current_page]);
 	  break;
 	}
-    
+
       case GTK_RESPONSE_CLOSE:
 	gtk_widget_destroy(GTK_WIDGET(self));
 	break;
@@ -374,28 +374,28 @@ mn_properties_dialog_response_h (MNPropertiesDialog * self, int response, gpoint
 #line 375 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 295 "mn-properties-dialog.gob"
+#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 295 "mn-properties-dialog.gob"
+#line 298 "mn-properties-dialog.gob"
 	g_return_if_fail (store != NULL);
-#line 295 "mn-properties-dialog.gob"
+#line 298 "mn-properties-dialog.gob"
 	g_return_if_fail (GTK_IS_LIST_STORE (store));
-#line 295 "mn-properties-dialog.gob"
+#line 298 "mn-properties-dialog.gob"
 	g_return_if_fail (label != NULL);
 #line 390 "mn-properties-dialog.c"
 {
-#line 299 "mn-properties-dialog.gob"
+#line 302 "mn-properties-dialog.gob"
 	
     GEnumClass *enum_class;
     GEnumValue *enum_value;
     GtkTreeIter iter;
 
     enum_class = g_type_class_ref(MN_TYPE_POSITION);
-    g_return_if_fail(enum_class != NULL);
+    g_assert(enum_class != NULL);
 
     enum_value = g_enum_get_value(enum_class, position);
     g_return_if_fail(enum_value != NULL);
@@ -411,19 +411,19 @@ mn_properties_dialog_add_position (GtkListStore * store, MNPosition position, co
 #line 412 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 319 "mn-properties-dialog.gob"
+#line 322 "mn-properties-dialog.gob"
 static void 
 mn_properties_dialog_update_selected_label (MNPropertiesDialog * self)
 #line 418 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::update_selected_label"
-#line 319 "mn-properties-dialog.gob"
+#line 322 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 319 "mn-properties-dialog.gob"
+#line 322 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
 #line 425 "mn-properties-dialog.c"
 {
-#line 321 "mn-properties-dialog.gob"
+#line 324 "mn-properties-dialog.gob"
 	
     GtkTreeSelection *selection;
     int n_rows;
@@ -447,45 +447,34 @@ mn_properties_dialog_update_selected_label (MNPropertiesDialog * self)
 #line 448 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 342 "mn-properties-dialog.gob"
+#line 345 "mn-properties-dialog.gob"
 static void 
 mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self)
 #line 454 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::update_sensitivity"
-#line 342 "mn-properties-dialog.gob"
+#line 345 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 342 "mn-properties-dialog.gob"
+#line 345 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
 #line 461 "mn-properties-dialog.c"
 {
-#line 344 "mn-properties-dialog.gob"
+#line 347 "mn-properties-dialog.gob"
 	
-    gboolean command_mail_reader_enabled;
     gboolean command_new_mail_enabled;
     gboolean command_mail_read_enabled;
-    gboolean must_poll;
     GtkTreeSelection *selection;
     gboolean has_selection;
     gboolean summary_enabled;
     gboolean summary_autoclose_enabled;
     gboolean summary_custom_fonts_enabled;
 
-    command_mail_reader_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->command_mail_reader_check));
     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));
 
-    gtk_widget_set_sensitive(selfp->command_mail_reader_entry, command_mail_reader_enabled);
     gtk_widget_set_sensitive(selfp->command_new_mail_entry, command_new_mail_enabled);
     gtk_widget_set_sensitive(selfp->command_mail_read_entry, command_mail_read_enabled);
 
-    must_poll = mn_mailboxes_get_must_poll(mn_shell->mailboxes);
-    gtk_widget_set_sensitive(selfp->delay_label, must_poll);
-    gtk_widget_set_sensitive(selfp->minutes_spin, must_poll);
-    gtk_widget_set_sensitive(selfp->minutes_label, must_poll);
-    gtk_widget_set_sensitive(selfp->seconds_spin, must_poll);
-    gtk_widget_set_sensitive(selfp->seconds_label, must_poll);
-
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selfp->list));
     has_selection = gtk_tree_selection_count_selected_rows(selection) > 0;
 
@@ -502,6 +491,7 @@ mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self)
     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);
@@ -510,6 +500,10 @@ mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self)
     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);
@@ -518,158 +512,139 @@ mn_properties_dialog_update_sensitivity (MNPropertiesDialog * self)
     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 522 "mn-properties-dialog.c"
+#line 516 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 403 "mn-properties-dialog.gob"
+#line 400 "mn-properties-dialog.gob"
 gboolean 
 mn_properties_dialog_test_popup_displayed (MNPropertiesDialog * self)
-#line 528 "mn-properties-dialog.c"
+#line 522 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::test_popup_displayed"
-#line 403 "mn-properties-dialog.gob"
+#line 400 "mn-properties-dialog.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 403 "mn-properties-dialog.gob"
+#line 400 "mn-properties-dialog.gob"
 	g_return_val_if_fail (MN_IS_PROPERTIES_DIALOG (self), (gboolean )0);
-#line 535 "mn-properties-dialog.c"
+#line 529 "mn-properties-dialog.c"
 {
-#line 405 "mn-properties-dialog.gob"
+#line 402 "mn-properties-dialog.gob"
 	
     return selfp->test_popup != NULL;
   }}
-#line 541 "mn-properties-dialog.c"
+#line 535 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 411 "mn-properties-dialog.gob"
+#line 408 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button)
-#line 547 "mn-properties-dialog.c"
+#line 541 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::toggled_h"
-#line 411 "mn-properties-dialog.gob"
+#line 408 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 411 "mn-properties-dialog.gob"
+#line 408 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 554 "mn-properties-dialog.c"
+#line 548 "mn-properties-dialog.c"
 {
-#line 413 "mn-properties-dialog.gob"
+#line 410 "mn-properties-dialog.gob"
 	
     self_update_sensitivity(self);
   }}
-#line 560 "mn-properties-dialog.c"
-#undef __GOB_FUNCTION__
-
-#line 417 "mn-properties-dialog.gob"
-void 
-mn_properties_dialog_autostart_toggled_h (MNPropertiesDialog * self, GtkToggleButton * togglebutton)
-#line 566 "mn-properties-dialog.c"
-{
-#define __GOB_FUNCTION__ "MN:Properties:Dialog::autostart_toggled_h"
-#line 417 "mn-properties-dialog.gob"
-	g_return_if_fail (self != NULL);
-#line 417 "mn-properties-dialog.gob"
-	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 573 "mn-properties-dialog.c"
-{
-#line 419 "mn-properties-dialog.gob"
-	
-    mn_conf_set_autostart(gtk_toggle_button_get_active(togglebutton));
-  }}
-#line 579 "mn-properties-dialog.c"
+#line 554 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 423 "mn-properties-dialog.gob"
+#line 414 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_add_clicked_h (MNPropertiesDialog * self, GtkButton * button)
-#line 585 "mn-properties-dialog.c"
+#line 560 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::add_clicked_h"
-#line 423 "mn-properties-dialog.gob"
+#line 414 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 423 "mn-properties-dialog.gob"
+#line 414 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 592 "mn-properties-dialog.c"
+#line 567 "mn-properties-dialog.c"
 {
-#line 425 "mn-properties-dialog.gob"
+#line 416 "mn-properties-dialog.gob"
 	
     mn_mailbox_view_activate_add(MN_MAILBOX_VIEW(selfp->list));
   }}
-#line 598 "mn-properties-dialog.c"
+#line 573 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 429 "mn-properties-dialog.gob"
+#line 420 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_remove_clicked_h (MNPropertiesDialog * self, GtkButton * button)
-#line 604 "mn-properties-dialog.c"
+#line 579 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::remove_clicked_h"
-#line 429 "mn-properties-dialog.gob"
+#line 420 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 429 "mn-properties-dialog.gob"
+#line 420 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 611 "mn-properties-dialog.c"
+#line 586 "mn-properties-dialog.c"
 {
-#line 431 "mn-properties-dialog.gob"
+#line 422 "mn-properties-dialog.gob"
 	
     mn_mailbox_view_activate_remove(MN_MAILBOX_VIEW(selfp->list));
   }}
-#line 617 "mn-properties-dialog.c"
+#line 592 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 435 "mn-properties-dialog.gob"
+#line 426 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_properties_clicked_h (MNPropertiesDialog * self, GtkButton * button)
-#line 623 "mn-properties-dialog.c"
+#line 598 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::properties_clicked_h"
-#line 435 "mn-properties-dialog.gob"
+#line 426 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 435 "mn-properties-dialog.gob"
+#line 426 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 630 "mn-properties-dialog.c"
+#line 605 "mn-properties-dialog.c"
 {
-#line 437 "mn-properties-dialog.gob"
+#line 428 "mn-properties-dialog.gob"
 	
     mn_mailbox_view_activate_properties(MN_MAILBOX_VIEW(selfp->list));
   }}
-#line 636 "mn-properties-dialog.c"
+#line 611 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 441 "mn-properties-dialog.gob"
+#line 432 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_summary_enable_toggled_h (MNPropertiesDialog * self, GtkToggleButton * button)
-#line 642 "mn-properties-dialog.c"
+#line 617 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::summary_enable_toggled_h"
-#line 441 "mn-properties-dialog.gob"
+#line 432 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 441 "mn-properties-dialog.gob"
+#line 432 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 649 "mn-properties-dialog.c"
+#line 624 "mn-properties-dialog.c"
 {
-#line 443 "mn-properties-dialog.gob"
+#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 658 "mn-properties-dialog.c"
+#line 633 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
 
-#line 450 "mn-properties-dialog.gob"
+#line 441 "mn-properties-dialog.gob"
 void 
 mn_properties_dialog_summary_test_button_clicked_h (MNPropertiesDialog * self, GtkButton * button)
-#line 664 "mn-properties-dialog.c"
+#line 639 "mn-properties-dialog.c"
 {
 #define __GOB_FUNCTION__ "MN:Properties:Dialog::summary_test_button_clicked_h"
-#line 450 "mn-properties-dialog.gob"
+#line 441 "mn-properties-dialog.gob"
 	g_return_if_fail (self != NULL);
-#line 450 "mn-properties-dialog.gob"
+#line 441 "mn-properties-dialog.gob"
 	g_return_if_fail (MN_IS_PROPERTIES_DIALOG (self));
-#line 671 "mn-properties-dialog.c"
+#line 646 "mn-properties-dialog.c"
 {
-#line 452 "mn-properties-dialog.gob"
+#line 443 "mn-properties-dialog.gob"
 	
     GSList *messages = NULL;
     time_t now;
@@ -688,8 +663,10 @@ mn_properties_dialog_summary_test_button_clicked_h (MNPropertiesDialog * self, G
 				 NULL,
 				 now,
 				 NULL,
+				 /* translators: header capitalization */
 				 _("Mail Notification Properties Dialog"),
-				 subject);
+				 subject,
+				 MN_MESSAGE_NEW);
 	g_free(subject);
 
 	messages = g_slist_append(messages, message);
@@ -707,5 +684,5 @@ mn_properties_dialog_summary_test_button_clicked_h (MNPropertiesDialog * self, G
     self_update_sensitivity(self);
     gtk_widget_show(selfp->test_popup);
   }}
-#line 711 "mn-properties-dialog.c"
+#line 688 "mn-properties-dialog.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-properties-dialog.gob b/src/mn-properties-dialog.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-dialog.h"
@@ -47,30 +47,26 @@ class MN:Properties:Dialog from MN:Dialog
   private GtkWidget *notebook;
 
   /* general tab */
-  private GtkWidget *autostart_check;
-  private GtkWidget *blink_check;
-  private GtkWidget *summary_tooltip_check;
-  private GtkWidget *command_mail_reader_check;
-  private GtkWidget *command_mail_reader_entry;
-  private GtkWidget *command_new_mail_check;
-  private GtkWidget *command_new_mail_entry;
-  private GtkWidget *command_mail_read_check;
-  private GtkWidget *command_mail_read_entry;
-  private GtkWidget *action_main_window_radio;
-  private GtkWidget *action_mail_reader_radio;
-  private GtkWidget *action_update_radio;
-
-  /* mailboxes tab */
-  private GtkWidget *delay_label;
-  private GtkWidget *minutes_spin;
-  private GtkWidget *minutes_label;
-  private GtkWidget *seconds_spin;
-  private GtkWidget *seconds_label;
+  private GtkWidget *display_seen_mail_check;
   private GtkWidget *scrolled;
   private GtkWidget *list;
   private GtkWidget *selected_label;
   private GtkWidget *remove;
   private GtkWidget *properties;
+  private GtkWidget *command_new_mail_check;
+  private GtkWidget *command_new_mail_entry;
+  private GtkWidget *command_mail_read_check;
+  private GtkWidget *command_mail_read_entry;
+
+  /* status icon tab */
+  private GtkWidget *icon_blink_check;
+  private GtkWidget *icon_always_display_check;
+  private GtkWidget *icon_tooltip_mail_summary_standard_radio;
+  private GtkWidget *icon_tooltip_mail_summary_compact_radio;
+  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_update_radio;
 
   /* mail summary popup tab */
   private GtkWidget *summary_enable_check;
@@ -80,6 +76,7 @@ class MN:Properties:Dialog from MN:Dialog
   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;
@@ -88,6 +85,10 @@ class MN:Properties:Dialog from MN:Dialog
   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;
@@ -107,7 +108,7 @@ class MN:Properties:Dialog from MN:Dialog
 	  gtk_widget_destroy(VAR);
 	}
     };
-  
+
   init (self)
   {
     GtkSizeGroup *size_group;
@@ -116,31 +117,27 @@ class MN:Properties:Dialog from MN:Dialog
     GtkCellRenderer *renderer;
 
     mn_container_create_interface(GTK_CONTAINER(self),
-				  MN_INTERFACE_FILE("properties-dialog.glade"),
+				  UIDIR G_DIR_SEPARATOR_S "properties-dialog.glade",
 				  "notebook",
 				  "mn_properties_dialog_",
 				  "notebook", &selfp->notebook,
-				  "autostart_check", &selfp->autostart_check,
-				  "blink_check", &selfp->blink_check,
-				  "summary_tooltip_check", &selfp->summary_tooltip_check,
-				  "command_mail_reader_check", &selfp->command_mail_reader_check,
-				  "command_mail_reader_entry", &selfp->command_mail_reader_entry,
-				  "command_new_mail_check", &selfp->command_new_mail_check,
-				  "command_new_mail_entry", &selfp->command_new_mail_entry,
-				  "command_mail_read_check", &selfp->command_mail_read_check,
-				  "command_mail_read_entry", &selfp->command_mail_read_entry,
-				  "action_main_window_radio", &selfp->action_main_window_radio,
-				  "action_mail_reader_radio", &selfp->action_mail_reader_radio,
-				  "action_update_radio", &selfp->action_update_radio,
-				  "delay_label", &selfp->delay_label,
-				  "minutes_spin", &selfp->minutes_spin,
-				  "minutes_label", &selfp->minutes_label,
-				  "seconds_spin", &selfp->seconds_spin,
-				  "seconds_label", &selfp->seconds_label,
+				  "display_seen_mail_check", &selfp->display_seen_mail_check,
 				  "scrolled", &selfp->scrolled,
 				  "selected_label", &selfp->selected_label,
 				  "remove", &selfp->remove,
 				  "properties", &selfp->properties,
+				  "command_new_mail_check", &selfp->command_new_mail_check,
+				  "command_new_mail_entry", &selfp->command_new_mail_entry,
+				  "command_mail_read_check", &selfp->command_mail_read_check,
+				  "command_mail_read_entry", &selfp->command_mail_read_entry,
+				  "icon_blink_check", &selfp->icon_blink_check,
+				  "icon_always_display_check", &selfp->icon_always_display_check,
+				  "icon_tooltip_mail_summary_standard_radio", &selfp->icon_tooltip_mail_summary_standard_radio,
+				  "icon_tooltip_mail_summary_compact_radio", &selfp->icon_tooltip_mail_summary_compact_radio,
+				  "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_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,
@@ -148,6 +145,7 @@ class MN:Properties:Dialog from MN:Dialog
 				  "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,
@@ -156,6 +154,10 @@ class MN:Properties:Dialog from MN:Dialog
 				  "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,
@@ -167,6 +169,7 @@ class MN:Properties:Dialog from MN:Dialog
 				  "summary_test_button", &selfp->summary_test_button,
 				  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,
@@ -182,15 +185,14 @@ class MN:Properties:Dialog from MN:Dialog
 		     "swapped-signal::changed", self_update_selected_label, self,
 		     "swapped-signal::changed", self_update_sensitivity, self,
 		     NULL);
-  
+
     mn_setup_dnd(selfp->scrolled);
 
     size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
-    gtk_size_group_add_widget(size_group, selfp->command_mail_reader_check);
     gtk_size_group_add_widget(size_group, selfp->command_new_mail_check);
     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);
@@ -200,8 +202,6 @@ class MN:Properties:Dialog from MN:Dialog
     gtk_size_group_add_widget(size_group, selfp->summary_contents_font_alignment);
     g_object_unref(size_group);
 
-    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(selfp->autostart_check), mn_conf_get_autostart());
-
     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"));
@@ -217,18 +217,15 @@ class MN:Properties:Dialog from MN:Dialog
 
     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->blink_check, MN_CONF_BLINK_ON_ERRORS, "active",
-		 selfp->summary_tooltip_check, MN_CONF_SUMMARY_TOOLTIP, "active",
-		 selfp->command_mail_reader_check, MN_CONF_COMMANDS_MAIL_READER_ENABLED, "active",
-		 selfp->command_mail_reader_entry, MN_CONF_COMMANDS_MAIL_READER_COMMAND, "text",
+		 selfp->display_seen_mail_check, MN_CONF_DISPLAY_SEEN_MAIL, "active",
 		 selfp->command_new_mail_check, MN_CONF_COMMANDS_NEW_MAIL_ENABLED, "active",
 		 selfp->command_new_mail_entry, MN_CONF_COMMANDS_NEW_MAIL_COMMAND, "text",
 		 selfp->command_mail_read_check, MN_CONF_COMMANDS_MAIL_READ_ENABLED, "active",
 		 selfp->command_mail_read_entry, MN_CONF_COMMANDS_MAIL_READ_COMMAND, "text",
-		 selfp->minutes_spin, MN_CONF_DELAY_MINUTES,
-		 selfp->seconds_spin, MN_CONF_DELAY_SECONDS,
+		 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,
@@ -239,11 +236,22 @@ class MN:Properties:Dialog from MN:Dialog
 		 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",
 		 NULL);
+    mn_conf_link_radio_group_to_enum(MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY,
+				     MN_CONF_TOOLTIP_MAIL_SUMMARY,
+				     selfp->icon_tooltip_mail_summary_standard_radio, MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD,
+				     selfp->icon_tooltip_mail_summary_compact_radio, MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT,
+				     selfp->icon_tooltip_mail_summary_none_radio, MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE,
+				     NULL);
     mn_conf_link_radio_group_to_enum(MN_TYPE_ACTION,
-				     MN_CONF_DOUBLE_CLICK_ACTION_2,
-				     selfp->action_main_window_radio, MN_ACTION_DISPLAY_MAIN_WINDOW,
-				     selfp->action_mail_reader_radio, MN_ACTION_LAUNCH_MAIL_READER,
-				     selfp->action_update_radio, MN_ACTION_UPDATE_MAIL_STATUS,
+				     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_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,
 				     NULL);
     mn_conf_link_radio_group_to_enum(MN_TYPE_ASPECT_SOURCE,
 				     MN_CONF_MAIL_SUMMARY_POPUP_FONTS_ASPECT_SOURCE,
@@ -257,11 +265,6 @@ class MN:Properties:Dialog from MN:Dialog
     self_update_selected_label(self);
     self_update_sensitivity(self);
 
-    mn_g_object_connect(self,
-			mn_shell->mailboxes,
-			"swapped-signal::notify::must-poll", self_update_sensitivity, self,
-			NULL);
-
     g_signal_connect(self, "response", G_CALLBACK(self_response_h), NULL);
   }
 
@@ -275,17 +278,17 @@ class MN:Properties:Dialog from MN:Dialog
 	  int current_page;
 	  const char *sections[] = {
 	    "properties-general",
-	    "properties-mailboxes",
+	    "properties-status-icon",
 	    "properties-mail-summary-popup"
 	  };
-	
+
 	  current_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(selfp->notebook));
-	  g_return_if_fail(current_page >= 0 && current_page < G_N_ELEMENTS(sections));
+	  g_assert(current_page >= 0 && current_page < G_N_ELEMENTS(sections));
 
 	  mn_display_help(GTK_WINDOW(self), sections[current_page]);
 	  break;
 	}
-    
+
       case GTK_RESPONSE_CLOSE:
 	gtk_widget_destroy(GTK_WIDGET(self));
 	break;
@@ -302,7 +305,7 @@ class MN:Properties:Dialog from MN:Dialog
     GtkTreeIter iter;
 
     enum_class = g_type_class_ref(MN_TYPE_POSITION);
-    g_return_if_fail(enum_class != NULL);
+    g_assert(enum_class != NULL);
 
     enum_value = g_enum_get_value(enum_class, position);
     g_return_if_fail(enum_value != NULL);
@@ -342,31 +345,20 @@ class MN:Properties:Dialog from MN:Dialog
   private void
     update_sensitivity (self)
   {
-    gboolean command_mail_reader_enabled;
     gboolean command_new_mail_enabled;
     gboolean command_mail_read_enabled;
-    gboolean must_poll;
     GtkTreeSelection *selection;
     gboolean has_selection;
     gboolean summary_enabled;
     gboolean summary_autoclose_enabled;
     gboolean summary_custom_fonts_enabled;
 
-    command_mail_reader_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->command_mail_reader_check));
     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));
 
-    gtk_widget_set_sensitive(selfp->command_mail_reader_entry, command_mail_reader_enabled);
     gtk_widget_set_sensitive(selfp->command_new_mail_entry, command_new_mail_enabled);
     gtk_widget_set_sensitive(selfp->command_mail_read_entry, command_mail_read_enabled);
 
-    must_poll = mn_mailboxes_get_must_poll(mn_shell->mailboxes);
-    gtk_widget_set_sensitive(selfp->delay_label, must_poll);
-    gtk_widget_set_sensitive(selfp->minutes_spin, must_poll);
-    gtk_widget_set_sensitive(selfp->minutes_label, must_poll);
-    gtk_widget_set_sensitive(selfp->seconds_spin, must_poll);
-    gtk_widget_set_sensitive(selfp->seconds_label, must_poll);
-
     selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(selfp->list));
     has_selection = gtk_tree_selection_count_selected_rows(selection) > 0;
 
@@ -383,6 +375,7 @@ class MN:Properties:Dialog from MN:Dialog
     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);
@@ -391,6 +384,10 @@ class MN:Properties:Dialog from MN:Dialog
     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);
@@ -405,7 +402,7 @@ class MN:Properties:Dialog from MN:Dialog
   {
     return selfp->test_popup != NULL;
   }
-  
+
   /* libglade callbacks */
 
   protected void
@@ -415,12 +412,6 @@ class MN:Properties:Dialog from MN:Dialog
   }
 
   protected void
-    autostart_toggled_h (self, GtkToggleButton *togglebutton)
-  {
-    mn_conf_set_autostart(gtk_toggle_button_get_active(togglebutton));
-  }
-
-  protected void
     add_clicked_h (self, GtkButton *button)
   {
     mn_mailbox_view_activate_add(MN_MAILBOX_VIEW(selfp->list));
@@ -467,8 +458,10 @@ class MN:Properties:Dialog from MN:Dialog
 				 NULL,
 				 now,
 				 NULL,
+				 /* translators: header capitalization */
 				 _("Mail Notification Properties Dialog"),
-				 subject);
+				 subject,
+				 MN_MESSAGE_NEW);
 	g_free(subject);
 
 	messages = g_slist_append(messages, message);
diff --git a/src/mn-properties-dialog.gob.stamp b/src/mn-properties-dialog.gob.stamp
diff --git a/src/mn-properties-dialog.h b/src/mn-properties-dialog.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-reentrant-mailbox-private.h b/src/mn-reentrant-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_REENTRANT_MAILBOX_PRIVATE_H__
 #define __MN_REENTRANT_MAILBOX_PRIVATE_H__
@@ -9,16 +9,22 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 25 "mn-reentrant-mailbox.gob"
+
+#include "mn-locked-callback.h"
+
+#line 18 "mn-reentrant-mailbox-private.h"
 struct _MNReentrantMailboxPrivate {
-#line 40 "mn-reentrant-mailbox.gob"
-	GMutex * mutex;
-#line 42 "mn-reentrant-mailbox.gob"
-	unsigned int queue_check_id;
 #line 44 "mn-reentrant-mailbox.gob"
+	GMutex * mutex;
+#line 46 "mn-reentrant-mailbox.gob"
+	MNLockedGSource * queue_check_source;
+#line 48 "mn-reentrant-mailbox.gob"
 	unsigned long check_id;
-#line 45 "mn-reentrant-mailbox.gob"
+#line 49 "mn-reentrant-mailbox.gob"
 	unsigned long check_unique_id;
-#line 22 "mn-reentrant-mailbox-private.h"
+#line 28 "mn-reentrant-mailbox-private.h"
 };
 void 	mn_reentrant_mailbox_queue_check	(MNReentrantMailbox * self);
 gboolean 	mn_reentrant_mailbox_check_aborted	(MNReentrantMailbox * self, unsigned long check_id);
diff --git a/src/mn-reentrant-mailbox.c b/src/mn-reentrant-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-reentrant-mailbox.gob"
+#line 29 "mn-reentrant-mailbox.gob"
 
 #include "config.h"
 #include <gtk/gtk.h>
@@ -36,7 +35,7 @@ typedef struct
   unsigned long		check_id;
 } CheckInfo;
 
-#line 40 "mn-reentrant-mailbox.c"
+#line 39 "mn-reentrant-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_REENTRANT_MAILBOX(x)
 #define SELF_CONST(x) MN_REENTRANT_MAILBOX_CONST(x)
@@ -58,7 +57,7 @@ static void ___2_mn_reentrant_mailbox_finalize (GObject * object) G_GNUC_UNUSED;
 static gboolean mn_reentrant_mailbox_queue_check_cb (gpointer data) G_GNUC_UNUSED;
 static void ___5_mn_reentrant_mailbox_check (MNMailbox * mailbox) G_GNUC_UNUSED;
 static void mn_reentrant_mailbox_check_thread_cb (CheckInfo * info) G_GNUC_UNUSED;
-static void mn_reentrant_mailbox_impl_check (MNReentrantMailbox * self, unsigned long check_id) G_GNUC_UNUSED;
+static void mn_reentrant_mailbox_reentrant_check (MNReentrantMailbox * self, unsigned long check_id) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static MNMailboxClass *parent_class = NULL;
@@ -67,7 +66,7 @@ static MNMailboxClass *parent_class = NULL;
 #define self_queue_check mn_reentrant_mailbox_queue_check
 #define self_queue_check_cb mn_reentrant_mailbox_queue_check_cb
 #define self_check_thread_cb mn_reentrant_mailbox_check_thread_cb
-#define self_impl_check mn_reentrant_mailbox_impl_check
+#define self_reentrant_check mn_reentrant_mailbox_reentrant_check
 #define self_check_aborted mn_reentrant_mailbox_check_aborted
 #define self_check_aborted_unlocked mn_reentrant_mailbox_check_aborted_unlocked
 #define self_lock mn_reentrant_mailbox_lock
@@ -91,7 +90,7 @@ mn_reentrant_mailbox_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (MN_TYPE_MAILBOX, "MNReentrantMailbox", &info, (GTypeFlags)0);
+		type = g_type_register_static (MN_TYPE_MAILBOX, "MNReentrantMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -121,12 +120,12 @@ ___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 59 "mn-reentrant-mailbox.gob"
+#line 63 "mn-reentrant-mailbox.gob"
 	___2_mn_reentrant_mailbox_finalize(obj_self);
-#line 127 "mn-reentrant-mailbox.c"
-#line 40 "mn-reentrant-mailbox.gob"
+#line 126 "mn-reentrant-mailbox.c"
+#line 44 "mn-reentrant-mailbox.gob"
 	if(self->_priv->mutex) { g_mutex_free ((gpointer) self->_priv->mutex); self->_priv->mutex = NULL; }
-#line 130 "mn-reentrant-mailbox.c"
+#line 129 "mn-reentrant-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -135,9 +134,9 @@ 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 40 "mn-reentrant-mailbox.gob"
+#line 44 "mn-reentrant-mailbox.gob"
 	o->_priv->mutex = g_mutex_new();
-#line 141 "mn-reentrant-mailbox.c"
+#line 140 "mn-reentrant-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 static void 
@@ -151,30 +150,30 @@ mn_reentrant_mailbox_class_init (MNReentrantMailboxClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
 
-#line 47 "mn-reentrant-mailbox.gob"
+#line 51 "mn-reentrant-mailbox.gob"
 	mn_mailbox_class->removed = ___1_mn_reentrant_mailbox_removed;
-#line 59 "mn-reentrant-mailbox.gob"
+#line 63 "mn-reentrant-mailbox.gob"
 	g_object_class->finalize = ___finalize;
-#line 92 "mn-reentrant-mailbox.gob"
+#line 103 "mn-reentrant-mailbox.gob"
 	mn_mailbox_class->check = ___5_mn_reentrant_mailbox_check;
-#line 161 "mn-reentrant-mailbox.c"
-	c->impl_check = NULL;
+#line 160 "mn-reentrant-mailbox.c"
+	c->reentrant_check = NULL;
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 47 "mn-reentrant-mailbox.gob"
+#line 51 "mn-reentrant-mailbox.gob"
 static void 
 ___1_mn_reentrant_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 171 "mn-reentrant-mailbox.c"
+#line 170 "mn-reentrant-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->removed) \
 		(* MN_MAILBOX_CLASS(parent_class)->removed)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::removed"
 {
-#line 49 "mn-reentrant-mailbox.gob"
+#line 53 "mn-reentrant-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -184,87 +183,85 @@ ___1_mn_reentrant_mailbox_removed (MNMailbox * mailbox G_GNUC_UNUSED)
 
     PARENT_HANDLER(mailbox);
   }}
-#line 188 "mn-reentrant-mailbox.c"
+#line 187 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 59 "mn-reentrant-mailbox.gob"
+#line 63 "mn-reentrant-mailbox.gob"
 static void 
 ___2_mn_reentrant_mailbox_finalize (GObject * object G_GNUC_UNUSED)
-#line 195 "mn-reentrant-mailbox.c"
+#line 194 "mn-reentrant-mailbox.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::finalize"
 {
-#line 61 "mn-reentrant-mailbox.gob"
+#line 65 "mn-reentrant-mailbox.gob"
 	
     Self *self = SELF(object);
 
-    if (selfp->queue_check_id)
-      g_source_remove(selfp->queue_check_id);
+    if (selfp->queue_check_source)
+      mn_locked_g_source_remove(selfp->queue_check_source);
 
     PARENT_HANDLER(object);
   }}
-#line 211 "mn-reentrant-mailbox.c"
+#line 210 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 70 "mn-reentrant-mailbox.gob"
+#line 83 "mn-reentrant-mailbox.gob"
 void 
 mn_reentrant_mailbox_queue_check (MNReentrantMailbox * self)
-#line 218 "mn-reentrant-mailbox.c"
+#line 217 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::queue_check"
-#line 70 "mn-reentrant-mailbox.gob"
+#line 83 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 70 "mn-reentrant-mailbox.gob"
+#line 83 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self));
-#line 225 "mn-reentrant-mailbox.c"
+#line 224 "mn-reentrant-mailbox.c"
 {
-#line 72 "mn-reentrant-mailbox.gob"
+#line 85 "mn-reentrant-mailbox.gob"
 	
-    if (selfp->queue_check_id)
-      g_source_remove(selfp->queue_check_id);
+    if (selfp->queue_check_source)
+      mn_locked_g_source_remove(selfp->queue_check_source);
 
-    selfp->queue_check_id = g_idle_add(self_queue_check_cb, self);
+    selfp->queue_check_source = mn_g_idle_add_gdk_locked(self_queue_check_cb, self);
   }}
-#line 234 "mn-reentrant-mailbox.c"
+#line 233 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 79 "mn-reentrant-mailbox.gob"
+#line 92 "mn-reentrant-mailbox.gob"
 static gboolean 
 mn_reentrant_mailbox_queue_check_cb (gpointer data)
-#line 240 "mn-reentrant-mailbox.c"
+#line 239 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::queue_check_cb"
 {
-#line 81 "mn-reentrant-mailbox.gob"
+#line 94 "mn-reentrant-mailbox.gob"
 	
     Self *self = data;
 
-    GDK_THREADS_ENTER();
     mn_mailbox_check(MN_MAILBOX(self));
-    GDK_THREADS_LEAVE();
 
-    selfp->queue_check_id = 0;
+    selfp->queue_check_source = NULL;
     return FALSE;		/* remove source */
   }}
-#line 255 "mn-reentrant-mailbox.c"
+#line 252 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 92 "mn-reentrant-mailbox.gob"
+#line 103 "mn-reentrant-mailbox.gob"
 static void 
 ___5_mn_reentrant_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 261 "mn-reentrant-mailbox.c"
+#line 258 "mn-reentrant-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->check) \
 		(* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); }
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check"
 {
-#line 94 "mn-reentrant-mailbox.gob"
+#line 105 "mn-reentrant-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     CheckInfo *info;
@@ -286,22 +283,22 @@ ___5_mn_reentrant_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
 
     mn_thread_create((GThreadFunc) self_check_thread_cb, info);
   }}
-#line 290 "mn-reentrant-mailbox.c"
+#line 287 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 116 "mn-reentrant-mailbox.gob"
+#line 127 "mn-reentrant-mailbox.gob"
 static void 
 mn_reentrant_mailbox_check_thread_cb (CheckInfo * info)
-#line 297 "mn-reentrant-mailbox.c"
+#line 294 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check_thread_cb"
 {
-#line 118 "mn-reentrant-mailbox.gob"
+#line 129 "mn-reentrant-mailbox.gob"
 	
     Self *self = info->self;
 
-    self_impl_check(self, info->check_id);
+    self_reentrant_check(self, info->check_id);
 
     self_lock(self);
     if (selfp->check_id == info->check_id)
@@ -317,39 +314,39 @@ mn_reentrant_mailbox_check_thread_cb (CheckInfo * info)
 
     g_free(info);
   }}
-#line 321 "mn-reentrant-mailbox.c"
+#line 318 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 138 "mn-reentrant-mailbox.gob"
+#line 149 "mn-reentrant-mailbox.gob"
 static void 
-mn_reentrant_mailbox_impl_check (MNReentrantMailbox * self, unsigned long check_id)
-#line 327 "mn-reentrant-mailbox.c"
+mn_reentrant_mailbox_reentrant_check (MNReentrantMailbox * self, unsigned long check_id)
+#line 324 "mn-reentrant-mailbox.c"
 {
 	MNReentrantMailboxClass *klass;
-#line 138 "mn-reentrant-mailbox.gob"
+#line 149 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 138 "mn-reentrant-mailbox.gob"
+#line 149 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self));
-#line 334 "mn-reentrant-mailbox.c"
+#line 331 "mn-reentrant-mailbox.c"
 	klass = MN_REENTRANT_MAILBOX_GET_CLASS(self);
 
-	if(klass->impl_check)
-		(*klass->impl_check)(self,check_id);
+	if(klass->reentrant_check)
+		(*klass->reentrant_check)(self,check_id);
 }
 
-#line 141 "mn-reentrant-mailbox.gob"
+#line 152 "mn-reentrant-mailbox.gob"
 gboolean 
 mn_reentrant_mailbox_check_aborted (MNReentrantMailbox * self, unsigned long check_id)
-#line 344 "mn-reentrant-mailbox.c"
+#line 341 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check_aborted"
-#line 141 "mn-reentrant-mailbox.gob"
+#line 152 "mn-reentrant-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 141 "mn-reentrant-mailbox.gob"
+#line 152 "mn-reentrant-mailbox.gob"
 	g_return_val_if_fail (MN_IS_REENTRANT_MAILBOX (self), (gboolean )0);
-#line 351 "mn-reentrant-mailbox.c"
+#line 348 "mn-reentrant-mailbox.c"
 {
-#line 143 "mn-reentrant-mailbox.gob"
+#line 154 "mn-reentrant-mailbox.gob"
 	
     gboolean aborted;
 
@@ -359,62 +356,62 @@ mn_reentrant_mailbox_check_aborted (MNReentrantMailbox * self, unsigned long che
 
     return aborted;
   }}
-#line 363 "mn-reentrant-mailbox.c"
+#line 360 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 153 "mn-reentrant-mailbox.gob"
+#line 164 "mn-reentrant-mailbox.gob"
 gboolean 
 mn_reentrant_mailbox_check_aborted_unlocked (MNReentrantMailbox * self, unsigned long check_id)
-#line 369 "mn-reentrant-mailbox.c"
+#line 366 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::check_aborted_unlocked"
-#line 153 "mn-reentrant-mailbox.gob"
+#line 164 "mn-reentrant-mailbox.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 153 "mn-reentrant-mailbox.gob"
+#line 164 "mn-reentrant-mailbox.gob"
 	g_return_val_if_fail (MN_IS_REENTRANT_MAILBOX (self), (gboolean )0);
-#line 376 "mn-reentrant-mailbox.c"
+#line 373 "mn-reentrant-mailbox.c"
 {
-#line 155 "mn-reentrant-mailbox.gob"
+#line 166 "mn-reentrant-mailbox.gob"
 	
     return selfp->check_id != check_id;
   }}
-#line 382 "mn-reentrant-mailbox.c"
+#line 379 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 159 "mn-reentrant-mailbox.gob"
+#line 170 "mn-reentrant-mailbox.gob"
 void 
 mn_reentrant_mailbox_lock (MNReentrantMailbox * self)
-#line 388 "mn-reentrant-mailbox.c"
+#line 385 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::lock"
-#line 159 "mn-reentrant-mailbox.gob"
+#line 170 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 159 "mn-reentrant-mailbox.gob"
+#line 170 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self));
-#line 395 "mn-reentrant-mailbox.c"
+#line 392 "mn-reentrant-mailbox.c"
 {
-#line 161 "mn-reentrant-mailbox.gob"
+#line 172 "mn-reentrant-mailbox.gob"
 	
     g_mutex_lock(selfp->mutex);
   }}
-#line 401 "mn-reentrant-mailbox.c"
+#line 398 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 165 "mn-reentrant-mailbox.gob"
+#line 176 "mn-reentrant-mailbox.gob"
 void 
 mn_reentrant_mailbox_unlock (MNReentrantMailbox * self)
-#line 407 "mn-reentrant-mailbox.c"
+#line 404 "mn-reentrant-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:Reentrant:Mailbox::unlock"
-#line 165 "mn-reentrant-mailbox.gob"
+#line 176 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (self != NULL);
-#line 165 "mn-reentrant-mailbox.gob"
+#line 176 "mn-reentrant-mailbox.gob"
 	g_return_if_fail (MN_IS_REENTRANT_MAILBOX (self));
-#line 414 "mn-reentrant-mailbox.c"
+#line 411 "mn-reentrant-mailbox.c"
 {
-#line 167 "mn-reentrant-mailbox.gob"
+#line 178 "mn-reentrant-mailbox.gob"
 	
     g_mutex_unlock(selfp->mutex);
   }}
-#line 420 "mn-reentrant-mailbox.c"
+#line 417 "mn-reentrant-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-reentrant-mailbox.gob b/src/mn-reentrant-mailbox.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,12 +16,16 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-mailbox.h"
 %}
 
+%privateheader{
+#include "mn-locked-callback.h"
+%}
+
 %{
 #include "config.h"
 #include <gtk/gtk.h>
@@ -35,11 +39,11 @@ typedef struct
 } CheckInfo;
 %}
 
-class MN:Reentrant:Mailbox from MN:Mailbox
+class MN:Reentrant:Mailbox from MN:Mailbox (abstract)
 {
   private GMutex *mutex = {g_mutex_new()} destroywith g_mutex_free;
 
-  private unsigned int queue_check_id;
+  private MNLockedGSource *queue_check_source;
 
   private unsigned long check_id;
   private unsigned long check_unique_id;
@@ -61,31 +65,38 @@ class MN:Reentrant:Mailbox from MN:Mailbox
   {
     Self *self = SELF(object);
 
-    if (selfp->queue_check_id)
-      g_source_remove(selfp->queue_check_id);
+    if (selfp->queue_check_source)
+      mn_locked_g_source_remove(selfp->queue_check_source);
 
     PARENT_HANDLER(object);
   }
 
+  /**
+   * queue_check():
+   * @self: a mailbox
+   *
+   * Queue a mail check on @self, or replace an already queued check.
+   *
+   * This function is not thread-safe. It is only called from main
+   * loop callbacks (hence always from the same thread).
+   **/
   protected void
     queue_check (self)
   {
-    if (selfp->queue_check_id)
-      g_source_remove(selfp->queue_check_id);
+    if (selfp->queue_check_source)
+      mn_locked_g_source_remove(selfp->queue_check_source);
 
-    selfp->queue_check_id = g_idle_add(self_queue_check_cb, self);
+    selfp->queue_check_source = mn_g_idle_add_gdk_locked(self_queue_check_cb, self);
   }
-  
+
   private gboolean
     queue_check_cb (gpointer data)
   {
     Self *self = data;
 
-    GDK_THREADS_ENTER();
     mn_mailbox_check(MN_MAILBOX(self));
-    GDK_THREADS_LEAVE();
 
-    selfp->queue_check_id = 0;
+    selfp->queue_check_source = NULL;
     return FALSE;		/* remove source */
   }
 
@@ -118,7 +129,7 @@ class MN:Reentrant:Mailbox from MN:Mailbox
   {
     Self *self = info->self;
 
-    self_impl_check(self, info->check_id);
+    self_reentrant_check(self, info->check_id);
 
     self_lock(self);
     if (selfp->check_id == info->check_id)
@@ -136,7 +147,7 @@ class MN:Reentrant:Mailbox from MN:Mailbox
   }
 
   virtual private void
-    impl_check (self, unsigned long check_id);
+    reentrant_check (self, unsigned long check_id);
 
   protected gboolean
     check_aborted (self, unsigned long check_id)
@@ -149,7 +160,7 @@ class MN:Reentrant:Mailbox from MN:Mailbox
 
     return aborted;
   }
-  
+
   protected gboolean
     check_aborted_unlocked (self, unsigned long check_id)
   {
diff --git a/src/mn-reentrant-mailbox.gob.stamp b/src/mn-reentrant-mailbox.gob.stamp
diff --git a/src/mn-reentrant-mailbox.h b/src/mn-reentrant-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -47,7 +47,7 @@ struct _MNReentrantMailbox {
 typedef struct _MNReentrantMailboxClass MNReentrantMailboxClass;
 struct _MNReentrantMailboxClass {
 	MNMailboxClass __parent__;
-	void (* impl_check) (MNReentrantMailbox * self, unsigned long check_id);
+	void (* reentrant_check) (MNReentrantMailbox * self, unsigned long check_id);
 };
 
 
diff --git a/src/mn-shell-private.h b/src/mn-shell-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_SHELL_PRIVATE_H__
 #define __MN_SHELL_PRIVATE_H__
@@ -16,25 +16,23 @@ extern "C" {
 
 #line 18 "mn-shell-private.h"
 struct _MNShellPrivate {
-#line 52 "mn-shell.gob"
+#line 59 "mn-shell.gob"
 	MNMailIcon * icon;
-#line 53 "mn-shell.gob"
+#line 60 "mn-shell.gob"
 	gboolean has_new;
-#line 55 "mn-shell.gob"
-	GtkWidget * main_window;
-#line 56 "mn-shell.gob"
+#line 62 "mn-shell.gob"
 	GtkWidget * properties_dialog;
-#line 58 "mn-shell.gob"
+#line 64 "mn-shell.gob"
 	GSList * mailbox_properties_dialogs;
-#line 60 "mn-shell.gob"
+#line 66 "mn-shell.gob"
 	GtkWidget * popup;
-#line 61 "mn-shell.gob"
+#line 67 "mn-shell.gob"
 	GSList * popup_messages;
-#line 62 "mn-shell.gob"
-	GSList * popup_previous_messages;
-#line 64 "mn-shell.gob"
+#line 68 "mn-shell.gob"
+	GHashTable * popup_previous_messages;
+#line 70 "mn-shell.gob"
 	GtkWidget * about_dialog;
-#line 38 "mn-shell-private.h"
+#line 36 "mn-shell-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-shell.c b/src/mn-shell.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:58 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -26,22 +25,38 @@
 #line 31 "mn-shell.gob"
 
 #include "config.h"
-#include <errno.h>
-#include <gnome.h>
+#include <glib/gi18n.h>
 #include <eel/eel.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-main-window.h"
 #include "mn-mail-summary-popup.h"
-#include "mn-message-view.h"
+#include "mn-standard-message-view.h"
+#include "mn-compact-message-view.h"
 #include "mn-message.h"
+#include "mn-stock.h"
 
 MNShell *mn_shell = NULL;
 
-#line 45 "mn-shell.c"
+#line 44 "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" },
+	{ MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE, (char *)"MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE", (char *)"none" },
+	{ 0, NULL, NULL }
+};
+
+GType
+mn_shell_tooltip_mail_summary_get_type (void)
+{
+	static GType type = 0;
+	if ___GOB_UNLIKELY(type == 0)
+		type = g_enum_register_static ("MNShellTooltipMailSummary", _mn_shell_tooltip_mail_summary_values);
+	return type;
+}
+
 /* self casting macros */
 #define SELF(x) MN_SHELL(x)
 #define SELF_CONST(x) MN_SHELL_CONST(x)
@@ -63,8 +78,9 @@ static void mn_shell_messages_changed_h (MNMailboxes * mailboxes, gboolean has_n
 static void mn_shell_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) G_GNUC_UNUSED;
 static void mn_shell_init_icon (MNShell * self) G_GNUC_UNUSED;
 static void mn_shell_notify_blink_on_errors_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
+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_summary_tooltip_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;
@@ -77,13 +93,13 @@ static void mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data) G_G
 static void mn_shell_update_sensitivity (MNShell * self) G_GNUC_UNUSED;
 static void mn_shell_update_icon (MNShell * self) G_GNUC_UNUSED;
 static void mn_shell_update_tooltip (MNShell * self) G_GNUC_UNUSED;
-static int mn_shell_new_mailboxes_compare_func (gconstpointer a, gconstpointer b) G_GNUC_UNUSED;
-static time_t mn_shell_get_latest_sent_time (MNMailbox * mailbox) 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 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_display_window (MNShell * self, GType type, GtkWidget ** ptr, GtkWindow * parent) 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;
 
 /* pointer to the class of our parent */
@@ -94,8 +110,9 @@ static GObjectClass *parent_class = NULL;
 #define self_mailbox_removed_h mn_shell_mailbox_removed_h
 #define self_init_icon mn_shell_init_icon
 #define self_notify_blink_on_errors_cb mn_shell_notify_blink_on_errors_cb
+#define self_notify_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_summary_tooltip_cb mn_shell_notify_summary_tooltip_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
@@ -108,14 +125,13 @@ static GObjectClass *parent_class = NULL;
 #define self_update_sensitivity mn_shell_update_sensitivity
 #define self_update_icon mn_shell_update_icon
 #define self_update_tooltip mn_shell_update_tooltip
-#define self_new_mailboxes_compare_func mn_shell_new_mailboxes_compare_func
-#define self_get_latest_sent_time mn_shell_get_latest_sent_time
+#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_new mn_shell_new
-#define self_display_main_window mn_shell_display_main_window
 #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
@@ -173,9 +189,9 @@ ___dispose (GObject *obj_self)
 	MNShell *self G_GNUC_UNUSED = MN_SHELL (obj_self);
 	if (G_OBJECT_CLASS (parent_class)->dispose) \
 		(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 51 "mn-shell.gob"
+#line 58 "mn-shell.gob"
 	if(self->mailboxes) { g_object_unref ((gpointer) self->mailboxes); self->mailboxes = NULL; }
-#line 179 "mn-shell.c"
+#line 195 "mn-shell.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -186,15 +202,15 @@ ___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 93 "mn-shell.gob"
+#line 100 "mn-shell.gob"
 	___2_mn_shell_finalize(obj_self);
-#line 192 "mn-shell.c"
-#line 61 "mn-shell.gob"
+#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 195 "mn-shell.c"
-#line 62 "mn-shell.gob"
-	if(self->_priv->popup_previous_messages) { mn_g_object_slist_free ((gpointer) self->_priv->popup_previous_messages); self->_priv->popup_previous_messages = NULL; }
-#line 198 "mn-shell.c"
+#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"
 }
 #undef __GOB_FUNCTION__
 
@@ -208,24 +224,27 @@ mn_shell_class_init (MNShellClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 93 "mn-shell.gob"
+#line 100 "mn-shell.gob"
 	g_object_class->finalize = ___finalize;
-#line 214 "mn-shell.c"
+#line 230 "mn-shell.c"
 	g_object_class->dispose = ___dispose;
 }
 #undef __GOB_FUNCTION__
-#line 66 "mn-shell.gob"
+#line 72 "mn-shell.gob"
 static void 
 mn_shell_init (MNShell * self G_GNUC_UNUSED)
-#line 221 "mn-shell.c"
+#line 237 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::init"
 	self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MN_TYPE_SHELL,MNShellPrivate);
-#line 51 "mn-shell.gob"
+#line 58 "mn-shell.gob"
 	self->mailboxes = mn_mailboxes_new();
-#line 227 "mn-shell.c"
+#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 67 "mn-shell.gob"
+#line 73 "mn-shell.gob"
 
     g_assert(mn_shell == NULL);
 
@@ -234,84 +253,84 @@ mn_shell_init (MNShell * self G_GNUC_UNUSED)
 
     self_init_icon(self);
 
-    mn_conf_notifications_add(self,
-			      MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self,
-			      MN_CONF_COMMANDS_MAIL_READER_NAMESPACE, self_notify_mail_reader_cb, self,
-			      MN_CONF_SUMMARY_TOOLTIP, self_notify_summary_tooltip_cb, self,
-			      MN_CONF_MAIL_SUMMARY_POPUP_ENABLE, self_notify_mail_summary_popup_enable_cb, self,
-			      NULL);
+    mn_g_object_gconf_notifications_add_gdk_locked(self,
+						   MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self,
+						   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,
 		     "signal::messages-changed", self_messages_changed_h, self,
 		     "signal::mailbox-removed", self_mailbox_removed_h, self,
-		     "swapped-signal::notify::must-poll", self_update_sensitivity, self,
+		     "swapped-signal::notify::poll", self_update_sensitivity, self,
 		     "swapped-signal::list-changed", self_update_tooltip, self,
 		     "swapped-signal::list-changed", self_update_icon, self,
 		     "swapped-signal::error-changed", self_update_tooltip, self,
 		     "swapped-signal::error-changed", self_update_icon, self,
 		     NULL);
   
-#line 255 "mn-shell.c"
+#line 275 "mn-shell.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 93 "mn-shell.gob"
+#line 100 "mn-shell.gob"
 static void 
 ___2_mn_shell_finalize (GObject * object G_GNUC_UNUSED)
-#line 265 "mn-shell.c"
+#line 285 "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 95 "mn-shell.gob"
+#line 102 "mn-shell.gob"
 	
     gtk_main_quit();
     PARENT_HANDLER(object);
   }}
-#line 277 "mn-shell.c"
+#line 297 "mn-shell.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 100 "mn-shell.gob"
+#line 107 "mn-shell.gob"
 static void 
 mn_shell_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data)
-#line 284 "mn-shell.c"
+#line 304 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::messages_changed_h"
 {
-#line 104 "mn-shell.gob"
+#line 111 "mn-shell.gob"
 	
     Self *self = user_data;
 
     if (has_new)
       {
-	gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
 	if (mn_conf_has_command(MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE))
-	  mn_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
+	  mn_conf_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND, FALSE);
       }
 
     if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
       self_update_popup(self, has_new);
-    
+
     self_update_tooltip(self);
     self_update_icon(self);
   }}
-#line 305 "mn-shell.c"
+#line 324 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 121 "mn-shell.gob"
+#line 127 "mn-shell.gob"
 static void 
 mn_shell_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
-#line 311 "mn-shell.c"
+#line 330 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::mailbox_removed_h"
 {
-#line 125 "mn-shell.gob"
+#line 131 "mn-shell.gob"
 	
     Self *self = user_data;
     MNMailboxPropertiesDialog *dialog;
@@ -321,28 +340,27 @@ mn_shell_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpoint
     if (dialog)
       gtk_widget_destroy(GTK_WIDGET(dialog));
   }}
-#line 325 "mn-shell.c"
+#line 344 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 135 "mn-shell.gob"
+#line 141 "mn-shell.gob"
 static void 
 mn_shell_init_icon (MNShell * self)
-#line 331 "mn-shell.c"
+#line 350 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::init_icon"
-#line 135 "mn-shell.gob"
+#line 141 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 135 "mn-shell.gob"
+#line 141 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 338 "mn-shell.c"
+#line 357 "mn-shell.c"
 {
-#line 137 "mn-shell.gob"
+#line 143 "mn-shell.gob"
 	
     selfp->icon = MN_MAIL_ICON(mn_mail_icon_new());
 
     g_object_connect(selfp->icon,
 		     "signal::activate", self_icon_activate_h, self,
-		     "swapped-signal::activate-main-window", self_display_main_window, self,
 		     "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self,
 		     "signal::activate-update", self_icon_activate_update_h, self,
 		     "signal::activate-properties", self_icon_activate_properties_h, self,
@@ -351,112 +369,118 @@ mn_shell_init_icon (MNShell * self)
 		     "signal::activate-remove", self_icon_activate_remove_h, self,
 		     "signal::destroy", self_icon_destroy_h, self,
 		     NULL);
-		     
+
     self_update_sensitivity(self);
     self_update_tooltip(self);
     self_update_icon(self);
   }}
-#line 360 "mn-shell.c"
+#line 378 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 157 "mn-shell.gob"
+#line 162 "mn-shell.gob"
 static void 
 mn_shell_notify_blink_on_errors_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 366 "mn-shell.c"
+#line 384 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::notify_blink_on_errors_cb"
 {
-#line 162 "mn-shell.gob"
+#line 167 "mn-shell.gob"
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
     self_update_icon(self);
-    GDK_THREADS_LEAVE();
   }}
-#line 378 "mn-shell.c"
+#line 394 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 170 "mn-shell.gob"
+#line 173 "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"
+{
+#define __GOB_FUNCTION__ "MN:Shell::notify_always_display_icon_cb"
+{
+#line 178 "mn-shell.gob"
+	
+    Self *self = user_data;
+
+    self_update_icon(self);
+  }}
+#line 410 "mn-shell.c"
+#undef __GOB_FUNCTION__
+
+#line 184 "mn-shell.gob"
 static void 
 mn_shell_notify_mail_reader_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 384 "mn-shell.c"
+#line 416 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::notify_mail_reader_cb"
 {
-#line 175 "mn-shell.gob"
+#line 189 "mn-shell.gob"
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
     self_update_sensitivity(self);
-    GDK_THREADS_LEAVE();
   }}
-#line 396 "mn-shell.c"
+#line 426 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 183 "mn-shell.gob"
+#line 195 "mn-shell.gob"
 static void 
-mn_shell_notify_summary_tooltip_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 402 "mn-shell.c"
+mn_shell_notify_tooltip_mail_summary_cb (GConfClient * client, unsigned int cnxn_id, GConfEntry * entry, gpointer user_data)
+#line 432 "mn-shell.c"
 {
-#define __GOB_FUNCTION__ "MN:Shell::notify_summary_tooltip_cb"
+#define __GOB_FUNCTION__ "MN:Shell::notify_tooltip_mail_summary_cb"
 {
-#line 188 "mn-shell.gob"
+#line 200 "mn-shell.gob"
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
     self_update_tooltip(self);
-    GDK_THREADS_LEAVE();
   }}
-#line 414 "mn-shell.c"
+#line 442 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 196 "mn-shell.gob"
+#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 420 "mn-shell.c"
+#line 448 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::notify_mail_summary_popup_enable_cb"
 {
-#line 201 "mn-shell.gob"
+#line 211 "mn-shell.gob"
 	
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     if (selfp->popup && ! eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
       gtk_widget_destroy(selfp->popup);
-      
-    GDK_THREADS_LEAVE();
   }}
-#line 435 "mn-shell.c"
+#line 459 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 212 "mn-shell.gob"
+#line 218 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data)
-#line 441 "mn-shell.c"
+#line 465 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_h"
 {
-#line 214 "mn-shell.gob"
+#line 220 "mn-shell.gob"
 	
     MNShell *self = user_data;
     MNAction action;
 
-    action = mn_conf_get_enum_value(MN_TYPE_ACTION, MN_CONF_DOUBLE_CLICK_ACTION_2);
+    action = mn_conf_get_enum_value(MN_TYPE_ACTION, MN_CONF_CLICK_ACTION);
 
     switch (action)
       {
-      case MN_ACTION_DISPLAY_MAIN_WINDOW:
-	self_display_main_window(self);
+      case MN_ACTION_DISPLAY_PROPERTIES_DIALOG:
+	self_display_properties_dialog(self);
 	break;
 
       case MN_ACTION_LAUNCH_MAIL_READER:
-	if (mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READER_NAMESPACE))
-	  mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+	if (mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE))
+	  mn_conf_execute_command(MN_CONF_GNOME_MAIL_READER_COMMAND, TRUE);
 	break;
 
       case MN_ACTION_UPDATE_MAIL_STATUS:
@@ -464,154 +488,155 @@ mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data)
 	break;
 
       default:
-	g_return_if_reached();
+	g_assert_not_reached();
       }
   }}
-#line 471 "mn-shell.c"
+#line 495 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 240 "mn-shell.gob"
+#line 246 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_mail_reader_h (MNMailIcon * icon, gpointer user_data)
-#line 477 "mn-shell.c"
+#line 501 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_mail_reader_h"
 {
-#line 242 "mn-shell.gob"
+#line 248 "mn-shell.gob"
 	
-    mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+    mn_conf_execute_command(MN_CONF_GNOME_MAIL_READER_COMMAND, TRUE);
   }}
-#line 485 "mn-shell.c"
+#line 509 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 246 "mn-shell.gob"
+#line 252 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_update_h (MNMailIcon * icon, gpointer user_data)
-#line 491 "mn-shell.c"
+#line 515 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_update_h"
 {
-#line 248 "mn-shell.gob"
+#line 254 "mn-shell.gob"
 	
     Self *self = user_data;
     mn_mailboxes_check(self->mailboxes);
   }}
-#line 500 "mn-shell.c"
+#line 524 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 253 "mn-shell.gob"
+#line 259 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_properties_h (MNMailIcon * icon, gpointer user_data)
-#line 506 "mn-shell.c"
+#line 530 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_properties_h"
 {
-#line 255 "mn-shell.gob"
+#line 261 "mn-shell.gob"
 	
     Self *self = user_data;
-    self_display_properties_dialog(self, NULL);
+    self_display_properties_dialog(self);
   }}
-#line 515 "mn-shell.c"
+#line 539 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 260 "mn-shell.gob"
+#line 266 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_help_h (MNMailIcon * icon, gpointer user_data)
-#line 521 "mn-shell.c"
+#line 545 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_help_h"
 {
-#line 262 "mn-shell.gob"
+#line 268 "mn-shell.gob"
 	
     mn_display_help(NULL, NULL);
   }}
-#line 529 "mn-shell.c"
+#line 553 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 266 "mn-shell.gob"
+#line 272 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data)
-#line 535 "mn-shell.c"
+#line 559 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_about_h"
 {
-#line 268 "mn-shell.gob"
+#line 274 "mn-shell.gob"
 	
     Self *self = user_data;
-    self_display_about_dialog(self, NULL);
+    self_display_about_dialog(self);
   }}
-#line 544 "mn-shell.c"
+#line 568 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 273 "mn-shell.gob"
+#line 279 "mn-shell.gob"
 static void 
 mn_shell_icon_activate_remove_h (MNMailIcon * icon, gpointer user_data)
-#line 550 "mn-shell.c"
+#line 574 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_activate_remove_h"
 {
-#line 275 "mn-shell.gob"
+#line 281 "mn-shell.gob"
 	
     Self *self = user_data;
     g_object_unref(self);
   }}
-#line 559 "mn-shell.c"
+#line 583 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 280 "mn-shell.gob"
+#line 286 "mn-shell.gob"
 static void 
 mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data)
-#line 565 "mn-shell.c"
+#line 589 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::icon_destroy_h"
 {
-#line 282 "mn-shell.gob"
+#line 288 "mn-shell.gob"
 	
     Self *self = user_data;
 
     /* The Notification Area applet has been terminated. Recreate the icon. */
     self_init_icon(self);
   }}
-#line 576 "mn-shell.c"
+#line 600 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 289 "mn-shell.gob"
+#line 295 "mn-shell.gob"
 static void 
 mn_shell_update_sensitivity (MNShell * self)
-#line 582 "mn-shell.c"
+#line 606 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_sensitivity"
-#line 289 "mn-shell.gob"
+#line 295 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 289 "mn-shell.gob"
+#line 295 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 589 "mn-shell.c"
+#line 613 "mn-shell.c"
 {
-#line 291 "mn-shell.gob"
+#line 297 "mn-shell.gob"
 	
-    gtk_widget_set_sensitive(selfp->icon->mail_reader_item, mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READER_NAMESPACE));
-    gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_must_poll(self->mailboxes));
+    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));
   }}
-#line 596 "mn-shell.c"
+#line 620 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 296 "mn-shell.gob"
+#line 302 "mn-shell.gob"
 static void 
 mn_shell_update_icon (MNShell * self)
-#line 602 "mn-shell.c"
+#line 626 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_icon"
-#line 296 "mn-shell.gob"
+#line 302 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 296 "mn-shell.gob"
+#line 302 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 609 "mn-shell.c"
+#line 633 "mn-shell.c"
 {
-#line 298 "mn-shell.gob"
+#line 304 "mn-shell.gob"
 	
     GList *l;
     gboolean has_new = FALSE;
     gboolean blink = FALSE;
+    gboolean always = eel_gconf_get_boolean(MN_CONF_ALWAYS_DISPLAY_ICON);
 
     MN_LIST_FOREACH(l, self->mailboxes->list)
       {
@@ -624,80 +649,80 @@ mn_shell_update_icon (MNShell * self)
       }
 
     if (selfp->has_new && ! has_new && mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READ_NAMESPACE))
-      mn_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND);
+      mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND, FALSE);
     selfp->has_new = has_new;
-    
+
     if (blink && ! eel_gconf_get_boolean(MN_CONF_BLINK_ON_ERRORS))
       blink = FALSE;
 
-    if (has_new || blink)
+    if (has_new || blink || always)
       {
-	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(selfp->icon->image), blink);
+	mn_blinking_image_set_from_stock(MN_BLINKING_IMAGE(selfp->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),
+				       blink);
 	gtk_widget_show(GTK_WIDGET(selfp->icon));
       }
     else
       gtk_widget_hide(GTK_WIDGET(selfp->icon));
   }}
-#line 642 "mn-shell.c"
+#line 671 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 329 "mn-shell.gob"
+#line 340 "mn-shell.gob"
 static void 
 mn_shell_update_tooltip (MNShell * self)
-#line 648 "mn-shell.c"
+#line 677 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_tooltip"
-#line 329 "mn-shell.gob"
+#line 340 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 329 "mn-shell.gob"
+#line 340 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 655 "mn-shell.c"
+#line 684 "mn-shell.c"
 {
-#line 331 "mn-shell.gob"
+#line 342 "mn-shell.gob"
 	
-    GtkWidget *vbox;
-
-    vbox = gtk_vbox_new(FALSE, 18);
+    GtkVBox *vbox = NULL;
 
     if (self->mailboxes->list)
       {
-	GList *l;
-	GSList *sl;
+	GList *la;
+	GSList *lb;
 	GSList *new_mailboxes = NULL;
 	GSList *error_mailboxes = NULL;
 
-	MN_LIST_FOREACH(l, self->mailboxes->list)
+	MN_LIST_FOREACH(la, self->mailboxes->list)
           {
-	    MNMailbox *mailbox = l->data;
-	    
+	    MNMailbox *mailbox = la->data;
+
 	    if (mailbox->messages)
-	      new_mailboxes = g_slist_append(new_mailboxes, mailbox);
+	      new_mailboxes = g_slist_insert_sorted(new_mailboxes, mailbox, (GCompareFunc) self_new_mailboxes_compare_cb);
 
 	    if (mailbox->error)
-	      error_mailboxes = g_slist_append(error_mailboxes, mailbox);
+	      error_mailboxes = g_slist_insert_sorted(error_mailboxes, mailbox, mn_mailboxes_compare_by_name_func);
 	  }
 
 	if (new_mailboxes)
 	  {
 	    GString *string = g_string_new(NULL);
 
-	    new_mailboxes = g_slist_sort(new_mailboxes, self_new_mailboxes_compare_func);
-	    MN_LIST_FOREACH(sl, new_mailboxes)
+	    MN_LIST_FOREACH(lb, new_mailboxes)
 	      {
-		MNMailbox *mailbox = sl->data;
-		int n_messages;
+		MNMailbox *mailbox = lb->data;
 
 		if (*string->str)
 		  g_string_append_c(string, '\n');
 		g_string_append(string, mailbox->runtime_name);
-		
-		n_messages = g_slist_length(mailbox->messages);
-		if (n_messages > 0)
-		  g_string_append_printf(string, " (%i)", n_messages);
+
+		if (mailbox->n_messages > 0)
+		  g_string_append_printf(string, " (%i)", mailbox->n_messages);
 	      }
 	    g_slist_free(new_mailboxes);
-	    
-	    self_tooltip_text_section_new(GTK_VBOX(vbox), _("Mailboxes Having New Mail"), string->str);
+
+	    /* translators: header capitalization */
+	    self_tooltip_text_section_new(&vbox, _("Mailboxes Having New Mail"), string->str);
 	    g_string_free(string, TRUE);
 	  }
 
@@ -705,10 +730,9 @@ mn_shell_update_tooltip (MNShell * self)
 	  {
 	    GString *string = g_string_new(NULL);
 
-	    error_mailboxes = g_slist_sort(error_mailboxes, mn_mailboxes_compare_by_name_func);
-	    MN_LIST_FOREACH(sl, error_mailboxes)
+	    MN_LIST_FOREACH(lb, error_mailboxes)
 	      {
-		MNMailbox *mailbox = sl->data;
+		MNMailbox *mailbox = lb->data;
 
 		if (*string->str)
 		  g_string_append_c(string, '\n');
@@ -716,117 +740,106 @@ mn_shell_update_tooltip (MNShell * self)
 	      }
 	    g_slist_free(error_mailboxes);
 
-	    self_tooltip_text_section_new(GTK_VBOX(vbox), _("Errors"), string->str);
+	    /* translators: header capitalization */
+	    self_tooltip_text_section_new(&vbox, _("Errors"), string->str);
 	    g_string_free(string, TRUE);
 	  }
       }
 
-    if (eel_gconf_get_boolean(MN_CONF_SUMMARY_TOOLTIP))
+    if (self->mailboxes->messages)
       {
-	GSList *messages;
-	
-	messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
-	if (messages)
+	MNShellTooltipMailSummary mail_summary;
+
+	mail_summary = mn_conf_get_enum_value(MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY, MN_CONF_TOOLTIP_MAIL_SUMMARY);
+	if (mail_summary != MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE)
 	  {
 	    GtkWidget *alignment;
 	    GtkWidget *message_view;
-	
-	    alignment = self_tooltip_section_new(GTK_VBOX(vbox), _("Mail Summary"));
-	    
-	    message_view = mn_message_view_new(TRUE, FALSE);
+
+	    /* translators: header capitalization */
+	    alignment = self_tooltip_section_new(&vbox, _("Mail Summary"));
+
+	    switch (mail_summary)
+	      {
+	      case MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD:
+		message_view = mn_standard_message_view_new();
+		break;
+
+	      case MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT:
+		message_view = mn_compact_message_view_new();
+		break;
+
+	      default:
+		g_assert_not_reached();
+		break;
+	      }
+
 	    gtk_widget_set_name(message_view, "mn-message-view");
-	    
-	    mn_message_view_set_messages(MN_MESSAGE_VIEW(message_view), messages);
-	    mn_g_object_slist_free(messages);
-	    
+	    mn_message_view_set_messages(MN_MESSAGE_VIEW(message_view), self->mailboxes->messages);
 	    gtk_container_add(GTK_CONTAINER(alignment), message_view);
 	  }
       }
 
-    gtk_widget_show_all(vbox);
-    mn_mail_icon_set_tip_widget(selfp->icon, vbox);
+    if (vbox)
+      {
+	gtk_widget_show_all(GTK_WIDGET(vbox));
+	mn_mail_icon_set_tip_widget(selfp->icon, GTK_WIDGET(vbox));
+      }
+    else
+      mn_mail_icon_set_tip(selfp->icon, _("You have no new mail."));
   }}
-#line 750 "mn-shell.c"
+#line 792 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 424 "mn-shell.gob"
+#line 448 "mn-shell.gob"
 static int 
-mn_shell_new_mailboxes_compare_func (gconstpointer a, gconstpointer b)
-#line 756 "mn-shell.c"
+mn_shell_new_mailboxes_compare_cb (MNMailbox * a, MNMailbox * b)
+#line 798 "mn-shell.c"
 {
-#define __GOB_FUNCTION__ "MN:Shell::new_mailboxes_compare_func"
+#define __GOB_FUNCTION__ "MN:Shell::new_mailboxes_compare_cb"
 {
-#line 426 "mn-shell.gob"
+#line 450 "mn-shell.gob"
 	
-    MNMailbox *mailbox_a = (MNMailbox *) a;
-    MNMailbox *mailbox_b = (MNMailbox *) b;
     int cmp;
 
-    /* sort by sent time (descending order) */
-    cmp = self_get_latest_sent_time(mailbox_b) - self_get_latest_sent_time(mailbox_a);
+    /* sort by timestamp (descending order) */
+    cmp = b->timestamp - a->timestamp;
     /* else sort by number of messages (descending order) */
     if (cmp == 0)
-      cmp = g_slist_length(mailbox_b->messages) - g_slist_length(mailbox_a->messages);
-    /* else sort by name (ascending order) */
-    if (cmp == 0)
-      cmp = mn_mailboxes_compare_by_name_func(a, b);
-
-    return cmp;
-  }}
-#line 777 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 443 "mn-shell.gob"
-static time_t 
-mn_shell_get_latest_sent_time (MNMailbox * mailbox)
-#line 783 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::get_latest_sent_time"
-#line 443 "mn-shell.gob"
-	g_return_val_if_fail (mailbox != NULL, (time_t )0);
-#line 443 "mn-shell.gob"
-	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (time_t )0);
-#line 790 "mn-shell.c"
-{
-#line 445 "mn-shell.gob"
-	
-    GSList *l;
-    time_t latest = 0;
-
-    MN_LIST_FOREACH(l, mailbox->messages)
       {
-	MNMessage *message = l->data;
-
-	if (message->sent_time > latest)
-	  latest = message->sent_time;
+	cmp = b->n_messages - a->n_messages;
+	/* else sort by name (ascending order) */
+	if (cmp == 0)
+	  cmp = mn_mailboxes_compare_by_name_func(a, b);
       }
 
-    return latest;
+    return cmp;
   }}
-#line 807 "mn-shell.c"
+#line 819 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 460 "mn-shell.gob"
+#line 467 "mn-shell.gob"
 static GtkWidget * 
-mn_shell_tooltip_section_new (GtkVBox * vbox, const char * title)
-#line 813 "mn-shell.c"
+mn_shell_tooltip_section_new (GtkVBox ** vbox, const char * title)
+#line 825 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::tooltip_section_new"
-#line 460 "mn-shell.gob"
+#line 467 "mn-shell.gob"
 	g_return_val_if_fail (vbox != NULL, (GtkWidget * )0);
-#line 460 "mn-shell.gob"
-	g_return_val_if_fail (GTK_IS_VBOX (vbox), (GtkWidget * )0);
-#line 460 "mn-shell.gob"
+#line 467 "mn-shell.gob"
 	g_return_val_if_fail (title != NULL, (GtkWidget * )0);
-#line 822 "mn-shell.c"
+#line 832 "mn-shell.c"
 {
-#line 463 "mn-shell.gob"
+#line 470 "mn-shell.gob"
 	
     GtkWidget *child_vbox;
     char *markup;
     GtkWidget *alignment;
     GtkWidget *label;
 
+    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);
@@ -843,35 +856,33 @@ mn_shell_tooltip_section_new (GtkVBox * vbox, const char * title)
     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), child_vbox, TRUE, TRUE, 0);
 
     return alignment;
   }}
-#line 851 "mn-shell.c"
+#line 864 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 490 "mn-shell.gob"
+#line 500 "mn-shell.gob"
 static void 
-mn_shell_tooltip_text_section_new (GtkVBox * vbox, const char * title, const char * text)
-#line 857 "mn-shell.c"
+mn_shell_tooltip_text_section_new (GtkVBox ** vbox, const char * title, const char * text)
+#line 870 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::tooltip_text_section_new"
-#line 490 "mn-shell.gob"
+#line 500 "mn-shell.gob"
 	g_return_if_fail (vbox != NULL);
-#line 490 "mn-shell.gob"
-	g_return_if_fail (GTK_IS_VBOX (vbox));
-#line 490 "mn-shell.gob"
+#line 500 "mn-shell.gob"
 	g_return_if_fail (title != NULL);
-#line 490 "mn-shell.gob"
+#line 500 "mn-shell.gob"
 	g_return_if_fail (text != NULL);
-#line 868 "mn-shell.c"
+#line 879 "mn-shell.c"
 {
-#line 494 "mn-shell.gob"
+#line 504 "mn-shell.gob"
 	
     GtkWidget *alignment;
     GtkWidget *label;
 
-    alignment = self_tooltip_section_new(GTK_VBOX(vbox), title);
+    alignment = self_tooltip_section_new(vbox, title);
 
     label = gtk_label_new(text);
     gtk_widget_set_name(label, "mn-tooltip-section-body");
@@ -879,58 +890,59 @@ mn_shell_tooltip_text_section_new (GtkVBox * vbox, const char * title, const cha
 
     gtk_container_add(GTK_CONTAINER(alignment), label);
   }}
-#line 883 "mn-shell.c"
+#line 894 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 507 "mn-shell.gob"
+#line 517 "mn-shell.gob"
 static void 
 mn_shell_update_popup (MNShell * self, gboolean has_new)
-#line 889 "mn-shell.c"
+#line 900 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::update_popup"
-#line 507 "mn-shell.gob"
+#line 517 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 507 "mn-shell.gob"
+#line 517 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 896 "mn-shell.c"
+#line 907 "mn-shell.c"
 {
-#line 509 "mn-shell.gob"
+#line 519 "mn-shell.gob"
 	
-    if (! selfp->main_window
-	&& (! selfp->properties_dialog || ! mn_properties_dialog_test_popup_displayed(MN_PROPERTIES_DIALOG(selfp->properties_dialog)))
+    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_mailboxes_get_messages(self->mailboxes);
+	selfp->popup_messages = mn_g_object_slist_copy(self->mailboxes->messages);
 
-      loop1:
-	MN_LIST_FOREACH(l, selfp->popup_previous_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;
-	    
-	    if (! mn_message_slist_find_by_id(selfp->popup_messages, message))
-	      {
-		selfp->popup_previous_messages = mn_g_object_slist_delete_link(selfp->popup_previous_messages, l);
-		goto loop1;
-	      }
+	    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))
-	  {
-	  loop2:
-	    MN_LIST_FOREACH(l, selfp->popup_messages)
-	      {
-		MNMessage *message = l->data;
-		
-		if (mn_message_slist_find_by_id(selfp->popup_previous_messages, message))
-		  {
-		    selfp->popup_messages = mn_g_object_slist_delete_link(selfp->popup_messages, l);
-		    goto loop2;
-		  }
-	      }
-	  }
+	  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)
 	  {
@@ -958,120 +970,124 @@ mn_shell_update_popup (MNShell * self, gboolean has_new)
     if (selfp->popup)
       gtk_widget_destroy(selfp->popup);
   }}
-#line 962 "mn-shell.c"
+#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 573 "mn-shell.gob"
+#line 593 "mn-shell.gob"
 static void 
 mn_shell_popup_weak_notify_cb (MNShell * self, GObject * former_object)
-#line 968 "mn-shell.c"
+#line 995 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::popup_weak_notify_cb"
-#line 573 "mn-shell.gob"
+#line 593 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 573 "mn-shell.gob"
+#line 593 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 975 "mn-shell.c"
+#line 1002 "mn-shell.c"
 {
-#line 575 "mn-shell.gob"
+#line 595 "mn-shell.gob"
 	
-    selfp->popup_previous_messages = g_slist_concat(selfp->popup_previous_messages, selfp->popup_messages);
-    selfp->popup_messages = NULL;
+    GSList *l;
+
+    MN_LIST_FOREACH(l, selfp->popup_messages)
+      {
+	MNMessage *message = l->data;
+	g_hash_table_replace(selfp->popup_previous_messages, message->id, message);
+      }
+
+    /*
+     * 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 982 "mn-shell.c"
+#line 1020 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 580 "mn-shell.gob"
+#line 611 "mn-shell.gob"
 MNShell * 
 mn_shell_new (void)
-#line 988 "mn-shell.c"
+#line 1026 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::new"
 {
-#line 582 "mn-shell.gob"
+#line 613 "mn-shell.gob"
 	
     return GET_NEW;
   }}
-#line 996 "mn-shell.c"
+#line 1034 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 586 "mn-shell.gob"
+#line 617 "mn-shell.gob"
 void 
-mn_shell_display_main_window (MNShell * self)
-#line 1002 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::display_main_window"
-#line 586 "mn-shell.gob"
-	g_return_if_fail (self != NULL);
-#line 586 "mn-shell.gob"
-	g_return_if_fail (MN_IS_SHELL (self));
-#line 1009 "mn-shell.c"
-{
-#line 588 "mn-shell.gob"
-	
-    self_display_window(self, MN_TYPE_MAIN_WINDOW, &selfp->main_window, NULL);
-
-    /* we don't need the mail summary popup anymore */
-    self_close_mail_summary_popup(self);
-  }}
-#line 1018 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 595 "mn-shell.gob"
-void 
-mn_shell_display_properties_dialog (MNShell * self, GtkWindow * parent)
-#line 1024 "mn-shell.c"
+mn_shell_display_properties_dialog (MNShell * self)
+#line 1040 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::display_properties_dialog"
-#line 595 "mn-shell.gob"
+#line 617 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 595 "mn-shell.gob"
+#line 617 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1031 "mn-shell.c"
+#line 1047 "mn-shell.c"
 {
-#line 597 "mn-shell.gob"
+#line 619 "mn-shell.gob"
 	
-    self_display_window(self, MN_TYPE_PROPERTIES_DIALOG, &selfp->properties_dialog, parent);
+    self_display_window(self, MN_TYPE_PROPERTIES_DIALOG, &selfp->properties_dialog);
   }}
-#line 1037 "mn-shell.c"
+#line 1053 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 601 "mn-shell.gob"
+#line 623 "mn-shell.gob"
 void 
-mn_shell_display_about_dialog (MNShell * self, GtkWindow * parent)
-#line 1043 "mn-shell.c"
+mn_shell_display_about_dialog (MNShell * self)
+#line 1059 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::display_about_dialog"
-#line 601 "mn-shell.gob"
+#line 623 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 601 "mn-shell.gob"
+#line 623 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1050 "mn-shell.c"
+#line 1066 "mn-shell.c"
 {
-#line 603 "mn-shell.gob"
+#line 625 "mn-shell.gob"
 	
-    self_display_window(self, MN_TYPE_ABOUT_DIALOG, &selfp->about_dialog, parent);
+    self_display_window(self, MN_TYPE_ABOUT_DIALOG, &selfp->about_dialog);
   }}
-#line 1056 "mn-shell.c"
+#line 1072 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 607 "mn-shell.gob"
+#line 629 "mn-shell.gob"
 static void 
-mn_shell_display_window (MNShell * self, GType type, GtkWidget ** ptr, GtkWindow * parent)
-#line 1062 "mn-shell.c"
+mn_shell_display_window (MNShell * self, GType type, GtkWidget ** ptr)
+#line 1078 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::display_window"
-#line 607 "mn-shell.gob"
+#line 629 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 607 "mn-shell.gob"
+#line 629 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 607 "mn-shell.gob"
+#line 629 "mn-shell.gob"
 	g_return_if_fail (type != 0);
-#line 607 "mn-shell.gob"
+#line 629 "mn-shell.gob"
 	g_return_if_fail (ptr != NULL);
-#line 1073 "mn-shell.c"
+#line 1089 "mn-shell.c"
 {
-#line 612 "mn-shell.gob"
+#line 633 "mn-shell.gob"
 	
     if (*ptr)
       {
@@ -1082,91 +1098,88 @@ mn_shell_display_window (MNShell * self, GType type, GtkWidget ** ptr, GtkWindow
     *ptr = g_object_new(type, NULL);
     eel_add_weak_pointer(ptr);
 
-    if (parent)
-      gtk_window_set_transient_for(GTK_WINDOW(*ptr), parent);
-
     gtk_widget_show(*ptr);
   }}
-#line 1091 "mn-shell.c"
+#line 1104 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 628 "mn-shell.gob"
+#line 646 "mn-shell.gob"
 void 
 mn_shell_close_mail_summary_popup (MNShell * self)
-#line 1097 "mn-shell.c"
+#line 1110 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::close_mail_summary_popup"
-#line 628 "mn-shell.gob"
+#line 646 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 628 "mn-shell.gob"
+#line 646 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 1104 "mn-shell.c"
+#line 1117 "mn-shell.c"
 {
-#line 630 "mn-shell.gob"
+#line 648 "mn-shell.gob"
 	
     if (selfp->popup)
       gtk_widget_destroy(selfp->popup);
   }}
-#line 1111 "mn-shell.c"
+#line 1124 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 635 "mn-shell.gob"
+#line 653 "mn-shell.gob"
 void 
 mn_shell_add_mailbox_properties_dialog (MNShell * self, MNMailboxPropertiesDialog * dialog)
-#line 1117 "mn-shell.c"
+#line 1130 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::add_mailbox_properties_dialog"
-#line 635 "mn-shell.gob"
+#line 653 "mn-shell.gob"
 	g_return_if_fail (self != NULL);
-#line 635 "mn-shell.gob"
+#line 653 "mn-shell.gob"
 	g_return_if_fail (MN_IS_SHELL (self));
-#line 635 "mn-shell.gob"
+#line 653 "mn-shell.gob"
 	g_return_if_fail (dialog != NULL);
-#line 635 "mn-shell.gob"
+#line 653 "mn-shell.gob"
 	g_return_if_fail (MN_IS_MAILBOX_PROPERTIES_DIALOG (dialog));
-#line 1128 "mn-shell.c"
+#line 1141 "mn-shell.c"
 {
-#line 637 "mn-shell.gob"
+#line 655 "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 1135 "mn-shell.c"
+#line 1148 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 642 "mn-shell.gob"
+#line 660 "mn-shell.gob"
 static void 
 mn_shell_mailbox_properties_dialog_weak_notify_cb (gpointer data, GObject * former_object)
-#line 1141 "mn-shell.c"
+#line 1154 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::mailbox_properties_dialog_weak_notify_cb"
 {
-#line 645 "mn-shell.gob"
+#line 663 "mn-shell.gob"
 	
     Self *self = data;
 
     selfp->mailbox_properties_dialogs = g_slist_remove(selfp->mailbox_properties_dialogs, former_object);
   }}
-#line 1151 "mn-shell.c"
+#line 1164 "mn-shell.c"
 #undef __GOB_FUNCTION__
 
-#line 651 "mn-shell.gob"
+#line 669 "mn-shell.gob"
 MNMailboxPropertiesDialog * 
 mn_shell_get_mailbox_properties_dialog (MNShell * self, MNMailbox * mailbox)
-#line 1157 "mn-shell.c"
+#line 1170 "mn-shell.c"
 {
 #define __GOB_FUNCTION__ "MN:Shell::get_mailbox_properties_dialog"
-#line 651 "mn-shell.gob"
+#line 669 "mn-shell.gob"
 	g_return_val_if_fail (self != NULL, (MNMailboxPropertiesDialog * )0);
-#line 651 "mn-shell.gob"
+#line 669 "mn-shell.gob"
 	g_return_val_if_fail (MN_IS_SHELL (self), (MNMailboxPropertiesDialog * )0);
-#line 651 "mn-shell.gob"
+#line 669 "mn-shell.gob"
 	g_return_val_if_fail (mailbox != NULL, (MNMailboxPropertiesDialog * )0);
-#line 651 "mn-shell.gob"
+#line 669 "mn-shell.gob"
 	g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (MNMailboxPropertiesDialog * )0);
-#line 1168 "mn-shell.c"
+#line 1181 "mn-shell.c"
 {
-#line 653 "mn-shell.gob"
+#line 671 "mn-shell.gob"
 	
     GSList *l;
 
@@ -1186,7 +1199,7 @@ mn_shell_get_mailbox_properties_dialog (MNShell * self, MNMailbox * mailbox)
 
     return NULL;
   }}
-#line 1190 "mn-shell.c"
+#line 1203 "mn-shell.c"
 #undef __GOB_FUNCTION__
 static const GEnumValue _mn_position_values[] = {
 	{ MN_POSITION_TOP_LEFT, (char *)"MN_POSITION_TOP_LEFT", (char *)"top-left" },
@@ -1206,7 +1219,7 @@ mn_position_get_type (void)
 }
 
 static const GEnumValue _mn_action_values[] = {
-	{ MN_ACTION_DISPLAY_MAIN_WINDOW, (char *)"MN_ACTION_DISPLAY_MAIN_WINDOW", (char *)"display-main-window" },
+	{ 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" },
 	{ 0, NULL, NULL }
@@ -1221,24 +1234,6 @@ mn_action_get_type (void)
 	return type;
 }
 
-static const GEnumValue _mn_toolbar_style_values[] = {
-	{ MN_TOOLBAR_STYLE_ICONS, (char *)"MN_TOOLBAR_STYLE_ICONS", (char *)"icons" },
-	{ MN_TOOLBAR_STYLE_TEXT, (char *)"MN_TOOLBAR_STYLE_TEXT", (char *)"text" },
-	{ MN_TOOLBAR_STYLE_BOTH, (char *)"MN_TOOLBAR_STYLE_BOTH", (char *)"both" },
-	{ MN_TOOLBAR_STYLE_BOTH_HORIZ, (char *)"MN_TOOLBAR_STYLE_BOTH_HORIZ", (char *)"both-horiz" },
-	{ MN_TOOLBAR_STYLE_DESKTOP_DEFAULT, (char *)"MN_TOOLBAR_STYLE_DESKTOP_DEFAULT", (char *)"desktop-default" },
-	{ 0, NULL, NULL }
-};
-
-GType
-mn_toolbar_style_get_type (void)
-{
-	static GType type = 0;
-	if ___GOB_UNLIKELY(type == 0)
-		type = g_enum_register_static ("MNToolbarStyle", _mn_toolbar_style_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" },
diff --git a/src/mn-shell.gob b/src/mn-shell.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
@@ -30,36 +30,42 @@ requires 2.0.12
 
 %{
 #include "config.h"
-#include <errno.h>
-#include <gnome.h>
+#include <glib/gi18n.h>
 #include <eel/eel.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-main-window.h"
 #include "mn-mail-summary-popup.h"
-#include "mn-message-view.h"
+#include "mn-standard-message-view.h"
+#include "mn-compact-message-view.h"
 #include "mn-message.h"
+#include "mn-stock.h"
 
 MNShell *mn_shell = NULL;
 %}
 
+enum MN_SHELL_TOOLTIP_MAIL_SUMMARY
+{
+  STANDARD,
+  COMPACT,
+  NONE
+} MN:Shell:Tooltip:Mail:Summary;
+
 class MN:Shell from G:Object
 {
   public MNMailboxes *mailboxes = {mn_mailboxes_new()} unrefwith g_object_unref;
   private MNMailIcon *icon;
   private gboolean has_new;
 
-  private GtkWidget *main_window;
   private GtkWidget *properties_dialog;
 
   private GSList *mailbox_properties_dialogs;
 
   private GtkWidget *popup;
   private GSList *popup_messages destroywith mn_g_object_slist_free;
-  private GSList *popup_previous_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;
 
@@ -72,17 +78,18 @@ class MN:Shell from G:Object
 
     self_init_icon(self);
 
-    mn_conf_notifications_add(self,
-			      MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self,
-			      MN_CONF_COMMANDS_MAIL_READER_NAMESPACE, self_notify_mail_reader_cb, self,
-			      MN_CONF_SUMMARY_TOOLTIP, self_notify_summary_tooltip_cb, self,
-			      MN_CONF_MAIL_SUMMARY_POPUP_ENABLE, self_notify_mail_summary_popup_enable_cb, self,
-			      NULL);
+    mn_g_object_gconf_notifications_add_gdk_locked(self,
+						   MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self,
+						   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,
 		     "signal::messages-changed", self_messages_changed_h, self,
 		     "signal::mailbox-removed", self_mailbox_removed_h, self,
-		     "swapped-signal::notify::must-poll", self_update_sensitivity, self,
+		     "swapped-signal::notify::poll", self_update_sensitivity, self,
 		     "swapped-signal::list-changed", self_update_tooltip, self,
 		     "swapped-signal::list-changed", self_update_icon, self,
 		     "swapped-signal::error-changed", self_update_tooltip, self,
@@ -96,7 +103,7 @@ class MN:Shell from G:Object
     gtk_main_quit();
     PARENT_HANDLER(object);
   }
-  
+
   private void
     messages_changed_h (MNMailboxes *mailboxes,
 			gboolean has_new,
@@ -106,14 +113,13 @@ class MN:Shell from G:Object
 
     if (has_new)
       {
-	gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
 	if (mn_conf_has_command(MN_CONF_COMMANDS_NEW_MAIL_NAMESPACE))
-	  mn_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
+	  mn_conf_execute_command(MN_CONF_COMMANDS_NEW_MAIL_COMMAND, FALSE);
       }
 
     if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
       self_update_popup(self, has_new);
-    
+
     self_update_tooltip(self);
     self_update_icon(self);
   }
@@ -131,7 +137,7 @@ class MN:Shell from G:Object
     if (dialog)
       gtk_widget_destroy(GTK_WIDGET(dialog));
   }
-  
+
   private void
     init_icon (self)
   {
@@ -139,7 +145,6 @@ class MN:Shell from G:Object
 
     g_object_connect(selfp->icon,
 		     "signal::activate", self_icon_activate_h, self,
-		     "swapped-signal::activate-main-window", self_display_main_window, self,
 		     "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self,
 		     "signal::activate-update", self_icon_activate_update_h, self,
 		     "signal::activate-properties", self_icon_activate_properties_h, self,
@@ -148,7 +153,7 @@ class MN:Shell from G:Object
 		     "signal::activate-remove", self_icon_activate_remove_h, self,
 		     "signal::destroy", self_icon_destroy_h, self,
 		     NULL);
-		     
+
     self_update_sensitivity(self);
     self_update_tooltip(self);
     self_update_icon(self);
@@ -162,11 +167,20 @@ class MN:Shell from G:Object
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
     self_update_icon(self);
-    GDK_THREADS_LEAVE();
   }
-  
+
+  private void
+    notify_always_display_icon_cb (GConfClient *client,
+				   unsigned int cnxn_id,
+				   GConfEntry *entry,
+				   gpointer user_data)
+  {
+    Self *self = user_data;
+
+    self_update_icon(self);
+  }
+
   private void
     notify_mail_reader_cb (GConfClient *client,
 			   unsigned int cnxn_id,
@@ -175,24 +189,20 @@ class MN:Shell from G:Object
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
     self_update_sensitivity(self);
-    GDK_THREADS_LEAVE();
   }
-  
+
   private void
-    notify_summary_tooltip_cb (GConfClient *client,
-			       unsigned int cnxn_id,
-			       GConfEntry *entry,
-			       gpointer user_data)
+    notify_tooltip_mail_summary_cb (GConfClient *client,
+				    unsigned int cnxn_id,
+				    GConfEntry *entry,
+				    gpointer user_data)
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
     self_update_tooltip(self);
-    GDK_THREADS_LEAVE();
   }
-  
+
   private void
     notify_mail_summary_popup_enable_cb (GConfClient *client,
 					 unsigned int cnxn_id,
@@ -201,31 +211,27 @@ class MN:Shell from G:Object
   {
     Self *self = user_data;
 
-    GDK_THREADS_ENTER();
-
     if (selfp->popup && ! eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
       gtk_widget_destroy(selfp->popup);
-      
-    GDK_THREADS_LEAVE();
   }
-  
+
   private void
     icon_activate_h (MNMailIcon *icon, gpointer user_data)
   {
     MNShell *self = user_data;
     MNAction action;
 
-    action = mn_conf_get_enum_value(MN_TYPE_ACTION, MN_CONF_DOUBLE_CLICK_ACTION_2);
+    action = mn_conf_get_enum_value(MN_TYPE_ACTION, MN_CONF_CLICK_ACTION);
 
     switch (action)
       {
-      case MN_ACTION_DISPLAY_MAIN_WINDOW:
-	self_display_main_window(self);
+      case MN_ACTION_DISPLAY_PROPERTIES_DIALOG:
+	self_display_properties_dialog(self);
 	break;
 
       case MN_ACTION_LAUNCH_MAIL_READER:
-	if (mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READER_NAMESPACE))
-	  mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+	if (mn_conf_has_command(MN_CONF_GNOME_MAIL_READER_NAMESPACE))
+	  mn_conf_execute_command(MN_CONF_GNOME_MAIL_READER_COMMAND, TRUE);
 	break;
 
       case MN_ACTION_UPDATE_MAIL_STATUS:
@@ -233,14 +239,14 @@ class MN:Shell from G:Object
 	break;
 
       default:
-	g_return_if_reached();
+	g_assert_not_reached();
       }
   }
 
   private void
     icon_activate_mail_reader_h (MNMailIcon *icon, gpointer user_data)
   {
-    mn_execute_command(MN_CONF_COMMANDS_MAIL_READER_COMMAND);
+    mn_conf_execute_command(MN_CONF_GNOME_MAIL_READER_COMMAND, TRUE);
   }
 
   private void
@@ -249,27 +255,27 @@ class MN:Shell from G:Object
     Self *self = user_data;
     mn_mailboxes_check(self->mailboxes);
   }
-  
+
   private void
     icon_activate_properties_h (MNMailIcon *icon, gpointer user_data)
   {
     Self *self = user_data;
-    self_display_properties_dialog(self, NULL);
+    self_display_properties_dialog(self);
   }
-  
+
   private void
     icon_activate_help_h (MNMailIcon *icon, gpointer user_data)
   {
     mn_display_help(NULL, NULL);
   }
-  
+
   private void
     icon_activate_about_h (MNMailIcon *icon, gpointer user_data)
   {
     Self *self = user_data;
-    self_display_about_dialog(self, NULL);
+    self_display_about_dialog(self);
   }
-  
+
   private void
     icon_activate_remove_h (MNMailIcon *icon, gpointer user_data)
   {
@@ -289,8 +295,8 @@ 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_COMMANDS_MAIL_READER_NAMESPACE));
-    gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_must_poll(self->mailboxes));
+    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));
   }
 
   private void
@@ -299,6 +305,7 @@ class MN:Shell from G:Object
     GList *l;
     gboolean has_new = FALSE;
     gboolean blink = FALSE;
+    gboolean always = eel_gconf_get_boolean(MN_CONF_ALWAYS_DISPLAY_ICON);
 
     MN_LIST_FOREACH(l, self->mailboxes->list)
       {
@@ -311,15 +318,19 @@ class MN:Shell from G:Object
       }
 
     if (selfp->has_new && ! has_new && mn_conf_has_command(MN_CONF_COMMANDS_MAIL_READ_NAMESPACE))
-      mn_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND);
+      mn_conf_execute_command(MN_CONF_COMMANDS_MAIL_READ_COMMAND, FALSE);
     selfp->has_new = has_new;
-    
+
     if (blink && ! eel_gconf_get_boolean(MN_CONF_BLINK_ON_ERRORS))
       blink = FALSE;
 
-    if (has_new || blink)
+    if (has_new || blink || always)
       {
-	mn_blinking_image_set_blinking(MN_BLINKING_IMAGE(selfp->icon->image), blink);
+	mn_blinking_image_set_from_stock(MN_BLINKING_IMAGE(selfp->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),
+				       blink);
 	gtk_widget_show(GTK_WIDGET(selfp->icon));
       }
     else
@@ -329,49 +340,45 @@ class MN:Shell from G:Object
   private void
     update_tooltip (self)
   {
-    GtkWidget *vbox;
-
-    vbox = gtk_vbox_new(FALSE, 18);
+    GtkVBox *vbox = NULL;
 
     if (self->mailboxes->list)
       {
-	GList *l;
-	GSList *sl;
+	GList *la;
+	GSList *lb;
 	GSList *new_mailboxes = NULL;
 	GSList *error_mailboxes = NULL;
 
-	MN_LIST_FOREACH(l, self->mailboxes->list)
+	MN_LIST_FOREACH(la, self->mailboxes->list)
           {
-	    MNMailbox *mailbox = l->data;
-	    
+	    MNMailbox *mailbox = la->data;
+
 	    if (mailbox->messages)
-	      new_mailboxes = g_slist_append(new_mailboxes, mailbox);
+	      new_mailboxes = g_slist_insert_sorted(new_mailboxes, mailbox, (GCompareFunc) self_new_mailboxes_compare_cb);
 
 	    if (mailbox->error)
-	      error_mailboxes = g_slist_append(error_mailboxes, mailbox);
+	      error_mailboxes = g_slist_insert_sorted(error_mailboxes, mailbox, mn_mailboxes_compare_by_name_func);
 	  }
 
 	if (new_mailboxes)
 	  {
 	    GString *string = g_string_new(NULL);
 
-	    new_mailboxes = g_slist_sort(new_mailboxes, self_new_mailboxes_compare_func);
-	    MN_LIST_FOREACH(sl, new_mailboxes)
+	    MN_LIST_FOREACH(lb, new_mailboxes)
 	      {
-		MNMailbox *mailbox = sl->data;
-		int n_messages;
+		MNMailbox *mailbox = lb->data;
 
 		if (*string->str)
 		  g_string_append_c(string, '\n');
 		g_string_append(string, mailbox->runtime_name);
-		
-		n_messages = g_slist_length(mailbox->messages);
-		if (n_messages > 0)
-		  g_string_append_printf(string, " (%i)", n_messages);
+
+		if (mailbox->n_messages > 0)
+		  g_string_append_printf(string, " (%i)", mailbox->n_messages);
 	      }
 	    g_slist_free(new_mailboxes);
-	    
-	    self_tooltip_text_section_new(GTK_VBOX(vbox), _("Mailboxes Having New Mail"), string->str);
+
+	    /* translators: header capitalization */
+	    self_tooltip_text_section_new(&vbox, _("Mailboxes Having New Mail"), string->str);
 	    g_string_free(string, TRUE);
 	  }
 
@@ -379,10 +386,9 @@ class MN:Shell from G:Object
 	  {
 	    GString *string = g_string_new(NULL);
 
-	    error_mailboxes = g_slist_sort(error_mailboxes, mn_mailboxes_compare_by_name_func);
-	    MN_LIST_FOREACH(sl, error_mailboxes)
+	    MN_LIST_FOREACH(lb, error_mailboxes)
 	      {
-		MNMailbox *mailbox = sl->data;
+		MNMailbox *mailbox = lb->data;
 
 		if (*string->str)
 		  g_string_append_c(string, '\n');
@@ -390,75 +396,76 @@ class MN:Shell from G:Object
 	      }
 	    g_slist_free(error_mailboxes);
 
-	    self_tooltip_text_section_new(GTK_VBOX(vbox), _("Errors"), string->str);
+	    /* translators: header capitalization */
+	    self_tooltip_text_section_new(&vbox, _("Errors"), string->str);
 	    g_string_free(string, TRUE);
 	  }
       }
 
-    if (eel_gconf_get_boolean(MN_CONF_SUMMARY_TOOLTIP))
+    if (self->mailboxes->messages)
       {
-	GSList *messages;
-	
-	messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
-	if (messages)
+	MNShellTooltipMailSummary mail_summary;
+
+	mail_summary = mn_conf_get_enum_value(MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY, MN_CONF_TOOLTIP_MAIL_SUMMARY);
+	if (mail_summary != MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE)
 	  {
 	    GtkWidget *alignment;
 	    GtkWidget *message_view;
-	
-	    alignment = self_tooltip_section_new(GTK_VBOX(vbox), _("Mail Summary"));
-	    
-	    message_view = mn_message_view_new(TRUE, FALSE);
+
+	    /* translators: header capitalization */
+	    alignment = self_tooltip_section_new(&vbox, _("Mail Summary"));
+
+	    switch (mail_summary)
+	      {
+	      case MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD:
+		message_view = mn_standard_message_view_new();
+		break;
+
+	      case MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT:
+		message_view = mn_compact_message_view_new();
+		break;
+
+	      default:
+		g_assert_not_reached();
+		break;
+	      }
+
 	    gtk_widget_set_name(message_view, "mn-message-view");
-	    
-	    mn_message_view_set_messages(MN_MESSAGE_VIEW(message_view), messages);
-	    mn_g_object_slist_free(messages);
-	    
+	    mn_message_view_set_messages(MN_MESSAGE_VIEW(message_view), self->mailboxes->messages);
 	    gtk_container_add(GTK_CONTAINER(alignment), message_view);
 	  }
       }
 
-    gtk_widget_show_all(vbox);
-    mn_mail_icon_set_tip_widget(selfp->icon, vbox);
+    if (vbox)
+      {
+	gtk_widget_show_all(GTK_WIDGET(vbox));
+	mn_mail_icon_set_tip_widget(selfp->icon, GTK_WIDGET(vbox));
+      }
+    else
+      mn_mail_icon_set_tip(selfp->icon, _("You have no new mail."));
   }
-  
+
   private int
-    new_mailboxes_compare_func (gconstpointer a, gconstpointer b)
+    new_mailboxes_compare_cb (MNMailbox *a, MNMailbox *b)
   {
-    MNMailbox *mailbox_a = (MNMailbox *) a;
-    MNMailbox *mailbox_b = (MNMailbox *) b;
     int cmp;
 
-    /* sort by sent time (descending order) */
-    cmp = self_get_latest_sent_time(mailbox_b) - self_get_latest_sent_time(mailbox_a);
+    /* sort by timestamp (descending order) */
+    cmp = b->timestamp - a->timestamp;
     /* else sort by number of messages (descending order) */
     if (cmp == 0)
-      cmp = g_slist_length(mailbox_b->messages) - g_slist_length(mailbox_a->messages);
-    /* else sort by name (ascending order) */
-    if (cmp == 0)
-      cmp = mn_mailboxes_compare_by_name_func(a, b);
-
-    return cmp;
-  }
-
-  private time_t
-    get_latest_sent_time (MN:Mailbox *mailbox (check null type))
-  {
-    GSList *l;
-    time_t latest = 0;
-
-    MN_LIST_FOREACH(l, mailbox->messages)
       {
-	MNMessage *message = l->data;
-
-	if (message->sent_time > latest)
-	  latest = message->sent_time;
+	cmp = b->n_messages - a->n_messages;
+	/* else sort by name (ascending order) */
+	if (cmp == 0)
+	  cmp = mn_mailboxes_compare_by_name_func(a, b);
       }
 
-    return latest;
+    return cmp;
   }
-  
+
   private GtkWidget *
-    tooltip_section_new (Gtk:VBox *vbox (check null type),
+    tooltip_section_new (GtkVBox **vbox (check null),
 			 const char *title (check null))
   {
     GtkWidget *child_vbox;
@@ -466,6 +473,9 @@ class MN:Shell from G:Object
     GtkWidget *alignment;
     GtkWidget *label;
 
+    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);
@@ -482,20 +492,20 @@ class MN:Shell from G:Object
     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), child_vbox, TRUE, TRUE, 0);
 
     return alignment;
   }
-  
+
   private void
-    tooltip_text_section_new (Gtk:VBox *vbox (check null type),
+    tooltip_text_section_new (Gtk:VBox **vbox (check null),
 			      const char *title (check null),
 			      const char *text (check null))
   {
     GtkWidget *alignment;
     GtkWidget *label;
 
-    alignment = self_tooltip_section_new(GTK_VBOX(vbox), title);
+    alignment = self_tooltip_section_new(vbox, title);
 
     label = gtk_label_new(text);
     gtk_widget_set_name(label, "mn-tooltip-section-body");
@@ -503,45 +513,46 @@ class MN:Shell from G:Object
 
     gtk_container_add(GTK_CONTAINER(alignment), label);
   }
-  
+
   private void
     update_popup (self, gboolean has_new)
   {
-    if (! selfp->main_window
-	&& (! selfp->properties_dialog || ! mn_properties_dialog_test_popup_displayed(MN_PROPERTIES_DIALOG(selfp->properties_dialog)))
+    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_mailboxes_get_messages(self->mailboxes);
+	selfp->popup_messages = mn_g_object_slist_copy(self->mailboxes->messages);
+
+	/* 1. clean popup_previous_messages */
 
-      loop1:
-	MN_LIST_FOREACH(l, selfp->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;
-	    
-	    if (! mn_message_slist_find_by_id(selfp->popup_messages, message))
-	      {
-		selfp->popup_previous_messages = mn_g_object_slist_delete_link(selfp->popup_previous_messages, l);
-		goto loop1;
-	      }
+	    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))
-	  {
-	  loop2:
-	    MN_LIST_FOREACH(l, selfp->popup_messages)
-	      {
-		MNMessage *message = l->data;
-		
-		if (mn_message_slist_find_by_id(selfp->popup_previous_messages, message))
-		  {
-		    selfp->popup_messages = mn_g_object_slist_delete_link(selfp->popup_messages, l);
-		    goto loop2;
-		  }
-	      }
-	  }
+	  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)
 	  {
@@ -570,13 +581,33 @@ class MN:Shell from G:Object
       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)
   {
-    selfp->popup_previous_messages = g_slist_concat(selfp->popup_previous_messages, selfp->popup_messages);
-    selfp->popup_messages = NULL;
+    GSList *l;
+
+    MN_LIST_FOREACH(l, selfp->popup_messages)
+      {
+	MNMessage *message = l->data;
+	g_hash_table_replace(selfp->popup_previous_messages, message->id, message);
+      }
+
+    /*
+     * 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 *
     new (void)
   {
@@ -584,31 +615,21 @@ class MN:Shell from G:Object
   }
 
   public void
-    display_main_window (self)
+    display_properties_dialog (self)
   {
-    self_display_window(self, MN_TYPE_MAIN_WINDOW, &selfp->main_window, NULL);
-
-    /* we don't need the mail summary popup anymore */
-    self_close_mail_summary_popup(self);
+    self_display_window(self, MN_TYPE_PROPERTIES_DIALOG, &selfp->properties_dialog);
   }
 
   public void
-    display_properties_dialog (self, GtkWindow *parent)
-  {
-    self_display_window(self, MN_TYPE_PROPERTIES_DIALOG, &selfp->properties_dialog, parent);
-  }
-  
-  public void
-    display_about_dialog (self, GtkWindow *parent)
+    display_about_dialog (self)
   {
-    self_display_window(self, MN_TYPE_ABOUT_DIALOG, &selfp->about_dialog, parent);
+    self_display_window(self, MN_TYPE_ABOUT_DIALOG, &selfp->about_dialog);
   }
 
   private void
     display_window (self,
 		    GType type (check != 0),
-		    GtkWidget **ptr (check null),
-		    GtkWindow *parent)
+		    GtkWidget **ptr (check null))
   {
     if (*ptr)
       {
@@ -619,9 +640,6 @@ class MN:Shell from G:Object
     *ptr = g_object_new(type, NULL);
     eel_add_weak_pointer(ptr);
 
-    if (parent)
-      gtk_window_set_transient_for(GTK_WINDOW(*ptr), parent);
-
     gtk_widget_show(*ptr);
   }
 
@@ -631,7 +649,7 @@ class MN:Shell from G:Object
     if (selfp->popup)
       gtk_widget_destroy(selfp->popup);
   }
-  
+
   public void
     add_mailbox_properties_dialog (self, MN:Mailbox:Properties:Dialog *dialog (check null type))
   {
@@ -672,7 +690,7 @@ class MN:Shell from G:Object
 }
 
 %h{
-  extern MNShell *mn_shell;
+extern MNShell *mn_shell;
 %}
 
 /*
@@ -690,20 +708,11 @@ enum MN_POSITION
 
 enum MN_ACTION
 {
-  DISPLAY_MAIN_WINDOW,
+  DISPLAY_PROPERTIES_DIALOG,
   LAUNCH_MAIL_READER,
   UPDATE_MAIL_STATUS
 } MN:Action;
 
-enum MN_TOOLBAR_STYLE
-{
-  ICONS			= GTK_TOOLBAR_ICONS,
-  TEXT			= GTK_TOOLBAR_TEXT,
-  BOTH			= GTK_TOOLBAR_BOTH,
-  BOTH_HORIZ		= GTK_TOOLBAR_BOTH_HORIZ,
-  DESKTOP_DEFAULT
-} MN:Toolbar:Style;
-
 enum MN_ASPECT_SOURCE
 {
   THEME,
diff --git a/src/mn-shell.gob.stamp b/src/mn-shell.gob.stamp
diff --git a/src/mn-shell.h b/src/mn-shell.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -16,6 +16,15 @@ extern "C" {
 #endif /* __cplusplus */
 
 
+typedef enum {
+	MN_SHELL_TOOLTIP_MAIL_SUMMARY_STANDARD,
+	MN_SHELL_TOOLTIP_MAIL_SUMMARY_COMPACT,
+	MN_SHELL_TOOLTIP_MAIL_SUMMARY_NONE
+} MNShellTooltipMailSummary;
+#define MN_TYPE_SHELL_TOOLTIP_MAIL_SUMMARY mn_shell_tooltip_mail_summary_get_type()
+GType mn_shell_tooltip_mail_summary_get_type (void);
+
+
 /*
  * Type checking and casting macros
  */
@@ -59,11 +68,8 @@ struct _MNShellClass {
  */
 GType	mn_shell_get_type	(void);
 MNShell * 	mn_shell_new	(void);
-void 	mn_shell_display_main_window	(MNShell * self);
-void 	mn_shell_display_properties_dialog	(MNShell * self,
-					GtkWindow * parent);
-void 	mn_shell_display_about_dialog	(MNShell * self,
-					GtkWindow * parent);
+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);
@@ -71,7 +77,7 @@ MNMailboxPropertiesDialog * 	mn_shell_get_mailbox_properties_dialog	(MNShell * s
 					MNMailbox * mailbox);
 
 
-  extern MNShell *mn_shell;
+extern MNShell *mn_shell;
 
 
 typedef enum {
@@ -85,7 +91,7 @@ GType mn_position_get_type (void);
 
 
 typedef enum {
-	MN_ACTION_DISPLAY_MAIN_WINDOW,
+	MN_ACTION_DISPLAY_PROPERTIES_DIALOG,
 	MN_ACTION_LAUNCH_MAIL_READER,
 	MN_ACTION_UPDATE_MAIL_STATUS
 } MNAction;
@@ -94,17 +100,6 @@ GType mn_action_get_type (void);
 
 
 typedef enum {
-	MN_TOOLBAR_STYLE_ICONS = GTK_TOOLBAR_ICONS,
-	MN_TOOLBAR_STYLE_TEXT = GTK_TOOLBAR_TEXT,
-	MN_TOOLBAR_STYLE_BOTH = GTK_TOOLBAR_BOTH,
-	MN_TOOLBAR_STYLE_BOTH_HORIZ = GTK_TOOLBAR_BOTH_HORIZ,
-	MN_TOOLBAR_STYLE_DESKTOP_DEFAULT
-} MNToolbarStyle;
-#define MN_TYPE_TOOLBAR_STYLE mn_toolbar_style_get_type()
-GType mn_toolbar_style_get_type (void);
-
-
-typedef enum {
 	MN_ASPECT_SOURCE_THEME,
 	MN_ASPECT_SOURCE_CUSTOM
 } MNAspectSource;
diff --git a/src/mn-standard-message-view-private.h b/src/mn-standard-message-view-private.h
@@ -0,0 +1,17 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_STANDARD_MESSAGE_VIEW_PRIVATE_H__
+#define __MN_STANDARD_MESSAGE_VIEW_PRIVATE_H__
+
+#include "mn-standard-message-view.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-standard-message-view.c b/src/mn-standard-message-view.c
@@ -0,0 +1,262 @@
+/* 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-standard-message-view.h"
+
+#include "mn-standard-message-view-private.h"
+
+#ifdef G_LIKELY
+#define ___GOB_LIKELY(expr) G_LIKELY(expr)
+#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
+#else /* ! G_LIKELY */
+#define ___GOB_LIKELY(expr) (expr)
+#define ___GOB_UNLIKELY(expr) (expr)
+#endif /* G_LIKELY */
+
+#line 25 "mn-standard-message-view.gob"
+
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-message-view-private.h"
+#include "mn-message.h"
+#include "mn-util.h"
+#include "mn-text-table.h"
+
+#line 35 "mn-standard-message-view.c"
+/* self casting macros */
+#define SELF(x) MN_STANDARD_MESSAGE_VIEW(x)
+#define SELF_CONST(x) MN_STANDARD_MESSAGE_VIEW_CONST(x)
+#define IS_SELF(x) MN_IS_STANDARD_MESSAGE_VIEW(x)
+#define TYPE_SELF MN_TYPE_STANDARD_MESSAGE_VIEW
+#define SELF_CLASS(x) MN_STANDARD_MESSAGE_VIEW_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_STANDARD_MESSAGE_VIEW_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNStandardMessageView Self;
+typedef MNStandardMessageViewClass SelfClass;
+
+/* here are local prototypes */
+static void mn_standard_message_view_init (MNStandardMessageView * o) G_GNUC_UNUSED;
+static void mn_standard_message_view_class_init (MNStandardMessageViewClass * c) G_GNUC_UNUSED;
+static void ___1_mn_standard_message_view_update (MNMessageView * view, GSList * messages) G_GNUC_UNUSED;
+static void mn_standard_message_view_append_message (MNStandardMessageView * self, time_t now, MNMessage * message) G_GNUC_UNUSED;
+static void mn_standard_message_view_append_row (MNStandardMessageView * self, const char * name, const char * value) G_GNUC_UNUSED;
+static void mn_standard_message_view_append_header (MNStandardMessageView * self, const char * name) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static MNMessageViewClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_append_message mn_standard_message_view_append_message
+#define self_append_row mn_standard_message_view_append_row
+#define self_append_header mn_standard_message_view_append_header
+#define self_new mn_standard_message_view_new
+GType
+mn_standard_message_view_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNStandardMessageViewClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_standard_message_view_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNStandardMessageView),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_standard_message_view_init,
+			NULL
+		};
+
+		type = g_type_register_static (MN_TYPE_MESSAGE_VIEW, "MNStandardMessageView", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNStandardMessageView *)g_object_new(mn_standard_message_view_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNStandardMessageView * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNStandardMessageView *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNStandardMessageView *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNStandardMessageView *)g_object_new_valist (mn_standard_message_view_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+static void 
+mn_standard_message_view_init (MNStandardMessageView * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Standard:Message:View::init"
+}
+#undef __GOB_FUNCTION__
+static void 
+mn_standard_message_view_class_init (MNStandardMessageViewClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Standard:Message:View::class_init"
+	MNMessageViewClass *mn_message_view_class = (MNMessageViewClass *)c;
+
+	parent_class = g_type_class_ref (MN_TYPE_MESSAGE_VIEW);
+
+#line 36 "mn-standard-message-view.gob"
+	mn_message_view_class->update = ___1_mn_standard_message_view_update;
+#line 123 "mn-standard-message-view.c"
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 36 "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"
+#define PARENT_HANDLER(___view,___messages) \
+	{ if(MN_MESSAGE_VIEW_CLASS(parent_class)->update) \
+		(* MN_MESSAGE_VIEW_CLASS(parent_class)->update)(___view,___messages); }
+{
+#define __GOB_FUNCTION__ "MN:Standard:Message:View::update"
+{
+#line 38 "mn-standard-message-view.gob"
+	
+    Self *self = SELF(view);
+    time_t now;
+    GSList *l;
+
+    mn_text_table_clear(MN_TEXT_TABLE(view));
+
+    now = mn_time();
+    MN_LIST_FOREACH(l, messages)
+      {
+	self_append_message(self, now, l->data);
+	if (l->next)
+	  {
+	    mn_text_table_append_blank_cell(MN_TEXT_TABLE(self), 0, 12);
+	    mn_text_table_line_break(MN_TEXT_TABLE(self));
+	  }
+      }
+
+    PARENT_HANDLER(view, messages);
+  }}
+#line 160 "mn-standard-message-view.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 59 "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"
+	g_return_if_fail (self != NULL);
+#line 59 "mn-standard-message-view.gob"
+	g_return_if_fail (MN_IS_STANDARD_MESSAGE_VIEW (self));
+#line 59 "mn-standard-message-view.gob"
+	g_return_if_fail (message != NULL);
+#line 59 "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"
+	
+    self_append_row(self, _("Mailbox:"), message->mailbox_name);
+    if (message->error)
+      self_append_row(self, _("Unreadable message:"), message->error);
+    else
+      {
+	self_append_row(self, _("From:"), message->from);
+	self_append_row(self, _("Subject:"), message->subject);
+
+	if (message->sent_time > 0)
+	  {
+	    self_append_header(self, _("Sent:"));
+	    mn_message_view_append_past_time_cell(MN_MESSAGE_VIEW(self), message->sent_time, now);
+	    mn_text_table_line_break(MN_TEXT_TABLE(self));
+	  }
+      }
+  }}
+#line 198 "mn-standard-message-view.c"
+#undef __GOB_FUNCTION__
+
+#line 79 "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"
+	g_return_if_fail (self != NULL);
+#line 79 "mn-standard-message-view.gob"
+	g_return_if_fail (MN_IS_STANDARD_MESSAGE_VIEW (self));
+#line 79 "mn-standard-message-view.gob"
+	g_return_if_fail (name != NULL);
+#line 79 "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"
+	
+    self_append_header(self, name);
+    mn_text_table_append_text_cell(MN_TEXT_TABLE(self), value);
+    mn_text_table_line_break(MN_TEXT_TABLE(self));
+  }}
+#line 223 "mn-standard-message-view.c"
+#undef __GOB_FUNCTION__
+
+#line 89 "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"
+	g_return_if_fail (self != NULL);
+#line 89 "mn-standard-message-view.gob"
+	g_return_if_fail (MN_IS_STANDARD_MESSAGE_VIEW (self));
+#line 89 "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"
+	
+    char *markup;
+
+    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", name);
+    mn_text_table_append_text_cell_from_markup(MN_TEXT_TABLE(self), markup);
+    g_free(markup);
+  }}
+#line 248 "mn-standard-message-view.c"
+#undef __GOB_FUNCTION__
+
+#line 99 "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"
+	
+    return GTK_WIDGET(GET_NEW);
+  }}
+#line 262 "mn-standard-message-view.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-standard-message-view.gob b/src/mn-standard-message-view.gob
@@ -0,0 +1,104 @@
+/* 
+ * 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 "mn-message-view.h"
+%}
+
+%{
+#include "config.h"
+#include <glib/gi18n.h>
+#include "mn-message-view-private.h"
+#include "mn-message.h"
+#include "mn-util.h"
+#include "mn-text-table.h"
+%}
+
+class MN:Standard:Message:View from MN:Message:View
+{
+  override (MN:Message:View) void
+    update (MNMessageView *view, GSList *messages)
+  {
+    Self *self = SELF(view);
+    time_t now;
+    GSList *l;
+
+    mn_text_table_clear(MN_TEXT_TABLE(view));
+
+    now = mn_time();
+    MN_LIST_FOREACH(l, messages)
+      {
+	self_append_message(self, now, l->data);
+	if (l->next)
+	  {
+	    mn_text_table_append_blank_cell(MN_TEXT_TABLE(self), 0, 12);
+	    mn_text_table_line_break(MN_TEXT_TABLE(self));
+	  }
+      }
+
+    PARENT_HANDLER(view, messages);
+  }
+
+  private void
+    append_message (self, time_t now, MN:Message *message (check null type))
+  {
+    self_append_row(self, _("Mailbox:"), message->mailbox_name);
+    if (message->error)
+      self_append_row(self, _("Unreadable message:"), message->error);
+    else
+      {
+	self_append_row(self, _("From:"), message->from);
+	self_append_row(self, _("Subject:"), message->subject);
+
+	if (message->sent_time > 0)
+	  {
+	    self_append_header(self, _("Sent:"));
+	    mn_message_view_append_past_time_cell(MN_MESSAGE_VIEW(self), message->sent_time, now);
+	    mn_text_table_line_break(MN_TEXT_TABLE(self));
+	  }
+      }
+  }
+
+  private void
+    append_row (self,
+		const char *name (check null),
+		const char *value (check null))
+  {
+    self_append_header(self, name);
+    mn_text_table_append_text_cell(MN_TEXT_TABLE(self), value);
+    mn_text_table_line_break(MN_TEXT_TABLE(self));
+  }
+
+  private void
+    append_header (self, const char *name (check null))
+  {
+    char *markup;
+
+    markup = g_markup_printf_escaped("<span weight=\"bold\">%s</span>", name);
+    mn_text_table_append_text_cell_from_markup(MN_TEXT_TABLE(self), markup);
+    g_free(markup);
+  }
+
+  public GtkWidget *
+    new (void)
+  {
+    return GTK_WIDGET(GET_NEW);
+  }
+}
diff --git a/src/mn-standard-message-view.gob.stamp b/src/mn-standard-message-view.gob.stamp
diff --git a/src/mn-standard-message-view.h b/src/mn-standard-message-view.h
@@ -0,0 +1,58 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include "mn-message-view.h"
+
+#ifndef __MN_STANDARD_MESSAGE_VIEW_H__
+#define __MN_STANDARD_MESSAGE_VIEW_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_STANDARD_MESSAGE_VIEW	(mn_standard_message_view_get_type())
+#define MN_STANDARD_MESSAGE_VIEW(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_standard_message_view_get_type(), MNStandardMessageView)
+#define MN_STANDARD_MESSAGE_VIEW_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_standard_message_view_get_type(), MNStandardMessageView const)
+#define MN_STANDARD_MESSAGE_VIEW_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_standard_message_view_get_type(), MNStandardMessageViewClass)
+#define MN_IS_STANDARD_MESSAGE_VIEW(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_standard_message_view_get_type ())
+
+#define MN_STANDARD_MESSAGE_VIEW_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_standard_message_view_get_type(), MNStandardMessageViewClass)
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_STANDARD_MESSAGE_VIEW__
+#define __TYPEDEF_MN_STANDARD_MESSAGE_VIEW__
+typedef struct _MNStandardMessageView MNStandardMessageView;
+#endif
+struct _MNStandardMessageView {
+	MNMessageView __parent__;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNStandardMessageViewClass MNStandardMessageViewClass;
+struct _MNStandardMessageViewClass {
+	MNMessageViewClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_standard_message_view_get_type	(void);
+GtkWidget * 	mn_standard_message_view_new	(void);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-stock.c b/src/mn-stock.c
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -25,8 +25,10 @@
 /*** constants ***************************************************************/
 
 static const GtkStockItem items[] = {
+  /* translators: header capitalization */
   { MN_STOCK_SELECT_ALL, N_("Select _All"), 0, 0, NULL },
-  { MN_STOCK_LEAVE_FULLSCREEN, N_("Leave Fullscreen"), 0, 0, NULL },
+  /* translators: header capitalization */
+  /* translators: header capitalization */
   { MN_STOCK_CONNECT, N_("Co_nnect"), 0, 0, NULL }
 };
 
@@ -43,25 +45,24 @@ mn_stock_init (void)
     const char	*source_stock_id;
   } icons[] = {
     { MN_STOCK_MAIL,			NULL, "stock_mail" },
+    { MN_STOCK_NO_MAIL,			NULL, "stock_inbox" },
     { MN_STOCK_LOCAL,			NULL, "stock_folder" },
     { MN_STOCK_REMOTE,			NULL, "stock_internet" },
     { MN_STOCK_POLLED,			NULL, "stock_timer" },
     { MN_STOCK_UNKNOWN,			NULL, "stock_unknown" },
     { MN_STOCK_ERROR,			NULL, NULL, GTK_STOCK_DIALOG_ERROR },
-#ifdef WITH_GMAIL
-    { MN_STOCK_GMAIL,			MN_IMAGE_FILE(UIDIR, "gmail.png") },
+#if WITH_GMAIL
+    { MN_STOCK_GMAIL,			UIDIR G_DIR_SEPARATOR_S "gmail.png" },
 #endif
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
     { MN_STOCK_SYSTEM_MAILBOX,		NULL, "gnome-system" },
 #endif
-#ifdef WITH_EVOLUTION
+#if WITH_EVOLUTION
     { MN_STOCK_EVOLUTION_MAILBOX,	NULL, "evolution" },
 #endif
     { MN_STOCK_SELECT_ALL,		NULL, "stock_select-all" },
-    { MN_STOCK_MAIL_SUMMARY,		MN_IMAGE_FILE(GNOMEPIXMAPSDIR, "mail-notification.png") },
+    { MN_STOCK_MAIL_SUMMARY,		GNOMEPIXMAPSDIR G_DIR_SEPARATOR_S "mail-notification.png" },
     { MN_STOCK_MAIL_READER,		NULL, "stock_mail-handling" },
-    { MN_STOCK_MAIN_WINDOW,		MN_IMAGE_FILE(UIDIR, "main-window.png") },
-    { MN_STOCK_LEAVE_FULLSCREEN,	NULL, "stock_leave-fullscreen" },
     { MN_STOCK_CONNECT,			NULL, NULL, GTK_STOCK_CONNECT }
   };
   GtkIconFactory *factory;
@@ -75,11 +76,11 @@ mn_stock_init (void)
   for (i = 0; i < G_N_ELEMENTS(icons); i++)
     {
       GtkIconSet *icon_set;
-      
+
       if (icons[i].filename)
 	{
 	  GdkPixbuf *pixbuf;
-	  
+
 	  pixbuf = mn_pixbuf_new(icons[i].filename);
 	  if (pixbuf)
 	    {
@@ -92,7 +93,7 @@ mn_stock_init (void)
       else if (icons[i].icon_name)
 	{
 	  GtkIconSource *icon_source;
-	  
+
 	  icon_set = gtk_icon_set_new();
 	  icon_source = gtk_icon_source_new();
 	  gtk_icon_source_set_icon_name(icon_source, icons[i].icon_name);
@@ -110,7 +111,7 @@ mn_stock_init (void)
       gtk_icon_factory_add(factory, icons[i].stock_id, icon_set);
       gtk_icon_set_unref(icon_set);
     }
-  
+
   g_object_unref(factory);
 
   gtk_stock_add_static(items, G_N_ELEMENTS(items));
diff --git a/src/mn-stock.h b/src/mn-stock.h
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -22,25 +22,24 @@
 #include "config.h"
 
 #define MN_STOCK_MAIL			"mn-mail"
+#define MN_STOCK_NO_MAIL		"mn-no-mail"
 #define MN_STOCK_LOCAL			"mn-local"
 #define MN_STOCK_REMOTE			"mn-remote"
 #define MN_STOCK_POLLED			"mn-polled"
 #define MN_STOCK_UNKNOWN		"mn-unknown"
 #define MN_STOCK_ERROR			"mn-error"
-#ifdef WITH_GMAIL
+#if WITH_GMAIL
 #define MN_STOCK_GMAIL			"mn-gmail"
 #endif
-#if defined(WITH_MBOX) || defined(WITH_MH) || defined(WITH_MAILDIR) || defined(WITH_SYLPHEED)
+#if WITH_MBOX || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
 #define MN_STOCK_SYSTEM_MAILBOX		"mn-system-mailbox"
 #endif
-#ifdef WITH_EVOLUTION
+#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_MAIN_WINDOW		"mn-main-window"
-#define MN_STOCK_LEAVE_FULLSCREEN	"mn-leave-fullscreen"
 #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
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_SYLPHEED_MAILBOX_BACKEND_PRIVATE_H__
 #define __MN_SYLPHEED_MAILBOX_BACKEND_PRIVATE_H__
@@ -9,10 +9,18 @@
 extern "C" {
 #endif /* __cplusplus */
 
+
+#line 25 "mn-sylpheed-mailbox-backend.gob"
+
+#include "mn-locked-callback.h"
+
+#line 18 "mn-sylpheed-mailbox-backend-private.h"
 struct _MNSylpheedMailboxBackendPrivate {
-#line 54 "mn-sylpheed-mailbox-backend.gob"
-	unsigned int monitor_timeout_id;
-#line 16 "mn-sylpheed-mailbox-backend-private.h"
+#line 70 "mn-sylpheed-mailbox-backend.gob"
+	MNLockedGSource * monitor_timeout_source;
+#line 71 "mn-sylpheed-mailbox-backend.gob"
+	gboolean can_lock_mark_file;
+#line 24 "mn-sylpheed-mailbox-backend-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-sylpheed-mailbox-backend.c b/src/mn-sylpheed-mailbox-backend.c
@@ -1,16 +1,13 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:56 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
-#include <string.h> /* memset() */
-
 #include "mn-sylpheed-mailbox-backend.h"
 
 #include "mn-sylpheed-mailbox-backend-private.h"
@@ -23,10 +20,13 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 25 "mn-sylpheed-mailbox-backend.gob"
+#line 29 "mn-sylpheed-mailbox-backend.gob"
 
 #include "config.h"
 #include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <errno.h>
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include "mn-mailbox-private.h"
@@ -50,7 +50,16 @@ typedef struct
   guint32	flags;
 } MarkEntry;
 
-#line 54 "mn-sylpheed-mailbox-backend.c"
+typedef enum
+{
+  MN_SYLPHEED_MESSAGE_EXISTS		= 1 << 0,
+  MN_SYLPHEED_MESSAGE_NEW		= 1 << 1,
+  MN_SYLPHEED_MESSAGE_UNREAD		= 1 << 2
+} MNSylpheedMessageFlags;
+
+static GStaticMutex timeouts_mutex = G_STATIC_MUTEX_INIT;
+
+#line 63 "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)
@@ -67,19 +76,26 @@ typedef MNSylpheedMailboxBackendClass SelfClass;
 /* here are local prototypes */
 static void mn_sylpheed_mailbox_backend_init (MNSylpheedMailboxBackend * o) G_GNUC_UNUSED;
 static void mn_sylpheed_mailbox_backend_class_init (MNSylpheedMailboxBackendClass * class) G_GNUC_UNUSED;
-static void ___2_mn_sylpheed_mailbox_backend_finalize (GObject * object) G_GNUC_UNUSED;
-static void ___3_mn_sylpheed_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend, const char * info_uri, GnomeVFSMonitorEventType event_type) G_GNUC_UNUSED;
+static GObject * ___2_mn_sylpheed_mailbox_backend_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+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 ___5_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy, MNVFSMailbox * mailbox) G_GNUC_UNUSED;
-static void ___6_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend, unsigned long check_id) G_GNUC_UNUSED;
-static GHashTable * mn_sylpheed_mailbox_backend_get_seen_numbers (MNSylpheedMailboxBackend * self, GError ** err) G_GNUC_UNUSED;
+static gboolean ___6_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy, 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;
 
 /* pointer to the class of our parent */
 static MNVFSMailboxBackendClass *parent_class = NULL;
 
 /* Short form macros */
 #define self_monitor_timeout_cb mn_sylpheed_mailbox_backend_monitor_timeout_cb
-#define self_get_seen_numbers mn_sylpheed_mailbox_backend_get_seen_numbers
+#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
 GType
 mn_sylpheed_mailbox_backend_get_type (void)
 {
@@ -129,9 +145,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 61 "mn-sylpheed-mailbox-backend.gob"
-	___2_mn_sylpheed_mailbox_backend_finalize(obj_self);
-#line 135 "mn-sylpheed-mailbox-backend.c"
+#line 95 "mn-sylpheed-mailbox-backend.gob"
+	___3_mn_sylpheed_mailbox_backend_finalize(obj_self);
+#line 151 "mn-sylpheed-mailbox-backend.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -142,10 +158,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 56 "mn-sylpheed-mailbox-backend.gob"
+#line 73 "mn-sylpheed-mailbox-backend.gob"
 static void 
 mn_sylpheed_mailbox_backend_class_init (MNSylpheedMailboxBackendClass * class G_GNUC_UNUSED)
-#line 149 "mn-sylpheed-mailbox-backend.c"
+#line 165 "mn-sylpheed-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -155,120 +171,171 @@ mn_sylpheed_mailbox_backend_class_init (MNSylpheedMailboxBackendClass * class G_
 
 	parent_class = g_type_class_ref (MN_TYPE_VFS_MAILBOX_BACKEND);
 
-#line 61 "mn-sylpheed-mailbox-backend.gob"
+#line 78 "mn-sylpheed-mailbox-backend.gob"
+	g_object_class->constructor = ___2_mn_sylpheed_mailbox_backend_constructor;
+#line 95 "mn-sylpheed-mailbox-backend.gob"
 	g_object_class->finalize = ___finalize;
-#line 72 "mn-sylpheed-mailbox-backend.gob"
-	mn_vfs_mailbox_backend_class->monitor_cb = ___3_mn_sylpheed_mailbox_backend_monitor_cb;
-#line 120 "mn-sylpheed-mailbox-backend.gob"
-	mn_vfs_mailbox_backend_class->is = ___5_mn_sylpheed_mailbox_backend_is;
-#line 133 "mn-sylpheed-mailbox-backend.gob"
-	mn_vfs_mailbox_backend_class->check = ___6_mn_sylpheed_mailbox_backend_check;
-#line 167 "mn-sylpheed-mailbox-backend.c"
+#line 110 "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"
+	mn_vfs_mailbox_backend_class->is = ___6_mn_sylpheed_mailbox_backend_is;
+#line 186 "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 57 "mn-sylpheed-mailbox-backend.gob"
+#line 74 "mn-sylpheed-mailbox-backend.gob"
 
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Sylpheed";
   
-#line 173 "mn-sylpheed-mailbox-backend.c"
+#line 191 "mn-sylpheed-mailbox-backend.c"
  }
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 61 "mn-sylpheed-mailbox-backend.gob"
+#line 78 "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"
+#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:Sylpheed:Mailbox:Backend::constructor"
+{
+#line 80 "mn-sylpheed-mailbox-backend.gob"
+	
+    GObject *object;
+    Self *self;
+
+    object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+    self = SELF(object);
+
+#if WITH_SYLPHEED_LOCKING
+    if (gnome_vfs_uri_is_local(MN_VFS_MAILBOX_BACKEND(self)->mailbox->vfs_uri))
+      selfp->can_lock_mark_file = TRUE;
+#endif
+
+    return object;
+  }}
+#line 224 "mn-sylpheed-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 95 "mn-sylpheed-mailbox-backend.gob"
 static void 
-___2_mn_sylpheed_mailbox_backend_finalize (GObject * object G_GNUC_UNUSED)
-#line 183 "mn-sylpheed-mailbox-backend.c"
+___3_mn_sylpheed_mailbox_backend_finalize (GObject * object G_GNUC_UNUSED)
+#line 231 "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 63 "mn-sylpheed-mailbox-backend.gob"
+#line 97 "mn-sylpheed-mailbox-backend.gob"
 	
     Self *self = SELF(object);
 
-    if (selfp->monitor_timeout_id)
-      g_source_remove(selfp->monitor_timeout_id);
+    g_static_mutex_lock(&timeouts_mutex);
+
+    if (selfp->monitor_timeout_source)
+      mn_locked_g_source_remove(selfp->monitor_timeout_source);
+
+    g_static_mutex_unlock(&timeouts_mutex);
 
     PARENT_HANDLER(object);
   }}
-#line 199 "mn-sylpheed-mailbox-backend.c"
+#line 251 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 72 "mn-sylpheed-mailbox-backend.gob"
+#line 110 "mn-sylpheed-mailbox-backend.gob"
 static void 
-___3_mn_sylpheed_mailbox_backend_monitor_cb (MNVFSMailboxBackend * backend G_GNUC_UNUSED, const char * info_uri, GnomeVFSMonitorEventType event_type)
-#line 206 "mn-sylpheed-mailbox-backend.c"
+___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"
 #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 76 "mn-sylpheed-mailbox-backend.gob"
+#line 114 "mn-sylpheed-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)
       {
 	char *filename;
-	    
+
 	filename = eel_uri_get_basename(info_uri);
 	if (filename)
 	  {
 	    if (! strcmp(filename, SYLPHEED_MARK_FILE))
 	      {
 		Self *self = SELF(backend);
-		
-		/*
-		 * The mark file has been changed, deleted or created,
-		 * probably by a Sylpheed instance. To avoid races, we
-		 * will delay the check.
-		 */
-		    
-		if (selfp->monitor_timeout_id)
-		  g_source_remove(selfp->monitor_timeout_id);
-		    
-		selfp->monitor_timeout_id = g_timeout_add(2000, self_monitor_timeout_cb, self);
+
+		if (selfp->can_lock_mark_file)
+		  mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(backend->mailbox));
+		else
+		  {
+		    /*
+		     * We cannot lock the mark file. To avoid races,
+		     * delay the check.
+		     */
+
+		    /*
+		     * We do not need to lock timeouts_mutex, because
+		     * this function and monitor_timeout_cb() are
+		     * always run in the same thread (from the GLib
+		     * main loop).
+		     */
+		    if (selfp->monitor_timeout_source)
+		      mn_locked_g_source_remove(selfp->monitor_timeout_source);
+
+		    selfp->monitor_timeout_source = mn_g_timeout_add_locked(3000,
+									    self_monitor_timeout_cb,
+									    self,
+									    (MNLockFunc) mn_g_static_mutex_lock,
+									    (MNUnlockFunc) mn_g_static_mutex_unlock,
+									    &timeouts_mutex);
+		  }
 	      }
 	    else if (mn_str_isnumeric(filename))
 	      mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(backend->mailbox));
-		
+
 	    g_free(filename);
 	  }
       }
   }}
-#line 246 "mn-sylpheed-mailbox-backend.c"
+#line 313 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 109 "mn-sylpheed-mailbox-backend.gob"
+#line 162 "mn-sylpheed-mailbox-backend.gob"
 static gboolean 
 mn_sylpheed_mailbox_backend_monitor_timeout_cb (gpointer data)
-#line 253 "mn-sylpheed-mailbox-backend.c"
+#line 320 "mn-sylpheed-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::monitor_timeout_cb"
 {
-#line 111 "mn-sylpheed-mailbox-backend.gob"
+#line 164 "mn-sylpheed-mailbox-backend.gob"
 	
     Self *self = data;
 
     mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(MN_VFS_MAILBOX_BACKEND(self)->mailbox));
-    selfp->monitor_timeout_id = 0;
 
+    selfp->monitor_timeout_source = NULL;
     return FALSE;		/* remove source */
   }}
-#line 266 "mn-sylpheed-mailbox-backend.c"
+#line 333 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 120 "mn-sylpheed-mailbox-backend.gob"
+#line 173 "mn-sylpheed-mailbox-backend.gob"
 static gboolean 
-___5_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, MNVFSMailbox * mailbox)
-#line 272 "mn-sylpheed-mailbox-backend.c"
+___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) \
 	((MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)? \
 		(* MN_VFS_MAILBOX_BACKEND_CLASS(parent_class)->is)(___dummy,___mailbox): \
@@ -276,7 +343,7 @@ ___5_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, 
 {
 #define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::is"
 {
-#line 122 "mn-sylpheed-mailbox-backend.gob"
+#line 175 "mn-sylpheed-mailbox-backend.gob"
 	
     gboolean is = FALSE;
     GnomeVFSURI *markfile_uri;
@@ -287,37 +354,37 @@ ___5_mn_sylpheed_mailbox_backend_is (MNVFSMailboxBackend * dummy G_GNUC_UNUSED, 
 
     return is;
   }}
-#line 291 "mn-sylpheed-mailbox-backend.c"
+#line 358 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 133 "mn-sylpheed-mailbox-backend.gob"
+#line 186 "mn-sylpheed-mailbox-backend.gob"
 static void 
-___6_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, unsigned long check_id)
-#line 298 "mn-sylpheed-mailbox-backend.c"
+___7_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNUSED, unsigned long check_id)
+#line 365 "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 135 "mn-sylpheed-mailbox-backend.gob"
+#line 188 "mn-sylpheed-mailbox-backend.gob"
 	
     GError *err = NULL;
     GnomeVFSResult result;
     GnomeVFSResult close_result;
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
-    GHashTable *seen_numbers;
+    GHashTable *message_flags;
     GSList *messages = NULL;
 
     mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_DIRECTORY);
 
-    seen_numbers = self_get_seen_numbers(SELF(backend), &err);
-    if (! seen_numbers)
+    message_flags = self_get_message_flags(SELF(backend), &err);
+    if (! message_flags)
       {
 	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 read %s: %s"), SYLPHEED_MARK_FILE, err->message);
 	g_error_free(err);
@@ -327,7 +394,7 @@ ___6_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNU
 
 	return;
       }
-    
+
     if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
       goto finish;
 
@@ -335,7 +402,7 @@ ___6_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNU
     if (result != GNOME_VFS_OK)
       {
 	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 folder: %s"), gnome_vfs_result_to_string(result));
 
@@ -350,16 +417,30 @@ ___6_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNU
       if (mn_str_isnumeric(file_info->name))
 	{
 	  int num = atoi(file_info->name);
-		
-	  if (! g_hash_table_lookup(seen_numbers, GINT_TO_POINTER(num)))
+	  MNSylpheedMessageFlags msflags = GPOINTER_TO_INT(g_hash_table_lookup(message_flags, GINT_TO_POINTER(num)));
+
+	  if ((msflags & MN_SYLPHEED_MESSAGE_EXISTS) == 0
+	      || (msflags & MN_SYLPHEED_MESSAGE_NEW) != 0
+	      || (msflags & MN_SYLPHEED_MESSAGE_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)
+		flags |= MN_MESSAGE_NEW;
+
+	      /*
+	       * We set handle_status to FALSE, since Sylpheed has its
+	       * 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_append(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri));
+	      messages = g_slist_prepend(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, flags, FALSE));
 	      gnome_vfs_uri_unref(message_uri);
 	    }
 	}
@@ -368,7 +449,7 @@ ___6_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNU
 
   finish:
     GDK_THREADS_ENTER();
-    
+
     if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
       {
 	if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK)
@@ -381,44 +462,177 @@ ___6_mn_sylpheed_mailbox_backend_check (MNVFSMailboxBackend * backend G_GNUC_UNU
 	else
 	  mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading folder: %s"), gnome_vfs_result_to_string(result));
       }
-    
+
     mn_g_object_slist_free(messages);
 
     gdk_flush();
     GDK_THREADS_LEAVE();
 
   end:
-    g_hash_table_destroy(seen_numbers);
+    g_hash_table_destroy(message_flags);
   }}
-#line 394 "mn-sylpheed-mailbox-backend.c"
+#line 475 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 224 "mn-sylpheed-mailbox-backend.gob"
+#line 291 "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"
+{
+#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::read_local_mark_file"
+#line 291 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (filename != NULL, (gboolean )0);
+#line 291 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (size != NULL, (gboolean )0);
+#line 291 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (contents != NULL, (gboolean )0);
+#line 491 "mn-sylpheed-mailbox-backend.c"
+{
+#line 296 "mn-sylpheed-mailbox-backend.gob"
+	
+    int fd;
+    struct flock lock;
+    GIOChannel *channel;
+    GError *tmp_err = NULL;
+    gboolean status = FALSE;
+
+    fd = open(filename, O_RDONLY);
+    if (fd < 0)
+      {
+	g_set_error(err, 0, 0, "%s", g_strerror(errno));
+	return FALSE;
+      }
+
+    /*
+     * Even if --enable-sylpheed-locking was not used and we are here
+     * after the 3 seconds delay, it does not hurt to obtain a lock,
+     * in case the user has a patched Sylpheed but did not use
+     * --enable-sylpheed-locking.
+     */
+
+    memset(&lock, 0, sizeof(lock));
+    lock.l_start = 0;		/* from l_whence */
+    lock.l_len = 0;		/* to end of file */
+    lock.l_type = F_RDLCK;	/* read lock */
+    lock.l_whence = SEEK_SET;	/* from start of file */
+
+    /* ignore lock failures */
+    fcntl(fd, F_SETLKW, &lock);
+
+    channel = g_io_channel_unix_new(fd);
+    if (g_io_channel_set_encoding(channel, NULL, &tmp_err) == G_IO_STATUS_NORMAL)
+      {
+	if (g_io_channel_read_to_end(channel, contents, size, err) == G_IO_STATUS_NORMAL)
+	  status = TRUE;
+      }
+    else
+      {
+	g_set_error(err, 0, 0, "unable to set encoding: %s", tmp_err->message);
+	g_error_free(tmp_err);
+      }
+
+    g_io_channel_shutdown(channel, FALSE, NULL);
+    g_io_channel_unref(channel);
+
+    return status;
+  }}
+#line 541 "mn-sylpheed-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+
+#line 344 "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"
+{
+#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::read_remote_mark_file"
+#line 344 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (uri != NULL, (gboolean )0);
+#line 344 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (size != NULL, (gboolean )0);
+#line 344 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (contents != NULL, (gboolean )0);
+#line 556 "mn-sylpheed-mailbox-backend.c"
+{
+#line 349 "mn-sylpheed-mailbox-backend.gob"
+	
+    GnomeVFSResult result;
+    int _size;
+
+    result = mn_vfs_read_entire_file_uri(uri, &_size, contents);
+    if (result == GNOME_VFS_OK)
+      {
+	*size = _size;
+	return TRUE;
+      }
+    else
+      {
+	g_set_error(err, 0, 0, "%s", gnome_vfs_result_to_string(result));
+	return FALSE;
+      }
+  }}
+#line 575 "mn-sylpheed-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+
+#line 366 "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"
+{
+#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"
+	g_return_val_if_fail (size != NULL, (gboolean )0);
+#line 366 "mn-sylpheed-mailbox-backend.gob"
+	g_return_val_if_fail (contents != NULL, (gboolean )0);
+#line 592 "mn-sylpheed-mailbox-backend.c"
+{
+#line 371 "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);
+
+    filename = mn_vfs_get_local_path(markfile_uri);
+    if (filename)
+      {
+	status = self_read_local_mark_file(filename, size, contents, err);
+	g_free(filename);
+      }
+    else
+      status = self_read_remote_mark_file(markfile_uri, size, contents, err);
+
+    gnome_vfs_uri_unref(markfile_uri);
+
+    return status;
+  }}
+#line 615 "mn-sylpheed-mailbox-backend.c"
+#undef __GOB_FUNCTION__
+
+#line 392 "mn-sylpheed-mailbox-backend.gob"
 static GHashTable * 
-mn_sylpheed_mailbox_backend_get_seen_numbers (MNSylpheedMailboxBackend * self, GError ** err)
-#line 401 "mn-sylpheed-mailbox-backend.c"
+mn_sylpheed_mailbox_backend_get_message_flags (MNSylpheedMailboxBackend * self, GError ** err)
+#line 621 "mn-sylpheed-mailbox-backend.c"
 {
-#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox:Backend::get_seen_numbers"
-#line 224 "mn-sylpheed-mailbox-backend.gob"
+#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 224 "mn-sylpheed-mailbox-backend.gob"
+#line 392 "mn-sylpheed-mailbox-backend.gob"
 	g_return_val_if_fail (MN_IS_SYLPHEED_MAILBOX_BACKEND (self), (GHashTable * )0);
-#line 408 "mn-sylpheed-mailbox-backend.c"
+#line 628 "mn-sylpheed-mailbox-backend.c"
 {
-#line 226 "mn-sylpheed-mailbox-backend.gob"
+#line 394 "mn-sylpheed-mailbox-backend.gob"
 	
-    GnomeVFSURI *markfile_uri;
-    GHashTable *seen_numbers = NULL;
-    GnomeVFSResult result;
-    int bytes_left;
+    GHashTable *message_flags = NULL;
+    gsize bytes_left;
     char *buf;
-    
-    markfile_uri = gnome_vfs_uri_append_file_name(MN_VFS_MAILBOX_BACKEND(self)->mailbox->vfs_uri, SYLPHEED_MARK_FILE);
-    result = mn_vfs_read_entire_file_uri(markfile_uri, &bytes_left, &buf);
-    gnome_vfs_uri_unref(markfile_uri);
 
-    if (result == GNOME_VFS_OK)
+    if (self_read_mark_file(self, &bytes_left, &buf, err))
       {
 	if (bytes_left >= sizeof(int))
 	  {
@@ -431,21 +645,27 @@ mn_sylpheed_mailbox_backend_get_seen_numbers (MNSylpheedMailboxBackend * self, G
 		entry = (MarkEntry *) (buf + sizeof(int));
 		bytes_left -= sizeof(int);
 
-		seen_numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
-		
+		message_flags = g_hash_table_new(g_direct_hash, g_direct_equal);
+
 		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(seen_numbers);
-			seen_numbers = NULL;
+			g_hash_table_destroy(message_flags);
+			message_flags = NULL;
 			break;
 		      }
 
-		    if ((entry->flags & SYLPHEED_MSG_NEW) == 0 && (entry->flags & SYLPHEED_MSG_UNREAD) == 0)
-		      g_hash_table_insert(seen_numbers, GINT_TO_POINTER(entry->num), GINT_TO_POINTER(TRUE));
-		    
+		    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));
+
 		    entry++;
 		    bytes_left -= sizeof(MarkEntry);
 		  }
@@ -458,10 +678,8 @@ mn_sylpheed_mailbox_backend_get_seen_numbers (MNSylpheedMailboxBackend * self, G
 
 	g_free(buf);
       }
-    else
-      g_set_error(err, 0, 0, "%s", gnome_vfs_result_to_string(result));
-      
-    return seen_numbers;
+
+    return message_flags;
   }}
-#line 467 "mn-sylpheed-mailbox-backend.c"
+#line 685 "mn-sylpheed-mailbox-backend.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-sylpheed-mailbox-backend.gob b/src/mn-sylpheed-mailbox-backend.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,15 +16,22 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-vfs-mailbox-backend.h"
 %}
 
+%privateheader{
+#include "mn-locked-callback.h"
+%}
+
 %{
 #include "config.h"
 #include <stdlib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <errno.h>
 #include <glib/gi18n.h>
 #include <eel/eel.h>
 #include "mn-mailbox-private.h"
@@ -47,24 +54,55 @@ typedef struct
   int		num;
   guint32	flags;
 } MarkEntry;
+
+typedef enum
+{
+  MN_SYLPHEED_MESSAGE_EXISTS		= 1 << 0,
+  MN_SYLPHEED_MESSAGE_NEW		= 1 << 1,
+  MN_SYLPHEED_MESSAGE_UNREAD		= 1 << 2
+} MNSylpheedMessageFlags;
+
+static GStaticMutex timeouts_mutex = G_STATIC_MUTEX_INIT;
 %}
 
 class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 {
-  private unsigned int monitor_timeout_id;
+  private MNLockedGSource *monitor_timeout_source;
+  private gboolean can_lock_mark_file;
 
   class_init (class)
   {
     MN_VFS_MAILBOX_BACKEND_CLASS(class)->format = "Sylpheed";
   }
 
+  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);
+
+#if WITH_SYLPHEED_LOCKING
+    if (gnome_vfs_uri_is_local(MN_VFS_MAILBOX_BACKEND(self)->mailbox->vfs_uri))
+      selfp->can_lock_mark_file = TRUE;
+#endif
+
+    return object;
+  }
+
   override (G:Object) void
     finalize (GObject *object)
   {
     Self *self = SELF(object);
 
-    if (selfp->monitor_timeout_id)
-      g_source_remove(selfp->monitor_timeout_id);
+    g_static_mutex_lock(&timeouts_mutex);
+
+    if (selfp->monitor_timeout_source)
+      mn_locked_g_source_remove(selfp->monitor_timeout_source);
+
+    g_static_mutex_unlock(&timeouts_mutex);
 
     PARENT_HANDLER(object);
   }
@@ -79,28 +117,43 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	|| event_type == GNOME_VFS_MONITOR_EVENT_CREATED)
       {
 	char *filename;
-	    
+
 	filename = eel_uri_get_basename(info_uri);
 	if (filename)
 	  {
 	    if (! strcmp(filename, SYLPHEED_MARK_FILE))
 	      {
 		Self *self = SELF(backend);
-		
-		/*
-		 * The mark file has been changed, deleted or created,
-		 * probably by a Sylpheed instance. To avoid races, we
-		 * will delay the check.
-		 */
-		    
-		if (selfp->monitor_timeout_id)
-		  g_source_remove(selfp->monitor_timeout_id);
-		    
-		selfp->monitor_timeout_id = g_timeout_add(2000, self_monitor_timeout_cb, self);
+
+		if (selfp->can_lock_mark_file)
+		  mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(backend->mailbox));
+		else
+		  {
+		    /*
+		     * We cannot lock the mark file. To avoid races,
+		     * delay the check.
+		     */
+
+		    /*
+		     * We do not need to lock timeouts_mutex, because
+		     * this function and monitor_timeout_cb() are
+		     * always run in the same thread (from the GLib
+		     * main loop).
+		     */
+		    if (selfp->monitor_timeout_source)
+		      mn_locked_g_source_remove(selfp->monitor_timeout_source);
+
+		    selfp->monitor_timeout_source = mn_g_timeout_add_locked(3000,
+									    self_monitor_timeout_cb,
+									    self,
+									    (MNLockFunc) mn_g_static_mutex_lock,
+									    (MNUnlockFunc) mn_g_static_mutex_unlock,
+									    &timeouts_mutex);
+		  }
 	      }
 	    else if (mn_str_isnumeric(filename))
 	      mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(backend->mailbox));
-		
+
 	    g_free(filename);
 	  }
       }
@@ -112,8 +165,8 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
     Self *self = data;
 
     mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(MN_VFS_MAILBOX_BACKEND(self)->mailbox));
-    selfp->monitor_timeout_id = 0;
 
+    selfp->monitor_timeout_source = NULL;
     return FALSE;		/* remove source */
   }
 
@@ -138,16 +191,16 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
     GnomeVFSResult close_result;
     GnomeVFSDirectoryHandle *handle;
     GnomeVFSFileInfo *file_info;
-    GHashTable *seen_numbers;
+    GHashTable *message_flags;
     GSList *messages = NULL;
 
     mn_vfs_mailbox_backend_monitor(backend, check_id, backend->mailbox->uri, GNOME_VFS_MONITOR_DIRECTORY);
 
-    seen_numbers = self_get_seen_numbers(SELF(backend), &err);
-    if (! seen_numbers)
+    message_flags = self_get_message_flags(SELF(backend), &err);
+    if (! message_flags)
       {
 	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 read %s: %s"), SYLPHEED_MARK_FILE, err->message);
 	g_error_free(err);
@@ -157,7 +210,7 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 
 	return;
       }
-    
+
     if (mn_reentrant_mailbox_check_aborted(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
       goto finish;
 
@@ -165,7 +218,7 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
     if (result != GNOME_VFS_OK)
       {
 	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 folder: %s"), gnome_vfs_result_to_string(result));
 
@@ -180,16 +233,30 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
       if (mn_str_isnumeric(file_info->name))
 	{
 	  int num = atoi(file_info->name);
-		
-	  if (! g_hash_table_lookup(seen_numbers, GINT_TO_POINTER(num)))
+	  MNSylpheedMessageFlags msflags = GPOINTER_TO_INT(g_hash_table_lookup(message_flags, GINT_TO_POINTER(num)));
+
+	  if ((msflags & MN_SYLPHEED_MESSAGE_EXISTS) == 0
+	      || (msflags & MN_SYLPHEED_MESSAGE_NEW) != 0
+	      || (msflags & MN_SYLPHEED_MESSAGE_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)
+		flags |= MN_MESSAGE_NEW;
+
+	      /*
+	       * We set handle_status to FALSE, since Sylpheed has its
+	       * 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_append(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri));
+	      messages = g_slist_prepend(messages, mn_message_new_from_uri(MN_MAILBOX(backend->mailbox), message_uri, flags, FALSE));
 	      gnome_vfs_uri_unref(message_uri);
 	    }
 	}
@@ -198,7 +265,7 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 
   finish:
     GDK_THREADS_ENTER();
-    
+
     if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(backend->mailbox), check_id))
       {
 	if (result == GNOME_VFS_ERROR_EOF || result == GNOME_VFS_OK)
@@ -211,30 +278,125 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 	else
 	  mn_mailbox_set_error(MN_MAILBOX(backend->mailbox), _("error while reading folder: %s"), gnome_vfs_result_to_string(result));
       }
-    
+
     mn_g_object_slist_free(messages);
 
     gdk_flush();
     GDK_THREADS_LEAVE();
 
   end:
-    g_hash_table_destroy(seen_numbers);
+    g_hash_table_destroy(message_flags);
   }
 
-  private GHashTable *
-    get_seen_numbers (self, GError **err)
+  private gboolean
+    read_local_mark_file (const char *filename (check null),
+			  gsize *size (check null),
+			  char **contents (check null),
+			  GError **err)
+  {
+    int fd;
+    struct flock lock;
+    GIOChannel *channel;
+    GError *tmp_err = NULL;
+    gboolean status = FALSE;
+
+    fd = open(filename, O_RDONLY);
+    if (fd < 0)
+      {
+	g_set_error(err, 0, 0, "%s", g_strerror(errno));
+	return FALSE;
+      }
+
+    /*
+     * Even if --enable-sylpheed-locking was not used and we are here
+     * after the 3 seconds delay, it does not hurt to obtain a lock,
+     * in case the user has a patched Sylpheed but did not use
+     * --enable-sylpheed-locking.
+     */
+
+    memset(&lock, 0, sizeof(lock));
+    lock.l_start = 0;		/* from l_whence */
+    lock.l_len = 0;		/* to end of file */
+    lock.l_type = F_RDLCK;	/* read lock */
+    lock.l_whence = SEEK_SET;	/* from start of file */
+
+    /* ignore lock failures */
+    fcntl(fd, F_SETLKW, &lock);
+
+    channel = g_io_channel_unix_new(fd);
+    if (g_io_channel_set_encoding(channel, NULL, &tmp_err) == G_IO_STATUS_NORMAL)
+      {
+	if (g_io_channel_read_to_end(channel, contents, size, err) == G_IO_STATUS_NORMAL)
+	  status = TRUE;
+      }
+    else
+      {
+	g_set_error(err, 0, 0, "unable to set encoding: %s", tmp_err->message);
+	g_error_free(tmp_err);
+      }
+
+    g_io_channel_shutdown(channel, FALSE, NULL);
+    g_io_channel_unref(channel);
+
+    return status;
+  }
+
+  private gboolean
+    read_remote_mark_file (GnomeVFSURI *uri (check null),
+			   gsize *size (check null),
+			   char **contents (check null),
+			   GError **err)
   {
-    GnomeVFSURI *markfile_uri;
-    GHashTable *seen_numbers = NULL;
     GnomeVFSResult result;
-    int bytes_left;
-    char *buf;
-    
+    int _size;
+
+    result = mn_vfs_read_entire_file_uri(uri, &_size, contents);
+    if (result == GNOME_VFS_OK)
+      {
+	*size = _size;
+	return TRUE;
+      }
+    else
+      {
+	g_set_error(err, 0, 0, "%s", gnome_vfs_result_to_string(result));
+	return FALSE;
+      }
+  }
+
+  private gboolean
+    read_mark_file (self,
+		    gsize *size (check null),
+		    char **contents (check null),
+		    GError **err)
+  {
+    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);
-    result = mn_vfs_read_entire_file_uri(markfile_uri, &bytes_left, &buf);
+
+    filename = mn_vfs_get_local_path(markfile_uri);
+    if (filename)
+      {
+	status = self_read_local_mark_file(filename, size, contents, err);
+	g_free(filename);
+      }
+    else
+      status = self_read_remote_mark_file(markfile_uri, size, contents, err);
+
     gnome_vfs_uri_unref(markfile_uri);
 
-    if (result == GNOME_VFS_OK)
+    return status;
+  }
+
+  private GHashTable *
+    get_message_flags (self, GError **err)
+  {
+    GHashTable *message_flags = NULL;
+    gsize bytes_left;
+    char *buf;
+
+    if (self_read_mark_file(self, &bytes_left, &buf, err))
       {
 	if (bytes_left >= sizeof(int))
 	  {
@@ -247,21 +409,27 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 		entry = (MarkEntry *) (buf + sizeof(int));
 		bytes_left -= sizeof(int);
 
-		seen_numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
-		
+		message_flags = g_hash_table_new(g_direct_hash, g_direct_equal);
+
 		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(seen_numbers);
-			seen_numbers = NULL;
+			g_hash_table_destroy(message_flags);
+			message_flags = NULL;
 			break;
 		      }
 
-		    if ((entry->flags & SYLPHEED_MSG_NEW) == 0 && (entry->flags & SYLPHEED_MSG_UNREAD) == 0)
-		      g_hash_table_insert(seen_numbers, GINT_TO_POINTER(entry->num), GINT_TO_POINTER(TRUE));
-		    
+		    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));
+
 		    entry++;
 		    bytes_left -= sizeof(MarkEntry);
 		  }
@@ -274,9 +442,7 @@ class MN:Sylpheed:Mailbox:Backend from MN:VFS:Mailbox:Backend
 
 	g_free(buf);
       }
-    else
-      g_set_error(err, 0, 0, "%s", gnome_vfs_result_to_string(result));
-      
-    return seen_numbers;
+
+    return message_flags;
   }
 }
diff --git a/src/mn-sylpheed-mailbox-backend.gob.stamp b/src/mn-sylpheed-mailbox-backend.gob.stamp
diff --git a/src/mn-sylpheed-mailbox-backend.h b/src/mn-sylpheed-mailbox-backend.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-system-vfs-mailbox-private.h b/src/mn-system-vfs-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_SYSTEM_VFS_MAILBOX_PRIVATE_H__
 #define __MN_SYSTEM_VFS_MAILBOX_PRIVATE_H__
diff --git a/src/mn-system-vfs-mailbox-properties-private.h b/src/mn-system-vfs-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_SYSTEM_VFS_MAILBOX_PROPERTIES_PRIVATE_H__
 #define __MN_SYSTEM_VFS_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-system-vfs-mailbox-properties.c b/src/mn-system-vfs-mailbox-properties.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -32,7 +31,7 @@
 #include "mn-system-vfs-mailbox.h"
 #include "mn-stock.h"
 
-#line 36 "mn-system-vfs-mailbox-properties.c"
+#line 35 "mn-system-vfs-mailbox-properties.c"
 /* self casting macros */
 #define SELF(x) MN_SYSTEM_VFS_MAILBOX_PROPERTIES(x)
 #define SELF_CONST(x) MN_SYSTEM_VFS_MAILBOX_PROPERTIES_CONST(x)
@@ -102,10 +101,10 @@ GET_NEW_VARG (const char *first, ...)
 	return ret;
 }
 
-#line 41 "mn-system-vfs-mailbox-properties.gob"
+#line 42 "mn-system-vfs-mailbox-properties.gob"
 static void 
 mn_system_vfs_mailbox_properties_class_init (MNSystemVFSMailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 109 "mn-system-vfs-mailbox-properties.c"
+#line 108 "mn-system-vfs-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox:Properties::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
@@ -122,7 +121,7 @@ mn_system_vfs_mailbox_properties_class_init (MNSystemVFSMailboxPropertiesClass *
 		"default_name");
     }
  {
-#line 42 "mn-system-vfs-mailbox-properties.gob"
+#line 43 "mn-system-vfs-mailbox-properties.gob"
 
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
 
@@ -130,33 +129,34 @@ mn_system_vfs_mailbox_properties_class_init (MNSystemVFSMailboxPropertiesClass *
     p_class->stock_id = MN_STOCK_SYSTEM_MAILBOX;
     p_class->combo_label = _("System mailbox");
   
-#line 134 "mn-system-vfs-mailbox-properties.c"
+#line 133 "mn-system-vfs-mailbox-properties.c"
  }
 }
 #undef __GOB_FUNCTION__
-#line 50 "mn-system-vfs-mailbox-properties.gob"
+#line 51 "mn-system-vfs-mailbox-properties.gob"
 static void 
 mn_system_vfs_mailbox_properties_init (MNSystemVFSMailboxProperties * self G_GNUC_UNUSED)
-#line 141 "mn-system-vfs-mailbox-properties.c"
+#line 140 "mn-system-vfs-mailbox-properties.c"
 {
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox:Properties::init"
  {
-#line 51 "mn-system-vfs-mailbox-properties.gob"
+#line 52 "mn-system-vfs-mailbox-properties.gob"
 
     GtkWidget *label;
     const char *system_uri;
 
     label = gtk_label_new(NULL);
 
-    gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+    gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+    gtk_label_set_selectable(GTK_LABEL(label), TRUE);
 
     system_uri = mn_system_vfs_mailbox_get_uri();
     if (system_uri)
       {
 	char *path;
 	char *markup;
-	
+
 	path = gnome_vfs_get_local_path_from_uri(system_uri);
 
 	markup = g_markup_printf_escaped(_("Your system mailbox is <span weight=\"bold\">%s</span>."), path ? path : system_uri);
@@ -197,7 +197,7 @@ ___object_get_property (GObject *object,
 		break;
 	case PROP_DEFAULT_NAME:
 		{
-#line 39 "mn-system-vfs-mailbox-properties.gob"
+#line 40 "mn-system-vfs-mailbox-properties.gob"
  g_value_set_string(VAL, _("System mailbox")); 
 #line 203 "mn-system-vfs-mailbox-properties.c"
 		}
diff --git a/src/mn-system-vfs-mailbox-properties.gob b/src/mn-system-vfs-mailbox-properties.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-mailbox-properties.h"
@@ -35,9 +35,10 @@ class MN:System:VFS:Mailbox:Properties from MN:Mailbox:Properties
 {
   property BOOLEAN complete (override)
     get { g_value_set_boolean(VAL, mn_system_vfs_mailbox_get_uri() != NULL); };
+
   property STRING default_name (override)
     get { g_value_set_string(VAL, _("System mailbox")); };
-  
+
   class_init (class)
   {
     MNMailboxPropertiesClass *p_class = MN_MAILBOX_PROPERTIES_CLASS(class);
@@ -54,15 +55,16 @@ class MN:System:VFS:Mailbox:Properties from MN:Mailbox:Properties
 
     label = gtk_label_new(NULL);
 
-    gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
     gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+    gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+    gtk_label_set_selectable(GTK_LABEL(label), TRUE);
 
     system_uri = mn_system_vfs_mailbox_get_uri();
     if (system_uri)
       {
 	char *path;
 	char *markup;
-	
+
 	path = gnome_vfs_get_local_path_from_uri(system_uri);
 
 	markup = g_markup_printf_escaped(_("Your system mailbox is <span weight=\"bold\">%s</span>."), path ? path : system_uri);
diff --git a/src/mn-system-vfs-mailbox-properties.gob.stamp b/src/mn-system-vfs-mailbox-properties.gob.stamp
diff --git a/src/mn-system-vfs-mailbox-properties.h b/src/mn-system-vfs-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-system-vfs-mailbox.c b/src/mn-system-vfs-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -30,7 +29,7 @@
 #include "mn-stock.h"
 #include "mn-mailbox-private.h"
 
-#line 34 "mn-system-vfs-mailbox.c"
+#line 33 "mn-system-vfs-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_SYSTEM_VFS_MAILBOX(x)
 #define SELF_CONST(x) MN_SYSTEM_VFS_MAILBOX_CONST(x)
@@ -107,7 +106,7 @@ mn_system_vfs_mailbox_init (MNSystemVFSMailbox * o G_GNUC_UNUSED)
 #line 34 "mn-system-vfs-mailbox.gob"
 static void 
 mn_system_vfs_mailbox_class_init (MNSystemVFSMailboxClass * class G_GNUC_UNUSED)
-#line 111 "mn-system-vfs-mailbox.c"
+#line 110 "mn-system-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::class_init"
 	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
@@ -120,14 +119,14 @@ mn_system_vfs_mailbox_class_init (MNSystemVFSMailboxClass * class G_GNUC_UNUSED)
 	mn_mailbox_class->parse_uri = ___3_mn_system_vfs_mailbox_parse_uri;
 #line 63 "mn-system-vfs-mailbox.gob"
 	mn_mailbox_class->check = ___4_mn_system_vfs_mailbox_check;
-#line 124 "mn-system-vfs-mailbox.c"
+#line 123 "mn-system-vfs-mailbox.c"
  {
 #line 35 "mn-system-vfs-mailbox.gob"
 
     MN_MAILBOX_CLASS(class)->type = "system-vfs";
     MN_VFS_MAILBOX_CLASS(class)->stock_id = MN_STOCK_SYSTEM_MAILBOX;
   
-#line 131 "mn-system-vfs-mailbox.c"
+#line 130 "mn-system-vfs-mailbox.c"
  }
 }
 #undef __GOB_FUNCTION__
@@ -137,7 +136,7 @@ mn_system_vfs_mailbox_class_init (MNSystemVFSMailboxClass * class G_GNUC_UNUSED)
 #line 40 "mn-system-vfs-mailbox.gob"
 static void 
 ___2_mn_system_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 141 "mn-system-vfs-mailbox.c"
+#line 140 "mn-system-vfs-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->seal) \
 		(* MN_MAILBOX_CLASS(parent_class)->seal)(___mailbox); }
@@ -152,14 +151,14 @@ ___2_mn_system_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 
     PARENT_HANDLER(mailbox);
   }}
-#line 156 "mn-system-vfs-mailbox.c"
+#line 155 "mn-system-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 50 "mn-system-vfs-mailbox.gob"
 static MNMailbox * 
 ___3_mn_system_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const char * uri)
-#line 163 "mn-system-vfs-mailbox.c"
+#line 162 "mn-system-vfs-mailbox.c"
 #define PARENT_HANDLER(___dummy,___uri) \
 	((MN_MAILBOX_CLASS(parent_class)->parse_uri)? \
 		(* MN_MAILBOX_CLASS(parent_class)->parse_uri)(___dummy,___uri): \
@@ -178,14 +177,14 @@ ___3_mn_system_vfs_mailbox_parse_uri (MNMailbox * dummy G_GNUC_UNUSED, const cha
 
     return mailbox;
   }}
-#line 182 "mn-system-vfs-mailbox.c"
+#line 181 "mn-system-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 63 "mn-system-vfs-mailbox.gob"
 static void 
 ___4_mn_system_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 189 "mn-system-vfs-mailbox.c"
+#line 188 "mn-system-vfs-mailbox.c"
 #define PARENT_HANDLER(___mailbox) \
 	{ if(MN_MAILBOX_CLASS(parent_class)->check) \
 		(* MN_MAILBOX_CLASS(parent_class)->check)(___mailbox); }
@@ -200,18 +199,18 @@ ___4_mn_system_vfs_mailbox_check (MNMailbox * mailbox G_GNUC_UNUSED)
       }
     else
       {
-	mn_mailbox_set_error(mailbox, _("MAIL environment variable not defined"));
-	mn_mailbox_set_must_poll(mailbox, FALSE); /* disable the mailbox */
+	mn_mailbox_set_error(mailbox, _("system mailbox not found"));
+	mn_mailbox_set_poll(mailbox, FALSE); /* disable the mailbox */
       }
   }}
-#line 208 "mn-system-vfs-mailbox.c"
+#line 207 "mn-system-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
 #line 77 "mn-system-vfs-mailbox.gob"
 const char * 
 mn_system_vfs_mailbox_get_uri (void)
-#line 215 "mn-system-vfs-mailbox.c"
+#line 214 "mn-system-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:System:VFS:Mailbox::get_uri"
 {
@@ -225,13 +224,34 @@ mn_system_vfs_mailbox_get_uri (void)
     if (! global_uri)
       {
 	const char *mail = g_getenv("MAIL");
-	if (mail)
+
+	if (mail && g_path_is_absolute(mail) && g_file_test(mail, G_FILE_TEST_EXISTS))
 	  global_uri = gnome_vfs_get_uri_from_local_path(mail);
+
+	if (! global_uri)	/* no MAIL or invalid contents */
+	  {
+	    const char *username = g_get_user_name();
+	    const char *spool_paths[] = { "/var/spool/mail", "/var/mail" };
+	    int i;
+
+	    for (i = 0; i < G_N_ELEMENTS(spool_paths); i++)
+	      {
+		char *path;
+
+		path = g_build_filename(spool_paths[i], username, NULL);
+		if (g_file_test(path, G_FILE_TEST_EXISTS))
+		  global_uri = gnome_vfs_get_uri_from_local_path(path);
+		g_free(path);
+
+		if (global_uri)
+		  break;
+	      }
+	  }
       }
     uri = global_uri;
     G_UNLOCK(global_uri);
 
     return uri;
   }}
-#line 237 "mn-system-vfs-mailbox.c"
+#line 257 "mn-system-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-system-vfs-mailbox.gob b/src/mn-system-vfs-mailbox.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-vfs-mailbox.h"
@@ -59,7 +59,7 @@ class MN:System:VFS:Mailbox from MN:VFS:Mailbox
 
     return mailbox;
   }
-  
+
   override (MN:Mailbox) void
     check (MNMailbox *mailbox)
   {
@@ -69,11 +69,11 @@ class MN:System:VFS:Mailbox from MN:VFS:Mailbox
       }
     else
       {
-	mn_mailbox_set_error(mailbox, _("MAIL environment variable not defined"));
-	mn_mailbox_set_must_poll(mailbox, FALSE); /* disable the mailbox */
+	mn_mailbox_set_error(mailbox, _("system mailbox not found"));
+	mn_mailbox_set_poll(mailbox, FALSE); /* disable the mailbox */
       }
   }
-  
+
   public const char *
     get_uri (void)
   {
@@ -85,8 +85,29 @@ class MN:System:VFS:Mailbox from MN:VFS:Mailbox
     if (! global_uri)
       {
 	const char *mail = g_getenv("MAIL");
-	if (mail)
+
+	if (mail && g_path_is_absolute(mail) && g_file_test(mail, G_FILE_TEST_EXISTS))
 	  global_uri = gnome_vfs_get_uri_from_local_path(mail);
+
+	if (! global_uri)	/* no MAIL or invalid contents */
+	  {
+	    const char *username = g_get_user_name();
+	    const char *spool_paths[] = { "/var/spool/mail", "/var/mail" };
+	    int i;
+
+	    for (i = 0; i < G_N_ELEMENTS(spool_paths); i++)
+	      {
+		char *path;
+
+		path = g_build_filename(spool_paths[i], username, NULL);
+		if (g_file_test(path, G_FILE_TEST_EXISTS))
+		  global_uri = gnome_vfs_get_uri_from_local_path(path);
+		g_free(path);
+
+		if (global_uri)
+		  break;
+	      }
+	  }
       }
     uri = global_uri;
     G_UNLOCK(global_uri);
diff --git a/src/mn-system-vfs-mailbox.gob.stamp b/src/mn-system-vfs-mailbox.gob.stamp
diff --git a/src/mn-system-vfs-mailbox.h b/src/mn-system-vfs-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
diff --git a/src/mn-text-table-private.h b/src/mn-text-table-private.h
@@ -0,0 +1,42 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#ifndef __MN_TEXT_TABLE_PRIVATE_H__
+#define __MN_TEXT_TABLE_PRIVATE_H__
+
+#include "mn-text-table.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#line 29 "mn-text-table.gob"
+
+typedef struct
+{
+  GQueue	*cells;
+  int		height;
+} Row;
+
+#line 22 "mn-text-table-private.h"
+struct _MNTextTablePrivate {
+#line 78 "mn-text-table.gob"
+	GQueue * rows;
+#line 81 "mn-text-table.gob"
+	GArray * column_sizes;
+#line 84 "mn-text-table.gob"
+	Row * row;
+#line 86 "mn-text-table.gob"
+	gboolean dirty;
+#line 87 "mn-text-table.gob"
+	int width;
+#line 88 "mn-text-table.gob"
+	int height;
+#line 36 "mn-text-table-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-text-table.c b/src/mn-text-table.c
@@ -0,0 +1,705 @@
+/* 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-text-table.h"
+
+#include "mn-text-table-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 37 "mn-text-table.gob"
+
+#include "mn-util.h"
+
+#define HORIZONTAL_SPACING	12
+#define VERTICAL_SPACING	0
+
+#define COLUMN_SIZE(self, column) \
+  g_array_index((self)->_priv->column_sizes, int, (column))
+
+struct _MNTextTableCell
+{
+  PangoLayout	*layout;	/* NULL for a blank cell */
+  gboolean	dirty;
+  int		width;
+  int		height;
+};
+
+#line 44 "mn-text-table.c"
+/* self casting macros */
+#define SELF(x) MN_TEXT_TABLE(x)
+#define SELF_CONST(x) MN_TEXT_TABLE_CONST(x)
+#define IS_SELF(x) MN_IS_TEXT_TABLE(x)
+#define TYPE_SELF MN_TYPE_TEXT_TABLE
+#define SELF_CLASS(x) MN_TEXT_TABLE_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_TEXT_TABLE_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNTextTable Self;
+typedef MNTextTableClass SelfClass;
+
+/* here are local prototypes */
+static void mn_text_table_class_init (MNTextTableClass * c) G_GNUC_UNUSED;
+static void mn_text_table_init (MNTextTable * self) G_GNUC_UNUSED;
+static void mn_text_table_row_free (Row * row) G_GNUC_UNUSED;
+static void mn_text_table_cell_free (MNTextTableCell * cell) G_GNUC_UNUSED;
+static gboolean ___4_mn_text_table_expose_event (GtkWidget * widget, GdkEventExpose * event) G_GNUC_UNUSED;
+static void ___5_mn_text_table_size_request (GtkWidget * widget, GtkRequisition * requisition) G_GNUC_UNUSED;
+static void mn_text_table_set_dirty (MNTextTable * self) G_GNUC_UNUSED;
+static void mn_text_table_context_changed (MNTextTable * self) G_GNUC_UNUSED;
+static void mn_text_table_relayout (MNTextTable * self) G_GNUC_UNUSED;
+static void mn_text_table_redraw (MNTextTable * self) G_GNUC_UNUSED;
+static void ___real_mn_text_table_clear (MNTextTable * self);
+static void mn_text_table_append_cell_real (MNTextTable * self, MNTextTableCell * cell) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static GtkDrawingAreaClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_row_free mn_text_table_row_free
+#define self_cell_free mn_text_table_cell_free
+#define self_set_dirty mn_text_table_set_dirty
+#define self_context_changed mn_text_table_context_changed
+#define self_relayout mn_text_table_relayout
+#define self_redraw mn_text_table_redraw
+#define self_clear mn_text_table_clear
+#define self_append_text_cell mn_text_table_append_text_cell
+#define self_append_text_cell_from_markup mn_text_table_append_text_cell_from_markup
+#define self_append_text_cell_from_layout mn_text_table_append_text_cell_from_layout
+#define self_append_blank_cell mn_text_table_append_blank_cell
+#define self_append_cell_real mn_text_table_append_cell_real
+#define self_cell_set_text mn_text_table_cell_set_text
+#define self_line_break mn_text_table_line_break
+GType
+mn_text_table_get_type (void)
+{
+	static GType type = 0;
+
+	if ___GOB_UNLIKELY(type == 0) {
+		static const GTypeInfo info = {
+			sizeof (MNTextTableClass),
+			(GBaseInitFunc) NULL,
+			(GBaseFinalizeFunc) NULL,
+			(GClassInitFunc) mn_text_table_class_init,
+			(GClassFinalizeFunc) NULL,
+			NULL /* class_data */,
+			sizeof (MNTextTable),
+			0 /* n_preallocs */,
+			(GInstanceInitFunc) mn_text_table_init,
+			NULL
+		};
+
+		type = g_type_register_static (GTK_TYPE_DRAWING_AREA, "MNTextTable", &info, (GTypeFlags)0);
+	}
+
+	return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNTextTable *)g_object_new(mn_text_table_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNTextTable * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNTextTable *
+GET_NEW_VARG (const char *first, ...)
+{
+	MNTextTable *ret;
+	va_list ap;
+	va_start (ap, first);
+	ret = (MNTextTable *)g_object_new_valist (mn_text_table_get_type (), first, ap);
+	va_end (ap);
+	return ret;
+}
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Text:Table::finalize"
+	MNTextTable *self G_GNUC_UNUSED = MN_TEXT_TABLE (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 rows (self->_priv->rows)
+#define VAR rows
+	{
+#line 79 "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));
+#undef VAR
+#undef rows
+#define column_sizes (self->_priv->column_sizes)
+#define VAR column_sizes
+	{
+#line 82 "mn-text-table.gob"
+	 g_array_free(VAR, TRUE); }
+#line 155 "mn-text-table.c"
+	memset(&column_sizes, 0, sizeof(column_sizes));
+#undef VAR
+#undef column_sizes
+}
+#undef __GOB_FUNCTION__
+
+static void 
+mn_text_table_class_init (MNTextTableClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Text:Table::class_init"
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+	GtkWidgetClass *gtk_widget_class = (GtkWidgetClass *)c;
+
+	g_type_class_add_private(c,sizeof(MNTextTablePrivate));
+
+	parent_class = g_type_class_ref (GTK_TYPE_DRAWING_AREA);
+
+#line 116 "mn-text-table.gob"
+	gtk_widget_class->expose_event = ___4_mn_text_table_expose_event;
+#line 127 "mn-text-table.gob"
+	gtk_widget_class->size_request = ___5_mn_text_table_size_request;
+#line 270 "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"
+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"
+	self->_priv->rows = g_queue_new();
+#line 192 "mn-text-table.c"
+#line 81 "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"
+	self->_priv->dirty = TRUE;
+#line 198 "mn-text-table.c"
+ {
+#line 91 "mn-text-table.gob"
+
+    /* allow consumers to receive button-press-event */
+    gtk_widget_add_events(GTK_WIDGET(self), GDK_BUTTON_PRESS_MASK);
+
+    g_object_connect(self,
+		     "swapped-signal::style-set", self_context_changed, self,
+		     "swapped-signal::direction-changed", self_context_changed, self,
+		     NULL);
+  
+#line 210 "mn-text-table.c"
+ }
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 101 "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"
+	g_return_if_fail (row != NULL);
+#line 225 "mn-text-table.c"
+{
+#line 103 "mn-text-table.gob"
+	
+    mn_g_queue_free_deep_custom(row->cells, (GFunc) self_cell_free, NULL);
+    g_free(row);
+  }}
+#line 232 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 108 "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"
+	g_return_if_fail (cell != NULL);
+#line 243 "mn-text-table.c"
+{
+#line 110 "mn-text-table.gob"
+	
+    if (cell->layout)
+      g_object_unref(cell->layout);
+    g_free(cell);
+  }}
+#line 251 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 116 "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"
+#define PARENT_HANDLER(___widget,___event) \
+	((GTK_WIDGET_CLASS(parent_class)->expose_event)? \
+		(* GTK_WIDGET_CLASS(parent_class)->expose_event)(___widget,___event): \
+		((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:Text:Table::expose_event"
+{
+#line 118 "mn-text-table.gob"
+	
+    Self *self = SELF(widget);
+
+    self_relayout(self);
+    self_redraw(self);
+
+    return FALSE;		/* propagate event */
+  }}
+#line 274 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 127 "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"
+#define PARENT_HANDLER(___widget,___requisition) \
+	{ if(GTK_WIDGET_CLASS(parent_class)->size_request) \
+		(* GTK_WIDGET_CLASS(parent_class)->size_request)(___widget,___requisition); }
+{
+#define __GOB_FUNCTION__ "MN:Text:Table::size_request"
+{
+#line 129 "mn-text-table.gob"
+	
+    Self *self = SELF(widget);
+
+    self_relayout(self);
+
+    requisition->width = selfp->width;
+    requisition->height = selfp->height;
+  }}
+#line 297 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 138 "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"
+	g_return_if_fail (self != NULL);
+#line 138 "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"
+	
+    if (! selfp->dirty)
+      {
+	selfp->dirty = TRUE;
+	gtk_widget_queue_resize(GTK_WIDGET(self));
+      }
+  }}
+#line 321 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 148 "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"
+	g_return_if_fail (self != NULL);
+#line 148 "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"
+	
+    GList *la;
+
+    MN_QUEUE_FOREACH(la, selfp->rows)
+      {
+	Row *row = la->data;
+	GList *lb;
+
+	MN_QUEUE_FOREACH(lb, row->cells)
+	  {
+	    MNTextTableCell *cell = lb->data;
+
+	    if (cell->layout)
+	      {
+		pango_layout_context_changed(cell->layout);
+		cell->dirty = TRUE;
+	      }
+	  }
+      }
+
+    self_set_dirty(self);
+  }}
+#line 359 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 173 "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"
+	g_return_if_fail (self != NULL);
+#line 173 "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"
+	
+    int i;
+    GList *la;
+
+    if (! selfp->dirty)
+      return;
+
+    selfp->width = 0;
+    selfp->height = 0;
+
+    for (i = 0; i < selfp->column_sizes->len; i++)
+      COLUMN_SIZE(self, i) = 0;
+
+    MN_QUEUE_FOREACH(la, selfp->rows)
+      {
+	Row *row = la->data;
+	int column = 0;
+	GList *lb;
+
+	row->height = 0;
+
+	MN_QUEUE_FOREACH(lb, row->cells)
+	  {
+	    MNTextTableCell *cell = lb->data;
+	    int n_columns = column + 1;
+
+	    if (cell->dirty)
+	      {
+		g_assert(cell->layout != NULL);
+
+		pango_layout_get_pixel_size(cell->layout, &cell->width, &cell->height);
+		cell->dirty = FALSE;
+	      }
+
+	    if (n_columns > selfp->column_sizes->len)
+	      g_array_set_size(selfp->column_sizes, n_columns);
+
+	    if (cell->width > COLUMN_SIZE(self, column))
+	      COLUMN_SIZE(self, column) = cell->width;
+	    if (cell->height > row->height)
+	      row->height = cell->height;
+
+	    column++;
+	  }
+
+	selfp->height += row->height;
+      }
+
+    for (i = 0; i < selfp->column_sizes->len; i++)
+      selfp->width += COLUMN_SIZE(self, i);
+
+    if (selfp->column_sizes->len > 1)
+      selfp->width += HORIZONTAL_SPACING * (selfp->column_sizes->len - 1);
+    if (selfp->rows->length > 1)
+      selfp->height += VERTICAL_SPACING * (selfp->rows->length - 1);
+
+    selfp->dirty = FALSE;
+  }}
+#line 433 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 234 "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"
+	g_return_if_fail (self != NULL);
+#line 234 "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"
+	
+    GtkWidget *widget = GTK_WIDGET(self);
+    GList *la;
+    int y = 0;
+
+    g_return_if_fail(selfp->dirty == FALSE);
+
+    MN_QUEUE_FOREACH(la, selfp->rows)
+      {
+	Row *row = la->data;
+	GList *lb;
+	int x = 0;
+	int column = 0;
+
+	MN_QUEUE_FOREACH(lb, row->cells)
+	  {
+	    MNTextTableCell *cell = lb->data;
+
+	    if (cell->layout)
+	      gdk_draw_layout(widget->window, widget->style->text_gc[GTK_WIDGET_STATE(widget)], x, y + row->height - cell->height, cell->layout);
+
+	    x += COLUMN_SIZE(self, column);
+	    if (lb->next)
+	      x += HORIZONTAL_SPACING;
+
+	    column++;
+	  }
+
+	y += row->height;
+	if (la->next)
+	  y += VERTICAL_SPACING;
+      }
+  }}
+#line 482 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 270 "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"
+	g_return_if_fail (self != NULL);
+#line 270 "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);
+
+	if(klass->clear)
+		(*klass->clear)(self);
+}
+#line 270 "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"
+	
+    Row *row;
+
+    while ((row = g_queue_pop_head(selfp->rows)))
+      self_row_free(row);
+
+    g_array_set_size(selfp->column_sizes, 0);
+
+    selfp->row = NULL;
+
+    self_set_dirty(self);
+  }}
+#line 521 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 285 "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"
+	g_return_val_if_fail (self != NULL, (MNTextTableCell * )0);
+#line 285 "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"
+	
+    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"
+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"
+	g_return_val_if_fail (self != NULL, (MNTextTableCell * )0);
+#line 291 "mn-text-table.gob"
+	g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0);
+#line 291 "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"
+	
+    PangoLayout *layout;
+
+    layout = gtk_widget_create_pango_layout(GTK_WIDGET(self), NULL);
+    pango_layout_set_markup(layout, markup, -1);
+
+    return self_append_text_cell_from_layout(self, layout);
+  }}
+#line 566 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 302 "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"
+	g_return_val_if_fail (self != NULL, (MNTextTableCell * )0);
+#line 302 "mn-text-table.gob"
+	g_return_val_if_fail (MN_IS_TEXT_TABLE (self), (MNTextTableCell * )0);
+#line 302 "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"
+	
+    MNTextTableCell *cell;
+
+    cell = g_new(MNTextTableCell, 1);
+    cell->layout = layout;
+    cell->dirty = TRUE;
+
+    self_append_cell_real(self, cell);
+
+    return cell;
+  }}
+#line 595 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 316 "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"
+	g_return_val_if_fail (self != NULL, (MNTextTableCell * )0);
+#line 316 "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"
+	
+    MNTextTableCell *cell;
+
+    cell = g_new(MNTextTableCell, 1);
+    cell->layout = NULL;
+    cell->dirty = FALSE;
+    cell->width = width;
+    cell->height = height;
+
+    self_append_cell_real(self, cell);
+
+    return cell;
+  }}
+#line 624 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 332 "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"
+	g_return_if_fail (self != NULL);
+#line 332 "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"
+	
+    if (! selfp->row)
+      {
+	selfp->row = g_new(Row, 1);
+	selfp->row->cells = g_queue_new();
+
+	g_queue_push_tail(selfp->rows, selfp->row);
+      }
+
+    g_queue_push_tail(selfp->row->cells, cell);
+
+    self_set_dirty(self);
+  }}
+#line 653 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 348 "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"
+	g_return_if_fail (self != NULL);
+#line 348 "mn-text-table.gob"
+	g_return_if_fail (MN_IS_TEXT_TABLE (self));
+#line 348 "mn-text-table.gob"
+	g_return_if_fail (cell != NULL);
+#line 348 "mn-text-table.gob"
+	g_return_if_fail (text != NULL);
+#line 670 "mn-text-table.c"
+{
+#line 352 "mn-text-table.gob"
+	
+    const char *current_text;
+
+    g_return_if_fail(cell->layout != NULL);
+
+    current_text = pango_layout_get_text(cell->layout);
+    if (! current_text || strcmp(current_text, text))
+      {
+	pango_layout_set_text(cell->layout, text, -1);
+	cell->dirty = TRUE;
+	self_set_dirty(self);
+      }
+  }}
+#line 686 "mn-text-table.c"
+#undef __GOB_FUNCTION__
+
+#line 366 "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"
+	g_return_if_fail (self != NULL);
+#line 366 "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"
+	
+    selfp->row = NULL;
+  }}
+#line 705 "mn-text-table.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-text-table.gob b/src/mn-text-table.gob
@@ -0,0 +1,371 @@
+/* 
+ * Copyright (C) 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>
+%}
+
+%h{
+typedef struct _MNTextTableCell MNTextTableCell;
+%}
+
+%privateheader{
+typedef struct
+{
+  GQueue	*cells;
+  int		height;
+} Row;
+%}
+
+%{
+#include "mn-util.h"
+
+#define HORIZONTAL_SPACING	12
+#define VERTICAL_SPACING	0
+
+#define COLUMN_SIZE(self, column) \
+  g_array_index((self)->_priv->column_sizes, int, (column))
+
+struct _MNTextTableCell
+{
+  PangoLayout	*layout;	/* NULL for a blank cell */
+  gboolean	dirty;
+  int		width;
+  int		height;
+};
+%}
+
+/*
+ * This widget is used to display the mail summaries.
+ *
+ * We do not use a GtkBox (or GtkTable) containing labels because it
+ * is extremely slow when we add a few hundred labels.
+ *
+ * An alternate solution would be to use a GtkTextView, which provides
+ * acceptable performance, but:
+ *
+ *   - creating a table using a GtkTextView is extremely cumbersome
+ *   - a GtkTextView uses the GLib main loop in a thread-unsafe manner
+ *     (http://bugzilla.gnome.org/show_bug.cgi?id=321886); if we destroy
+ *     it from a thread, we may crash the application
+ *
+ * We therefore implement MNTextTable, which:
+ *
+ *   - is fast (at least as fast as a GtkTextView, probably faster)
+ *   - is thread-safe
+ *   - allows to easily align labels horizontally
+ */
+
+class MN:Text:Table from Gtk:Drawing:Area
+{
+  private GQueue *rows = {g_queue_new()}
+    destroy { mn_g_queue_free_deep_custom(VAR, (GFunc) self_row_free, NULL); };
+
+  private GArray *column_sizes = {g_array_new(FALSE, TRUE, sizeof(int))}
+    destroy { g_array_free(VAR, TRUE); };
+
+  private Row *row;
+
+  private gboolean dirty = TRUE;
+  private int width;
+  private int height;
+
+  init (self)
+  {
+    /* allow consumers to receive button-press-event */
+    gtk_widget_add_events(GTK_WIDGET(self), GDK_BUTTON_PRESS_MASK);
+
+    g_object_connect(self,
+		     "swapped-signal::style-set", self_context_changed, self,
+		     "swapped-signal::direction-changed", self_context_changed, self,
+		     NULL);
+  }
+
+  private void
+    row_free (Row *row (check null))
+  {
+    mn_g_queue_free_deep_custom(row->cells, (GFunc) self_cell_free, NULL);
+    g_free(row);
+  }
+
+  private void
+    cell_free (MNTextTableCell *cell (check null))
+  {
+    if (cell->layout)
+      g_object_unref(cell->layout);
+    g_free(cell);
+  }
+
+  override (Gtk:Widget) gboolean
+    expose_event (GtkWidget *widget, GdkEventExpose *event)
+  {
+    Self *self = SELF(widget);
+
+    self_relayout(self);
+    self_redraw(self);
+
+    return FALSE;		/* propagate event */
+  }
+
+  override (Gtk:Widget) void
+    size_request (GtkWidget *widget, GtkRequisition *requisition)
+  {
+    Self *self = SELF(widget);
+
+    self_relayout(self);
+
+    requisition->width = selfp->width;
+    requisition->height = selfp->height;
+  }
+
+  private void
+    set_dirty (self)
+  {
+    if (! selfp->dirty)
+      {
+	selfp->dirty = TRUE;
+	gtk_widget_queue_resize(GTK_WIDGET(self));
+      }
+  }
+
+  private void
+    context_changed (self)
+  {
+    GList *la;
+
+    MN_QUEUE_FOREACH(la, selfp->rows)
+      {
+	Row *row = la->data;
+	GList *lb;
+
+	MN_QUEUE_FOREACH(lb, row->cells)
+	  {
+	    MNTextTableCell *cell = lb->data;
+
+	    if (cell->layout)
+	      {
+		pango_layout_context_changed(cell->layout);
+		cell->dirty = TRUE;
+	      }
+	  }
+      }
+
+    self_set_dirty(self);
+  }
+
+  private void
+    relayout (self)
+  {
+    int i;
+    GList *la;
+
+    if (! selfp->dirty)
+      return;
+
+    selfp->width = 0;
+    selfp->height = 0;
+
+    for (i = 0; i < selfp->column_sizes->len; i++)
+      COLUMN_SIZE(self, i) = 0;
+
+    MN_QUEUE_FOREACH(la, selfp->rows)
+      {
+	Row *row = la->data;
+	int column = 0;
+	GList *lb;
+
+	row->height = 0;
+
+	MN_QUEUE_FOREACH(lb, row->cells)
+	  {
+	    MNTextTableCell *cell = lb->data;
+	    int n_columns = column + 1;
+
+	    if (cell->dirty)
+	      {
+		g_assert(cell->layout != NULL);
+
+		pango_layout_get_pixel_size(cell->layout, &cell->width, &cell->height);
+		cell->dirty = FALSE;
+	      }
+
+	    if (n_columns > selfp->column_sizes->len)
+	      g_array_set_size(selfp->column_sizes, n_columns);
+
+	    if (cell->width > COLUMN_SIZE(self, column))
+	      COLUMN_SIZE(self, column) = cell->width;
+	    if (cell->height > row->height)
+	      row->height = cell->height;
+
+	    column++;
+	  }
+
+	selfp->height += row->height;
+      }
+
+    for (i = 0; i < selfp->column_sizes->len; i++)
+      selfp->width += COLUMN_SIZE(self, i);
+
+    if (selfp->column_sizes->len > 1)
+      selfp->width += HORIZONTAL_SPACING * (selfp->column_sizes->len - 1);
+    if (selfp->rows->length > 1)
+      selfp->height += VERTICAL_SPACING * (selfp->rows->length - 1);
+
+    selfp->dirty = FALSE;
+  }
+
+  private void
+    redraw (self)
+  {
+    GtkWidget *widget = GTK_WIDGET(self);
+    GList *la;
+    int y = 0;
+
+    g_return_if_fail(selfp->dirty == FALSE);
+
+    MN_QUEUE_FOREACH(la, selfp->rows)
+      {
+	Row *row = la->data;
+	GList *lb;
+	int x = 0;
+	int column = 0;
+
+	MN_QUEUE_FOREACH(lb, row->cells)
+	  {
+	    MNTextTableCell *cell = lb->data;
+
+	    if (cell->layout)
+	      gdk_draw_layout(widget->window, widget->style->text_gc[GTK_WIDGET_STATE(widget)], x, y + row->height - cell->height, cell->layout);
+
+	    x += COLUMN_SIZE(self, column);
+	    if (lb->next)
+	      x += HORIZONTAL_SPACING;
+
+	    column++;
+	  }
+
+	y += row->height;
+	if (la->next)
+	  y += VERTICAL_SPACING;
+      }
+  }
+
+  virtual public void
+    clear (self)
+  {
+    Row *row;
+
+    while ((row = g_queue_pop_head(selfp->rows)))
+      self_row_free(row);
+
+    g_array_set_size(selfp->column_sizes, 0);
+
+    selfp->row = NULL;
+
+    self_set_dirty(self);
+  }
+
+  public MNTextTableCell *
+    append_text_cell (self, const char *text)
+  {
+    return self_append_text_cell_from_layout(self, gtk_widget_create_pango_layout(GTK_WIDGET(self), text));
+  }
+
+  public MNTextTableCell *
+    append_text_cell_from_markup (self, const char *markup (check null))
+  {
+    PangoLayout *layout;
+
+    layout = gtk_widget_create_pango_layout(GTK_WIDGET(self), NULL);
+    pango_layout_set_markup(layout, markup, -1);
+
+    return self_append_text_cell_from_layout(self, layout);
+  }
+
+  public MNTextTableCell *
+    append_text_cell_from_layout (self, Pango:Layout *layout (check null))
+  {
+    MNTextTableCell *cell;
+
+    cell = g_new(MNTextTableCell, 1);
+    cell->layout = layout;
+    cell->dirty = TRUE;
+
+    self_append_cell_real(self, cell);
+
+    return cell;
+  }
+
+  public MNTextTableCell *
+    append_blank_cell (self, int width, int height)
+  {
+    MNTextTableCell *cell;
+
+    cell = g_new(MNTextTableCell, 1);
+    cell->layout = NULL;
+    cell->dirty = FALSE;
+    cell->width = width;
+    cell->height = height;
+
+    self_append_cell_real(self, cell);
+
+    return cell;
+  }
+
+  private void
+    append_cell_real (self, MNTextTableCell *cell)
+  {
+    if (! selfp->row)
+      {
+	selfp->row = g_new(Row, 1);
+	selfp->row->cells = g_queue_new();
+
+	g_queue_push_tail(selfp->rows, selfp->row);
+      }
+
+    g_queue_push_tail(selfp->row->cells, cell);
+
+    self_set_dirty(self);
+  }
+
+  public void
+    cell_set_text (self,
+		   MNTextTableCell *cell (check null),
+		   const char *text (check null))
+  {
+    const char *current_text;
+
+    g_return_if_fail(cell->layout != NULL);
+
+    current_text = pango_layout_get_text(cell->layout);
+    if (! current_text || strcmp(current_text, text))
+      {
+	pango_layout_set_text(cell->layout, text, -1);
+	cell->dirty = TRUE;
+	self_set_dirty(self);
+      }
+  }
+
+  public void
+    line_break (self)
+  {
+    selfp->row = NULL;
+  }
+}
diff --git a/src/mn-text-table.gob.stamp b/src/mn-text-table.gob.stamp
diff --git a/src/mn-text-table.h b/src/mn-text-table.h
@@ -0,0 +1,81 @@
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <gtk/gtk.h>
+
+#ifndef __MN_TEXT_TABLE_H__
+#define __MN_TEXT_TABLE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+
+typedef struct _MNTextTableCell MNTextTableCell;
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_TEXT_TABLE	(mn_text_table_get_type())
+#define MN_TEXT_TABLE(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_text_table_get_type(), MNTextTable)
+#define MN_TEXT_TABLE_CONST(obj)	G_TYPE_CHECK_INSTANCE_CAST((obj), mn_text_table_get_type(), MNTextTable const)
+#define MN_TEXT_TABLE_CLASS(klass)	G_TYPE_CHECK_CLASS_CAST((klass), mn_text_table_get_type(), MNTextTableClass)
+#define MN_IS_TEXT_TABLE(obj)	G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_text_table_get_type ())
+
+#define MN_TEXT_TABLE_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_text_table_get_type(), MNTextTableClass)
+
+/* Private structure type */
+typedef struct _MNTextTablePrivate MNTextTablePrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_TEXT_TABLE__
+#define __TYPEDEF_MN_TEXT_TABLE__
+typedef struct _MNTextTable MNTextTable;
+#endif
+struct _MNTextTable {
+	GtkDrawingArea __parent__;
+	/*< private >*/
+	MNTextTablePrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNTextTableClass MNTextTableClass;
+struct _MNTextTableClass {
+	GtkDrawingAreaClass __parent__;
+	void (* clear) (MNTextTable * self);
+};
+
+
+/*
+ * Public methods
+ */
+GType	mn_text_table_get_type	(void);
+void 	mn_text_table_clear	(MNTextTable * self);
+MNTextTableCell * 	mn_text_table_append_text_cell	(MNTextTable * self,
+					const char * text);
+MNTextTableCell * 	mn_text_table_append_text_cell_from_markup	(MNTextTable * self,
+					const char * markup);
+MNTextTableCell * 	mn_text_table_append_text_cell_from_layout	(MNTextTable * self,
+					PangoLayout * layout);
+MNTextTableCell * 	mn_text_table_append_blank_cell	(MNTextTable * self,
+					int width,
+					int height);
+void 	mn_text_table_cell_set_text	(MNTextTable * self,
+					MNTextTableCell * cell,
+					const char * text);
+void 	mn_text_table_line_break	(MNTextTable * self);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-tooltips-private.h b/src/mn-tooltips-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_TOOLTIPS_PRIVATE_H__
 #define __MN_TOOLTIPS_PRIVATE_H__
@@ -12,6 +12,8 @@ extern "C" {
 
 #line 29 "mn-tooltips.gob"
 
+#include "mn-locked-callback.h"
+
 typedef struct
 {
   MNTooltips	*self;
@@ -19,21 +21,23 @@ typedef struct
   GtkWidget	*tip_widget;
 } TooltipsData;
 
-#line 23 "mn-tooltips-private.h"
+#line 25 "mn-tooltips-private.h"
 struct _MNTooltipsPrivate {
-#line 74 "mn-tooltips.gob"
+#line 76 "mn-tooltips.gob"
 	GtkWidget * window;
-#line 75 "mn-tooltips.gob"
+#line 77 "mn-tooltips.gob"
 	TooltipsData * active_data;
-#line 76 "mn-tooltips.gob"
-	GSList * data_list;
 #line 78 "mn-tooltips.gob"
+	GSList * data_list;
+#line 80 "mn-tooltips.gob"
 	gboolean use_sticky_delay;
-#line 79 "mn-tooltips.gob"
+#line 81 "mn-tooltips.gob"
 	GTimeVal last_popdown;
-#line 80 "mn-tooltips.gob"
-	unsigned int timeout_id;
-#line 37 "mn-tooltips-private.h"
+#line 82 "mn-tooltips.gob"
+	MNLockedGSource * timeout_source;
+#line 84 "mn-tooltips.gob"
+	int border_width;
+#line 41 "mn-tooltips-private.h"
 };
 
 #ifdef __cplusplus
diff --git a/src/mn-tooltips.c b/src/mn-tooltips.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:58 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,7 +22,7 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 38 "mn-tooltips.gob"
+#line 40 "mn-tooltips.gob"
 
 #include <eel/eel.h>
 #include "mn-util.h"
@@ -50,14 +49,14 @@ typedef enum
 /* Macros for extracting a widgets private_flags from GtkWidget.
  */
 #define GTK_PRIVATE_FLAGS(wid)            (GTK_WIDGET (wid)->private_flags)
-  
+
 /* Macros for setting and clearing private widget flags.
  * we use a preprocessor string concatenation here for a clear
  * flags/private_flags distinction at the cost of single flag operations.
  */
 #define GTK_PRIVATE_SET_FLAG(wid,flag)    G_STMT_START{ (GTK_PRIVATE_FLAGS (wid) |= (PRIVATE_ ## flag)); }G_STMT_END
 
-#line 61 "mn-tooltips.c"
+#line 60 "mn-tooltips.c"
 /* self casting macros */
 #define SELF(x) MN_TOOLTIPS(x)
 #define SELF_CONST(x) MN_TOOLTIPS_CONST(x)
@@ -82,6 +81,7 @@ static void mn_tooltips_unset_window (MNTooltips * self) G_GNUC_UNUSED;
 static void mn_tooltips_update_screen (MNTooltips * self, gboolean new_window) G_GNUC_UNUSED;
 static void mn_tooltips_force_window (MNTooltips * self) G_GNUC_UNUSED;
 static TooltipsData * mn_tooltips_get_data (GtkWidget * widget) G_GNUC_UNUSED;
+static void mn_tooltips_set_tip_widget_real (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget, int border_width) G_GNUC_UNUSED;
 static gboolean mn_tooltips_paint_window (MNTooltips * self) G_GNUC_UNUSED;
 static void mn_tooltips_draw_tips (MNTooltips * self) G_GNUC_UNUSED;
 static gboolean mn_tooltips_timeout_cb (gpointer data) G_GNUC_UNUSED;
@@ -108,6 +108,8 @@ static GObjectClass *parent_class = NULL;
 #define self_update_screen mn_tooltips_update_screen
 #define self_force_window mn_tooltips_force_window
 #define self_get_data mn_tooltips_get_data
+#define self_set_tip_widget_real mn_tooltips_set_tip_widget_real
+#define self_set_tip mn_tooltips_set_tip
 #define self_set_tip_widget mn_tooltips_set_tip_widget
 #define self_paint_window mn_tooltips_paint_window
 #define self_draw_tips mn_tooltips_draw_tips
@@ -174,9 +176,9 @@ ___finalize(GObject *obj_self)
 #define __GOB_FUNCTION__ "MN:Tooltips::finalize"
 	MNTooltips *self G_GNUC_UNUSED = MN_TOOLTIPS (obj_self);
 	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 82 "mn-tooltips.gob"
+#line 86 "mn-tooltips.gob"
 	___1_mn_tooltips_finalize(obj_self);
-#line 180 "mn-tooltips.c"
+#line 182 "mn-tooltips.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -185,6 +187,9 @@ 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"
+	o->_priv->border_width = 4;
+#line 193 "mn-tooltips.c"
 }
 #undef __GOB_FUNCTION__
 static void 
@@ -197,31 +202,31 @@ mn_tooltips_class_init (MNTooltipsClass * c G_GNUC_UNUSED)
 
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 82 "mn-tooltips.gob"
+#line 86 "mn-tooltips.gob"
 	g_object_class->finalize = ___finalize;
-#line 203 "mn-tooltips.c"
+#line 208 "mn-tooltips.c"
 }
 #undef __GOB_FUNCTION__
 
 
 
-#line 82 "mn-tooltips.gob"
+#line 86 "mn-tooltips.gob"
 static void 
 ___1_mn_tooltips_finalize (GObject * object G_GNUC_UNUSED)
-#line 212 "mn-tooltips.c"
+#line 217 "mn-tooltips.c"
 #define PARENT_HANDLER(___object) \
 	{ if(G_OBJECT_CLASS(parent_class)->finalize) \
 		(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::finalize"
 {
-#line 84 "mn-tooltips.gob"
+#line 88 "mn-tooltips.gob"
 	
     Self *self = SELF(object);
     GSList *l;
 
-    if (selfp->timeout_id)
-      g_source_remove(selfp->timeout_id);
+    if (selfp->timeout_source)
+      mn_locked_g_source_remove(selfp->timeout_source);
 
     MN_LIST_FOREACH(l, selfp->data_list)
       {
@@ -233,18 +238,18 @@ ___1_mn_tooltips_finalize (GObject * object G_GNUC_UNUSED)
 
     PARENT_HANDLER(object);
   }}
-#line 237 "mn-tooltips.c"
+#line 242 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 102 "mn-tooltips.gob"
+#line 106 "mn-tooltips.gob"
 static void 
 mn_tooltips_destroy_data (TooltipsData * data)
-#line 244 "mn-tooltips.c"
+#line 249 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::destroy_data"
 {
-#line 104 "mn-tooltips.gob"
+#line 108 "mn-tooltips.gob"
 	
     g_object_disconnect(data->widget,
 			"any-signal", self_event_after_h, data,
@@ -257,58 +262,58 @@ mn_tooltips_destroy_data (TooltipsData * data)
     g_object_unref(data->tip_widget);
     g_free(data);
   }}
-#line 261 "mn-tooltips.c"
+#line 266 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 117 "mn-tooltips.gob"
+#line 121 "mn-tooltips.gob"
 static void 
 mn_tooltips_display_closed_h (GdkDisplay * display, gboolean is_error, gpointer user_data)
-#line 267 "mn-tooltips.c"
+#line 272 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::display_closed_h"
 {
-#line 121 "mn-tooltips.gob"
+#line 125 "mn-tooltips.gob"
 	
     Self *self = SELF(user_data);
     self_unset_window(self);
   }}
-#line 276 "mn-tooltips.c"
+#line 281 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 126 "mn-tooltips.gob"
+#line 130 "mn-tooltips.gob"
 static void 
 mn_tooltips_disconnect_display_closed (MNTooltips * self)
-#line 282 "mn-tooltips.c"
+#line 287 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::disconnect_display_closed"
-#line 126 "mn-tooltips.gob"
+#line 130 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 126 "mn-tooltips.gob"
+#line 130 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 289 "mn-tooltips.c"
+#line 294 "mn-tooltips.c"
 {
-#line 128 "mn-tooltips.gob"
+#line 132 "mn-tooltips.gob"
 	
     g_signal_handlers_disconnect_by_func(gtk_widget_get_display(selfp->window),
 					 self_display_closed_h,
 					 self);
   }}
-#line 297 "mn-tooltips.c"
+#line 302 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 134 "mn-tooltips.gob"
+#line 138 "mn-tooltips.gob"
 static void 
 mn_tooltips_unset_window (MNTooltips * self)
-#line 303 "mn-tooltips.c"
+#line 308 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::unset_window"
-#line 134 "mn-tooltips.gob"
+#line 138 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 134 "mn-tooltips.gob"
+#line 138 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 310 "mn-tooltips.c"
+#line 315 "mn-tooltips.c"
 {
-#line 136 "mn-tooltips.gob"
+#line 140 "mn-tooltips.gob"
 	
     if (selfp->window)
       {
@@ -316,22 +321,22 @@ mn_tooltips_unset_window (MNTooltips * self)
 	gtk_widget_destroy(selfp->window);
       }
   }}
-#line 320 "mn-tooltips.c"
+#line 325 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 144 "mn-tooltips.gob"
+#line 148 "mn-tooltips.gob"
 static void 
 mn_tooltips_update_screen (MNTooltips * self, gboolean new_window)
-#line 326 "mn-tooltips.c"
+#line 331 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::update_screen"
-#line 144 "mn-tooltips.gob"
+#line 148 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 144 "mn-tooltips.gob"
+#line 148 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 333 "mn-tooltips.c"
+#line 338 "mn-tooltips.c"
 {
-#line 146 "mn-tooltips.gob"
+#line 150 "mn-tooltips.gob"
 	
     gboolean screen_changed = FALSE;
 
@@ -345,7 +350,7 @@ mn_tooltips_update_screen (MNTooltips * self, gboolean new_window)
 	  {
 	    if (! new_window)
 	      self_disconnect_display_closed(self);
-      
+
 	    gtk_window_set_screen(GTK_WINDOW(selfp->window), screen);
 	  }
       }
@@ -356,22 +361,22 @@ mn_tooltips_update_screen (MNTooltips * self, gboolean new_window)
 		       G_CALLBACK(self_display_closed_h),
 		       self);
   }}
-#line 360 "mn-tooltips.c"
+#line 365 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 171 "mn-tooltips.gob"
+#line 175 "mn-tooltips.gob"
 static void 
 mn_tooltips_force_window (MNTooltips * self)
-#line 366 "mn-tooltips.c"
+#line 371 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::force_window"
-#line 171 "mn-tooltips.gob"
+#line 175 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 171 "mn-tooltips.gob"
+#line 175 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 373 "mn-tooltips.c"
+#line 378 "mn-tooltips.c"
 {
-#line 173 "mn-tooltips.gob"
+#line 177 "mn-tooltips.gob"
 	
     if (! selfp->window)
       {
@@ -380,55 +385,55 @@ mn_tooltips_force_window (MNTooltips * self)
 	gtk_widget_set_app_paintable(selfp->window, TRUE);
 	gtk_window_set_resizable(GTK_WINDOW(selfp->window), FALSE);
 	gtk_widget_set_name(selfp->window, "gtk-tooltips");
-	gtk_container_set_border_width(GTK_CONTAINER(selfp->window), 12);
+	gtk_container_set_border_width(GTK_CONTAINER(selfp->window), selfp->border_width);
 
 	g_signal_connect_swapped(selfp->window,
 				 "expose-event",
-				 G_CALLBACK(self_paint_window), 
+				 G_CALLBACK(self_paint_window),
 				 self);
 
 	eel_add_weak_pointer(&selfp->window);
       }
   }}
-#line 394 "mn-tooltips.c"
+#line 399 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 192 "mn-tooltips.gob"
+#line 196 "mn-tooltips.gob"
 static TooltipsData * 
 mn_tooltips_get_data (GtkWidget * widget)
-#line 400 "mn-tooltips.c"
+#line 405 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::get_data"
-#line 192 "mn-tooltips.gob"
+#line 196 "mn-tooltips.gob"
 	g_return_val_if_fail (widget != NULL, (TooltipsData * )0);
-#line 192 "mn-tooltips.gob"
+#line 196 "mn-tooltips.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (TooltipsData * )0);
-#line 407 "mn-tooltips.c"
+#line 412 "mn-tooltips.c"
 {
-#line 194 "mn-tooltips.gob"
+#line 198 "mn-tooltips.gob"
 	
     return g_object_get_data(G_OBJECT(widget), TOOLTIPS_DATA);
   }}
-#line 413 "mn-tooltips.c"
+#line 418 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 198 "mn-tooltips.gob"
-void 
-mn_tooltips_set_tip_widget (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget)
-#line 419 "mn-tooltips.c"
+#line 202 "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"
-#line 198 "mn-tooltips.gob"
+#define __GOB_FUNCTION__ "MN:Tooltips::set_tip_widget_real"
+#line 202 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 198 "mn-tooltips.gob"
+#line 202 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 198 "mn-tooltips.gob"
+#line 202 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 198 "mn-tooltips.gob"
+#line 202 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 430 "mn-tooltips.c"
+#line 435 "mn-tooltips.c"
 {
-#line 202 "mn-tooltips.gob"
+#line 207 "mn-tooltips.gob"
 	
     TooltipsData *data;
 
@@ -461,7 +466,7 @@ mn_tooltips_set_tip_widget (MNTooltips * self, GtkWidget * widget, GtkWidget * t
 
 	if (data)
 	  self_widget_remove(data->widget, data);
-	
+
 	data = g_new0(TooltipsData, 1);
 	data->self = self;
 	data->widget = widget;
@@ -481,23 +486,83 @@ mn_tooltips_set_tip_widget (MNTooltips * self, GtkWidget * widget, GtkWidget * t
 			 "signal::destroy", self_widget_remove, data,
 			 NULL);
       }
+
+    selfp->border_width = border_width;
+    if (selfp->window)
+      gtk_container_set_border_width(GTK_CONTAINER(selfp->window), border_width);
+  }}
+#line 495 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 265 "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"
+	g_return_if_fail (self != NULL);
+#line 265 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 265 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 265 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 512 "mn-tooltips.c"
+{
+#line 269 "mn-tooltips.gob"
+	
+    GtkWidget *label = NULL;
+
+    if (tip_text)
+      {
+	label = gtk_label_new(tip_text);
+	gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+	gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
+	gtk_widget_show(label);
+      }
+
+    self_set_tip_widget_real(self, widget, label, 4);
+  }}
+#line 528 "mn-tooltips.c"
+#undef __GOB_FUNCTION__
+
+#line 283 "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"
+	g_return_if_fail (self != NULL);
+#line 283 "mn-tooltips.gob"
+	g_return_if_fail (MN_IS_TOOLTIPS (self));
+#line 283 "mn-tooltips.gob"
+	g_return_if_fail (widget != NULL);
+#line 283 "mn-tooltips.gob"
+	g_return_if_fail (GTK_IS_WIDGET (widget));
+#line 545 "mn-tooltips.c"
+{
+#line 287 "mn-tooltips.gob"
+	
+    self_set_tip_widget_real(self, widget, tip_widget, 12);
   }}
-#line 486 "mn-tooltips.c"
+#line 551 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 256 "mn-tooltips.gob"
+#line 291 "mn-tooltips.gob"
 static gboolean 
 mn_tooltips_paint_window (MNTooltips * self)
-#line 492 "mn-tooltips.c"
+#line 557 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::paint_window"
-#line 256 "mn-tooltips.gob"
+#line 291 "mn-tooltips.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 256 "mn-tooltips.gob"
+#line 291 "mn-tooltips.gob"
 	g_return_val_if_fail (MN_IS_TOOLTIPS (self), (gboolean )0);
-#line 499 "mn-tooltips.c"
+#line 564 "mn-tooltips.c"
 {
-#line 258 "mn-tooltips.gob"
+#line 293 "mn-tooltips.gob"
 	
     GtkRequisition req;
 
@@ -505,7 +570,7 @@ mn_tooltips_paint_window (MNTooltips * self)
     gtk_paint_flat_box(selfp->window->style,
 		       selfp->window->window,
 		       GTK_STATE_NORMAL,
-		       GTK_SHADOW_OUT, 
+		       GTK_SHADOW_OUT,
 		       NULL,
 		       selfp->window,
 		       "tooltip",
@@ -513,25 +578,25 @@ mn_tooltips_paint_window (MNTooltips * self)
 		       0,
 		       req.width,
 		       req.height);
-    
+
     return FALSE;
   }}
-#line 520 "mn-tooltips.c"
+#line 585 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 277 "mn-tooltips.gob"
+#line 312 "mn-tooltips.gob"
 static void 
 mn_tooltips_draw_tips (MNTooltips * self)
-#line 526 "mn-tooltips.c"
+#line 591 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::draw_tips"
-#line 277 "mn-tooltips.gob"
+#line 312 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 277 "mn-tooltips.gob"
+#line 312 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 533 "mn-tooltips.c"
+#line 598 "mn-tooltips.c"
 {
-#line 279 "mn-tooltips.gob"
+#line 314 "mn-tooltips.gob"
 	
     GtkRequisition requisition;
     GtkWidget *widget;
@@ -543,6 +608,7 @@ mn_tooltips_draw_tips (MNTooltips * self)
     GdkScreen *pointer_screen;
     gint monitor_num, px, py;
     GdkRectangle monitor;
+    int screen_width;
 
     if (! selfp->window)
       self_force_window(self);
@@ -557,7 +623,7 @@ mn_tooltips_draw_tips (MNTooltips * self)
     keyboard_mode = self_get_keyboard_mode(widget);
 
     self_update_screen(self, FALSE);
-  
+
     screen = gtk_widget_get_screen(widget);
 
     data = selfp->active_data;
@@ -571,7 +637,7 @@ mn_tooltips_draw_tips (MNTooltips * self)
 	gtk_container_add(GTK_CONTAINER(selfp->window), data->tip_widget);
 	gtk_widget_show(data->tip_widget);
       }
-  
+
     gtk_widget_size_request(selfp->window, &requisition);
     w = requisition.width;
     h = requisition.height;
@@ -584,14 +650,14 @@ mn_tooltips_draw_tips (MNTooltips * self)
       }
 
     x += widget->allocation.width / 2;
-    
+
     if (! keyboard_mode)
       gdk_window_get_pointer(gdk_screen_get_root_window(screen), &x, NULL, NULL);
 
     x -= (w / 2 + 4);
 
     gdk_display_get_pointer(gdk_screen_get_display(screen), &pointer_screen, &px, &py, NULL);
-    if (pointer_screen != screen) 
+    if (pointer_screen != screen)
       {
 	px = x;
 	py = y;
@@ -610,48 +676,57 @@ mn_tooltips_draw_tips (MNTooltips * self)
     else
       y = y + widget->allocation.height + 4;
 
+    /*
+     * The following block is not part of GTK+ and has been added to
+     * make sure that the tooltip will not go beyond the screen edges
+     * (horizontally).
+     */
+    screen_width = gdk_screen_get_width(screen);
+    if (x < 0 || x + w > screen_width)
+      {
+	x = 0;
+	gtk_widget_set_size_request(selfp->window, MIN(w, screen_width), -1);
+      }
+
     gtk_window_move(GTK_WINDOW(selfp->window), x, y);
     gtk_widget_show(selfp->window);
   }}
-#line 617 "mn-tooltips.c"
+#line 695 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 361 "mn-tooltips.gob"
+#line 409 "mn-tooltips.gob"
 static gboolean 
 mn_tooltips_timeout_cb (gpointer data)
-#line 623 "mn-tooltips.c"
+#line 701 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::timeout_cb"
 {
-#line 363 "mn-tooltips.gob"
+#line 411 "mn-tooltips.gob"
 	
     Self *self = SELF(data);
 
-    GDK_THREADS_ENTER ();
-      
     if (selfp->active_data != NULL && GTK_WIDGET_DRAWABLE(selfp->active_data->widget))
       self_draw_tips(self);
-      
-    GDK_THREADS_LEAVE ();
 
+    selfp->timeout_source = NULL;
     return FALSE;		/* remove timeout */
   }}
-#line 640 "mn-tooltips.c"
+#line 715 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 376 "mn-tooltips.gob"
+#line 421 "mn-tooltips.gob"
 static void 
 mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget)
-#line 646 "mn-tooltips.c"
+#line 721 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::set_active_widget"
-#line 376 "mn-tooltips.gob"
+#line 421 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 376 "mn-tooltips.gob"
+#line 421 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 653 "mn-tooltips.c"
+#line 728 "mn-tooltips.c"
 {
-#line 378 "mn-tooltips.gob"
+#line 423 "mn-tooltips.gob"
 	
     if (selfp->window)
       {
@@ -660,10 +735,10 @@ mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget)
 	gtk_widget_hide(selfp->window);
       }
 
-    mn_source_clear(&selfp->timeout_id);
-  
+    mn_locked_g_source_clear(&selfp->timeout_source);
+
     selfp->active_data = NULL;
-  
+
     if (widget)
       {
 	GSList *l;
@@ -671,7 +746,7 @@ mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget)
 	MN_LIST_FOREACH(l, selfp->data_list)
 	{
 	  TooltipsData *data = l->data;
-	  
+
 	  if (data->widget == widget && GTK_WIDGET_DRAWABLE(widget))
 	    {
 	      selfp->active_data = data;
@@ -682,22 +757,22 @@ mn_tooltips_set_active_widget (MNTooltips * self, GtkWidget * widget)
     else
       selfp->use_sticky_delay = FALSE;
   }}
-#line 686 "mn-tooltips.c"
+#line 761 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 409 "mn-tooltips.gob"
+#line 454 "mn-tooltips.gob"
 static void 
 mn_tooltips_show_tip (GtkWidget * widget)
-#line 692 "mn-tooltips.c"
+#line 767 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::show_tip"
-#line 409 "mn-tooltips.gob"
+#line 454 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 409 "mn-tooltips.gob"
+#line 454 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 699 "mn-tooltips.c"
+#line 774 "mn-tooltips.c"
 {
-#line 411 "mn-tooltips.gob"
+#line 456 "mn-tooltips.gob"
 	
     TooltipsData *data;
 
@@ -711,73 +786,73 @@ mn_tooltips_show_tip (GtkWidget * widget)
 	self_draw_tips(data->self);
       }
   }}
-#line 715 "mn-tooltips.c"
+#line 790 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 425 "mn-tooltips.gob"
+#line 470 "mn-tooltips.gob"
 static void 
 mn_tooltips_hide_tip (GtkWidget * widget)
-#line 721 "mn-tooltips.c"
+#line 796 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::hide_tip"
-#line 425 "mn-tooltips.gob"
+#line 470 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 425 "mn-tooltips.gob"
+#line 470 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 728 "mn-tooltips.c"
+#line 803 "mn-tooltips.c"
 {
-#line 427 "mn-tooltips.gob"
+#line 472 "mn-tooltips.gob"
 	
     TooltipsData *data;
 
     data = self_get_data(widget);
-      
+
     if (data &&
 	(data->self->_priv->active_data &&
 	 data->self->_priv->active_data->widget == widget))
       self_set_active_widget(data->self, NULL);
   }}
-#line 741 "mn-tooltips.c"
+#line 816 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 438 "mn-tooltips.gob"
+#line 483 "mn-tooltips.gob"
 static gboolean 
 mn_tooltips_recently_shown (MNTooltips * self)
-#line 747 "mn-tooltips.c"
+#line 822 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::recently_shown"
-#line 438 "mn-tooltips.gob"
+#line 483 "mn-tooltips.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 438 "mn-tooltips.gob"
+#line 483 "mn-tooltips.gob"
 	g_return_val_if_fail (MN_IS_TOOLTIPS (self), (gboolean )0);
-#line 754 "mn-tooltips.c"
+#line 829 "mn-tooltips.c"
 {
-#line 440 "mn-tooltips.gob"
+#line 485 "mn-tooltips.gob"
 	
     GTimeVal now;
     glong msec;
-      
+
     g_get_current_time (&now);
     msec = (now.tv_sec - selfp->last_popdown.tv_sec) * 1000 +
       (now.tv_usec - selfp->last_popdown.tv_usec) / 1000;
     return (msec < STICKY_REVERT_DELAY);
   }}
-#line 766 "mn-tooltips.c"
+#line 841 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 450 "mn-tooltips.gob"
+#line 495 "mn-tooltips.gob"
 static gboolean 
 mn_tooltips_get_keyboard_mode (GtkWidget * widget)
-#line 772 "mn-tooltips.c"
+#line 847 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::get_keyboard_mode"
-#line 450 "mn-tooltips.gob"
+#line 495 "mn-tooltips.gob"
 	g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 450 "mn-tooltips.gob"
+#line 495 "mn-tooltips.gob"
 	g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 779 "mn-tooltips.c"
+#line 854 "mn-tooltips.c"
 {
-#line 452 "mn-tooltips.gob"
+#line 497 "mn-tooltips.gob"
 	
     GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
 
@@ -786,51 +861,51 @@ mn_tooltips_get_keyboard_mode (GtkWidget * widget)
     else
       return FALSE;
   }}
-#line 790 "mn-tooltips.c"
+#line 865 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 461 "mn-tooltips.gob"
+#line 506 "mn-tooltips.gob"
 static void 
 mn_tooltips_start_keyboard_mode (GtkWidget * widget)
-#line 796 "mn-tooltips.c"
+#line 871 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::start_keyboard_mode"
-#line 461 "mn-tooltips.gob"
+#line 506 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 461 "mn-tooltips.gob"
+#line 506 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 803 "mn-tooltips.c"
+#line 878 "mn-tooltips.c"
 {
-#line 463 "mn-tooltips.gob"
+#line 508 "mn-tooltips.gob"
 	
     GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
 
     if (GTK_IS_WINDOW(toplevel))
       {
 	GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget;
-	
+
 	g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(TRUE));
-	
+
 	if (focus)
 	  self_show_tip(focus);
       }
   }}
-#line 819 "mn-tooltips.c"
+#line 894 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 477 "mn-tooltips.gob"
+#line 522 "mn-tooltips.gob"
 static void 
 mn_tooltips_stop_keyboard_mode (GtkWidget * widget)
-#line 825 "mn-tooltips.c"
+#line 900 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::stop_keyboard_mode"
-#line 477 "mn-tooltips.gob"
+#line 522 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 477 "mn-tooltips.gob"
+#line 522 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 832 "mn-tooltips.c"
+#line 907 "mn-tooltips.c"
 {
-#line 479 "mn-tooltips.gob"
+#line 524 "mn-tooltips.gob"
 	
     GtkWidget *toplevel = gtk_widget_get_toplevel(widget);
 
@@ -840,49 +915,49 @@ mn_tooltips_stop_keyboard_mode (GtkWidget * widget)
 
 	if (focus)
 	  self_hide_tip(focus);
-	
+
 	g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(FALSE));
       }
   }}
-#line 848 "mn-tooltips.c"
+#line 923 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 493 "mn-tooltips.gob"
+#line 538 "mn-tooltips.gob"
 static void 
 mn_tooltips_start_delay (MNTooltips * self, GtkWidget * widget)
-#line 854 "mn-tooltips.c"
+#line 929 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::start_delay"
-#line 493 "mn-tooltips.gob"
+#line 538 "mn-tooltips.gob"
 	g_return_if_fail (self != NULL);
-#line 493 "mn-tooltips.gob"
+#line 538 "mn-tooltips.gob"
 	g_return_if_fail (MN_IS_TOOLTIPS (self));
-#line 861 "mn-tooltips.c"
+#line 936 "mn-tooltips.c"
 {
-#line 495 "mn-tooltips.gob"
+#line 540 "mn-tooltips.gob"
 	
     TooltipsData *old_data;
-  
+
     old_data = selfp->active_data;
     if (! old_data || old_data->widget != widget)
       {
 	self_set_active_widget(self, widget);
-	selfp->timeout_id = g_timeout_add((selfp->use_sticky_delay && self_recently_shown(self)) ? STICKY_DELAY : DELAY,
-					  self_timeout_cb,
-					  self);
+	selfp->timeout_source = mn_g_timeout_add_gdk_locked((selfp->use_sticky_delay && self_recently_shown(self)) ? STICKY_DELAY : DELAY,
+							    self_timeout_cb,
+							    self);
       }
   }}
-#line 876 "mn-tooltips.c"
+#line 951 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 508 "mn-tooltips.gob"
+#line 553 "mn-tooltips.gob"
 static void 
 mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_data)
-#line 882 "mn-tooltips.c"
+#line 957 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::event_after_h"
 {
-#line 510 "mn-tooltips.gob"
+#line 555 "mn-tooltips.gob"
 	
     Self *self;
     TooltipsData *old_data;
@@ -919,7 +994,7 @@ mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_d
 	    if (event_widget != widget)
 	      return;
 	  }
-  
+
 	switch (event->type)
 	  {
 	  case GDK_EXPOSE:
@@ -930,7 +1005,7 @@ mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_d
 	    if (! (GTK_IS_MENU_ITEM(widget) && GTK_MENU_ITEM(widget)->submenu))
 	      self_start_delay(self, widget);
 	    break;
-	  
+
 	  case GDK_LEAVE_NOTIFY:
 	    self_set_active_widget(self, NULL);
 	    selfp->use_sticky_delay = selfp->window && GTK_WIDGET_VISIBLE(selfp->window);
@@ -965,46 +1040,46 @@ mn_tooltips_event_after_h (GtkWidget * widget, GdkEvent * event, gpointer user_d
 	  }
       }
   }}
-#line 969 "mn-tooltips.c"
+#line 1044 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 593 "mn-tooltips.gob"
+#line 638 "mn-tooltips.gob"
 static void 
 mn_tooltips_widget_unmap (GtkWidget * widget, gpointer user_data)
-#line 975 "mn-tooltips.c"
+#line 1050 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::widget_unmap"
-#line 593 "mn-tooltips.gob"
+#line 638 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 593 "mn-tooltips.gob"
+#line 638 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 982 "mn-tooltips.c"
+#line 1057 "mn-tooltips.c"
 {
-#line 595 "mn-tooltips.gob"
+#line 640 "mn-tooltips.gob"
 	
     TooltipsData *data = user_data;
     Self *self = data->self;
-  
+
     if (selfp->active_data &&
 	(selfp->active_data->widget == widget))
       self_set_active_widget(self, NULL);
   }}
-#line 993 "mn-tooltips.c"
+#line 1068 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 604 "mn-tooltips.gob"
+#line 649 "mn-tooltips.gob"
 static void 
 mn_tooltips_widget_remove (GtkWidget * widget, gpointer user_data)
-#line 999 "mn-tooltips.c"
+#line 1074 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::widget_remove"
-#line 604 "mn-tooltips.gob"
+#line 649 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 604 "mn-tooltips.gob"
+#line 649 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 1006 "mn-tooltips.c"
+#line 1081 "mn-tooltips.c"
 {
-#line 606 "mn-tooltips.gob"
+#line 651 "mn-tooltips.gob"
 	
     TooltipsData *data = user_data;
     Self *self = data->self;
@@ -1013,41 +1088,41 @@ mn_tooltips_widget_remove (GtkWidget * widget, gpointer user_data)
     selfp->data_list = g_slist_remove(selfp->data_list, data);
     self_destroy_data(data);
   }}
-#line 1017 "mn-tooltips.c"
+#line 1092 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 615 "mn-tooltips.gob"
+#line 660 "mn-tooltips.gob"
 void 
 mn_tooltips_toggle_keyboard_mode (GtkWidget * widget)
-#line 1023 "mn-tooltips.c"
+#line 1098 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::toggle_keyboard_mode"
-#line 615 "mn-tooltips.gob"
+#line 660 "mn-tooltips.gob"
 	g_return_if_fail (widget != NULL);
-#line 615 "mn-tooltips.gob"
+#line 660 "mn-tooltips.gob"
 	g_return_if_fail (GTK_IS_WIDGET (widget));
-#line 1030 "mn-tooltips.c"
+#line 1105 "mn-tooltips.c"
 {
-#line 617 "mn-tooltips.gob"
+#line 662 "mn-tooltips.gob"
 	
     if (self_get_keyboard_mode(widget))
       self_stop_keyboard_mode(widget);
     else
       self_start_keyboard_mode(widget);
   }}
-#line 1039 "mn-tooltips.c"
+#line 1114 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
 
-#line 624 "mn-tooltips.gob"
+#line 669 "mn-tooltips.gob"
 MNTooltips * 
 mn_tooltips_new (void)
-#line 1045 "mn-tooltips.c"
+#line 1120 "mn-tooltips.c"
 {
 #define __GOB_FUNCTION__ "MN:Tooltips::new"
 {
-#line 626 "mn-tooltips.gob"
+#line 671 "mn-tooltips.gob"
 	
     return GET_NEW;
   }}
-#line 1053 "mn-tooltips.c"
+#line 1128 "mn-tooltips.c"
 #undef __GOB_FUNCTION__
diff --git a/src/mn-tooltips.gob b/src/mn-tooltips.gob
@@ -3,7 +3,7 @@
  * widget as tooltip (heavily based on GtkTooltips)
  *
  * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -20,13 +20,15 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <gtk/gtk.h>
 %}
 
 %privateheader{
+#include "mn-locked-callback.h"
+
 typedef struct
 {
   MNTooltips	*self;
@@ -61,13 +63,13 @@ typedef enum
 /* Macros for extracting a widgets private_flags from GtkWidget.
  */
 #define GTK_PRIVATE_FLAGS(wid)            (GTK_WIDGET (wid)->private_flags)
-  
+
 /* Macros for setting and clearing private widget flags.
  * we use a preprocessor string concatenation here for a clear
  * flags/private_flags distinction at the cost of single flag operations.
  */
 #define GTK_PRIVATE_SET_FLAG(wid,flag)    G_STMT_START{ (GTK_PRIVATE_FLAGS (wid) |= (PRIVATE_ ## flag)); }G_STMT_END
-%} 
+%}
 
 class MN:Tooltips from G:Object
 {
@@ -77,16 +79,18 @@ class MN:Tooltips from G:Object
 
   private gboolean use_sticky_delay;
   private GTimeVal last_popdown;
-  private unsigned int timeout_id;
-  
+  private MNLockedGSource *timeout_source;
+
+  private int border_width = 4;
+
   override (G:Object) void
     finalize (GObject *object)
   {
     Self *self = SELF(object);
     GSList *l;
 
-    if (selfp->timeout_id)
-      g_source_remove(selfp->timeout_id);
+    if (selfp->timeout_source)
+      mn_locked_g_source_remove(selfp->timeout_source);
 
     MN_LIST_FOREACH(l, selfp->data_list)
       {
@@ -156,7 +160,7 @@ class MN:Tooltips from G:Object
 	  {
 	    if (! new_window)
 	      self_disconnect_display_closed(self);
-      
+
 	    gtk_window_set_screen(GTK_WINDOW(selfp->window), screen);
 	  }
       }
@@ -178,11 +182,11 @@ class MN:Tooltips from G:Object
 	gtk_widget_set_app_paintable(selfp->window, TRUE);
 	gtk_window_set_resizable(GTK_WINDOW(selfp->window), FALSE);
 	gtk_widget_set_name(selfp->window, "gtk-tooltips");
-	gtk_container_set_border_width(GTK_CONTAINER(selfp->window), 12);
+	gtk_container_set_border_width(GTK_CONTAINER(selfp->window), selfp->border_width);
 
 	g_signal_connect_swapped(selfp->window,
 				 "expose-event",
-				 G_CALLBACK(self_paint_window), 
+				 G_CALLBACK(self_paint_window),
 				 self);
 
 	eel_add_weak_pointer(&selfp->window);
@@ -195,10 +199,11 @@ class MN:Tooltips from G:Object
     return g_object_get_data(G_OBJECT(widget), TOOLTIPS_DATA);
   }
 
-  public void
-    set_tip_widget (self,
-		    Gtk:Widget *widget (check null type),
-		    Gtk:Widget *tip_widget)
+  private void
+    set_tip_widget_real (self,
+			 Gtk:Widget *widget (check null type),
+			 Gtk:Widget *tip_widget,
+			 int border_width)
   {
     TooltipsData *data;
 
@@ -231,7 +236,7 @@ class MN:Tooltips from G:Object
 
 	if (data)
 	  self_widget_remove(data->widget, data);
-	
+
 	data = g_new0(TooltipsData, 1);
 	data->self = self;
 	data->widget = widget;
@@ -251,8 +256,38 @@ class MN:Tooltips from G:Object
 			 "signal::destroy", self_widget_remove, data,
 			 NULL);
       }
+
+    selfp->border_width = border_width;
+    if (selfp->window)
+      gtk_container_set_border_width(GTK_CONTAINER(selfp->window), border_width);
   }
-  
+
+  public void
+    set_tip (self,
+	     Gtk:Widget *widget (check null type),
+	     const char *tip_text)
+  {
+    GtkWidget *label = NULL;
+
+    if (tip_text)
+      {
+	label = gtk_label_new(tip_text);
+	gtk_label_set_line_wrap(GTK_LABEL(label), TRUE);
+	gtk_misc_set_alignment(GTK_MISC(label), 0.5, 0.5);
+	gtk_widget_show(label);
+      }
+
+    self_set_tip_widget_real(self, widget, label, 4);
+  }
+
+  public void
+    set_tip_widget (self,
+		    Gtk:Widget *widget (check null type),
+		    Gtk:Widget *tip_widget)
+  {
+    self_set_tip_widget_real(self, widget, tip_widget, 12);
+  }
+
   private gboolean
     paint_window (self)
   {
@@ -262,7 +297,7 @@ class MN:Tooltips from G:Object
     gtk_paint_flat_box(selfp->window->style,
 		       selfp->window->window,
 		       GTK_STATE_NORMAL,
-		       GTK_SHADOW_OUT, 
+		       GTK_SHADOW_OUT,
 		       NULL,
 		       selfp->window,
 		       "tooltip",
@@ -270,10 +305,10 @@ class MN:Tooltips from G:Object
 		       0,
 		       req.width,
 		       req.height);
-    
+
     return FALSE;
   }
-  
+
   private void
     draw_tips (self)
   {
@@ -287,6 +322,7 @@ class MN:Tooltips from G:Object
     GdkScreen *pointer_screen;
     gint monitor_num, px, py;
     GdkRectangle monitor;
+    int screen_width;
 
     if (! selfp->window)
       self_force_window(self);
@@ -301,7 +337,7 @@ class MN:Tooltips from G:Object
     keyboard_mode = self_get_keyboard_mode(widget);
 
     self_update_screen(self, FALSE);
-  
+
     screen = gtk_widget_get_screen(widget);
 
     data = selfp->active_data;
@@ -315,7 +351,7 @@ class MN:Tooltips from G:Object
 	gtk_container_add(GTK_CONTAINER(selfp->window), data->tip_widget);
 	gtk_widget_show(data->tip_widget);
       }
-  
+
     gtk_widget_size_request(selfp->window, &requisition);
     w = requisition.width;
     h = requisition.height;
@@ -328,14 +364,14 @@ class MN:Tooltips from G:Object
       }
 
     x += widget->allocation.width / 2;
-    
+
     if (! keyboard_mode)
       gdk_window_get_pointer(gdk_screen_get_root_window(screen), &x, NULL, NULL);
 
     x -= (w / 2 + 4);
 
     gdk_display_get_pointer(gdk_screen_get_display(screen), &pointer_screen, &px, &py, NULL);
-    if (pointer_screen != screen) 
+    if (pointer_screen != screen)
       {
 	px = x;
 	py = y;
@@ -354,6 +390,18 @@ class MN:Tooltips from G:Object
     else
       y = y + widget->allocation.height + 4;
 
+    /*
+     * The following block is not part of GTK+ and has been added to
+     * make sure that the tooltip will not go beyond the screen edges
+     * (horizontally).
+     */
+    screen_width = gdk_screen_get_width(screen);
+    if (x < 0 || x + w > screen_width)
+      {
+	x = 0;
+	gtk_widget_set_size_request(selfp->window, MIN(w, screen_width), -1);
+      }
+
     gtk_window_move(GTK_WINDOW(selfp->window), x, y);
     gtk_widget_show(selfp->window);
   }
@@ -363,13 +411,10 @@ class MN:Tooltips from G:Object
   {
     Self *self = SELF(data);
 
-    GDK_THREADS_ENTER ();
-      
     if (selfp->active_data != NULL && GTK_WIDGET_DRAWABLE(selfp->active_data->widget))
       self_draw_tips(self);
-      
-    GDK_THREADS_LEAVE ();
 
+    selfp->timeout_source = NULL;
     return FALSE;		/* remove timeout */
   }
 
@@ -383,10 +428,10 @@ class MN:Tooltips from G:Object
 	gtk_widget_hide(selfp->window);
       }
 
-    mn_source_clear(&selfp->timeout_id);
-  
+    mn_locked_g_source_clear(&selfp->timeout_source);
+
     selfp->active_data = NULL;
-  
+
     if (widget)
       {
 	GSList *l;
@@ -394,7 +439,7 @@ class MN:Tooltips from G:Object
 	MN_LIST_FOREACH(l, selfp->data_list)
 	{
 	  TooltipsData *data = l->data;
-	  
+
 	  if (data->widget == widget && GTK_WIDGET_DRAWABLE(widget))
 	    {
 	      selfp->active_data = data;
@@ -428,19 +473,19 @@ class MN:Tooltips from G:Object
     TooltipsData *data;
 
     data = self_get_data(widget);
-      
+
     if (data &&
 	(data->self->_priv->active_data &&
 	 data->self->_priv->active_data->widget == widget))
       self_set_active_widget(data->self, NULL);
   }
-    
+
   private gboolean
     recently_shown (self)
   {
     GTimeVal now;
     glong msec;
-      
+
     g_get_current_time (&now);
     msec = (now.tv_sec - selfp->last_popdown.tv_sec) * 1000 +
       (now.tv_usec - selfp->last_popdown.tv_usec) / 1000;
@@ -466,9 +511,9 @@ class MN:Tooltips from G:Object
     if (GTK_IS_WINDOW(toplevel))
       {
 	GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget;
-	
+
 	g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(TRUE));
-	
+
 	if (focus)
 	  self_show_tip(focus);
       }
@@ -485,23 +530,23 @@ class MN:Tooltips from G:Object
 
 	if (focus)
 	  self_hide_tip(focus);
-	
+
 	g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(FALSE));
       }
   }
-  
+
   private void
     start_delay (self, Gtk:Widget *widget)
   {
     TooltipsData *old_data;
-  
+
     old_data = selfp->active_data;
     if (! old_data || old_data->widget != widget)
       {
 	self_set_active_widget(self, widget);
-	selfp->timeout_id = g_timeout_add((selfp->use_sticky_delay && self_recently_shown(self)) ? STICKY_DELAY : DELAY,
-					  self_timeout_cb,
-					  self);
+	selfp->timeout_source = mn_g_timeout_add_gdk_locked((selfp->use_sticky_delay && self_recently_shown(self)) ? STICKY_DELAY : DELAY,
+							    self_timeout_cb,
+							    self);
       }
   }
 
@@ -543,7 +588,7 @@ class MN:Tooltips from G:Object
 	    if (event_widget != widget)
 	      return;
 	  }
-  
+
 	switch (event->type)
 	  {
 	  case GDK_EXPOSE:
@@ -554,7 +599,7 @@ class MN:Tooltips from G:Object
 	    if (! (GTK_IS_MENU_ITEM(widget) && GTK_MENU_ITEM(widget)->submenu))
 	      self_start_delay(self, widget);
 	    break;
-	  
+
 	  case GDK_LEAVE_NOTIFY:
 	    self_set_active_widget(self, NULL);
 	    selfp->use_sticky_delay = selfp->window && GTK_WIDGET_VISIBLE(selfp->window);
@@ -595,7 +640,7 @@ class MN:Tooltips from G:Object
   {
     TooltipsData *data = user_data;
     Self *self = data->self;
-  
+
     if (selfp->active_data &&
 	(selfp->active_data->widget == widget))
       self_set_active_widget(self, NULL);
@@ -620,7 +665,7 @@ class MN:Tooltips from G:Object
     else
       self_start_keyboard_mode(widget);
   }
-  
+
   public MNTooltips *
     new (void)
   {
diff --git a/src/mn-tooltips.gob.stamp b/src/mn-tooltips.gob.stamp
diff --git a/src/mn-tooltips.h b/src/mn-tooltips.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -54,6 +54,9 @@ struct _MNTooltipsClass {
  * Public methods
  */
 GType	mn_tooltips_get_type	(void);
+void 	mn_tooltips_set_tip	(MNTooltips * self,
+					GtkWidget * widget,
+					const char * tip_text);
 void 	mn_tooltips_set_tip_widget	(MNTooltips * self,
 					GtkWidget * widget,
 					GtkWidget * tip_widget);
diff --git a/src/mn-util.c b/src/mn-util.c
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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 +27,7 @@
 #include <gnome.h>
 #include <glade/glade.h>
 #include <eel/eel.h>
-#include <eel/eel-alert-dialog.h>
 #include "mn-util.h"
-#include "mn-conf.h"
 #include "mn-mailboxes.h"
 #include "mn-shell.h"
 
@@ -58,10 +56,14 @@ typedef struct
   GMainLoop	*loop;
   int		response;
 } RunNonmodalInfo;
-  
+
 /*** functions ***************************************************************/
 
-static GtkWidget *mn_glade_xml_get_widget (GladeXML *xml, const char *widget_name);
+static GladeXML *mn_glade_xml_new (const char *filename,
+				   const char *root,
+				   const char *domain);
+static GtkWidget *mn_glade_xml_get_widget (GladeXML *xml,
+					   const char *widget_name);
 
 static void mn_container_create_interface_connect_cb (const char *handler_name,
 						      GObject *object,
@@ -98,13 +100,8 @@ static GtkWidget *mn_menu_item_new (const char *stock_id, const char *mnemonic);
 
 static void mn_error_dialog_real (GtkWindow *parent,
 				  gboolean blocking,
-				  const char *not_again_key,
-				  const char *help_link_id,
 				  const char *primary,
 				  const char *secondary);
-static void mn_error_dialog_real_response_h (GtkDialog *dialog,
-					     int response,
-					     gpointer user_data);
 
 static void mn_g_object_connect_weak_notify_cb (gpointer data,
 						GObject *former_object);
@@ -133,6 +130,52 @@ mn_info (const char *format, ...)
   va_end(args);
 }
 
+GSList *
+mn_g_slist_append_elements (GSList *list, gpointer data, ...)
+{
+  va_list args;
+
+  va_start(args, data);
+  while (data)
+    {
+      list = g_slist_append(list, data);
+      data = va_arg(args, gpointer);
+    }
+  va_end(args);
+
+  return list;
+}
+
+void
+mn_g_slist_clear (GSList **list)
+{
+  g_return_if_fail(list != NULL);
+
+  g_slist_free(*list);
+  *list = NULL;
+}
+
+void
+mn_g_slist_clear_deep (GSList **list)
+{
+  g_return_if_fail(list != NULL);
+
+  eel_g_slist_free_deep(*list);
+  *list = NULL;
+}
+
+void
+mn_g_slist_clear_deep_custom (GSList **list,
+			      GFunc element_free_func,
+			      gpointer user_data)
+{
+  g_return_if_fail(list != NULL);
+  g_return_if_fail(element_free_func != NULL);
+
+  eel_g_slist_free_deep_custom(*list, element_free_func, user_data);
+  *list = NULL;
+}
+
 /**
  * mn_g_slist_delete_link_deep_custom:
  * @list: a #GSList of @element_free_func-freeable objects
@@ -198,6 +241,15 @@ mn_g_object_slist_free (GSList *list)
   eel_g_slist_free_deep_custom(list, (GFunc) g_object_unref, NULL);
 }
 
+void
+mn_g_object_slist_clear (GSList **list)
+{
+  g_return_if_fail(list != NULL);
+
+  mn_g_object_slist_free(*list);
+  *list = NULL;
+}
+
 /**
  * mn_g_object_slist_delete_link:
  * @list: a #GSList of #GObject instances
@@ -214,6 +266,22 @@ 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,
+			     gpointer user_data)
+{
+  gpointer data;
+
+  g_return_if_fail(queue != NULL);
+  g_return_if_fail(element_free_func != NULL);
+
+  while ((data = g_queue_pop_head(queue)))
+    element_free_func(data, user_data);
+
+  g_queue_free(queue);
+}
+
 /**
  * mn_str_isnumeric:
  * @str: the ASCII string to test
@@ -285,6 +353,20 @@ mn_pixbuf_new (const char *filename)
   return pixbuf;
 }
 
+static GladeXML *
+mn_glade_xml_new (const char *filename, const char *root, const char *domain)
+{
+  GladeXML *xml;
+
+  g_return_val_if_fail(filename != NULL, NULL);
+
+  xml = glade_xml_new(filename, root, domain);
+  if (! xml)
+    mn_fatal_error_dialog(NULL, _("Unable to load interface \"%s\". Please check your Mail Notification installation."), filename);
+
+  return xml;
+}
+
 static GtkWidget *
 mn_glade_xml_get_widget (GladeXML *xml, const char *widget_name)
 {
@@ -292,44 +374,15 @@ mn_glade_xml_get_widget (GladeXML *xml, const char *widget_name)
 
   g_return_val_if_fail(GLADE_IS_XML(xml), NULL);
   g_return_val_if_fail(widget_name != NULL, NULL);
-  
+
   widget = glade_xml_get_widget(xml, widget_name);
   if (! widget)
-    g_critical(_("widget \"%s\" not found in interface \"%s\""), widget_name, xml->filename);
+    mn_fatal_error_dialog(NULL, _("Widget \"%s\" not found in interface \"%s\". Please check your Mail Notification installation."), widget_name, xml->filename);
 
   return widget;
 }
 
 void
-mn_create_interface (const char *filename, ...)
-{
-  GladeXML *xml;
-  va_list args;
-  const char *widget_name;
-
-  g_return_if_fail(filename != NULL);
-
-  xml = glade_xml_new(filename, NULL, NULL);
-  g_return_if_fail(xml != NULL);
-
-  glade_xml_signal_autoconnect(xml);
-
-  va_start(args, filename);
-  while ((widget_name = va_arg(args, const char *)))
-    {
-      GtkWidget **widget;
-
-      widget = va_arg(args, GtkWidget **);
-      g_return_if_fail(widget != NULL);
-
-      *widget = mn_glade_xml_get_widget(xml, widget_name);
-    }
-  va_end(args);
-  
-  g_object_unref(xml);
-}
-
-void
 mn_container_create_interface (GtkContainer *container,
 			       const char *filename,
 			       const char *child_name,
@@ -347,11 +400,9 @@ mn_container_create_interface (GtkContainer *container,
   g_return_if_fail(child_name != NULL);
   g_return_if_fail(callback_prefix != NULL);
 
-  xml = glade_xml_new(filename, child_name, NULL);
-  g_return_if_fail(xml != NULL);
-
+  xml = mn_glade_xml_new(filename, child_name, NULL);
   child = mn_glade_xml_get_widget(xml, child_name);
-  
+
   if (GTK_IS_DIALOG(container))
     gtk_box_pack_start(GTK_BOX(GTK_DIALOG(container)->vbox), child, TRUE, TRUE, 0);
   else
@@ -395,12 +446,12 @@ mn_container_create_interface_connect_cb (const char *handler_name,
     {
       module = g_module_open(NULL, 0);
       if (! module)
-	g_critical(_("unable to open self as a module: %s"), g_module_error());
+	mn_fatal_error_dialog(NULL, _("Unable to open self as a module (%s)."), g_module_error());
     }
-  
+
   cb_name = g_strconcat(info->callback_prefix, handler_name, NULL);
   if (! g_module_symbol(module, cb_name, (gpointer) &cb))
-    g_critical(_("signal handler \"%s\" not found"), cb_name);
+    mn_fatal_error_dialog(NULL, _("Signal handler \"%s\" not found. Please check your Mail Notification installation."), cb_name);
   g_free(cb_name);
 
   flags = G_CONNECT_SWAPPED;
@@ -492,7 +543,7 @@ mn_setup_dnd (GtkWidget *widget)
     { "text/uri-list",	0, TARGET_URI_LIST },
     { "text/x-moz-url",	0, TARGET_MOZ_URL }
   };
-    
+
   g_return_if_fail(GTK_IS_WIDGET(widget));
 
   gtk_drag_dest_set(widget,
@@ -522,7 +573,7 @@ mn_scrolled_window_drag_motion_h (GtkWidget *widget,
 				  gpointer user_data)
 {
   GtkAdjustment *adjustment;
-  
+
   adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(widget));
   gtk_adjustment_set_value(adjustment, (double) y / (widget->allocation.height - 2) * (adjustment->upper - adjustment->page_size));
 
@@ -551,8 +602,6 @@ mn_drag_data_received_h (GtkWidget *widget,
 	if (! uriv)
 	  {
 	    mn_error_dialog(mn_widget_get_parent_window(widget),
-			    NULL,
-			    NULL,
 			    _("A drag and drop error has occurred"),
 			    _("An invalid location list has been received."));
 	    return;
@@ -579,7 +628,7 @@ mn_drag_data_received_h (GtkWidget *widget,
 	    mn_invalid_uri_list_dialog(mn_widget_get_parent_window(widget), _("A drag and drop error has occurred"), invalid_uri_list);
 	    g_slist_free(invalid_uri_list);
 	  }
-	
+
 	g_strfreev(uriv);
       }
       break;
@@ -596,8 +645,6 @@ mn_drag_data_received_h (GtkWidget *widget,
 	if (selection_data->format != 8 || selection_data->length <= 0 || (selection_data->length % 2) != 0)
 	  {
 	    mn_error_dialog(mn_widget_get_parent_window(widget),
-			    NULL,
-			    NULL,
 			    _("A drag and drop error has occurred"),
 			    _("An invalid Mozilla location has been received."));
 	    return;
@@ -605,12 +652,12 @@ mn_drag_data_received_h (GtkWidget *widget,
 
 	char_data = (const guint16 *) selection_data->data;
 	char_len = selection_data->length / 2;
-	
+
 	url = g_string_new(NULL);
 	for (i = 0; i < char_len && char_data[i] != '\n'; i++)
 	  g_string_append_unichar(url, char_data[i]);
 
-	g_return_if_fail(mn_shell != NULL);
+	g_assert(mn_shell != NULL);
 
 	mailbox = mn_mailbox_new_from_uri(url->str);
 	if (mailbox)
@@ -675,7 +722,7 @@ mn_display_help (GtkWindow *parent, const char *link_id)
 
   if (! gnome_help_display("mail-notification.xml", link_id, &err))
     {
-      mn_error_dialog(parent, NULL, NULL, _("Unable to display help"), "%s", err->message);
+      mn_error_dialog(parent, _("Unable to display help"), "%s", err->message);
       g_error_free(err);
     }
 }
@@ -686,7 +733,7 @@ mn_thread_create (GThreadFunc func, gpointer data)
   GError *err = NULL;
 
   g_return_if_fail(func != NULL);
-  
+
   if (! g_thread_create(func, data, FALSE, &err))
     {
       mn_fatal_error_dialog(NULL, _("Unable to create a thread: %s."), err->message);
@@ -729,7 +776,7 @@ mn_menu_shell_append (GtkMenuShell *shell,
   item = mn_menu_item_new(stock_id, mnemonic);
   gtk_menu_shell_append(shell, item);
   gtk_widget_show(item);
-  
+
   return item;
 }
 
@@ -743,7 +790,7 @@ mn_menu_item_new (const char *stock_id, const char *mnemonic)
       GtkWidget *image;
 
       item = gtk_image_menu_item_new_with_mnemonic(mnemonic);
-      
+
       image = gtk_image_new_from_stock(stock_id, GTK_ICON_SIZE_MENU);
       gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), image);
       gtk_widget_show(image);
@@ -754,15 +801,13 @@ mn_menu_item_new (const char *stock_id, const char *mnemonic)
     item = gtk_menu_item_new_with_mnemonic(mnemonic);
   else
     item = gtk_separator_menu_item_new();
-  
+
   return item;
 }
 
 static void
 mn_error_dialog_real (GtkWindow *parent,
 		      gboolean blocking,
-		      const char *not_again_key,
-		      const char *help_link_id,
 		      const char *primary,
 		      const char *secondary)
 {
@@ -773,63 +818,27 @@ mn_error_dialog_real (GtkWindow *parent,
 
   dialog = mn_alert_dialog_new(parent, GTK_MESSAGE_ERROR, primary, secondary);
 
-  if (not_again_key)
-    {
-      GtkWidget *alignment;
-      GtkWidget *check;
-
-      alignment = gtk_alignment_new(0.5, 0.5, 0, 0);
-      check = gtk_check_button_new_with_mnemonic(_("_Do not show this message again"));
-
-      gtk_container_add(GTK_CONTAINER(alignment), check);
-      gtk_widget_show_all(alignment);
-
-      gtk_box_pack_end(GTK_BOX(GTK_DIALOG(dialog)->vbox), alignment, FALSE, FALSE, 0);
-
-      mn_conf_link(check, not_again_key, "active", NULL);
-    }
-  
-  if (help_link_id != NULL)
-    gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
   gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
 
   gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
 
   if (blocking)
     {
-      while (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_HELP)
-	mn_display_help(GTK_WINDOW(dialog), help_link_id);
+      gtk_dialog_run(GTK_DIALOG(dialog));
       gtk_widget_destroy(dialog);
     }
   else
     {
-      g_signal_connect_data(dialog,
-			    "response",
-			    G_CALLBACK(mn_error_dialog_real_response_h),
-			    g_strdup(help_link_id),
-			    (GClosureNotify) g_free,
-			    0);
+      g_signal_connect_swapped(dialog,
+			       "response",
+			       G_CALLBACK(gtk_widget_destroy),
+			       dialog);
       gtk_widget_show(dialog);
     }
 }
 
-static void
-mn_error_dialog_real_response_h (GtkDialog *dialog,
-				 int response,
-				 gpointer user_data)
-{
-  char *help_link_id = user_data;
-
-  if (response == GTK_RESPONSE_HELP)
-    mn_display_help(GTK_WINDOW(dialog), help_link_id);
-  else
-    gtk_widget_destroy(GTK_WIDGET(dialog));
-}
-
 void
 mn_error_dialog (GtkWindow *parent,
-		 const char *not_again_key,
-		 const char *help_link_id,
 		 const char *primary,
 		 const char *format,
 		 ...)
@@ -844,7 +853,7 @@ mn_error_dialog (GtkWindow *parent,
   secondary = g_strdup_vprintf(format, args);
   va_end(args);
 
-  mn_error_dialog_real(parent, FALSE, not_again_key, help_link_id, primary, secondary);
+  mn_error_dialog_real(parent, FALSE, primary, secondary);
   g_free(secondary);
 }
 
@@ -886,8 +895,6 @@ mn_invalid_uri_list_dialog (GtkWindow *parent,
     }
 
   mn_error_dialog(parent,
-		  NULL,
-		  NULL,
 		  primary,
 		  ngettext("The following location is invalid:\n\n%s",
 			   "The following locations are invalid:\n\n%s",
@@ -909,10 +916,10 @@ mn_fatal_error_dialog (GtkWindow *parent, const char *format, ...)
   secondary = g_strdup_vprintf(format, args);
   va_end(args);
 
-  mn_error_dialog_real(parent, TRUE, NULL, NULL, _("A fatal error has occurred in Mail Notification"), secondary);
+  mn_error_dialog_real(parent, TRUE, _("A fatal error has occurred in Mail Notification"), secondary);
   g_free(secondary);
 
-  exit(1);  
+  exit(1);
 }
 
 GtkWidget *
@@ -1010,7 +1017,7 @@ mn_g_object_connect (gpointer object,
 	       || g_str_has_prefix(signal_spec, "swapped-signal-after::"))
 	handler->id = g_signal_connect_data(instance, signal_spec + 22, callback, data, NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
       else
-	g_critical(_("invalid signal specification \"%s\""), signal_spec);
+	g_critical("invalid signal specification \"%s\"", signal_spec);
 
       eel_add_weak_pointer(&handler->instance);
       g_object_weak_ref(object, mn_g_object_connect_weak_notify_cb, handler);
@@ -1036,31 +1043,10 @@ mn_g_object_connect_weak_notify_cb (gpointer data, GObject *former_object)
 }
 
 void
-mn_execute_command (const char *conf_key)
-{
-  char *command;
-
-  g_return_if_fail(conf_key != NULL);
-
-  command = eel_gconf_get_string(conf_key);
-  g_return_if_fail(command != NULL && *command != 0);
-
-  if (gnome_execute_shell(NULL, command) < 0)
-    mn_error_dialog(NULL,
-		    NULL,
-		    NULL,
-		    _("A command error has occurred in Mail Notification"),
-		    _("Unable to execute \"%s\": %s."),
-		    command,
-		    g_strerror(errno));
-  g_free(command);
-}
-
-void
 mn_gtk_object_ref_and_sink (GtkObject *object)
 {
   g_return_if_fail(GTK_IS_OBJECT(object));
-  
+
   g_object_ref(object);
   gtk_object_sink(object);
 }
@@ -1113,27 +1099,6 @@ mn_utf8_strcasecmp (const char *s1, const char *s2)
   return cmp;
 }
 
-int
-mn_utf8_strcasecoll (const char *s1, const char *s2)
-{
-  char *folded_s1;
-  char *folded_s2;
-  int coll;
-
-  g_return_val_if_fail(s1 != NULL, 0);
-  g_return_val_if_fail(s2 != NULL, 0);
-
-  folded_s1 = g_utf8_casefold(s1, -1);
-  folded_s2 = g_utf8_casefold(s2, -1);
-
-  coll = g_utf8_collate(folded_s1, folded_s2);
-
-  g_free(folded_s1);
-  g_free(folded_s2);
-
-  return coll;
-}
-
 char *
 mn_utf8_escape (const char *str)
 {
@@ -1167,7 +1132,7 @@ int
 mn_dialog_run_nonmodal (GtkDialog *dialog)
 {
   RunNonmodalInfo info = { NULL, GTK_RESPONSE_NONE };
-  
+
   g_return_val_if_fail(GTK_IS_DIALOG(dialog), -1);
 
   g_object_ref(dialog);
@@ -1241,18 +1206,6 @@ mn_dialog_run_nonmodal_shutdown_loop (RunNonmodalInfo *info)
     g_main_loop_quit(info->loop);
 }
 
-gboolean
-mn_ascii_validate (const char *str)
-{
-  g_return_val_if_fail(str != NULL, FALSE);
-
-  for (; *str; str++)
-    if ((unsigned char) *str > 127)
-      return FALSE;
-
-  return TRUE;
-}
-
 void
 mn_source_clear (unsigned int *tag)
 {
@@ -1265,26 +1218,6 @@ mn_source_clear (unsigned int *tag)
     }
 }
 
-unsigned int
-mn_timeout_add (const char *minutes_key,
-		const char *seconds_key,
-		GSourceFunc function,
-		gpointer data)
-{
-  int minutes;
-  int seconds;
-
-  g_return_val_if_fail(minutes_key != NULL, 0);
-  g_return_val_if_fail(seconds_key != NULL, 0);
-
-  minutes = eel_gconf_get_integer(minutes_key);
-  seconds = eel_gconf_get_integer(seconds_key);
-
-  return minutes != 0 || seconds != 0
-    ? g_timeout_add(((minutes * 60) + seconds) * 1000, function, data)
-    : 0;
-}
-
 gboolean
 mn_ascii_str_case_has_prefix (const char *str, const char *prefix)
 {
@@ -1303,14 +1236,75 @@ mn_ascii_str_case_has_prefix (const char *str, const char *prefix)
   return g_ascii_strncasecmp(str, prefix, prefix_len) == 0;
 }
 
-gboolean
-mn_rename (const char *from, const char *to, GError **err)
+char *
+mn_format_past_time (time_t past_time, time_t now)
 {
-  if (rename(from, to) < 0)
+  time_t diff;
+
+  g_return_val_if_fail(past_time > 0, NULL);
+
+  diff = now - past_time;
+  if (diff >= 0)
     {
-      g_set_error(err, 0, 0, _("unable to rename %s to %s: %s"), from, to, g_strerror(errno));
-      return FALSE;
+      if (diff < 60)
+	return g_strdup_printf(ngettext("%i second ago", "%i seconds ago", diff), diff);
+      else if (diff < 60 * 60)
+	{
+	  int minutes = diff / 60;
+	  return g_strdup_printf(ngettext("about %i minute ago", "about %i minutes ago", minutes), minutes);
+	}
+      else if (diff < 60 * 60 * 24)
+	{
+	  int hours = diff / (60 * 60);
+	  return g_strdup_printf(ngettext("about %i hour ago", "about %i hours ago", hours), hours);
+	}
+      else if (diff < 60 * 60 * 24 * 7)
+	{
+	  int days = diff / (60 * 60 * 24);
+	  return g_strdup_printf(ngettext("about %i day ago", "about %i days ago", days), days);
+	}
+      else
+	{
+	  int weeks = diff / (60 * 60 * 24 * 7);
+	  return g_strdup_printf(ngettext("about %i week ago", "about %i weeks ago", weeks), weeks);
+	}
     }
-  else
-    return TRUE;
+  else				/* future time: simply format it */
+    {
+      struct tm *tm;
+      char *formatted;
+
+      tm = localtime(&past_time);
+      g_assert(tm != NULL);
+
+      formatted = eel_strdup_strftime("%c", tm);
+      if (! formatted)
+	formatted = g_strdup(_("unknown date"));
+
+      return formatted;
+    }
+}
+
+void
+mn_gdk_threads_enter (void)
+{
+  GDK_THREADS_ENTER();
+}
+
+void
+mn_gdk_threads_leave (void)
+{
+  GDK_THREADS_LEAVE();
+}
+
+void
+mn_g_static_mutex_lock (GStaticMutex *mutex)
+{
+  g_static_mutex_lock(mutex);
+}
+
+void
+mn_g_static_mutex_unlock (GStaticMutex *mutex)
+{
+  g_static_mutex_unlock(mutex);
 }
diff --git a/src/mn-util.h b/src/mn-util.h
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2003-2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -29,9 +29,22 @@ for ((var) = (head);				\
      (var);					\
      (var) = (var)->next)
 
+#define MN_QUEUE_FOREACH(var, queue)		\
+for ((var) = (queue)->head;			\
+     (var);					\
+     (var) = (var)->next)
+
 void		mn_info				(const char	*format,
 						 ...) G_GNUC_PRINTF(1, 2);
 
+GSList		*mn_g_slist_append_elements	(GSList		*list,
+						 gpointer	data,
+						 ...);
+void		mn_g_slist_clear		(GSList		**list);
+void		mn_g_slist_clear_deep		(GSList		**list);
+void		mn_g_slist_clear_deep_custom	(GSList		**list,
+						 GFunc		element_free_func,
+						 gpointer	user_data);
 GSList		*mn_g_slist_delete_link_deep_custom (GSList	*list,
 						     GSList	*link_,
 						     GFunc	element_free_func,
@@ -43,19 +56,20 @@ GSList		*mn_g_str_slist_find		(GSList		*list,
 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);
 char		*mn_strstr_span			(const char	*big,
 						 const char	*little);
 
-#define MN_IMAGE_FILE(path, name)	path G_DIR_SEPARATOR_S name
-#define MN_INTERFACE_FILE(name) 	UIDIR G_DIR_SEPARATOR_S name
-
 GdkPixbuf	*mn_pixbuf_new			(const char	*filename);
-void		mn_create_interface		(const char	*filename,
-						 ...);
+
 void		mn_container_create_interface	(GtkContainer	*container,
 						 const char	*filename,
 						 const char	*child_name,
@@ -92,11 +106,9 @@ GtkWidget	*mn_menu_shell_prepend		(GtkMenuShell	*shell,
 						 const char	*mnemonic);
 
 void		mn_error_dialog			(GtkWindow	*parent,
-						 const char	*not_again_key,
-						 const char	*help_link_id,
 						 const char	*primary,
 						 const char	*format,
-						 ...) G_GNUC_PRINTF(5, 6);
+						 ...) G_GNUC_PRINTF(3, 4);
 void		mn_invalid_uri_dialog		(GtkWindow	*parent,
 						 const char	*primary,
 						 const char	*invalid_uri);
@@ -119,34 +131,27 @@ gpointer	mn_g_object_connect		(gpointer	object,
 						 const char	*signal_spec,
 						 ...);
 
-void		mn_execute_command		(const char	*conf_key);
-
 void		mn_gtk_object_ref_and_sink	(GtkObject	*object);
 
 int		mn_utf8_strcmp			(const char	*s1,
 						 const char	*s2);
 int		mn_utf8_strcasecmp		(const char	*s1,
 						 const char	*s2);
-int		mn_utf8_strcasecoll		(const char	*s1,
-						 const char	*s2);
 char		*mn_utf8_escape			(const char	*str);
 
 int		mn_dialog_run_nonmodal		(GtkDialog	*dialog);
 
-gboolean	mn_ascii_validate		(const char	*str);
-
 void		mn_source_clear			(unsigned int	*tag);
 
-unsigned int	mn_timeout_add			(const char	*minutes_key,
-						 const char	*seconds_key,
-						 GSourceFunc	function,
-						 gpointer	data);
-
 gboolean	mn_ascii_str_case_has_prefix	(const char	*str,
 						 const char	*prefix);
 
-gboolean	mn_rename			(const char	*from,
-						 const char	*to,
-						 GError		**err);
+char		*mn_format_past_time		(time_t		past_time,
+						 time_t		now);
+
+void		mn_gdk_threads_enter		(void);
+void		mn_gdk_threads_leave		(void);
+void		mn_g_static_mutex_lock		(GStaticMutex *mutex);
+void		mn_g_static_mutex_unlock	(GStaticMutex *mutex);
 
 #endif /* _MN_UTIL_H */
diff --git a/src/mn-vfs-mailbox-backend-private.h b/src/mn-vfs-mailbox-backend-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_VFS_MAILBOX_BACKEND_PRIVATE_H__
 #define __MN_VFS_MAILBOX_BACKEND_PRIVATE_H__
@@ -9,16 +9,7 @@
 extern "C" {
 #endif /* __cplusplus */
 
-struct _MNVFSMailboxBackendPrivate {
-#line 48 "mn-vfs-mailbox-backend.gob"
-	GMutex * mutex;
-#line 50 "mn-vfs-mailbox-backend.gob"
-	GnomeVFSMonitorHandle * monitor_handle;
-#line 18 "mn-vfs-mailbox-backend-private.h"
-};
-void 	mn_vfs_mailbox_backend_monitor	(MNVFSMailboxBackend * self, unsigned long check_id, const char * uri, GnomeVFSMonitorType monitor_type);
-void 	mn_vfs_mailbox_backend_lock	(MNVFSMailboxBackend * self);
-void 	mn_vfs_mailbox_backend_unlock	(MNVFSMailboxBackend * self);
+void 	mn_vfs_mailbox_backend_monitor	(MNVFSMailboxBackend * self, unsigned long check_id, const char * uri, GnomeVFSMonitorType type);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-vfs-mailbox-backend.c b/src/mn-vfs-mailbox-backend.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -34,7 +33,7 @@
 #include "mn-conf.h"
 #include "mn-util.h"
 
-#line 38 "mn-vfs-mailbox-backend.c"
+#line 37 "mn-vfs-mailbox-backend.c"
 /* self casting macros */
 #define SELF(x) MN_VFS_MAILBOX_BACKEND(x)
 #define SELF_CONST(x) MN_VFS_MAILBOX_BACKEND_CONST(x)
@@ -72,8 +71,6 @@ 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_lock mn_vfs_mailbox_backend_lock
-#define self_unlock mn_vfs_mailbox_backend_unlock
 GType
 mn_vfs_mailbox_backend_get_type (void)
 {
@@ -93,7 +90,7 @@ mn_vfs_mailbox_backend_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (G_TYPE_OBJECT, "MNVFSMailboxBackend", &info, (GTypeFlags)0);
+		type = g_type_register_static (G_TYPE_OBJECT, "MNVFSMailboxBackend", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -116,30 +113,10 @@ GET_NEW_VARG (const char *first, ...)
 	return ret;
 }
 
-
-static void
-___finalize(GObject *obj_self)
-{
-#define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::finalize"
-	MNVFSMailboxBackend *self G_GNUC_UNUSED = MN_VFS_MAILBOX_BACKEND (obj_self);
-	gpointer priv G_GNUC_UNUSED = self->_priv;
-#line 52 "mn-vfs-mailbox-backend.gob"
-	___1_mn_vfs_mailbox_backend_finalize(obj_self);
-#line 129 "mn-vfs-mailbox-backend.c"
-#line 48 "mn-vfs-mailbox-backend.gob"
-	if(self->_priv->mutex) { g_mutex_free ((gpointer) self->_priv->mutex); self->_priv->mutex = NULL; }
-#line 132 "mn-vfs-mailbox-backend.c"
-}
-#undef __GOB_FUNCTION__
-
 static void 
 mn_vfs_mailbox_backend_init (MNVFSMailboxBackend * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::init"
-	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_VFS_MAILBOX_BACKEND,MNVFSMailboxBackendPrivate);
-#line 48 "mn-vfs-mailbox-backend.gob"
-	o->_priv->mutex = g_mutex_new();
-#line 143 "mn-vfs-mailbox-backend.c"
 }
 #undef __GOB_FUNCTION__
 static void 
@@ -148,15 +125,13 @@ mn_vfs_mailbox_backend_class_init (MNVFSMailboxBackendClass * c G_GNUC_UNUSED)
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::class_init"
 	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
 
-	g_type_class_add_private(c,sizeof(MNVFSMailboxBackendPrivate));
-
 	parent_class = g_type_class_ref (G_TYPE_OBJECT);
 
-#line 52 "mn-vfs-mailbox-backend.gob"
-	g_object_class->finalize = ___finalize;
-#line 139 "mn-vfs-mailbox-backend.gob"
+#line 48 "mn-vfs-mailbox-backend.gob"
+	g_object_class->finalize = ___1_mn_vfs_mailbox_backend_finalize;
+#line 84 "mn-vfs-mailbox-backend.gob"
 	c->monitor_cb = ___real_mn_vfs_mailbox_backend_monitor_cb;
-#line 160 "mn-vfs-mailbox-backend.c"
+#line 135 "mn-vfs-mailbox-backend.c"
 	c->is = NULL;
 	c->check = NULL;
 	g_object_class->get_property = ___object_get_property;
@@ -192,7 +167,7 @@ ___object_set_property (GObject *object,
 		{
 #line 46 "mn-vfs-mailbox-backend.gob"
 self->mailbox = g_value_get_pointer (VAL);
-#line 196 "mn-vfs-mailbox-backend.c"
+#line 171 "mn-vfs-mailbox-backend.c"
 		}
 		break;
 	default:
@@ -223,7 +198,7 @@ ___object_get_property (GObject *object,
 		{
 #line 46 "mn-vfs-mailbox-backend.gob"
 g_value_set_pointer (VAL, self->mailbox);
-#line 227 "mn-vfs-mailbox-backend.c"
+#line 202 "mn-vfs-mailbox-backend.c"
 		}
 		break;
 	default:
@@ -240,165 +215,114 @@ g_value_set_pointer (VAL, self->mailbox);
 
 
 
-#line 52 "mn-vfs-mailbox-backend.gob"
+#line 48 "mn-vfs-mailbox-backend.gob"
 static void 
 ___1_mn_vfs_mailbox_backend_finalize (GObject * object G_GNUC_UNUSED)
-#line 247 "mn-vfs-mailbox-backend.c"
+#line 222 "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 54 "mn-vfs-mailbox-backend.gob"
+#line 50 "mn-vfs-mailbox-backend.gob"
 	
     Self *self = SELF(object);
 
-    if (selfp->monitor_handle)
-      {
-	gnome_vfs_monitor_cancel(selfp->monitor_handle);
-	selfp->monitor_handle = NULL;
-      }
+    /*
+     * If the calling mailbox is being finalized, there is no need to
+     * hold its lock. Otherwise, it holds its lock while finalizing us
+     * (see reentrant_check() in mn-vfs-mailbox.gob).
+     */
+    mn_vfs_mailbox_remove_monitors_by_owner(self->mailbox, self);
 
     PARENT_HANDLER(object);
   }}
-#line 266 "mn-vfs-mailbox-backend.c"
+#line 242 "mn-vfs-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 66 "mn-vfs-mailbox-backend.gob"
+#line 63 "mn-vfs-mailbox-backend.gob"
 void 
-mn_vfs_mailbox_backend_monitor (MNVFSMailboxBackend * self, unsigned long check_id, const char * uri, GnomeVFSMonitorType monitor_type)
-#line 273 "mn-vfs-mailbox-backend.c"
+mn_vfs_mailbox_backend_monitor (MNVFSMailboxBackend * self, unsigned long check_id, const char * uri, GnomeVFSMonitorType type)
+#line 249 "mn-vfs-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::monitor"
-#line 66 "mn-vfs-mailbox-backend.gob"
+#line 63 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (self != NULL);
-#line 66 "mn-vfs-mailbox-backend.gob"
+#line 63 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self));
-#line 66 "mn-vfs-mailbox-backend.gob"
+#line 63 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (uri != NULL);
-#line 282 "mn-vfs-mailbox-backend.c"
+#line 258 "mn-vfs-mailbox-backend.c"
 {
-#line 71 "mn-vfs-mailbox-backend.gob"
+#line 68 "mn-vfs-mailbox-backend.gob"
 	
-    GnomeVFSResult result;
-    GnomeVFSMonitorHandle *handle;
-
-    g_return_if_fail(SELF_GET_CLASS(self)->monitor_cb != NULL);
-    
-    self_lock(self);
-
-    handle = selfp->monitor_handle;
-
-    self_unlock(self);
-
-    if (handle)
-      return;
-
-    result = gnome_vfs_monitor_add(&handle,
-				   uri,
-				   monitor_type,
-				   self_real_monitor_cb,
-				   self);
-
-    if (result == GNOME_VFS_OK)
-      {
-	self_lock(self);
-
-	if (! selfp->monitor_handle)
-	  {
-	    selfp->monitor_handle = handle;
-	    handle = NULL;
-	  }
-
-	self_unlock(self);
-
-	if (handle)
-	  gnome_vfs_monitor_cancel(handle);
-      }
-    else
-      {
-	GDK_THREADS_ENTER();
-
-	if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(self->mailbox), check_id)
-	    && ! selfp->monitor_handle
-	    && result != self->mailbox->contents_monitor_result)
-	  {
-	    self->mailbox->contents_monitor_result = result;
-
-	    mn_mailbox_warning(MN_MAILBOX(self->mailbox), _("unable to monitor mailbox contents (%s), poll mode activated"), gnome_vfs_result_to_string(result));
-	    mn_vfs_mailbox_monitor_error_dialog();
-
-	    if (! MN_MAILBOX(self->mailbox)->must_poll)
-	      mn_mailbox_set_must_poll(MN_MAILBOX(self->mailbox), TRUE);
-	  }
-
-	gdk_flush();
-	GDK_THREADS_LEAVE();
-      }
+    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 342 "mn-vfs-mailbox-backend.c"
+#line 266 "mn-vfs-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 129 "mn-vfs-mailbox-backend.gob"
+#line 74 "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 348 "mn-vfs-mailbox-backend.c"
+#line 272 "mn-vfs-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::real_monitor_cb"
 {
-#line 135 "mn-vfs-mailbox-backend.gob"
+#line 80 "mn-vfs-mailbox-backend.gob"
 	
     self_monitor_cb(user_data, info_uri, event_type);
   }}
-#line 356 "mn-vfs-mailbox-backend.c"
+#line 280 "mn-vfs-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 139 "mn-vfs-mailbox-backend.gob"
+#line 84 "mn-vfs-mailbox-backend.gob"
 static void 
 mn_vfs_mailbox_backend_monitor_cb (MNVFSMailboxBackend * self, const char * info_uri, GnomeVFSMonitorEventType event_type)
-#line 362 "mn-vfs-mailbox-backend.c"
+#line 286 "mn-vfs-mailbox-backend.c"
 {
 	MNVFSMailboxBackendClass *klass;
-#line 139 "mn-vfs-mailbox-backend.gob"
+#line 84 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (self != NULL);
-#line 139 "mn-vfs-mailbox-backend.gob"
+#line 84 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self));
-#line 369 "mn-vfs-mailbox-backend.c"
+#line 293 "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 139 "mn-vfs-mailbox-backend.gob"
+#line 84 "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 378 "mn-vfs-mailbox-backend.c"
+#line 302 "mn-vfs-mailbox-backend.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::monitor_cb"
 {
-#line 143 "mn-vfs-mailbox-backend.gob"
+#line 88 "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 389 "mn-vfs-mailbox-backend.c"
+#line 313 "mn-vfs-mailbox-backend.c"
 #undef __GOB_FUNCTION__
 
-#line 150 "mn-vfs-mailbox-backend.gob"
+#line 95 "mn-vfs-mailbox-backend.gob"
 gboolean 
 mn_vfs_mailbox_backend_is (MNVFSMailboxBackend * self, MNVFSMailbox * mailbox)
-#line 395 "mn-vfs-mailbox-backend.c"
+#line 319 "mn-vfs-mailbox-backend.c"
 {
 	MNVFSMailboxBackendClass *klass;
-#line 150 "mn-vfs-mailbox-backend.gob"
+#line 95 "mn-vfs-mailbox-backend.gob"
 	g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 150 "mn-vfs-mailbox-backend.gob"
+#line 95 "mn-vfs-mailbox-backend.gob"
 	g_return_val_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self), (gboolean )0);
-#line 402 "mn-vfs-mailbox-backend.c"
+#line 326 "mn-vfs-mailbox-backend.c"
 	klass = MN_VFS_MAILBOX_BACKEND_GET_CLASS(self);
 
 	if(klass->is)
@@ -407,57 +331,19 @@ mn_vfs_mailbox_backend_is (MNVFSMailboxBackend * self, MNVFSMailbox * mailbox)
 		return (gboolean )(0);
 }
 
-#line 153 "mn-vfs-mailbox-backend.gob"
+#line 98 "mn-vfs-mailbox-backend.gob"
 void 
 mn_vfs_mailbox_backend_check (MNVFSMailboxBackend * self, unsigned long check_id)
-#line 414 "mn-vfs-mailbox-backend.c"
+#line 338 "mn-vfs-mailbox-backend.c"
 {
 	MNVFSMailboxBackendClass *klass;
-#line 153 "mn-vfs-mailbox-backend.gob"
+#line 98 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (self != NULL);
-#line 153 "mn-vfs-mailbox-backend.gob"
+#line 98 "mn-vfs-mailbox-backend.gob"
 	g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self));
-#line 421 "mn-vfs-mailbox-backend.c"
+#line 345 "mn-vfs-mailbox-backend.c"
 	klass = MN_VFS_MAILBOX_BACKEND_GET_CLASS(self);
 
 	if(klass->check)
 		(*klass->check)(self,check_id);
 }
-
-#line 156 "mn-vfs-mailbox-backend.gob"
-void 
-mn_vfs_mailbox_backend_lock (MNVFSMailboxBackend * self)
-#line 431 "mn-vfs-mailbox-backend.c"
-{
-#define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::lock"
-#line 156 "mn-vfs-mailbox-backend.gob"
-	g_return_if_fail (self != NULL);
-#line 156 "mn-vfs-mailbox-backend.gob"
-	g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self));
-#line 438 "mn-vfs-mailbox-backend.c"
-{
-#line 158 "mn-vfs-mailbox-backend.gob"
-	
-    g_mutex_lock(selfp->mutex);
-  }}
-#line 444 "mn-vfs-mailbox-backend.c"
-#undef __GOB_FUNCTION__
-
-#line 162 "mn-vfs-mailbox-backend.gob"
-void 
-mn_vfs_mailbox_backend_unlock (MNVFSMailboxBackend * self)
-#line 450 "mn-vfs-mailbox-backend.c"
-{
-#define __GOB_FUNCTION__ "MN:VFS:Mailbox:Backend::unlock"
-#line 162 "mn-vfs-mailbox-backend.gob"
-	g_return_if_fail (self != NULL);
-#line 162 "mn-vfs-mailbox-backend.gob"
-	g_return_if_fail (MN_IS_VFS_MAILBOX_BACKEND (self));
-#line 457 "mn-vfs-mailbox-backend.c"
-{
-#line 164 "mn-vfs-mailbox-backend.gob"
-	
-    g_mutex_unlock(selfp->mutex);
-  }}
-#line 463 "mn-vfs-mailbox-backend.c"
-#undef __GOB_FUNCTION__
diff --git a/src/mn-vfs-mailbox-backend.gob b/src/mn-vfs-mailbox-backend.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include "mn-vfs-mailbox.h"
@@ -33,7 +33,7 @@ requires 2.0.12
 #include "mn-util.h"
 %}
 
-class MN:VFS:Mailbox:Backend from G:Object
+class MN:VFS:Mailbox:Backend from G:Object (abstract)
 {
   classwide const char *format;
 
@@ -45,20 +45,17 @@ class MN:VFS:Mailbox:Backend from G:Object
   protected MNVFSMailbox *mailbox;
   property POINTER mailbox (link, flags = CONSTRUCT_ONLY, type = MNVFSMailbox *);
 
-  private GMutex *mutex = {g_mutex_new()} destroywith g_mutex_free;
-
-  private GnomeVFSMonitorHandle *monitor_handle;
-
   override (G:Object) void
     finalize (GObject *object)
   {
     Self *self = SELF(object);
 
-    if (selfp->monitor_handle)
-      {
-	gnome_vfs_monitor_cancel(selfp->monitor_handle);
-	selfp->monitor_handle = NULL;
-      }
+    /*
+     * If the calling mailbox is being finalized, there is no need to
+     * hold its lock. Otherwise, it holds its lock while finalizing us
+     * (see reentrant_check() in mn-vfs-mailbox.gob).
+     */
+    mn_vfs_mailbox_remove_monitors_by_owner(self->mailbox, self);
 
     PARENT_HANDLER(object);
   }
@@ -67,65 +64,13 @@ class MN:VFS:Mailbox:Backend from G:Object
     monitor (self,
 	     unsigned long check_id,
 	     const char *uri (check null),
-	     GnomeVFSMonitorType monitor_type)
+	     GnomeVFSMonitorType type)
   {
-    GnomeVFSResult result;
-    GnomeVFSMonitorHandle *handle;
-
-    g_return_if_fail(SELF_GET_CLASS(self)->monitor_cb != NULL);
-    
-    self_lock(self);
-
-    handle = selfp->monitor_handle;
-
-    self_unlock(self);
-
-    if (handle)
-      return;
-
-    result = gnome_vfs_monitor_add(&handle,
-				   uri,
-				   monitor_type,
-				   self_real_monitor_cb,
-				   self);
-
-    if (result == GNOME_VFS_OK)
-      {
-	self_lock(self);
-
-	if (! selfp->monitor_handle)
-	  {
-	    selfp->monitor_handle = handle;
-	    handle = NULL;
-	  }
-
-	self_unlock(self);
-
-	if (handle)
-	  gnome_vfs_monitor_cancel(handle);
-      }
-    else
-      {
-	GDK_THREADS_ENTER();
-
-	if (! mn_reentrant_mailbox_check_aborted_unlocked(MN_REENTRANT_MAILBOX(self->mailbox), check_id)
-	    && ! selfp->monitor_handle
-	    && result != self->mailbox->contents_monitor_result)
-	  {
-	    self->mailbox->contents_monitor_result = result;
-
-	    mn_mailbox_warning(MN_MAILBOX(self->mailbox), _("unable to monitor mailbox contents (%s), poll mode activated"), gnome_vfs_result_to_string(result));
-	    mn_vfs_mailbox_monitor_error_dialog();
-
-	    if (! MN_MAILBOX(self->mailbox)->must_poll)
-	      mn_mailbox_set_must_poll(MN_MAILBOX(self->mailbox), TRUE);
-	  }
-
-	gdk_flush();
-	GDK_THREADS_LEAVE();
-      }
+    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));
   }
-  
+
   private void
     real_monitor_cb (GnomeVFSMonitorHandle *handle,
 		     const char *monitor_uri,
@@ -135,7 +80,7 @@ class MN:VFS:Mailbox:Backend from G:Object
   {
     self_monitor_cb(user_data, info_uri, event_type);
   }
-  
+
   virtual private void
     monitor_cb (self,
 		const char *info_uri,
@@ -152,16 +97,4 @@ class MN:VFS:Mailbox:Backend from G:Object
 
   virtual public void
     check (self, unsigned long check_id);
-
-  protected void
-    lock (self)
-  {
-    g_mutex_lock(selfp->mutex);
-  }
-
-  protected void
-    unlock (self)
-  {
-    g_mutex_unlock(selfp->mutex);
-  }
 }
diff --git a/src/mn-vfs-mailbox-backend.gob.stamp b/src/mn-vfs-mailbox-backend.gob.stamp
diff --git a/src/mn-vfs-mailbox-backend.h b/src/mn-vfs-mailbox-backend.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -25,9 +25,6 @@ extern "C" {
 
 #define MN_VFS_MAILBOX_BACKEND_GET_CLASS(obj)	G_TYPE_INSTANCE_GET_CLASS((obj), mn_vfs_mailbox_backend_get_type(), MNVFSMailboxBackendClass)
 
-/* Private structure type */
-typedef struct _MNVFSMailboxBackendPrivate MNVFSMailboxBackendPrivate;
-
 /*
  * Main object structure
  */
@@ -39,7 +36,6 @@ struct _MNVFSMailboxBackend {
 	GObject __parent__;
 	/*< private >*/
 	MNVFSMailbox * mailbox; /* protected */
-	MNVFSMailboxBackendPrivate *_priv;
 };
 
 /*
diff --git a/src/mn-vfs-mailbox-private.h b/src/mn-vfs-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #ifndef __MN_VFS_MAILBOX_PRIVATE_H__
 #define __MN_VFS_MAILBOX_PRIVATE_H__
@@ -12,19 +12,21 @@ extern "C" {
 
 #line 31 "mn-vfs-mailbox.gob"
 
+#include "mn-locked-callback.h"
 #include "mn-vfs-mailbox-backend.h"
 
-#line 18 "mn-vfs-mailbox-private.h"
+#line 19 "mn-vfs-mailbox-private.h"
 struct _MNVFSMailboxPrivate {
-#line 64 "mn-vfs-mailbox.gob"
-	GnomeVFSMonitorHandle * monitor_handle;
-#line 66 "mn-vfs-mailbox.gob"
-	GnomeVFSResult type_monitor_result;
-#line 69 "mn-vfs-mailbox.gob"
+#line 76 "mn-vfs-mailbox.gob"
+	GSList * monitors;
+#line 77 "mn-vfs-mailbox.gob"
 	MNVFSMailboxBackend * backend;
-#line 26 "mn-vfs-mailbox-private.h"
+#line 78 "mn-vfs-mailbox.gob"
+	MNLockedGSource * update_poll_source;
+#line 27 "mn-vfs-mailbox-private.h"
 };
-void 	mn_vfs_mailbox_monitor_error_dialog	(void);
+void 	mn_vfs_mailbox_monitor	(MNVFSMailbox * self, const char * uri, MNVFSMailboxBackend * owner, GnomeVFSMonitorType type, GnomeVFSMonitorCallback callback, gpointer user_data);
+void 	mn_vfs_mailbox_remove_monitors_by_owner	(MNVFSMailbox * self, MNVFSMailboxBackend * owner);
 
 #ifdef __cplusplus
 }
diff --git a/src/mn-vfs-mailbox.c b/src/mn-vfs-mailbox.c
@@ -1,11 +1,10 @@
-/* Generated by GOB (v2.0.12) on Tue Aug  9 22:01:57 2005
-   (do not edit directly) */
+/* 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 12
+#define GOB_VERSION_PATCHLEVEL 14
 
 #define selfp (self->_priv)
 
@@ -23,29 +22,40 @@
 #define ___GOB_UNLIKELY(expr) (expr)
 #endif /* G_LIKELY */
 
-#line 35 "mn-vfs-mailbox.gob"
+#line 36 "mn-vfs-mailbox.gob"
 
 #include "config.h"
 #include <glib/gi18n.h>
-#ifdef WITH_MBOX
+#include "mn-mailbox-private.h"
+#include "mn-reentrant-mailbox-private.h"
+#if WITH_MBOX
 #include "mn-mbox-mailbox-backend.h"
 #endif
-#ifdef WITH_MH
+#if WITH_MH
 #include "mn-mh-mailbox-backend.h"
 #endif
-#ifdef WITH_MAILDIR
+#if WITH_MAILDIR
 #include "mn-maildir-mailbox-backend.h"
 #endif
-#ifdef WITH_SYLPHEED
+#if WITH_SYLPHEED
 #include "mn-sylpheed-mailbox-backend.h"
 #endif
 #include "mn-vfs.h"
 #include "mn-stock.h"
 #include "mn-conf.h"
+#include "mn-util.h"
 
 GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1];
 
-#line 49 "mn-vfs-mailbox.c"
+typedef struct
+{
+  char				*uri;
+  MNVFSMailboxBackend		*owner;
+  GnomeVFSResult		result;
+  GnomeVFSMonitorHandle		*handle;
+} Monitor;
+
+#line 59 "mn-vfs-mailbox.c"
 /* self casting macros */
 #define SELF(x) MN_VFS_MAILBOX(x)
 #define SELF_CONST(x) MN_VFS_MAILBOX_CONST(x)
@@ -61,20 +71,27 @@ typedef MNVFSMailboxClass SelfClass;
 
 /* here are local prototypes */
 static void mn_vfs_mailbox_init (MNVFSMailbox * o) G_GNUC_UNUSED;
-static void mn_vfs_mailbox_class_init (MNVFSMailboxClass * c) G_GNUC_UNUSED;
-static GObject * ___2_mn_vfs_mailbox_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
-static void ___3_mn_vfs_mailbox_dispose (GObject * object) G_GNUC_UNUSED;
-static void ___4_mn_vfs_mailbox_seal (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void mn_vfs_mailbox_class_init (MNVFSMailboxClass * class) G_GNUC_UNUSED;
+static GObject * ___3_mn_vfs_mailbox_constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void ___4_mn_vfs_mailbox_dispose (GObject * object) G_GNUC_UNUSED;
+static void ___5_mn_vfs_mailbox_seal (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void mn_vfs_mailbox_monitor_free (Monitor * monitor) G_GNUC_UNUSED;
 static void mn_vfs_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data) G_GNUC_UNUSED;
-static void ___6_mn_vfs_mailbox_impl_check (MNReentrantMailbox * mailbox, unsigned long check_id) G_GNUC_UNUSED;
+static void mn_vfs_mailbox_queue_update_poll (MNVFSMailbox * self) G_GNUC_UNUSED;
+static gboolean mn_vfs_mailbox_update_poll_cb (gpointer data) G_GNUC_UNUSED;
+static void ___c_mn_vfs_mailbox_reentrant_check (MNReentrantMailbox * mailbox, unsigned long check_id) G_GNUC_UNUSED;
 
 /* pointer to the class of our parent */
 static MNReentrantMailboxClass *parent_class = NULL;
 
 /* Short form macros */
 #define self_init_types mn_vfs_mailbox_init_types
+#define self_monitor mn_vfs_mailbox_monitor
+#define self_monitor_free mn_vfs_mailbox_monitor_free
 #define self_monitor_cb mn_vfs_mailbox_monitor_cb
-#define self_monitor_error_dialog mn_vfs_mailbox_monitor_error_dialog
+#define self_remove_monitors_by_owner mn_vfs_mailbox_remove_monitors_by_owner
+#define self_queue_update_poll mn_vfs_mailbox_queue_update_poll
+#define self_update_poll_cb mn_vfs_mailbox_update_poll_cb
 GType
 mn_vfs_mailbox_get_type (void)
 {
@@ -94,7 +111,7 @@ mn_vfs_mailbox_get_type (void)
 			NULL
 		};
 
-		type = g_type_register_static (MN_TYPE_REENTRANT_MAILBOX, "MNVFSMailbox", &info, (GTypeFlags)0);
+		type = g_type_register_static (MN_TYPE_REENTRANT_MAILBOX, "MNVFSMailbox", &info, (GTypeFlags)G_TYPE_FLAG_ABSTRACT);
 	}
 
 	return type;
@@ -123,15 +140,15 @@ ___dispose (GObject *obj_self)
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::dispose"
 	MNVFSMailbox *self G_GNUC_UNUSED = MN_VFS_MAILBOX (obj_self);
-#line 108 "mn-vfs-mailbox.gob"
-	___3_mn_vfs_mailbox_dispose(obj_self);
-#line 129 "mn-vfs-mailbox.c"
-#line 62 "mn-vfs-mailbox.gob"
+#line 134 "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 132 "mn-vfs-mailbox.c"
-#line 69 "mn-vfs-mailbox.gob"
+#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 135 "mn-vfs-mailbox.c"
+#line 152 "mn-vfs-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -144,9 +161,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 61 "mn-vfs-mailbox.gob"
+#line 73 "mn-vfs-mailbox.gob"
 	if(self->uri) { g_free ((gpointer) self->uri); self->uri = NULL; }
-#line 150 "mn-vfs-mailbox.c"
+#line 167 "mn-vfs-mailbox.c"
 }
 #undef __GOB_FUNCTION__
 
@@ -155,73 +172,81 @@ mn_vfs_mailbox_init (MNVFSMailbox * o G_GNUC_UNUSED)
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::init"
 	o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,MN_TYPE_VFS_MAILBOX,MNVFSMailboxPrivate);
-#line 35 "mn-vfs-mailbox.gob"
-	o->_priv->type_monitor_result = GNOME_VFS_OK;
-#line 161 "mn-vfs-mailbox.c"
-#line 35 "mn-vfs-mailbox.gob"
-	o->contents_monitor_result = GNOME_VFS_OK;
-#line 164 "mn-vfs-mailbox.c"
 }
 #undef __GOB_FUNCTION__
+#line 100 "mn-vfs-mailbox.gob"
 static void 
-mn_vfs_mailbox_class_init (MNVFSMailboxClass * c G_GNUC_UNUSED)
+mn_vfs_mailbox_class_init (MNVFSMailboxClass * class G_GNUC_UNUSED)
+#line 181 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::class_init"
-	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
-	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)c;
-	MNReentrantMailboxClass *mn_reentrant_mailbox_class = (MNReentrantMailboxClass *)c;
+	GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+	MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
+	MNReentrantMailboxClass *mn_reentrant_mailbox_class = (MNReentrantMailboxClass *)class;
 
-	g_type_class_add_private(c,sizeof(MNVFSMailboxPrivate));
+	g_type_class_add_private(class,sizeof(MNVFSMailboxPrivate));
 
 	parent_class = g_type_class_ref (MN_TYPE_REENTRANT_MAILBOX);
 
-#line 91 "mn-vfs-mailbox.gob"
-	g_object_class->constructor = ___2_mn_vfs_mailbox_constructor;
-#line 108 "mn-vfs-mailbox.gob"
+#line 110 "mn-vfs-mailbox.gob"
+	g_object_class->constructor = ___3_mn_vfs_mailbox_constructor;
+#line 134 "mn-vfs-mailbox.gob"
 	g_object_class->dispose = ___dispose;
-#line 126 "mn-vfs-mailbox.gob"
-	mn_mailbox_class->seal = ___4_mn_vfs_mailbox_seal;
-#line 171 "mn-vfs-mailbox.gob"
-	mn_reentrant_mailbox_class->impl_check = ___6_mn_vfs_mailbox_impl_check;
-#line 187 "mn-vfs-mailbox.c"
+#line 149 "mn-vfs-mailbox.gob"
+	mn_mailbox_class->seal = ___5_mn_vfs_mailbox_seal;
+#line 315 "mn-vfs-mailbox.gob"
+	mn_reentrant_mailbox_class->reentrant_check = ___c_mn_vfs_mailbox_reentrant_check;
+#line 200 "mn-vfs-mailbox.c"
 	g_object_class->finalize = ___finalize;
+ {
+#line 101 "mn-vfs-mailbox.gob"
+
+    /*
+     * Most VFS mailboxes will probably be local files, or remote
+     * files located in the same LAN. We therefore choose a small
+     * default check delay (1 minute).
+     */
+    MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 1;
+  
+#line 212 "mn-vfs-mailbox.c"
+ }
 }
 #undef __GOB_FUNCTION__
 
 
-
-#line 71 "mn-vfs-mailbox.gob"
+#line 80 "mn-vfs-mailbox.gob"
 void 
 mn_vfs_mailbox_init_types (void)
-#line 197 "mn-vfs-mailbox.c"
+#line 221 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::init_types"
 {
-#line 73 "mn-vfs-mailbox.gob"
+#line 82 "mn-vfs-mailbox.gob"
 	
     int i = 0;
 
-#ifdef WITH_MBOX
+#if WITH_MBOX
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MBOX_MAILBOX_BACKEND;
 #endif
-#ifdef WITH_MH
+#if WITH_MH
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MH_MAILBOX_BACKEND;
 #endif
-#ifdef WITH_MAILDIR
+#if WITH_MAILDIR
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MAILDIR_MAILBOX_BACKEND;
 #endif
-#ifdef WITH_SYLPHEED
+#if WITH_SYLPHEED
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_SYLPHEED_MAILBOX_BACKEND;
 #endif
     mn_vfs_mailbox_backend_types[i] = 0;
   }}
-#line 219 "mn-vfs-mailbox.c"
+#line 243 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 91 "mn-vfs-mailbox.gob"
+
+#line 110 "mn-vfs-mailbox.gob"
 static GObject * 
-___2_mn_vfs_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
-#line 225 "mn-vfs-mailbox.c"
+___3_mn_vfs_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_construct_properties, GObjectConstructParam * construct_params)
+#line 250 "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): \
@@ -229,7 +254,7 @@ ___2_mn_vfs_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_constr
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::constructor"
 {
-#line 93 "mn-vfs-mailbox.gob"
+#line 112 "mn-vfs-mailbox.gob"
 	
     GObject *object;
     Self *self;
@@ -239,56 +264,60 @@ ___2_mn_vfs_mailbox_constructor (GType type G_GNUC_UNUSED, unsigned int n_constr
     self = SELF(object);
     class = SELF_GET_CLASS(self);
 
+    /* set default poll to the most likely value */
+    mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
+
+    /*
+     * We must do this in constructor() and not init() because
+     * class->stock_id is not yet assigned in init().
+     */
     if (class->stock_id)
       mn_mailbox_set_stock_id(MN_MAILBOX(self), (char *) class->stock_id);
 
     return object;
   }}
-#line 248 "mn-vfs-mailbox.c"
+#line 280 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 108 "mn-vfs-mailbox.gob"
+#line 134 "mn-vfs-mailbox.gob"
 static void 
-___3_mn_vfs_mailbox_dispose (GObject * object G_GNUC_UNUSED)
-#line 255 "mn-vfs-mailbox.c"
+___4_mn_vfs_mailbox_dispose (GObject * object G_GNUC_UNUSED)
+#line 287 "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 110 "mn-vfs-mailbox.gob"
+#line 136 "mn-vfs-mailbox.gob"
 	
     Self *self = SELF(object);
 
     /*
      * We are no longer operational after dispose (see unrefwith
-     * above), so we must remove our monitor.
+     * above), so we must remove our monitors.
      */
-    if (selfp->monitor_handle)
-      {
-	gnome_vfs_monitor_cancel(selfp->monitor_handle);
-	selfp->monitor_handle = NULL;
-      }
+    mn_locked_g_source_clear(&selfp->update_poll_source);
+    mn_g_slist_clear_deep_custom(&selfp->monitors, (GFunc) self_monitor_free, NULL);
 
     PARENT_HANDLER(object);
   }}
-#line 278 "mn-vfs-mailbox.c"
+#line 307 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 126 "mn-vfs-mailbox.gob"
+#line 149 "mn-vfs-mailbox.gob"
 static void 
-___4_mn_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 285 "mn-vfs-mailbox.c"
+___5_mn_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 314 "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 128 "mn-vfs-mailbox.gob"
+#line 151 "mn-vfs-mailbox.gob"
 	
     Self *self = SELF(mailbox);
 
@@ -315,18 +344,100 @@ ___4_mn_vfs_mailbox_seal (MNMailbox * mailbox G_GNUC_UNUSED)
 	  }
       }
   }}
-#line 319 "mn-vfs-mailbox.c"
+#line 348 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
 
-#line 155 "mn-vfs-mailbox.gob"
+#line 178 "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"
+{
+#define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor"
+#line 178 "mn-vfs-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 178 "mn-vfs-mailbox.gob"
+	g_return_if_fail (MN_IS_VFS_MAILBOX (self));
+#line 178 "mn-vfs-mailbox.gob"
+	g_return_if_fail (uri != NULL);
+#line 364 "mn-vfs-mailbox.c"
+{
+#line 185 "mn-vfs-mailbox.gob"
+	
+    Monitor *monitor = NULL;
+    GSList *l;
+
+    g_return_if_fail(owner == NULL || MN_IS_VFS_MAILBOX_BACKEND(owner));
+
+    MN_LIST_FOREACH(l, selfp->monitors)
+      {
+	Monitor *this_monitor = l->data;
+
+	if (this_monitor->owner == owner && ! strcmp(this_monitor->uri, uri))
+	  {
+	    monitor = this_monitor;
+	    break;
+	  }
+      }
+
+    if (! monitor)
+      {
+	monitor = g_new0(Monitor, 1);
+	monitor->uri = g_strdup(uri);
+	monitor->owner = owner;
+	monitor->result = -1;
+
+	selfp->monitors = g_slist_append(selfp->monitors, monitor);
+      }
+
+    if (monitor->result != GNOME_VFS_OK)
+      {
+	GnomeVFSResult result;
+
+	result = mn_gnome_vfs_monitor_add_locked(&monitor->handle, uri, type, callback, user_data);
+	if (result != monitor->result)
+	  {
+	    monitor->result = result;
+	    if (result != GNOME_VFS_OK)
+	      mn_mailbox_warning(MN_MAILBOX(self), _("unable to monitor %s (%s), poll mode activated"), uri, gnome_vfs_result_to_string(result));
+
+	    self_queue_update_poll(self);
+	  }
+      }
+  }}
+#line 409 "mn-vfs-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 228 "mn-vfs-mailbox.gob"
+static void 
+mn_vfs_mailbox_monitor_free (Monitor * monitor)
+#line 415 "mn-vfs-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor_free"
+#line 228 "mn-vfs-mailbox.gob"
+	g_return_if_fail (monitor != NULL);
+#line 420 "mn-vfs-mailbox.c"
+{
+#line 230 "mn-vfs-mailbox.gob"
+	
+    g_free(monitor->uri);
+
+    if (monitor->result == GNOME_VFS_OK)
+      mn_gnome_vfs_monitor_cancel_locked(monitor->handle);
+
+    g_free(monitor);
+  }}
+#line 431 "mn-vfs-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 239 "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 326 "mn-vfs-mailbox.c"
+#line 437 "mn-vfs-mailbox.c"
 {
 #define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor_cb"
 {
-#line 161 "mn-vfs-mailbox.gob"
+#line 245 "mn-vfs-mailbox.gob"
 	
     if (event_type == GNOME_VFS_MONITOR_EVENT_CHANGED
 	|| event_type == GNOME_VFS_MONITOR_EVENT_DELETED
@@ -336,30 +447,123 @@ mn_vfs_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_
 	mn_reentrant_mailbox_queue_check(MN_REENTRANT_MAILBOX(self));
       }
   }}
-#line 340 "mn-vfs-mailbox.c"
+#line 451 "mn-vfs-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 255 "mn-vfs-mailbox.gob"
+void 
+mn_vfs_mailbox_remove_monitors_by_owner (MNVFSMailbox * self, MNVFSMailboxBackend * owner)
+#line 457 "mn-vfs-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:VFS:Mailbox::remove_monitors_by_owner"
+#line 255 "mn-vfs-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 255 "mn-vfs-mailbox.gob"
+	g_return_if_fail (MN_IS_VFS_MAILBOX (self));
+#line 464 "mn-vfs-mailbox.c"
+{
+#line 257 "mn-vfs-mailbox.gob"
+	
+    GSList *l;
+
+    g_return_if_fail(owner == NULL || MN_IS_VFS_MAILBOX_BACKEND(owner));
+
+  start:
+    MN_LIST_FOREACH(l, selfp->monitors)
+      {
+	Monitor *monitor = l->data;
+
+	if (monitor->owner == owner)
+	  {
+	    selfp->monitors = mn_g_slist_delete_link_deep_custom(selfp->monitors, l, (GFunc) self_monitor_free, NULL);
+	    self_queue_update_poll(self);
+	    goto start;
+	  }
+      }
+  }}
+#line 485 "mn-vfs-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 276 "mn-vfs-mailbox.gob"
+static void 
+mn_vfs_mailbox_queue_update_poll (MNVFSMailbox * self)
+#line 491 "mn-vfs-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:VFS:Mailbox::queue_update_poll"
+#line 276 "mn-vfs-mailbox.gob"
+	g_return_if_fail (self != NULL);
+#line 276 "mn-vfs-mailbox.gob"
+	g_return_if_fail (MN_IS_VFS_MAILBOX (self));
+#line 498 "mn-vfs-mailbox.c"
+{
+#line 278 "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"
+#undef __GOB_FUNCTION__
+
+#line 285 "mn-vfs-mailbox.gob"
+static gboolean 
+mn_vfs_mailbox_update_poll_cb (gpointer data)
+#line 513 "mn-vfs-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:VFS:Mailbox::update_poll_cb"
+{
+#line 287 "mn-vfs-mailbox.gob"
+	
+    Self *self = data;
+    gboolean polled = FALSE;
+    GSList *l;
+
+    mn_reentrant_mailbox_lock(MN_REENTRANT_MAILBOX(self));
+
+    MN_LIST_FOREACH(l, selfp->monitors)
+      {
+	Monitor *monitor = l->data;
+
+	if (monitor->result != GNOME_VFS_OK)
+	  {
+	    polled = TRUE;
+	    break;
+	  }
+      }
+
+    selfp->update_poll_source = NULL;
+
+    mn_reentrant_mailbox_unlock(MN_REENTRANT_MAILBOX(self));
+
+    if (mn_mailbox_get_poll(MN_MAILBOX(self)) != polled)
+      mn_mailbox_set_poll(MN_MAILBOX(self), polled);
+
+    return FALSE;		/* remove source */
+  }}
+#line 545 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 
-#line 171 "mn-vfs-mailbox.gob"
+#line 315 "mn-vfs-mailbox.gob"
 static void 
-___6_mn_vfs_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsigned long check_id)
-#line 346 "mn-vfs-mailbox.c"
+___c_mn_vfs_mailbox_reentrant_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsigned long check_id)
+#line 551 "mn-vfs-mailbox.c"
 #define PARENT_HANDLER(___mailbox,___check_id) \
-	{ if(MN_REENTRANT_MAILBOX_CLASS(parent_class)->impl_check) \
-		(* MN_REENTRANT_MAILBOX_CLASS(parent_class)->impl_check)(___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::impl_check"
+#define __GOB_FUNCTION__ "MN:VFS:Mailbox::reentrant_check"
 {
-#line 173 "mn-vfs-mailbox.gob"
+#line 317 "mn-vfs-mailbox.gob"
 	
     Self *self = SELF(mailbox);
     MNVFSMailboxBackend *backend;
-    GnomeVFSMonitorHandle *handle;
     GType backend_type = 0;
     gboolean exists;
 
     mn_reentrant_mailbox_lock(mailbox);
 
-    handle = selfp->monitor_handle;
+    self_monitor(self, self->uri, NULL, GNOME_VFS_MONITOR_FILE, self_monitor_cb, self);
 
     backend = selfp->backend;
     if (backend)
@@ -367,64 +571,6 @@ ___6_mn_vfs_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsi
 
     mn_reentrant_mailbox_unlock(mailbox);
 
-    if (! handle)
-      {
-	GnomeVFSResult result;
-
-	result = gnome_vfs_monitor_add(&handle,
-				       self->uri,
-				       GNOME_VFS_MONITOR_FILE,
-				       self_monitor_cb,
-				       self);
-
-	if (result == GNOME_VFS_OK)
-	  {
-	    mn_reentrant_mailbox_lock(mailbox);
-
-	    if (! selfp->monitor_handle)
-	      {
-		selfp->monitor_handle = handle;
-		handle = NULL;
-	      }
-
-	    mn_reentrant_mailbox_unlock(mailbox);
-
-	    if (handle)
-	      gnome_vfs_monitor_cancel(handle);
-	    else
-	      {
-		GDK_THREADS_ENTER();
-		mn_mailbox_set_must_poll(MN_MAILBOX(self), FALSE);
-		gdk_flush();
-		GDK_THREADS_LEAVE();
-	      }
-	  }
-	else
-	  {
-	    gboolean warn = FALSE;
-
-	    mn_reentrant_mailbox_lock(mailbox);
-
-	    if (! selfp->monitor_handle && result != selfp->type_monitor_result)
-	      {
-		warn = TRUE;
-		selfp->type_monitor_result = result;
-	      }
-
-	    mn_reentrant_mailbox_unlock(mailbox);
-	    
-	    if (warn)
-	      {
-		mn_mailbox_warning(MN_MAILBOX(self), _("unable to monitor mailbox type (%s), poll mode activated"), gnome_vfs_result_to_string(result));
-	    
-		GDK_THREADS_ENTER();
-		self_monitor_error_dialog();
-		gdk_flush();
-		GDK_THREADS_LEAVE();
-	      }
-	  }
-      }
-    
     if (backend && MN_VFS_MAILBOX_BACKEND_GET_CLASS(backend)->is(NULL, self))
       backend_type = G_OBJECT_TYPE(backend);
     else
@@ -437,22 +583,22 @@ ___6_mn_vfs_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsi
 	    for (i = 0; mn_vfs_mailbox_backend_types[i]; i++)
 	      {
 		MNVFSMailboxBackendClass *class;
-		
+
 		class = g_type_class_peek(mn_vfs_mailbox_backend_types[i]);
-		g_return_if_fail(class != NULL);
-		
+		g_assert(class != NULL);
+
 		if (class->is(NULL, self))
 		  {
 		    backend_type = mn_vfs_mailbox_backend_types[i];
 		    break;
 		  }
-		
+
 		if (mn_reentrant_mailbox_check_aborted(mailbox, check_id))
 		  goto end;
 	      }
 	  }
       }
-    
+
     if (! backend || backend_type != G_OBJECT_TYPE(backend))
       {
 	gboolean is_local;
@@ -464,13 +610,6 @@ ___6_mn_vfs_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsi
 
 	if (! mn_reentrant_mailbox_check_aborted_unlocked(mailbox, check_id))
 	  {
-	    if (backend)
-	      {
-		/* reset must-poll and contents_monitor_result */
-		mn_mailbox_set_must_poll(MN_MAILBOX(self), selfp->monitor_handle == NULL);
-		self->contents_monitor_result = GNOME_VFS_OK;
-	      }
-
 	    if (backend_type)
 	      {
 		new_backend = g_object_new(backend_type, MN_VFS_MAILBOX_BACKEND_PROP_MAILBOX(self), NULL);
@@ -515,16 +654,16 @@ ___6_mn_vfs_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsi
 		g_object_ref(backend);
 	      }
 	  }
-	
+
 	mn_reentrant_mailbox_unlock(mailbox);
 
 	if (new_backend)
 	  g_object_unref(new_backend);
       }
-    
+
     if (backend)
       mn_vfs_mailbox_backend_check(backend, check_id);
-    
+
   end:
     if (backend)
       {
@@ -533,78 +672,6 @@ ___6_mn_vfs_mailbox_impl_check (MNReentrantMailbox * mailbox G_GNUC_UNUSED, unsi
 	mn_reentrant_mailbox_unlock(mailbox);
       }
   }}
-#line 537 "mn-vfs-mailbox.c"
+#line 676 "mn-vfs-mailbox.c"
 #undef __GOB_FUNCTION__
 #undef PARENT_HANDLER
-
-#line 357 "mn-vfs-mailbox.gob"
-void 
-mn_vfs_mailbox_monitor_error_dialog (void)
-#line 544 "mn-vfs-mailbox.c"
-{
-#define __GOB_FUNCTION__ "MN:VFS:Mailbox::monitor_error_dialog"
-{
-#line 359 "mn-vfs-mailbox.gob"
-	
-    static gboolean first_time = TRUE;
-    int minutes;
-    int seconds;
-    char *str;
-
-    if (! first_time)
-      return;
-
-    if (eel_gconf_get_boolean(MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW))
-      return;
-
-    first_time = FALSE;
-
-    minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
-    seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
-		    
-    if (minutes == 0)
-      str = g_strdup_printf(ngettext("As a fallback, they will be "
-				     "checked every %i second (this "
-				     "delay is configurable from the "
-				     "Properties Dialog).",
-				     "As a fallback, they will be "
-				     "checked every %i seconds (this "
-				     "delay is configurable from the "
-				     "Properties Dialog).",
-				     seconds),
-			    seconds);
-    else if (seconds == 0)
-      str = g_strdup_printf(ngettext("As a fallback, they will be "
-				     "checked every %i minute (this "
-				     "delay is configurable from the "
-				     "Properties Dialog).",
-				     "As a fallback, they will be "
-				     "checked every %i minutes (this "
-				     "delay is configurable from the "
-				     "Properties Dialog).",
-				     minutes),
-			    minutes);
-    else
-      str = g_strdup_printf(ngettext("As a fallback, they will be "
-				     "checked approximately every %i "
-				     "minute (this delay is "
-				     "configurable from the "
-				     "Properties Dialog).",
-				     "As a fallback, they will be "
-				     "checked approximately every %i "
-				     "minutes (this delay is "
-				     "configurable from the "
-				     "Properties Dialog).",
-				     minutes),
-			    minutes);
-		    
-    mn_error_dialog(NULL,
-		    MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW,
-		    "immediate-notification",
-		    _("A monitoring error has occurred"),
-		    _("Mail Notification was unable to enable immediate "
-		      "notification for one or more mailboxes. %s"), str);
-    g_free(str);
-  }}
-#line 610 "mn-vfs-mailbox.c"
-#undef __GOB_FUNCTION__
diff --git a/src/mn-vfs-mailbox.gob b/src/mn-vfs-mailbox.gob
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -16,7 +16,7 @@
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  */
 
-requires 2.0.12
+requires 2.0.14
 
 %headertop{
 #include <libgnomevfs/gnome-vfs.h>
@@ -29,65 +29,84 @@ extern GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1];
 %}
 
 %privateheader{
+#include "mn-locked-callback.h"
 #include "mn-vfs-mailbox-backend.h"
 %}
 
 %{
 #include "config.h"
 #include <glib/gi18n.h>
-#ifdef WITH_MBOX
+#include "mn-mailbox-private.h"
+#include "mn-reentrant-mailbox-private.h"
+#if WITH_MBOX
 #include "mn-mbox-mailbox-backend.h"
 #endif
-#ifdef WITH_MH
+#if WITH_MH
 #include "mn-mh-mailbox-backend.h"
 #endif
-#ifdef WITH_MAILDIR
+#if WITH_MAILDIR
 #include "mn-maildir-mailbox-backend.h"
 #endif
-#ifdef WITH_SYLPHEED
+#if WITH_SYLPHEED
 #include "mn-sylpheed-mailbox-backend.h"
 #endif
 #include "mn-vfs.h"
 #include "mn-stock.h"
 #include "mn-conf.h"
+#include "mn-util.h"
 
 GType mn_vfs_mailbox_backend_types[MN_VFS_MAILBOX_MAX_BACKEND_TYPES + 1];
+
+typedef struct
+{
+  char				*uri;
+  MNVFSMailboxBackend		*owner;
+  GnomeVFSResult		result;
+  GnomeVFSMonitorHandle		*handle;
+} Monitor;
 %}
 
-class MN:VFS:Mailbox from MN:Reentrant:Mailbox
+class MN:VFS:Mailbox from MN:Reentrant:Mailbox (abstract)
 {
   classwide const char *stock_id;
 
   public char *uri destroywith g_free;
   public GnomeVFSURI *vfs_uri unrefwith gnome_vfs_uri_unref;
 
-  private GnomeVFSMonitorHandle *monitor_handle;
-
-  private GnomeVFSResult type_monitor_result = GNOME_VFS_OK;
-  protected GnomeVFSResult contents_monitor_result = GNOME_VFS_OK;
-
+  private GSList *monitors;
   private MNVFSMailboxBackend *backend unrefwith g_object_unref;
-  
+  private MNLockedGSource *update_poll_source;
+
   public void
     init_types (void)
   {
     int i = 0;
 
-#ifdef WITH_MBOX
+#if WITH_MBOX
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MBOX_MAILBOX_BACKEND;
 #endif
-#ifdef WITH_MH
+#if WITH_MH
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MH_MAILBOX_BACKEND;
 #endif
-#ifdef WITH_MAILDIR
+#if WITH_MAILDIR
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_MAILDIR_MAILBOX_BACKEND;
 #endif
-#ifdef WITH_SYLPHEED
+#if WITH_SYLPHEED
     mn_vfs_mailbox_backend_types[i++] = MN_TYPE_SYLPHEED_MAILBOX_BACKEND;
 #endif
     mn_vfs_mailbox_backend_types[i] = 0;
   }
-  
+
+  class_init (class)
+  {
+    /*
+     * Most VFS mailboxes will probably be local files, or remote
+     * files located in the same LAN. We therefore choose a small
+     * default check delay (1 minute).
+     */
+    MN_MAILBOX_CLASS(class)->default_check_delay = 60 * 1;
+  }
+
   override (G:Object) GObject *
     constructor (GType type, unsigned int n_construct_properties, GObjectConstructParam *construct_params)
   {
@@ -99,6 +118,13 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox
     self = SELF(object);
     class = SELF_GET_CLASS(self);
 
+    /* set default poll to the most likely value */
+    mn_mailbox_set_poll(MN_MAILBOX(self), FALSE);
+
+    /*
+     * We must do this in constructor() and not init() because
+     * class->stock_id is not yet assigned in init().
+     */
     if (class->stock_id)
       mn_mailbox_set_stock_id(MN_MAILBOX(self), (char *) class->stock_id);
 
@@ -112,13 +138,10 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox
 
     /*
      * We are no longer operational after dispose (see unrefwith
-     * above), so we must remove our monitor.
+     * above), so we must remove our monitors.
      */
-    if (selfp->monitor_handle)
-      {
-	gnome_vfs_monitor_cancel(selfp->monitor_handle);
-	selfp->monitor_handle = NULL;
-      }
+    mn_locked_g_source_clear(&selfp->update_poll_source);
+    mn_g_slist_clear_deep_custom(&selfp->monitors, (GFunc) self_monitor_free, NULL);
 
     PARENT_HANDLER(object);
   }
@@ -151,7 +174,68 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox
 	  }
       }
   }
-  
+
+  protected void
+    monitor (self,
+	     const char *uri (check null),
+	     MNVFSMailboxBackend *owner,
+	     GnomeVFSMonitorType type,
+	     GnomeVFSMonitorCallback callback,
+	     gpointer user_data)
+  {
+    Monitor *monitor = NULL;
+    GSList *l;
+
+    g_return_if_fail(owner == NULL || MN_IS_VFS_MAILBOX_BACKEND(owner));
+
+    MN_LIST_FOREACH(l, selfp->monitors)
+      {
+	Monitor *this_monitor = l->data;
+
+	if (this_monitor->owner == owner && ! strcmp(this_monitor->uri, uri))
+	  {
+	    monitor = this_monitor;
+	    break;
+	  }
+      }
+
+    if (! monitor)
+      {
+	monitor = g_new0(Monitor, 1);
+	monitor->uri = g_strdup(uri);
+	monitor->owner = owner;
+	monitor->result = -1;
+
+	selfp->monitors = g_slist_append(selfp->monitors, monitor);
+      }
+
+    if (monitor->result != GNOME_VFS_OK)
+      {
+	GnomeVFSResult result;
+
+	result = mn_gnome_vfs_monitor_add_locked(&monitor->handle, uri, type, callback, user_data);
+	if (result != monitor->result)
+	  {
+	    monitor->result = result;
+	    if (result != GNOME_VFS_OK)
+	      mn_mailbox_warning(MN_MAILBOX(self), _("unable to monitor %s (%s), poll mode activated"), uri, gnome_vfs_result_to_string(result));
+
+	    self_queue_update_poll(self);
+	  }
+      }
+  }
+
+  private void
+    monitor_free (Monitor *monitor (check null))
+  {
+    g_free(monitor->uri);
+
+    if (monitor->result == GNOME_VFS_OK)
+      mn_gnome_vfs_monitor_cancel_locked(monitor->handle);
+
+    g_free(monitor);
+  }
+
   private void
     monitor_cb (GnomeVFSMonitorHandle *handle,
 		const char *monitor_uri,
@@ -168,18 +252,77 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox
       }
   }
 
+  protected void
+    remove_monitors_by_owner (self, MNVFSMailboxBackend *owner)
+  {
+    GSList *l;
+
+    g_return_if_fail(owner == NULL || MN_IS_VFS_MAILBOX_BACKEND(owner));
+
+  start:
+    MN_LIST_FOREACH(l, selfp->monitors)
+      {
+	Monitor *monitor = l->data;
+
+	if (monitor->owner == owner)
+	  {
+	    selfp->monitors = mn_g_slist_delete_link_deep_custom(selfp->monitors, l, (GFunc) self_monitor_free, NULL);
+	    self_queue_update_poll(self);
+	    goto start;
+	  }
+      }
+  }
+
+  private void
+    queue_update_poll (self)
+  {
+    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);
+  }
+
+  private gboolean
+    update_poll_cb (gpointer data)
+  {
+    Self *self = data;
+    gboolean polled = FALSE;
+    GSList *l;
+
+    mn_reentrant_mailbox_lock(MN_REENTRANT_MAILBOX(self));
+
+    MN_LIST_FOREACH(l, selfp->monitors)
+      {
+	Monitor *monitor = l->data;
+
+	if (monitor->result != GNOME_VFS_OK)
+	  {
+	    polled = TRUE;
+	    break;
+	  }
+      }
+
+    selfp->update_poll_source = NULL;
+
+    mn_reentrant_mailbox_unlock(MN_REENTRANT_MAILBOX(self));
+
+    if (mn_mailbox_get_poll(MN_MAILBOX(self)) != polled)
+      mn_mailbox_set_poll(MN_MAILBOX(self), polled);
+
+    return FALSE;		/* remove source */
+  }
+
   override (MN:Reentrant:Mailbox) void
-    impl_check (MNReentrantMailbox *mailbox, unsigned long check_id)
+    reentrant_check (MNReentrantMailbox *mailbox, unsigned long check_id)
   {
     Self *self = SELF(mailbox);
     MNVFSMailboxBackend *backend;
-    GnomeVFSMonitorHandle *handle;
     GType backend_type = 0;
     gboolean exists;
 
     mn_reentrant_mailbox_lock(mailbox);
 
-    handle = selfp->monitor_handle;
+    self_monitor(self, self->uri, NULL, GNOME_VFS_MONITOR_FILE, self_monitor_cb, self);
 
     backend = selfp->backend;
     if (backend)
@@ -187,64 +330,6 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox
 
     mn_reentrant_mailbox_unlock(mailbox);
 
-    if (! handle)
-      {
-	GnomeVFSResult result;
-
-	result = gnome_vfs_monitor_add(&handle,
-				       self->uri,
-				       GNOME_VFS_MONITOR_FILE,
-				       self_monitor_cb,
-				       self);
-
-	if (result == GNOME_VFS_OK)
-	  {
-	    mn_reentrant_mailbox_lock(mailbox);
-
-	    if (! selfp->monitor_handle)
-	      {
-		selfp->monitor_handle = handle;
-		handle = NULL;
-	      }
-
-	    mn_reentrant_mailbox_unlock(mailbox);
-
-	    if (handle)
-	      gnome_vfs_monitor_cancel(handle);
-	    else
-	      {
-		GDK_THREADS_ENTER();
-		mn_mailbox_set_must_poll(MN_MAILBOX(self), FALSE);
-		gdk_flush();
-		GDK_THREADS_LEAVE();
-	      }
-	  }
-	else
-	  {
-	    gboolean warn = FALSE;
-
-	    mn_reentrant_mailbox_lock(mailbox);
-
-	    if (! selfp->monitor_handle && result != selfp->type_monitor_result)
-	      {
-		warn = TRUE;
-		selfp->type_monitor_result = result;
-	      }
-
-	    mn_reentrant_mailbox_unlock(mailbox);
-	    
-	    if (warn)
-	      {
-		mn_mailbox_warning(MN_MAILBOX(self), _("unable to monitor mailbox type (%s), poll mode activated"), gnome_vfs_result_to_string(result));
-	    
-		GDK_THREADS_ENTER();
-		self_monitor_error_dialog();
-		gdk_flush();
-		GDK_THREADS_LEAVE();
-	      }
-	  }
-      }
-    
     if (backend && MN_VFS_MAILBOX_BACKEND_GET_CLASS(backend)->is(NULL, self))
       backend_type = G_OBJECT_TYPE(backend);
     else
@@ -257,22 +342,22 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox
 	    for (i = 0; mn_vfs_mailbox_backend_types[i]; i++)
 	      {
 		MNVFSMailboxBackendClass *class;
-		
+
 		class = g_type_class_peek(mn_vfs_mailbox_backend_types[i]);
-		g_return_if_fail(class != NULL);
-		
+		g_assert(class != NULL);
+
 		if (class->is(NULL, self))
 		  {
 		    backend_type = mn_vfs_mailbox_backend_types[i];
 		    break;
 		  }
-		
+
 		if (mn_reentrant_mailbox_check_aborted(mailbox, check_id))
 		  goto end;
 	      }
 	  }
       }
-    
+
     if (! backend || backend_type != G_OBJECT_TYPE(backend))
       {
 	gboolean is_local;
@@ -284,13 +369,6 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox
 
 	if (! mn_reentrant_mailbox_check_aborted_unlocked(mailbox, check_id))
 	  {
-	    if (backend)
-	      {
-		/* reset must-poll and contents_monitor_result */
-		mn_mailbox_set_must_poll(MN_MAILBOX(self), selfp->monitor_handle == NULL);
-		self->contents_monitor_result = GNOME_VFS_OK;
-	      }
-
 	    if (backend_type)
 	      {
 		new_backend = g_object_new(backend_type, MN_VFS_MAILBOX_BACKEND_PROP_MAILBOX(self), NULL);
@@ -335,16 +413,16 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox
 		g_object_ref(backend);
 	      }
 	  }
-	
+
 	mn_reentrant_mailbox_unlock(mailbox);
 
 	if (new_backend)
 	  g_object_unref(new_backend);
       }
-    
+
     if (backend)
       mn_vfs_mailbox_backend_check(backend, check_id);
-    
+
   end:
     if (backend)
       {
@@ -353,68 +431,4 @@ class MN:VFS:Mailbox from MN:Reentrant:Mailbox
 	mn_reentrant_mailbox_unlock(mailbox);
       }
   }
-
-  protected void
-    monitor_error_dialog (void)
-  {
-    static gboolean first_time = TRUE;
-    int minutes;
-    int seconds;
-    char *str;
-
-    if (! first_time)
-      return;
-
-    if (eel_gconf_get_boolean(MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW))
-      return;
-
-    first_time = FALSE;
-
-    minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
-    seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
-		    
-    if (minutes == 0)
-      str = g_strdup_printf(ngettext("As a fallback, they will be "
-				     "checked every %i second (this "
-				     "delay is configurable from the "
-				     "Properties Dialog).",
-				     "As a fallback, they will be "
-				     "checked every %i seconds (this "
-				     "delay is configurable from the "
-				     "Properties Dialog).",
-				     seconds),
-			    seconds);
-    else if (seconds == 0)
-      str = g_strdup_printf(ngettext("As a fallback, they will be "
-				     "checked every %i minute (this "
-				     "delay is configurable from the "
-				     "Properties Dialog).",
-				     "As a fallback, they will be "
-				     "checked every %i minutes (this "
-				     "delay is configurable from the "
-				     "Properties Dialog).",
-				     minutes),
-			    minutes);
-    else
-      str = g_strdup_printf(ngettext("As a fallback, they will be "
-				     "checked approximately every %i "
-				     "minute (this delay is "
-				     "configurable from the "
-				     "Properties Dialog).",
-				     "As a fallback, they will be "
-				     "checked approximately every %i "
-				     "minutes (this delay is "
-				     "configurable from the "
-				     "Properties Dialog).",
-				     minutes),
-			    minutes);
-		    
-    mn_error_dialog(NULL,
-		    MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW,
-		    "immediate-notification",
-		    _("A monitoring error has occurred"),
-		    _("Mail Notification was unable to enable immediate "
-		      "notification for one or more mailboxes. %s"), str);
-    g_free(str);
-  }
 }
diff --git a/src/mn-vfs-mailbox.gob.stamp b/src/mn-vfs-mailbox.gob.stamp
diff --git a/src/mn-vfs-mailbox.h b/src/mn-vfs-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.12)   (do not edit directly) */
+/* Generated by GOB (v2.0.14)   (do not edit directly) */
 
 #include <glib.h>
 #include <glib-object.h>
@@ -47,7 +47,6 @@ struct _MNVFSMailbox {
 	char * uri;
 	GnomeVFSURI * vfs_uri;
 	/*< private >*/
-	GnomeVFSResult contents_monitor_result; /* protected */
 	MNVFSMailboxPrivate *_priv;
 };
 
diff --git a/src/mn-vfs.c b/src/mn-vfs.c
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -83,7 +83,7 @@ mn_vfs_read_line (MNVFSReadLineContext **context,
 	  else
 	    break;		/* error */
 	}
-      
+
       (*context)->terminator = strchr((*context)->buf->str, '\n');
       if ((*context)->terminator || (*context)->last_result == GNOME_VFS_ERROR_EOF)
 	{
@@ -131,7 +131,7 @@ mn_vfs_test (GnomeVFSURI *uri, GFileTest test)
     options |= GNOME_VFS_FILE_INFO_FOLLOW_LINKS;
   if (test & G_FILE_TEST_IS_EXECUTABLE)
     options |= GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS;
-  
+
   file_info = gnome_vfs_file_info_new();
   if (gnome_vfs_get_file_info_uri(uri, file_info, options) == GNOME_VFS_OK)
     {
@@ -173,3 +173,18 @@ mn_vfs_read_entire_file_uri (GnomeVFSURI *uri,
 
   return result;
 }
+
+char *
+mn_vfs_get_local_path (GnomeVFSURI *uri)
+{
+  char *text_uri;
+  char *path;
+
+  g_return_val_if_fail(uri != NULL, NULL);
+
+  text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE);
+  path = gnome_vfs_get_local_path_from_uri(text_uri);
+  g_free(text_uri);
+
+  return path;
+}
diff --git a/src/mn-vfs.h b/src/mn-vfs.h
@@ -1,5 +1,5 @@
 /* 
- * Copyright (C) 2004, 2005 Jean-Yves Lefort <jylefort@brutele.be>
+ * 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
@@ -36,4 +36,6 @@ GnomeVFSResult mn_vfs_read_entire_file_uri (GnomeVFSURI *uri,
 					    int *file_size,
 					    char **file_contents);
 
+char *mn_vfs_get_local_path (GnomeVFSURI *uri);
+
 #endif /* _MN_VFS_H */
diff --git a/src/nautilus-cell-renderer-pixbuf-emblem.c b/src/nautilus-cell-renderer-pixbuf-emblem.c
@@ -2,27 +2,27 @@
 
    nautilus-cell-renderer-pixbuf-emblem.c: cell renderer which can render
    an emblem on top of a pixbuf (for use in FMListView and FMTreeView)
- 
+
    Copyright (C) 2003 Juerg Billeter
-  
+
    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.
-  
+
    This is based on GtkCellRendererPixbuf written by
    Jonathan Blandford <jrb@redhat.com>
-  
+
    Author: Juerg Billeter <j@bitron.ch>
 */
 
@@ -110,7 +110,7 @@ static void
 nautilus_cell_renderer_pixbuf_emblem_init (NautilusCellRendererPixbufEmblem *cellpixbuf)
 {
 	NautilusCellRendererPixbufEmblemInfo *cellinfo;
-	
+
 	cellinfo = g_new0 (NautilusCellRendererPixbufEmblemInfo, 1);
 	cellinfo->stock_size = GTK_ICON_SIZE_MENU;
 	g_object_set_data (G_OBJECT (cellpixbuf), CELLINFO_KEY, cellinfo);
@@ -199,19 +199,19 @@ nautilus_cell_renderer_pixbuf_emblem_finalize (GObject *object)
 {
 	NautilusCellRendererPixbufEmblem *cellpixbuf = NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM (object);
 	NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY);
-	
+
 	if (cellpixbuf->pixbuf && cellinfo->stock_id) {
 		g_object_unref (cellpixbuf->pixbuf);
 	}
-	
+
 	if (cellinfo->stock_id) {
 		g_free (cellinfo->stock_id);
 	}
-	
+
 	if (cellinfo->stock_detail) {
 		g_free (cellinfo->stock_detail);
 	}
-	
+
 	g_free (cellinfo);
 	g_object_set_data (object, CELLINFO_KEY, NULL);
 
@@ -226,7 +226,7 @@ nautilus_cell_renderer_pixbuf_emblem_get_property (GObject        *object,
 {
 	NautilusCellRendererPixbufEmblem *cellpixbuf = NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM (object);
 	NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY);
-                                                                            
+
 	switch (param_id)
 	{
 		case PROP_PIXBUF:
@@ -260,7 +260,7 @@ nautilus_cell_renderer_pixbuf_emblem_get_property (GObject        *object,
 			break;
 	}
 }
-                                                                                                                                                                       
+
 static void
 nautilus_cell_renderer_pixbuf_emblem_set_property (GObject      *object,
                                             guint         param_id,
@@ -270,7 +270,7 @@ nautilus_cell_renderer_pixbuf_emblem_set_property (GObject      *object,
 	GdkPixbuf *pixbuf;
 	NautilusCellRendererPixbufEmblem *cellpixbuf = NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM (object);
 	NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (object, CELLINFO_KEY);
-                                                                            
+
 	switch (param_id)
 	{
 		case PROP_PIXBUF:
@@ -388,10 +388,10 @@ nautilus_cell_renderer_pixbuf_emblem_get_size (GtkCellRenderer *cell,
 		pixbuf_width  = MAX (pixbuf_width, gdk_pixbuf_get_width (cellpixbuf->pixbuf_expander_closed));
 		pixbuf_height = MAX (pixbuf_height, gdk_pixbuf_get_height (cellpixbuf->pixbuf_expander_closed));
 	}
-  
+
 	calc_width  = (gint) cell->xpad * 2 + pixbuf_width;
 	calc_height = (gint) cell->ypad * 2 + pixbuf_height;
-  
+
 	if (x_offset) *x_offset = 0;
 	if (y_offset) *y_offset = 0;
 
@@ -411,7 +411,7 @@ nautilus_cell_renderer_pixbuf_emblem_get_size (GtkCellRenderer *cell,
 
 	if (width)
 		*width = calc_width;
-  
+
 	if (height)
 		*height = calc_height;
 }
@@ -424,7 +424,7 @@ nautilus_cell_renderer_pixbuf_emblem_render (GtkCellRenderer      *cell,
                                  GdkRectangle         *cell_area,
                                  GdkRectangle         *expose_area,
                                  GtkCellRendererState  flags)
- 
+
 {
 	NautilusCellRendererPixbufEmblem *cellpixbuf = (NautilusCellRendererPixbufEmblem *) cell;
 	NautilusCellRendererPixbufEmblemInfo *cellinfo = g_object_get_data (G_OBJECT (cell), CELLINFO_KEY);
@@ -433,7 +433,7 @@ nautilus_cell_renderer_pixbuf_emblem_render (GtkCellRenderer      *cell,
 	GdkRectangle pix_emblem_rect;
 	GdkRectangle draw_rect;
 	gboolean stock_pixbuf = FALSE;
-	
+
 	pixbuf = cellpixbuf->pixbuf;
 	if (cell->is_expander) {
 		if (cell->is_expanded &&
@@ -459,7 +459,7 @@ nautilus_cell_renderer_pixbuf_emblem_render (GtkCellRenderer      *cell,
 
 	if (stock_pixbuf)
 		pixbuf = cellpixbuf->pixbuf;
-  
+
 	pix_rect.x += cell_area->x;
 	pix_rect.y += cell_area->y;
 	pix_rect.width  -= cell->xpad * 2;
diff --git a/src/nautilus-cell-renderer-pixbuf-emblem.h b/src/nautilus-cell-renderer-pixbuf-emblem.h
@@ -2,19 +2,19 @@
 
    nautilus-cell-renderer-pixbuf-emblem.h: cell renderer which can render
    an emblem on top of a pixbuf (for use in FMListView and FMTreeView)
- 
+
    Copyright (C) 2003 Juerg Billeter
-  
+
    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,
@@ -22,7 +22,7 @@
 
    This is based on GtkCellRendererPixbuf written by
    Jonathan Blandford <jrb@redhat.com>
-  
+
    Author: Juerg Billeter <j@bitron.ch>
 */
 
@@ -41,13 +41,13 @@
 	(GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM))
 #define NAUTILUS_IS_CELL_RENDERER_PIXBUF_EMBLEM_CLASS(klass) \
 	(GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM))
-	
+
 typedef struct _NautilusCellRendererPixbufEmblem NautilusCellRendererPixbufEmblem;
 typedef struct _NautilusCellRendererPixbufEmblemClass NautilusCellRendererPixbufEmblemClass;
 
 struct _NautilusCellRendererPixbufEmblem {
 	GtkCellRenderer	parent;
-	
+
 	/*< private >*/
 	GdkPixbuf *pixbuf;
 	GdkPixbuf *pixbuf_expander_open;
diff --git a/src/org-gnome-mail-notification.eplug.in b/src/org-gnome-mail-notification.eplug.in
@@ -13,5 +13,11 @@
 	handle="org_gnome_mail_notification_folder_changed"
 	target="folder"/>
     </hook>
+
+    <hook class="org.gnome.evolution.mail.events:1.0">
+      <event id="message.reading"
+	handle="org_gnome_mail_notification_message_reading"
+	target="message"/>
+    </hook>
   </e-plugin>
 </e-plugin-list>
diff --git a/sylpheed-locking.diff b/sylpheed-locking.diff
@@ -0,0 +1,69 @@
+--- libsylph/procmsg.c.orig	Fri Mar 10 03:26:28 2006
++++ libsylph/procmsg.c	Tue May  9 04:16:46 2006
+@@ -23,6 +23,9 @@
+ #include <glib/gi18n.h>
+ #include <stdio.h>
+ #include <stdlib.h>
++#include <string.h>
++#include <fcntl.h>
++#include <unistd.h>
+ 
+ #include "utils.h"
+ #include "procmsg.h"
+@@ -759,6 +762,20 @@
+ 	fclose(fp);
+ }
+ 
++/* play nice with other applications who'd like to read our data files */
++static void procmsg_lock_data_file(int fd)
++{
++	struct flock lock;
++
++	memset(&lock, 0, sizeof(lock));
++	lock.l_start = 0;		/* from l_whence */
++	lock.l_len = 0;			/* to end of file */
++	lock.l_type = F_WRLCK;		/* write lock */
++	lock.l_whence = SEEK_CUR;	/* from current position */
++
++	fcntl(fd, F_SETLKW, &lock);
++}
++
+ FILE *procmsg_open_data_file(const gchar *file, guint version,
+ 			     DataOpenMode mode, gchar *buf, size_t buf_size)
+ {
+@@ -768,8 +785,21 @@
+ 	g_return_val_if_fail(file != NULL, NULL);
+ 
+ 	if (mode == DATA_WRITE) {
+-		if ((fp = g_fopen(file, "wb")) == NULL) {
+-			FILE_OP_ERROR(file, "fopen");
++		int fd;
++
++		if ((fd = g_open(file, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR)) < 0) {
++			FILE_OP_ERROR(file, "open");
++			return NULL;
++		}
++		procmsg_lock_data_file(fd);
++		if (ftruncate(fd, 0) < 0) {
++			close(fd);
++			FILE_OP_ERROR(file, "ftruncate");
++			return NULL;
++		}
++		if ((fp = fdopen(fd, "wb")) == NULL) {
++			close(fd);
++			FILE_OP_ERROR(file, "fdopen");
+ 			return NULL;
+ 		}
+ 		if (change_file_mode_rw(fp, file) < 0)
+@@ -800,8 +830,10 @@
+ 	if (fp) {
+ 		/* reopen with append mode */
+ 		fclose(fp);
+-		if ((fp = g_fopen(file, "ab")) == NULL)
++		if ((fp = g_fopen(file, "ab")) == NULL) {
+ 			FILE_OP_ERROR(file, "fopen");
++		} else
++			procmsg_lock_data_file(fileno(fp));
+ 	} else {
+ 		/* open with overwrite mode if mark file doesn't exist or
+ 		   version is different */
diff --git a/tests/Makefile.in b/tests/Makefile.in
@@ -44,8 +44,8 @@ subdir = tests
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
-	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
 	$(top_srcdir)/m4/reentrant-resolver.m4 \
 	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
 	$(top_srcdir)/configure.ac
@@ -95,7 +95,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BONOBO_ACTIVATION_IDL = @BONOBO_ACTIVATION_IDL@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -127,7 +127,6 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GMIME_CFLAGS = @GMIME_CFLAGS@
 GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
@@ -159,6 +158,7 @@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
 INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
 INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
 INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
 INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
 INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
 INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
@@ -169,7 +169,6 @@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
 INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
 INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
-LIBBONOBO_IDL = @LIBBONOBO_IDL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
@@ -264,6 +263,7 @@ 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
@@ -37,7 +37,7 @@ main (int argc, char **argv)
   result = gnome_vfs_open(&handle, argv[1], GNOME_VFS_OPEN_READ);
   if (result != GNOME_VFS_OK)
     g_critical("unable to open %s: %s", argv[1], gnome_vfs_result_to_string(result));
-  
+
   while ((result = mn_vfs_read_line(&context, handle, &line)) == GNOME_VFS_OK)
     g_print("line: %s\n", line);
 
diff --git a/ui/Makefile.am b/ui/Makefile.am
@@ -1,15 +1,11 @@
 uidir = $(pkgdatadir)/ui
 
 dist_ui_DATA = \
-	edit-toolbars-dialog.glade		\
 	mail-summary-popup.glade		\
 	mailbox-properties-dialog.glade		\
-	menus.xml				\
-	properties-dialog.glade			\
-	toolbars.xml
+	properties-dialog.glade
 
 EXTRA_DIST = \
-	edit-toolbars-dialog.gladep		\
 	mail-summary-popup.gladep		\
 	mailbox-properties-dialog.gladep	\
 	properties-dialog.gladep
diff --git a/ui/Makefile.in b/ui/Makefile.in
@@ -42,8 +42,8 @@ DIST_COMMON = $(dist_ui_DATA) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/evolution-plugin.m4 \
-	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/intltool.m4 \
-	$(top_srcdir)/m4/openssl.m4 \
+	$(top_srcdir)/m4/gnome.m4 $(top_srcdir)/m4/idl.m4 \
+	$(top_srcdir)/m4/intltool.m4 $(top_srcdir)/m4/openssl.m4 \
 	$(top_srcdir)/m4/reentrant-resolver.m4 \
 	$(top_srcdir)/m4/sasl2.m4 $(top_srcdir)/acinclude.m4 \
 	$(top_srcdir)/configure.ac
@@ -73,7 +73,7 @@ AUTOCONF = @AUTOCONF@
 AUTOHEADER = @AUTOHEADER@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
-BONOBO_ACTIVATION_IDL = @BONOBO_ACTIVATION_IDL@
+BONOBO_IDLFLAGS = @BONOBO_IDLFLAGS@
 CATALOGS = @CATALOGS@
 CATOBJEXT = @CATOBJEXT@
 CC = @CC@
@@ -105,7 +105,6 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
 GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
 GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
-GLIB_GENMARSHAL = @GLIB_GENMARSHAL@
 GMIME_CFLAGS = @GMIME_CFLAGS@
 GMIME_LIBS = @GMIME_LIBS@
 GMOFILES = @GMOFILES@
@@ -137,6 +136,7 @@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@
 INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@
 INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@
 INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@
+INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@
 INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@
 INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@
 INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@
@@ -147,7 +147,6 @@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@
 INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@
 INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
-LIBBONOBO_IDL = @LIBBONOBO_IDL@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
@@ -242,6 +241,7 @@ 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@
@@ -271,15 +271,11 @@ target_os = @target_os@
 target_vendor = @target_vendor@
 uidir = $(pkgdatadir)/ui
 dist_ui_DATA = \
-	edit-toolbars-dialog.glade		\
 	mail-summary-popup.glade		\
 	mailbox-properties-dialog.glade		\
-	menus.xml				\
-	properties-dialog.glade			\
-	toolbars.xml
+	properties-dialog.glade
 
 EXTRA_DIST = \
-	edit-toolbars-dialog.gladep		\
 	mail-summary-popup.gladep		\
 	mailbox-properties-dialog.gladep	\
 	properties-dialog.gladep
diff --git a/ui/edit-toolbars-dialog.glade b/ui/edit-toolbars-dialog.glade
@@ -1,163 +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="GtkDialog" id="dialog">
-  <property name="border_width">5</property>
-  <property name="title" translatable="yes">Edit Toolbars</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">True</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="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>
-
-	  <child>
-	    <widget class="GtkButton" id="helpbutton1">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-help</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <property name="response_id">-11</property>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="button1">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <property name="response_id">1</property>
-
-	      <child>
-		<widget class="GtkAlignment" id="alignment1">
-		  <property name="visible">True</property>
-		  <property name="xalign">0.5</property>
-		  <property name="yalign">0.5</property>
-		  <property name="xscale">0</property>
-		  <property name="yscale">0</property>
-		  <property name="top_padding">0</property>
-		  <property name="bottom_padding">0</property>
-		  <property name="left_padding">0</property>
-		  <property name="right_padding">0</property>
-
-		  <child>
-		    <widget class="GtkHBox" id="hbox1">
-		      <property name="visible">True</property>
-		      <property name="homogeneous">False</property>
-		      <property name="spacing">2</property>
-
-		      <child>
-			<widget class="GtkImage" id="image1">
-			  <property name="visible">True</property>
-			  <property name="stock">gtk-undo</property>
-			  <property name="icon_size">4</property>
-			  <property name="xalign">0.5</property>
-			  <property name="yalign">0.5</property>
-			  <property name="xpad">0</property>
-			  <property name="ypad">0</property>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">False</property>
-			  <property name="fill">False</property>
-			</packing>
-		      </child>
-
-		      <child>
-			<widget class="GtkLabel" id="label1">
-			  <property name="visible">True</property>
-			  <property name="label" translatable="yes">_Use Default</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>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="button2">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label" translatable="yes">_Add a New Toolbar</property>
-	      <property name="use_underline">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <property name="response_id">2</property>
-	    </widget>
-	  </child>
-
-	  <child>
-	    <widget class="GtkButton" id="button3">
-	      <property name="visible">True</property>
-	      <property name="can_default">True</property>
-	      <property name="can_focus">True</property>
-	      <property name="label">gtk-close</property>
-	      <property name="use_stock">True</property>
-	      <property name="relief">GTK_RELIEF_NORMAL</property>
-	      <property name="focus_on_click">True</property>
-	      <property name="response_id">-7</property>
-	    </widget>
-	  </child>
-	</widget>
-	<packing>
-	  <property name="padding">0</property>
-	  <property name="expand">False</property>
-	  <property name="fill">True</property>
-	  <property name="pack_type">GTK_PACK_END</property>
-	</packing>
-      </child>
-
-      <child>
-	<placeholder/>
-      </child>
-    </widget>
-  </child>
-</widget>
-
-</glade-interface>
diff --git a/ui/edit-toolbars-dialog.gladep b/ui/edit-toolbars-dialog.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 Edit Toolbars Dialog</name>
-  <program_name>mail-notification</program_name>
-  <directory>../</directory>
-  <source_directory>../src</source_directory>
-  <pixmaps_directory>../art</pixmaps_directory>
-  <output_main_file>FALSE</output_main_file>
-  <output_support_files>FALSE</output_support_files>
-  <output_build_files>FALSE</output_build_files>
-  <translatable_strings_file>../</translatable_strings_file>
-</glade-project>
diff --git a/ui/mail-summary-popup.glade b/ui/mail-summary-popup.glade
@@ -17,6 +17,7 @@
   <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">
@@ -26,7 +27,7 @@
       <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="vbox1">
+	<widget class="GtkVBox" id="vbox">
 	  <property name="border_width">12</property>
 	  <property name="visible">True</property>
 	  <property name="homogeneous">False</property>
@@ -56,7 +57,7 @@
 	      <child>
 		<widget class="GtkLabel" id="mn-mail-summary-popup-title">
 		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">&lt;span size=&quot;larger&quot; weight=&quot;bold&quot;&gt;Mail Summary&lt;/span&gt;</property>
+		  <property name="label" translatable="yes"></property>
 		  <property name="use_underline">False</property>
 		  <property name="use_markup">True</property>
 		  <property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -97,19 +98,7 @@
 	  </child>
 
 	  <child>
-	    <widget class="Custom" id="mn-message-view">
-	      <property name="visible">True</property>
-	      <property name="creation_function">mn_mail_summary_popup_message_view_new_cb</property>
-	      <property name="int1">0</property>
-	      <property name="int2">0</property>
-	      <property name="last_modification_time">Sun, 24 Jul 2005 01:51:23 GMT</property>
-	      <signal name="button_press_event" handler="button_press_event_h" last_modification_time="Sun, 24 Jul 2005 01:51:17 GMT"/>
-	    </widget>
-	    <packing>
-	      <property name="padding">0</property>
-	      <property name="expand">False</property>
-	      <property name="fill">False</property>
-	    </packing>
+	    <placeholder/>
 	  </child>
 	</widget>
       </child>
diff --git a/ui/mailbox-properties-dialog.glade b/ui/mailbox-properties-dialog.glade
@@ -18,6 +18,7 @@
   <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">
@@ -55,7 +56,7 @@
 	      <child>
 		<widget class="GtkLabel" id="label2">
 		  <property name="visible">True</property>
-		  <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;General&lt;/span&gt;</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>
@@ -104,7 +105,7 @@
 			  <child>
 			    <widget class="GtkLabel" id="mailbox_type_label">
 			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">Mailbox _type:</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>
@@ -211,7 +212,7 @@
 				<widget class="GtkButton" id="mailbox_name_default_button">
 				  <property name="visible">True</property>
 				  <property name="can_focus">True</property>
-				  <property name="label" translatable="yes">_Use Default</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>
@@ -237,6 +238,167 @@
 			  <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>
diff --git a/ui/menus.xml b/ui/menus.xml
@@ -1,36 +0,0 @@
-<?xml version="1.0"?>
-<ui>
-  <menubar>
-    <menu action="Mail">
-      <menuitem action="MailMailReader"/>
-      <menuitem action="MailUpdate"/>
-      <separator name="MailSep1"/>
-      <menuitem action="MailClose"/>
-      <menuitem action="MailQuit"/>
-    </menu>
-
-    <menu action="Edit">
-      <menuitem action="EditToolbars"/>
-      <menuitem action="EditPreferences"/>
-    </menu>
-
-    <menu action="View">
-      <menuitem action="ViewToolbars"/>
-      <menuitem action="ViewStatusbar"/>
-      <separator name="ViewSep1"/>
-      <menu action="ViewToolbarsStyle">
-	<menuitem action="ViewToolbarsStyleDesktopDefault"/>
-	<separator name="ViewToolbarsStyleSep1"/>
-	<menuitem action="ViewToolbarsStyleIconsOnly"/>
-	<menuitem action="ViewToolbarsStyleTextOnly"/>
-	<menuitem action="ViewToolbarsStyleTextBelowIcons"/>
-	<menuitem action="ViewToolbarsStyleTextBesideIcons"/>
-      </menu>
-    </menu>
-    
-    <menu action="Help">
-      <menuitem action="HelpContents"/>
-      <menuitem action="HelpAbout"/>
-    </menu>
-  </menubar>
-</ui>
diff --git a/ui/properties-dialog.glade b/ui/properties-dialog.glade
@@ -6,7 +6,7 @@
 
 <widget class="GtkDialog" id="dialog">
   <property name="border_width">5</property>
-  <property name="title" translatable="yes">Mail Notification Properties</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>
@@ -18,6 +18,7 @@
   <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">
@@ -66,7 +67,7 @@
 		  <child>
 		    <widget class="GtkLabel" id="label36">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;General&lt;/span&gt;</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>
@@ -107,49 +108,10 @@
 			  <property name="spacing">6</property>
 
 			  <child>
-			    <widget class="GtkCheckButton" id="autostart_check">
+			    <widget class="GtkCheckButton" id="display_seen_mail_check">
 			      <property name="visible">True</property>
 			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Start Mail Notification on GNOME login</property>
-			      <property name="use_underline">True</property>
-			      <property name="relief">GTK_RELIEF_NORMAL</property>
-			      <property name="focus_on_click">True</property>
-			      <property name="active">False</property>
-			      <property name="inconsistent">False</property>
-			      <property name="draw_indicator">True</property>
-			      <signal name="toggled" handler="autostart_toggled_h" last_modification_time="Sat, 23 Jul 2005 21:06:40 GMT"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkCheckButton" id="blink_check">
-			      <property name="visible">True</property>
-			      <property name="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="summary_tooltip_check">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Dis_play mail summary in tooltip</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>
@@ -181,15 +143,15 @@
 	      </child>
 
 	      <child>
-		<widget class="GtkVBox" id="vbox24">
+		<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="label38">
+		    <widget class="GtkLabel" id="label34">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Commands&lt;/span&gt;</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>
@@ -212,7 +174,7 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkAlignment" id="alignment2">
+		    <widget class="GtkAlignment" id="alignment5">
 		      <property name="visible">True</property>
 		      <property name="xalign">0.5</property>
 		      <property name="yalign">0.5</property>
@@ -224,48 +186,105 @@
 		      <property name="right_padding">0</property>
 
 		      <child>
-			<widget class="GtkVBox" id="vbox25">
+			<widget class="GtkVBox" id="vbox21">
 			  <property name="visible">True</property>
 			  <property name="homogeneous">False</property>
 			  <property name="spacing">6</property>
 
 			  <child>
-			    <widget class="GtkHBox" id="hbox33">
+			    <widget class="GtkScrolledWindow" id="scrolled">
 			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">12</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="GtkCheckButton" id="command_mail_reader_check">
+				<widget class="GtkButton" id="button2">
 				  <property name="visible">True</property>
 				  <property name="can_focus">True</property>
-				  <property name="label" translatable="yes">_Mail reader:</property>
-				  <property name="use_underline">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>
-				  <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:24 GMT"/>
+				  <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">False</property>
-				  <property name="fill">False</property>
+				  <property name="expand">True</property>
+				  <property name="fill">True</property>
 				</packing>
 			      </child>
 
 			      <child>
-				<widget class="GtkEntry" id="command_mail_reader_entry">
+				<widget class="GtkButton" id="remove">
 				  <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>
+				  <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>
@@ -276,10 +295,75 @@
 			    </widget>
 			    <packing>
 			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
 			    </packing>
 			  </child>
+			</widget>
+		      </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">
@@ -343,7 +427,7 @@
 				<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="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>
@@ -400,17 +484,53 @@
 		  <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="vbox26">
+		<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="label40">
+		    <widget class="GtkLabel" id="label46">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Double-click Action&lt;/span&gt;</property>
+		      <property name="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>
@@ -433,7 +553,7 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkAlignment" id="alignment3">
+		    <widget class="GtkAlignment" id="alignment11">
 		      <property name="visible">True</property>
 		      <property name="xalign">0.5</property>
 		      <property name="yalign">0.5</property>
@@ -445,43 +565,22 @@
 		      <property name="right_padding">0</property>
 
 		      <child>
-			<widget class="GtkVBox" id="vbox27">
+			<widget class="GtkVBox" id="vbox34">
 			  <property name="visible">True</property>
 			  <property name="homogeneous">False</property>
 			  <property name="spacing">6</property>
 
 			  <child>
-			    <widget class="GtkRadioButton" id="action_main_window_radio">
-			      <property name="visible">True</property>
-			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Display the main window</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:42 GMT"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkRadioButton" id="action_mail_reader_radio">
+			    <widget class="GtkCheckButton" id="icon_blink_check">
 			      <property name="visible">True</property>
 			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Launch the mail reader</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>
-			      <property name="group">action_main_window_radio</property>
 			    </widget>
 			    <packing>
 			      <property name="padding">0</property>
@@ -491,17 +590,16 @@
 			  </child>
 
 			  <child>
-			    <widget class="GtkRadioButton" id="action_update_radio">
+			    <widget class="GtkCheckButton" id="icon_always_display_check">
 			      <property name="visible">True</property>
 			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">_Update the mail status</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>
-			      <property name="group">action_main_window_radio</property>
 			    </widget>
 			    <packing>
 			      <property name="padding">0</property>
@@ -525,53 +623,17 @@
 		  <property name="fill">False</property>
 		</packing>
 	      </child>
-	    </widget>
-	    <packing>
-	      <property name="tab_expand">False</property>
-	      <property name="tab_fill">True</property>
-	    </packing>
-	  </child>
-
-	  <child>
-	    <widget class="GtkLabel" id="label25">
-	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">General</property>
-	      <property name="use_underline">False</property>
-	      <property name="use_markup">False</property>
-	      <property name="justify">GTK_JUSTIFY_LEFT</property>
-	      <property name="wrap">False</property>
-	      <property name="selectable">False</property>
-	      <property name="xalign">0.5</property>
-	      <property name="yalign">0.5</property>
-	      <property name="xpad">0</property>
-	      <property name="ypad">0</property>
-	      <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="vbox13">
-	      <property name="border_width">12</property>
-	      <property name="visible">True</property>
-	      <property name="homogeneous">False</property>
-	      <property name="spacing">18</property>
 
 	      <child>
-		<widget class="GtkVBox" id="vbox19">
+		<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="label32">
+		    <widget class="GtkLabel" id="label47">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;General&lt;/span&gt;</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>
@@ -594,7 +656,7 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkAlignment" id="alignment4">
+		    <widget class="GtkAlignment" id="alignment12">
 		      <property name="visible">True</property>
 		      <property name="xalign">0.5</property>
 		      <property name="yalign">0.5</property>
@@ -606,29 +668,22 @@
 		      <property name="right_padding">0</property>
 
 		      <child>
-			<widget class="GtkHBox" id="hbox11">
+			<widget class="GtkVBox" id="vbox36">
 			  <property name="visible">True</property>
 			  <property name="homogeneous">False</property>
-			  <property name="spacing">12</property>
+			  <property name="spacing">6</property>
 
 			  <child>
-			    <widget class="GtkLabel" id="delay_label">
+			    <widget class="GtkRadioButton" id="icon_tooltip_mail_summary_standard_radio">
 			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">_Delay between mail checks:</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="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>
+			      <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>
@@ -638,103 +693,42 @@
 			  </child>
 
 			  <child>
-			    <widget class="GtkHBox" id="hbox12">
+			    <widget class="GtkRadioButton" id="icon_tooltip_mail_summary_compact_radio">
 			      <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>
-				</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>
-				</widget>
-				<packing>
-				  <property name="padding">0</property>
-				  <property name="expand">False</property>
-				  <property name="fill">False</property>
-				</packing>
-			      </child>
+			      <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="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>
+			  <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">True</property>
-			      <property name="fill">True</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
 			    </packing>
 			  </child>
 			</widget>
@@ -742,8 +736,8 @@
 		    </widget>
 		    <packing>
 		      <property name="padding">0</property>
-		      <property name="expand">False</property>
-		      <property name="fill">False</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
 		    </packing>
 		  </child>
 		</widget>
@@ -755,15 +749,15 @@
 	      </child>
 
 	      <child>
-		<widget class="GtkVBox" id="vbox20">
+		<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="label34">
+		    <widget class="GtkLabel" id="label40">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Mailbox List&lt;/span&gt;</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>
@@ -786,7 +780,7 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkAlignment" id="alignment5">
+		    <widget class="GtkAlignment" id="alignment3">
 		      <property name="visible">True</property>
 		      <property name="xalign">0.5</property>
 		      <property name="yalign">0.5</property>
@@ -798,48 +792,42 @@
 		      <property name="right_padding">0</property>
 
 		      <child>
-			<widget class="GtkVBox" id="vbox21">
+			<widget class="GtkVBox" id="vbox27">
 			  <property name="visible">True</property>
 			  <property name="homogeneous">False</property>
 			  <property name="spacing">6</property>
 
 			  <child>
-			    <widget class="GtkScrolledWindow" id="scrolled">
+			    <widget class="GtkRadioButton" id="icon_action_properties_dialog_radio">
 			      <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>
+			      <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">True</property>
-			      <property name="fill">True</property>
+			      <property name="expand">False</property>
+			      <property name="fill">False</property>
 			    </packing>
 			  </child>
 
 			  <child>
-			    <widget class="GtkLabel" id="selected_label">
+			    <widget class="GtkRadioButton" id="icon_action_mail_reader_radio">
 			      <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>
+			      <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>
@@ -849,61 +837,17 @@
 			  </child>
 
 			  <child>
-			    <widget class="GtkHBox" id="hbox5">
+			    <widget class="GtkRadioButton" id="icon_action_update_radio">
 			      <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>
+			      <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>
@@ -923,8 +867,8 @@
 		</widget>
 		<packing>
 		  <property name="padding">0</property>
-		  <property name="expand">True</property>
-		  <property name="fill">True</property>
+		  <property name="expand">False</property>
+		  <property name="fill">False</property>
 		</packing>
 	      </child>
 	    </widget>
@@ -935,9 +879,9 @@
 	  </child>
 
 	  <child>
-	    <widget class="GtkLabel" id="label26">
+	    <widget class="GtkLabel" id="label45">
 	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Mailboxes</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>
@@ -973,7 +917,7 @@
 		  <child>
 		    <widget class="GtkLabel" id="label28">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;General&lt;/span&gt;</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>
@@ -1171,7 +1115,7 @@
 			    <widget class="GtkCheckButton" id="summary_only_recent_check">
 			      <property name="visible">True</property>
 			      <property name="can_focus">True</property>
-			      <property name="label" translatable="yes">Only display _recent mail</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>
@@ -1209,9 +1153,9 @@
 		  <property name="spacing">6</property>
 
 		  <child>
-		    <widget class="GtkLabel" id="label30">
+		    <widget class="GtkLabel" id="summary_position_section_label">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Position&lt;/span&gt;</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>
@@ -1312,7 +1256,7 @@
 			      <child>
 				<widget class="GtkLabel" id="summary_horizontal_offset_label">
 				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">_Horizontal offset:</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>
@@ -1512,15 +1456,119 @@
 	      </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="label42">
+		    <widget class="GtkLabel" id="summary_fonts_section_label">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">&lt;span weight=&quot;bold&quot;&gt;Fonts&lt;/span&gt;</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>
@@ -1808,7 +1856,7 @@
 			      <child>
 				<widget class="GtkLabel" id="label43">
 				  <property name="visible">True</property>
-				  <property name="label" translatable="yes">_Display a Test Popup</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>
@@ -1857,7 +1905,7 @@
 	  <child>
 	    <widget class="GtkLabel" id="label27">
 	      <property name="visible">True</property>
-	      <property name="label" translatable="yes">Mail Summary Popup</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>
diff --git a/ui/toolbars.xml b/ui/toolbars.xml
@@ -1,16 +0,0 @@
-<?xml version="1.0"?>
-<toolbars version="1.0">
-  <available>
-    <toolitem name="MailMailReader"/>
-    <toolitem name="MailUpdate"/>
-
-    <toolitem name="EditPreferences"/>
-  </available>
-
-  <toolbar name="DefaultToolbar">
-    <toolitem name="MailMailReader"/>
-    <toolitem name="MailUpdate"/>
-    <separator/>
-    <toolitem name="EditPreferences"/>
-  </toolbar>
-</toolbars>