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 cf18f5212d91fbc0ca7fa1acdbbf9fd2c3b27f5b
parent 68c8cc25a375ad1bb4632765e1a1f950b86b3263
Author: Jean-Yves Lefort <jylefort@brutele.be>
Date:   Thu, 22 Jul 2004 06:09:58 +1000

mail-notification-0.5.0

* Added Gmail support (requires libsoup)
* The user interface has been improved
* Now supports IPv6 POP3 servers even if given as an IPv6
  address rather than as a hostname
* Now uses intltool
* The manual has been improved
* Added Russian translations for the .desktop file (submitted
  by Dan Korostelev)
* The output of ./configure has been cleaned up
* ChangeLog files were not being accurately maintained and are
  not shipped anymore

Diffstat:
MAUTHORS | 1+
DChangeLog | 1436-------------------------------------------------------------------------------
MINSTALL | 8++++++--
MMakefile.am | 12+++++++++++-
MMakefile.in | 52+++++++++++++++++++++++++++++++++++++++++++++-------
MNEWS | 14++++++++++++++
MREADME | 33+++++----------------------------
MTODO | 2+-
Maclocal.m4 | 307+++++++++++++++++++++++++++++++++----------------------------------------------
Mart/Makefile.am | 1+
Mart/Makefile.in | 29++++++++++++++++++++++++++++-
Aart/gmail.png | 0
Mconfig.h.in | 8++++----
Mconfigure | 650+++++++++++++++++++++++++++++++++++++++++++++++--------------------------------
Mconfigure.ac | 40+++++++++++++++++++++++++++-------------
Mdata/Makefile.am | 28++++++++++------------------
Mdata/Makefile.in | 113+++++++++++++++++++++++++++++++++++++++++++++----------------------------------
Ddata/mail-notification.desktop | 12------------
Adata/mail-notification.desktop.in | 9+++++++++
Rdata/mail-notification.schemas -> data/mail-notification.schemas.in | 0
Mhelp/C/Makefile.am | 1+
Mhelp/C/Makefile.in | 29++++++++++++++++++++++++++++-
Mhelp/C/mail-notification-C.omf | 4++--
Mhelp/C/mail-notification.xml | 273+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
Mhelp/Makefile.in | 32+++++++++++++++++++++++++++++---
Aintltool-extract.in | 472+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aintltool-merge.in | 1255+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aintltool-update.in | 1026+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mm4/Makefile.in | 28+++++++++++++++++++++++++++-
Dpo/ChangeLog | 106-------------------------------------------------------------------------------
Mpo/Makefile.in.in | 50+++++++++++++++++++++++++++++---------------------
Mpo/POTFILES.in | 17+++++++----------
Mpo/fr.gmo | 0
Mpo/fr.po | 454++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------
Mpo/mail-notification.pot | 380+++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------
Apo/ru.gmo | 0
Apo/ru.po | 635+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/Makefile.am | 12++++++++++--
Msrc/Makefile.in | 51++++++++++++++++++++++++++++++++++++++++++++-------
Asrc/mn-gmail-mailbox.c | 399+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-gmail-mailbox.h | 48++++++++++++++++++++++++++++++++++++++++++++++++
Msrc/mn-mailbox-properties-dialog.c | 430++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------
Msrc/mn-mailbox.c | 8+++++++-
Msrc/mn-pop3-mailbox.c | 23+++++++++++++++++------
Msrc/mn-preferences.c | 61+++++++++++++++++++++++++++++++++++++------------------------
Asrc/mn-soup.c | 182+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Asrc/mn-soup.h | 25+++++++++++++++++++++++++
Msrc/mn-stock.c | 5++++-
Msrc/mn-stock.h | 1+
Msrc/mn-ui.c | 149+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/mn-uri.c | 163+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
Msrc/mn-uri.h | 5+++++
Msrc/mn-util.c | 3+++
Mui/Makefile.am | 8+-------
Mui/Makefile.in | 36++++++++++++++++++++++++++++--------
Dui/dialog-strings.c | 6------
Mui/dialog.gladep | 1-
Dui/mailbox-properties-strings.c | 25-------------------------
Mui/mailbox-properties.glade | 715+++++++++++++++++++++++++++++++++++++++++++------------------------------------
Mui/mailbox-properties.gladep | 1-
Dui/menu-strings.c | 10----------
Mui/menu.gladep | 1-
Dui/preferences-strings.c | 28----------------------------
Mui/preferences.gladep | 1-
64 files changed, 6805 insertions(+), 3109 deletions(-)
diff --git a/AUTHORS b/AUTHORS
@@ -8,6 +8,7 @@ copyright holder for all the files in the distribution, except:
 	* files saying otherwise in their top notice
 
 	* art/about-icon.png
+	  art/gmail.png
 	  art/logo.png
 	  art/mail-notification.png
 	  art/mail.png
diff --git a/ChangeLog b/ChangeLog
@@ -1,1436 +0,0 @@
-2004-06-29 18:36  jylefort
-
-	* configure.ac: Version 0.4.0
-
-2004-06-29 18:31  jylefort
-
-	* configure.ac: Updated list of headers and functions
-
-2004-06-29 17:46  jylefort
-
-	* ui/menu.glade: Fix
-
-2004-06-29 16:55  jylefort
-
-	* data/mail-notification.schemas: Updated
-
-2004-06-29 02:14  jylefort
-
-	* src/: mn-dialog.c, mn-dialog.h, mn-mailbox.c, mn-preferences.c,
-	  mn-ui.c, mn-util.c: Fixes
-
-2004-06-29 01:57  jylefort
-
-	* help/xmldocs.make, src/mn-preferences.c, src/mn-ui.c,
-	  src/mn-util.c, src/mn-util.h, ui/menu.glade,
-	  ui/preferences.glade: Added help ui knobs
-
-2004-06-29 01:28  jylefort
-
-	* Makefile.am, configure.ac, help/.cvsignore, help/Makefile.am,
-	  help/omf.make, help/xmldocs.make, help/C/.cvsignore,
-	  help/C/Makefile.am, help/C/documentation-license.xml,
-	  help/C/mail-notification-C.omf, help/C/mail-notification.xml,
-	  help/C/software-license.xml, help/C/figures/mail-error.png,
-	  help/C/figures/mail.png, help/C/figures/no-mail-error.png,
-	  help/C/figures/no-mail.png: Added a DocBook manual
-
-2004-06-27 14:37  jylefort
-
-	* src/: mn-preferences.c, mn-util.c, mn-util.h: Do not use a custom
-	  search function anymore for the mailbox list; cleanups
-
-2004-06-27 14:30  jylefort
-
-	* src/mn-mailbox-properties-dialog.c, src/mn-uri.c,
-	  ui/mailbox-properties.glade: Do not treat UNIX mailbox specially
-	  anymore
-
-2004-06-15 16:50  jylefort
-
-	* src/mn-preferences.c, ui/preferences.glade: Now autoscrolls the
-	  mailboxes list during a drag motion
-
-2004-06-15 15:08  jylefort
-
-	* src/mn-mailboxes.c: Fix
-
-2004-06-15 15:01  jylefort
-
-	* configure.ac, src/Makefile.am, src/mail-notification.c,
-	  src/mn-main.c: Cleanups
-
-2004-06-15 14:50  jylefort
-
-	* src/mn-mailboxes.c: Fix
-
-2004-06-15 14:44  jylefort
-
-	* src/: mn-conf.c, mn-mailbox.c, mn-preferences.c: Cleanups
-
-2004-06-15 14:39  jylefort
-
-	* src/: mn-mailboxes.c, mn-preferences.c: Fixes
-
-2004-06-15 03:15  jylefort
-
-	* src/: mn-mailbox.h, mn-pending-mailbox.c, mn-preferences.c,
-	  mn-unsupported-mailbox.c: Cleanups
-
-2004-06-15 02:19  jylefort
-
-	* src/mn-mbox-mailbox.c: Fix
-
-2004-06-15 02:09  jylefort
-
-	* src/: Makefile.am, mn-conf.c, mn-mailbox.c, mn-mailbox.h,
-	  mn-mailboxes.c, mn-maildir-mailbox.c, mn-mbox-mailbox.c,
-	  mn-mh-mailbox.c, mn-pending-mailbox.c, mn-pending-mailbox.h,
-	  mn-pop3-mailbox.c, mn-preferences.c, mn-sylpheed-mailbox.c,
-	  mn-vfs.c, mn-vfs.h: Implemented asynchronous format detection
-
-2004-06-14 21:49  jylefort
-
-	* src/mn-util.c: Added text/x-moz-url dnd support
-
-2004-06-13 17:00  jylefort
-
-	* src/mn-preferences.c, ui/preferences.glade: Fixes
-
-2004-06-13 16:43  jylefort
-
-	* src/mn-preferences.c, src/mn-util.c, src/mn-util.h,
-	  ui/preferences.glade: Can now cut/copy/paste files between
-	  Nautilus and Mail Notification (uses
-	  x-special/gnome-copied-files)
-
-2004-06-12 20:09  jylefort
-
-	* src/mn-preferences.c, ui/preferences.glade: Use the scrolled
-	  window as drop target
-
-2004-06-09 23:40  jylefort
-
-	* src/: mn-mailbox.c, mn-mailbox.h, mn-mailboxes.c, mn-ui.c,
-	  mn-unsupported-mailbox.c, mn-unsupported-mailbox.h: Fixes
-
-2004-06-09 15:11  jylefort
-
-	* src/mn-preferences.c: Fixes
-
-2004-06-09 15:09  jylefort
-
-	* src/mn-preferences.c: Fix
-
-2004-06-09 15:04  jylefort
-
-	* ui/preferences.glade: Fixes
-
-2004-06-09 15:01  jylefort
-
-	* src/: mn-mbox-mailbox.c, mn-mh-mailbox.c, mn-vfs.c: Fixes
-
-2004-06-09 14:55  jylefort
-
-	* src/mn-vfs.c: Cleanups
-
-2004-06-08 20:50  jylefort
-
-	* ui/dialog.glade: Label is now selectable
-
-2004-06-08 20:47  jylefort
-
-	* src/mn-mailbox.c: Warn if we can't monitor a file
-
-2004-06-08 20:12  jylefort
-
-	* src/mn-pop3-mailbox.c: Fixes
-
-2004-06-08 18:32  jylefort
-
-	* src/: mn-conf.c, mn-conf.h, mn-mailbox-properties-dialog.c: Fixes
-
-2004-06-08 17:35  jylefort
-
-	* src/mn-pop3-mailbox.c: Fixes
-
-2004-06-08 17:31  jylefort
-
-	* src/: mn-preferences.c, mn-uri.c, mn-uri.h: Fixes
-
-2004-06-08 17:07  jylefort
-
-	* src/: mn-maildir-mailbox.c, mn-mh-mailbox.c,
-	  mn-sylpheed-mailbox.c, mn-vfs.c, mn-vfs.h: Fixes
-
-2004-06-08 16:17  jylefort
-
-	* src/mn-mailbox-properties-dialog.c: Fixes
-
-2004-06-08 00:15  jylefort
-
-	* art/local.png, art/remote.png, src/mn-preferences.c,
-	  src/mn-stock.c: Now uses the icon theme for some stock icons
-
-2004-06-07 19:36  jylefort
-
-	* src/mn-uri.c: Fixes
-
-2004-06-07 19:33  jylefort
-
-	* src/mn-uri.c: Fixes
-
-2004-06-07 19:24  jylefort
-
-	* src/mn-mailbox-properties-dialog.c: Fixes
-
-2004-06-07 19:17  jylefort
-
-	* src/: mn-mailbox-properties-dialog.c,
-	  mn-mailbox-properties-dialog.h, mn-preferences.c, mn-uri.c,
-	  mn-uri.h: Fixes
-
-2004-06-07 18:50  jylefort
-
-	* src/mn-mailbox-properties-dialog.c,
-	  src/mn-mailbox-properties-dialog.h, src/mn-preferences.c,
-	  ui/mailbox-properties.glade: Fixes
-
-2004-06-07 15:09  jylefort
-
-	* src/mn-mailbox-properties-dialog.c, ui/mailbox-properties.glade:
-	  Cleanups
-
-2004-06-06 20:25  jylefort
-
-	* src/: mn-conf.c, mn-conf.h, mn-mailbox-properties-dialog.c,
-	  mn-preferences.c: Fixes
-
-2004-06-06 19:12  jylefort
-
-	* src/: mn-conf.c, mn-mail-icon.c, mn-preferences.c, mn-util.c,
-	  mn-util.h: Can now drop URIs onto the mail icon or the mailboxes
-	  list
-
-2004-06-06 17:49  jylefort
-
-	* src/: Makefile.am, mn-conf.c, mn-mailbox-properties-dialog.c,
-	  mn-mailbox.c, mn-mailboxes.c, mn-pop3-mailbox.c, mn-uri.c,
-	  mn-uri.h, mn-util.c, mn-util.h: Cleanups
-
-2004-06-06 17:38  jylefort
-
-	* src/: mn-mailbox-properties-dialog.c, mn-mailbox.c, mn-mailbox.h:
-	  Cleanups
-
-2004-06-06 15:01  jylefort
-
-	* src/: mn-mailbox-properties-dialog.c,
-	  mn-mailbox-properties-dialog.h, mn-preferences.c: Cleanups
-
-2004-06-06 14:30  jylefort
-
-	* src/: mn-mailbox-properties-dialog.c,
-	  mn-mailbox-properties-dialog.h, mn-mailbox.c, mn-preferences.c,
-	  mn-util.c, mn-util.h: Fixes
-
-2004-06-06 14:12  jylefort
-
-	* src/mn-mailbox-properties-dialog.c,
-	  src/mn-mailbox-properties-dialog.h, src/mn-mailbox.c,
-	  src/mn-util.c, src/mn-util.h, ui/mailbox-properties.glade: The
-	  system UNIX mailbox is now handled specially
-
-2004-06-06 03:30  jylefort
-
-	* src/: mn-mailbox.c, mn-mailboxes.c, mn-ui.c: Fixes
-
-2004-06-06 03:21  jylefort
-
-	* src/mn-preferences.c: Fixes
-
-2004-06-06 02:36  jylefort
-
-	* src/Makefile.am, src/mn-conf.c, src/mn-conf.h,
-	  src/mn-mailbox-properties-dialog.c,
-	  src/mn-mailbox-properties-dialog.h, src/mn-mailboxes.c,
-	  src/mn-preferences.c, ui/Makefile.am, ui/add-mailbox.glade,
-	  ui/add-mailbox.gladep, ui/dialog.glade,
-	  ui/mailbox-properties.glade, ui/mailbox-properties.gladep,
-	  ui/preferences.glade: Can now edit mailbox properties
-
-2004-06-05 16:54  jylefort
-
-	* src/mn-vfs.c: Fix
-
-2004-06-05 16:37  jylefort
-
-	* src/mn-maildir-mailbox.c: Fixes
-
-2004-06-05 16:19  jylefort
-
-	* src/: mn-preferences.c, mn-ui.c: Cleanups
-
-2004-06-05 16:18  jylefort
-
-	* src/: mn-mailboxes.c, mn-mailboxes.h, mn-ui.c, mn-ui.h: Fixes
-
-2004-06-05 16:08  jylefort
-
-	* src/: mn-mailbox.c, mn-mailbox.h, mn-mailboxes.c,
-	  mn-maildir-mailbox.c, mn-mbox-mailbox.c, mn-mh-mailbox.c,
-	  mn-pop3-mailbox.c, mn-sylpheed-mailbox.c, mn-sylpheed-mailbox.h,
-	  mail-notification.c, mn-conf.c, mn-mailboxes.h: Cleanups
-
-2004-06-05 15:41  jylefort
-
-	* src/: mn-mailbox.c, mn-mailbox.h, mn-sylpheed-mailbox.c: Cleanups
-
-2004-06-05 15:16  jylefort
-
-	* src/: mn-conf.c, mn-conf.h, mn-preferences.c: Fixes
-
-2004-06-05 15:02  jylefort
-
-	* src/: mn-preferences.c, mn-util.c, mn-util.h: Fixes
-
-2004-06-05 14:55  jylefort
-
-	* src/mn-conf.h, src/mn-preferences.c, ui/add-mailbox.glade: Now
-	  uses a location entry
-
-2004-06-05 14:33  jylefort
-
-	* src/mn-mailbox.c: Fixes
-
-2004-06-05 03:02  jylefort
-
-	* src/: mn-conf.c, mn-mailboxes.c, mn-preferences.c, mn-util.c,
-	  mn-util.h: Now compares canonicalized URIs
-
-2004-06-05 02:39  jylefort
-
-	* src/mn-conf.c: Fix
-
-2004-06-05 02:30  jylefort
-
-	* src/: mn-mailboxes.c, mn-mailboxes.h, mn-preferences.c: Now
-	  refuses to add the same mailbox twice
-
-2004-06-05 02:04  jylefort
-
-	* src/mn-mailbox.c: Fixes
-
-2004-06-05 01:53  jylefort
-
-	* src/mn-preferences.c, ui/add-mailbox.glade: The GtkFileChooser
-	  now uses the gnome-vfs backend
-
-2004-06-05 01:13  jylefort
-
-	* src/mn-pop3-mailbox.c: Fix
-
-2004-06-05 01:07  jylefort
-
-	* src/: mn-mh-mailbox.c, mn-mh-mailbox.h: Reimplemented
-
-2004-06-05 00:29  jylefort
-
-	* src/mn-mbox-mailbox.c: Cleanups
-
-2004-06-05 00:14  jylefort
-
-	* src/: Makefile.am, mn-mbox-mailbox.c, mn-mbox-mailbox.h,
-	  mn-vfs.c, mn-vfs.h: Reimplemented mbox support
-
-2004-06-04 13:58  jylefort
-
-	* src/: mn-conf.c, mn-conf.h, mn-preferences.c: Now remember window
-	  dimensions
-
-2004-06-04 13:40  jylefort
-
-	* src/mn-preferences.c: Set a default size for the preferences
-	  dialog
-
-2004-06-04 13:37  jylefort
-
-	* src/mn-preferences.c, ui/preferences.glade: HIG fixes: added a
-	  label displaying the number of mailboxes selected
-
-2004-06-04 13:27  jylefort
-
-	* ui/add-mailbox.glade: HIG fixes
-
-2004-06-04 13:24  jylefort
-
-	* ui/preferences.glade: HIG fixes
-
-2004-06-04 03:37  jylefort
-
-	* src/mn-pop3-mailbox.c: Cleanups
-
-2004-06-04 02:55  jylefort
-
-	* src/mn-sylpheed-mailbox.c: Fixes
-
-2004-06-04 02:32  jylefort
-
-	* src/mn-sylpheed-mailbox.c: Is now asynchronous
-
-2004-06-04 01:51  jylefort
-
-	* src/: mn-maildir-mailbox.c, mn-maildir-mailbox.h: Converted to
-	  monitor
-
-2004-06-04 01:51  jylefort
-
-	* src/mn-sylpheed-mailbox.c: Cleanups
-
-2004-06-03 23:07  jylefort
-
-	* src/mn-sylpheed-mailbox.c: Fixes
-
-2004-06-03 23:00  jylefort
-
-	* src/mn-sylpheed-mailbox.c: Fixes
-
-2004-06-03 22:51  jylefort
-
-	* src/mn-pop3-mailbox.c: Fixes
-
-2004-06-03 22:07  jylefort
-
-	* src/mn-ui.c: Cleanups
-
-2004-06-03 21:30  jylefort
-
-	* src/: mn-mailbox.c, mn-pop3-mailbox.c, mn-unsupported-mailbox.c:
-	  Cleanups
-
-2004-06-03 21:15  jylefort
-
-	* acinclude.m4, configure.ac, art/Makefile.am, art/mail-error.png,
-	  art/no-mail-error.png, src/Makefile.am, src/mail-notification.c,
-	  src/mn-check.c, src/mn-check.h, src/mn-conf.c,
-	  src/mn-mail-icon.c, src/mn-mail-icon.h, src/mn-mailbox.c,
-	  src/mn-mailbox.h, src/mn-mailboxes.c, src/mn-mailboxes.h,
-	  src/mn-pop3-mailbox.c, src/mn-pop3-mailbox.h,
-	  src/mn-preferences.c, src/mn-stock.c, src/mn-stock.h,
-	  src/mn-sylpheed-mailbox.c, src/mn-sylpheed-mailbox.h,
-	  src/mn-ui.c, src/mn-ui.h, src/mn-unsupported-mailbox.c,
-	  ui/preferences.glade: Local mailboxes now use GnomeVFS monitors
-	  instead of being explicitly checked; we don't use multi-threading
-	  anymore (the POP3 code achieves asynchronousness by using the
-	  appropriate GNet API)
-
-2004-06-02 14:53  jylefort
-
-	* src/: mail-notification.c, mn-check.c, mn-check.h: Fixes
-
-2004-06-01 18:07  jylefort
-
-	* src/: mn-pop3-mailbox.c, mn-pop3-mailbox.h: Cleanups
-
-2004-06-01 17:36  jylefort
-
-	* src/: mn-pop3-mailbox.c, mn-pop3-mailbox.h: Do not overwrite a
-	  previously set GError; was reading only 511 bytes rather than
-	  512: fixed; cleanups
-
-2004-06-01 16:22  jylefort
-
-	* src/: mn-conf.c, mn-mailboxes.c, mn-util.c: Fixes
-
-2004-06-01 15:44  jylefort
-
-	* src/: mn-pop3-mailbox.c, mn-unsupported-mailbox.c, mn-util.c,
-	  mn-util.h: POP3 passwords are now hidden from the mailbox list
-	  even if POP3 support is not compiled in
-
-2004-06-01 14:56  jylefort
-
-	* src/: mail-notification.c, mn-check.c, mn-conf.c, mn-conf.h,
-	  mn-mailbox.c, mn-mailbox.h, mn-mailboxes.c, mn-maildir-mailbox.c,
-	  mn-mbox-mailbox.c, mn-mh-mailbox.c, mn-pop3-mailbox.c,
-	  mn-pop3-mailbox.h, mn-preferences.c, mn-sylpheed-mailbox.c,
-	  mn-unsupported-mailbox.c: Now handles non-Unicode filenames; now
-	  uses standard URIs instead of locators; cleanups
-
-2004-05-31 16:41  jylefort
-
-	* src/: mn-conf.c, mn-conf.h, mn-preferences.c, mn-preferences.h:
-	  Cleanups
-
-2004-05-30 19:31  jylefort
-
-	* src/mn-pop3-mailbox.c: Do not include port number in mailbox name
-
-2004-05-30 19:28  jylefort
-
-	* art/Makefile.am, art/local.png, art/remote.png,
-	  art/unsupported.png, src/Makefile.am, src/mail-notification.c,
-	  src/mn-mail-icon.c, src/mn-preferences.c, src/mn-stock.c,
-	  src/mn-stock.h: Added format icons (local/remote/unsupported) in
-	  the mailbox list; cleanups
-
-2004-05-30 17:52  jylefort
-
-	* src/mn-preferences.c: Fix
-
-2004-05-30 17:50  jylefort
-
-	* src/: mn-dialog.c, mn-preferences.c, mn-ui.c, mn-util.c,
-	  mn-util.h: Cleanups
-
-2004-05-30 17:33  jylefort
-
-	* src/: mn-mail-icon.c, mn-ui.c: Fixes
-
-2004-05-30 14:46  jylefort
-
-	* src/mn-util.c: mn_glade_xml_new(): better error handling
-
-2004-05-30 14:29  jylefort
-
-	* src/: mn-dialog.c, mn-preferences.c, mn-ui.c, mn-util.c,
-	  mn-util.h: Cleanups
-
-2004-05-30 14:08  jylefort
-
-	* src/mn-preferences.c: Fixed a memory leak
-
-2004-05-30 13:23  jylefort
-
-	* data/mail-notification.schemas, src/mn-preferences.c,
-	  ui/preferences.glade: Wording precisions
-
-2004-05-30 12:58  jylefort
-
-	* src/: mail-notification.c, mn-mailbox.c, mn-mailbox.h: Cleanups;
-	  reduced memory usage (unused mailbox format handlers are now
-	  unreferenced)
-
-2004-05-30 12:30  jylefort
-
-	* src/mn-mailbox.c: Cleanup
-
-2004-05-30 12:21  jylefort
-
-	* src/mail-notification.c: Fixed a --list-handlers bug
-
-2004-05-29 20:23  jylefort
-
-	* src/mn-check.c: Fixed a thread-safety bug
-
-2004-05-29 19:54  jylefort
-
-	* src/: mail-notification.c, mn-check.c, mn-check.h, mn-ui.c:
-	  Cleanups
-
-2004-05-29 19:00  jylefort
-
-	* src/: mail-notification.c, mn-check.c, mn-check.h, mn-ui.c:
-	  Cleanups: removed check flags and interactive mode
-
-2004-05-29 18:46  jylefort
-
-	* configure.ac, src/Makefile.am, src/mail-notification.c,
-	  src/mn-check.c, src/mn-conf.c, src/mn-dialog.c, src/mn-dialog.h,
-	  src/mn-mailboxes.c, src/mn-pop3-mailbox.c, src/mn-settings.c,
-	  src/mn-settings.h, src/mn-util.c, src/mn-util.h: --enable-debug
-	  renamed to --enable-info; we now use GLib message logging
-
-2004-05-29 15:57  jylefort
-
-	* src/mn-preferences.c: Fixed two memory leaks
-
-2004-05-29 15:51  jylefort
-
-	* src/: mn-mailboxes.c, mn-preferences.c: Fixed a memory leak;
-	  cleanups
-
-2004-05-28 14:58  jylefort
-
-	* src/mn-preferences.c, ui/add-mailbox.glade: Fixes
-
-2004-05-28 14:48  jylefort
-
-	* src/mn-preferences.c: Cleanups
-
-2004-05-28 14:43  jylefort
-
-	* src/mn-preferences.c, ui/add-mailbox.glade: Cleanups
-
-2004-05-28 14:35  jylefort
-
-	* src/mn-preferences.c, ui/add-mailbox.glade: HIG fixes
-
-2004-05-28 14:21  jylefort
-
-	* src/: eggtrayicon.c, mn-check.c, mn-dialog.c, mn-mail-icon.c,
-	  mn-mailbox.c, mn-mailbox.h, mn-mailboxes.c, mn-maildir-mailbox.c,
-	  mn-maildir-mailbox.h, mn-mbox-mailbox.c, mn-mbox-mailbox.h,
-	  mn-mh-mailbox.c, mn-mh-mailbox.h, mn-pop3-mailbox.c,
-	  mn-pop3-mailbox.h, mn-preferences.c, mn-sylpheed-mailbox.c,
-	  mn-sylpheed-mailbox.h, mn-ui.h, mn-unsupported-mailbox.c,
-	  mn-unsupported-mailbox.h, mn-util.c, mn-util.h: Now uses
-	  glib/gi18n-lib.h instead of libgnome/gnome-i18n.h; cleanups
-
-2004-05-28 14:12  jylefort
-
-	* configure.ac, src/mn-preferences.c, src/mn-util.c, src/mn-util.h,
-	  ui/Makefile.am, ui/add-mailbox.glade, ui/add-mailbox.gladep,
-	  ui/add-pop3.glade, ui/add-pop3.gladep, ui/preferences.glade: The
-	  add mailbox dialogs have been unified; GTK+ 2.4.0 is now required
-
-2004-05-27 20:06  jylefort
-
-	* src/: mn-check.c, mn-ui.c, mn-ui.h: GTK+ does not handle
-	  correctly changing an item sensitivity while its parent menu is
-	  popped up: do not set sensitivity of Update item anymore
-
-2004-05-27 20:02  jylefort
-
-	* src/mn-ui.c, ui/menu.glade: The "Check for Mail" menuitem has
-	  been renamed to "Update"
-
-2004-05-27 19:56  jylefort
-
-	* src/mn-ui.c: Now uses the Unicode copyright sign
-
-2004-05-27 19:10  jylefort
-
-	* src/mn-check.h: Cleanup
-
-2004-05-27 18:08  jylefort
-
-	* src/: mn-preferences.c, mn-util.c, mn-util.h: Added
-	  mn_file_chooser_dialog_allow_select_folder(), allowing to select
-	  a folder when the chooser action is GTK_FILE_CHOOSER_ACTION_OPEN
-
-2004-05-27 16:24  jylefort
-
-	* src/mn-mbox-mailbox.c: A mbox mailbox is now defined as being a
-	  regular file of size 0 or whose first line starts with "From "
-
-2004-05-27 16:23  jylefort
-
-	* src/: mn-check.c, mn-mailboxes.c: mn_error_dialog() does not
-	  accept markup anymore
-
-2004-05-27 13:51  jylefort
-
-	* configure.ac, src/Makefile.am, src/mail-notification.c,
-	  src/mn-check.c, src/mn-conf.c, src/mn-conf.h, src/mn-mailboxes.c,
-	  src/mn-preferences.c, src/mn-ui.c: Cleanups: now uses libeel
-	  instead of reinventing the wheel
-
-2004-05-27 01:44  jylefort
-
-	* src/mn-preferences.c, ui/preferences.glade: Added a mailbox popup
-	  menu
-
-2004-05-27 01:22  jylefort
-
-	* src/: mn-check.c, mn-preferences.c, mn-ui.c: Fixed several
-	  GConf-related memory leaks
-
-2004-05-27 01:18  jylefort
-
-	* src/: mail-notification.c, mn-check.c, mn-conf.c, mn-conf.h,
-	  mn-mailboxes.c, mn-preferences.c, mn-ui.c: Cleanups
-
-2004-05-27 01:04  jylefort
-
-	* src/: mn-conf.c, mn-conf.h, mn-preferences.c: Cleanups
-
-2004-05-26 21:38  jylefort
-
-	* src/mn-dialog.c: Properly escapes text inside markup
-
-2004-05-26 21:25  jylefort
-
-	* src/mn-mailbox.c: Fix
-
-2004-05-26 20:53  jylefort
-
-	* configure.ac, src/mn-preferences.c: If GTK+ version 2.4.0 or
-	  superior is available, uses GtkFileChooser
-
-2004-05-26 20:05  jylefort
-
-	* src/mn-conf.c: Improved error messages
-
-2004-05-26 20:02  jylefort
-
-	* Makefile.am, acinclude.m4, autogen.sh, autotools.conf, c,
-	  configure.ac, m4/pkg.m4: Switched to Autoconf 2.59 and Automake
-	  1.8.3
-
-2004-03-19 14:20  jylefort
-
-	* configure.ac: Version 0.3.4
-
-2004-03-18 13:17  jylefort
-
-	* configure.ac: Added function checks; updated header checks
-
-2004-03-18 12:28  jylefort
-
-	* ui/: add-pop3.glade, preferences.glade: Added tooltips
-
-2004-03-18 12:15  jylefort
-
-	* src/: mn-preferences.c, mn-util.c, mn-util.h: The mailboxes list
-	  interactive search now searches all columns
-
-2004-03-18 11:18  jylefort
-
-	* src/mn-preferences.c, ui/add-pop3.glade: The port widget of the
-	  POP3 dialog is now a spin button
-
-2004-03-18 11:02  jylefort
-
-	* src/mn-check.c: Fixed a bug that caused local mail to be checked
-	  even when "Check for local mail" was disabled
-
-2004-03-12 13:57  jylefort
-
-	* configure.ac: Version 0.3.3
-
-2004-03-12 13:44  jylefort
-
-	* src/mn-ui.c: Updated copyright date
-
-2004-03-12 13:35  jylefort
-
-	* art/Makefile.am, art/add-icon.png, src/mn-preferences.c,
-	  ui/add-pop3.glade: Add dialogs are now transient
-
-2004-03-12 13:25  jylefort
-
-	* src/: mn-check.c, mn-mail-icon.c, mn-mail-icon.h,
-	  mn-preferences.c, mn-ui.c: Cleanups
-
-2004-03-12 12:23  jylefort
-
-	* src/: mn-check.c, mn-mailboxes.c, mn-mailboxes.h,
-	  mn-preferences.c, mn-util.c, mn-util.h: The mailbox list is now
-	  thread-safe; fixed a memory leak in the preferences code
-
-2004-03-12 11:52  jylefort
-
-	* src/mn-mail-icon.c: Do not update the sensitivity of the "Check
-	  for Mail" item while the menu is popped up (looked bad)
-
-2004-03-12 10:40  jylefort
-
-	* src/mn-check.c: Calls gdk_flush() before GDK_THREADS_LEAVE(), as
-	  recommended by the GDK documentation
-
-2004-03-12 10:32  jylefort
-
-	* src/mn-mbox-mailbox.c: A logic bug caused new mail to be
-	  immediately forgotten at the next check: fixed (reported by Pau
-	  Artigas)
-
-2004-03-12 10:23  jylefort
-
-	* src/mn-mailbox.c: Type isn't instantiatable, so we use
-	  G_TYPE_FLAG_ABSTRACT
-
-2004-03-12 10:21  jylefort
-
-	* src/: mn-mbox-mailbox.c, mn-mh-mailbox.c: GIOChannel objects were
-	  not unreferenced after being shutdown, resulting in memory leaks:
-	  fixed
-
-2004-03-12 10:15  jylefort
-
-	* src/mn-unsupported-mailbox.c: Cleanups
-
-2004-03-12 10:12  jylefort
-
-	* src/: mn-pop3-mailbox.c, mn-pop3-mailbox.h: Cleanups
-
-2004-03-12 09:57  jylefort
-
-	* src/: mn-mbox-mailbox.c, mn-mbox-mailbox.h, mn-mh-mailbox.c:
-	  Cleanups
-
-2004-03-12 09:51  jylefort
-
-	* src/mn-maildir-mailbox.c: Cleanups
-
-2004-03-12 09:41  jylefort
-
-	* src/: mn-mailbox.c, mn-mailbox.h: Cleanups
-
-2004-03-12 09:37  jylefort
-
-	* src/: mn-check.h, mn-mail-icon.c: Cleanups
-
-2003-12-24 15:59  jylefort
-
-	* art/Makefile.am, data/Makefile.am, ui/Makefile.am: Automake fixes
-
-2003-12-24 15:49  jylefort
-
-	* src/: mn-preferences.c, mn-ui.c: Forgot to set window icon for
-	  "add local mailbox" and "about" dialogs
-
-2003-12-24 15:22  jylefort
-
-	* configure.ac: Version 0.3.2
-
-2003-12-24 15:12  jylefort
-
-	* src/: mn-check.c, mn-mail-icon.c, mn-mailboxes.c,
-	  mn-preferences.c, mn-util.c, mn-util.h: Cleanups
-
-2003-12-06 18:11  jylefort
-
-	* src/: mn-mail-icon.c, mn-ui.c: Now recreates the icon when the
-	  notification area applet is terminated
-
-2003-12-06 15:09  jylefort
-
-	* src/: mn-dialog.c, mn-mail-icon.c, mn-preferences.c: Fixes
-
-2003-12-06 15:03  jylefort
-
-	* configure.ac, art/Makefile.am, art/no-mail.png, art/no_mail.png,
-	  src/Makefile.am, src/mn-check.c, src/mn-conf.c, src/mn-dialog.c,
-	  src/mn-mail-icon.c, src/mn-mailboxes.c, src/mn-pop3-mailbox.c,
-	  src/mn-preferences.c, src/mn-sylpheed-mailbox.c, src/mn-ui.c,
-	  src/mn-util.c, src/mn-util.h, ui/preferences.glade: Images are
-	  not inlined anymore; cleanups
-
-2003-12-06 14:06  jylefort
-
-	* src/: mn-conf.c, mn-preferences.c: Cleanups
-
-2003-12-06 13:51  jylefort
-
-	* configure.ac, art/Makefile.am, src/Makefile.am,
-	  src/glade-callbacks.c, src/glade-callbacks.h, src/mn-check.c,
-	  src/mn-dialog.c, src/mn-dialog.h, src/mn-mail-icon.c,
-	  src/mn-preferences.c, src/mn-preferences.h, src/mn-ui.c,
-	  src/mn-ui.h, ui/Makefile.am, ui/add-pop3.glade,
-	  ui/add-pop3.gladep, ui/dialog.glade, ui/dialog.gladep,
-	  ui/mail-notification.glade, ui/mail-notification.gladep,
-	  ui/menu.glade, ui/menu.gladep, ui/preferences.glade,
-	  ui/preferences.gladep: Now uses libglade instead of code
-	  generation
-
-2003-12-05 10:09  jylefort
-
-	* src/mail-notification.c: Cleanup
-
-2003-11-27 10:15  jylefort
-
-	* src/: Makefile.am, mn-check.c, mn-mail-icon.c, mn-mail-icon.h,
-	  mn-ui.c, mn-ui.h: Design cleanup
-
-2003-11-25 01:47  jylefort
-
-	* src/: mn-check.c, mn-ui.c, mn-ui.h: Instead of displaying an
-	  error dialog if the user clicks "Check for mail" when a check is
-	  in progress, don't let him click the menu item (by making it
-	  insensitive)
-
-2003-11-24 05:17  jylefort
-
-	* src/mn-sylpheed-mailbox.c: Only numeric filenames should be
-	  counted as messages
-
-2003-10-20 17:24  jylefort
-
-	* configure.ac: Version 0.3.1
-
-2003-10-20 17:12  jylefort
-
-	* src/: mn-check.c, mn-unsupported-mailbox.c,
-	  mn-unsupported-mailbox.h: Do not try to check unsupported
-	  mailboxes anymore
-
-2003-10-20 02:33  jylefort
-
-	* src/: mn-mailbox.c, mn-mailbox.h, mn-pop3-mailbox.c,
-	  mn-pop3-mailbox.h: A wrong POP3 locator does not trigger a fatal
-	  error anymore
-
-2003-10-20 01:45  jylefort
-
-	* src/: glade-callbacks.c, mn-check.c, mn-conf.c, mn-dialog.c,
-	  mn-mailbox.c, mn-mailboxes.c, mn-maildir-mailbox.c,
-	  mn-mbox-mailbox.c, mn-mh-mailbox.c, mn-pop3-mailbox.c,
-	  mn-preferences.c, mn-sylpheed-mailbox.c, mn-ui.c,
-	  mn-unsupported-mailbox.c: Fixes some includes (include only what
-	  is necessary, or fix the forgotten inclusion of necessary
-	  headers)
-
-2003-10-20 01:27  jylefort
-
-	* src/: mail-notification.c, mn-dialog.c, mn-dialog.h,
-	  mn-pop3-mailbox.c: Using g_log_set_always_fatal() made failed
-	  assertions fatal: we now use our own mn_fatal() instead of
-	  g_critical(); fixed a few bugs in mn_pop3_mailbox_parse_locator()
-
-2003-10-20 01:12  jylefort
-
-	* src/mn-preferences.c: Added sanity checks in
-	  mn_preferences_add_remote_mailbox()
-
-2003-10-20 00:57  jylefort
-
-	* src/mn-preferences.c: Enable the "Add remote mailbox" button only
-	  if POP3 support is enabled
-
-2003-10-20 00:49  jylefort
-
-	* configure.ac: Cleaner use of the AM_PATH_GNET_2_0 macro
-
-2003-10-15 15:07  jylefort
-
-	* src/mn-ui.c: Fixed a little bug
-
-2003-10-06 12:25  jylefort
-
-	* src/mail-notification.c: Forgot to enclose gtk_main() into a
-	  GDK_THREADS_{ENTER|LEAVE}() pair
-
-2003-10-06 12:01  jylefort
-
-	* AUTHORS: Updated
-
-2003-10-02 18:07  jylefort
-
-	* INSTALL: Added GTK+ 2.2.2 requirement
-
-2003-10-02 18:04  jylefort
-
-	* configure.ac: Version 0.3.0
-
-2003-10-02 17:26  jylefort
-
-	* src/: mn-check.c, mn-conf.c, mn-mailboxes.c: Fixes
-
-2003-10-02 15:37  jylefort
-
-	* art/no_mail.png: More meaningful icon
-
-2003-10-02 15:15  jylefort
-
-	* art/logo.png: Added a small GNOME foot
-
-2003-10-02 12:20  jylefort
-
-	* src/: mail-notification.c, mn-check.c, mn-check.h, mn-conf.c,
-	  mn-dialog.c, mn-mailbox.c, mn-mailbox.h, mn-mailboxes.c,
-	  mn-maildir-mailbox.c, mn-maildir-mailbox.h, mn-mbox-mailbox.c,
-	  mn-mbox-mailbox.h, mn-mh-mailbox.c, mn-mh-mailbox.h,
-	  mn-pop3-mailbox.c, mn-pop3-mailbox.h, mn-preferences.c,
-	  mn-settings.c, mn-settings.h, mn-sylpheed-mailbox.c,
-	  mn-sylpheed-mailbox.h, mn-ui.c, mn-unsupported-mailbox.c,
-	  mn-unsupported-mailbox.h, mn-util.c: Code has been nicely
-	  formatted, and copyright notices have been added
-
-2003-10-02 11:34  jylefort
-
-	* src/: mn-pop3-mailbox.c, mn-util.c, mn-util.h: Added sanity
-	  checks to mn_pop3_mailbox_parse_locator()
-
-2003-10-02 11:13  jylefort
-
-	* configure.ac, src/mn-sylpheed-mailbox.c,
-	  src/mn-sylpheed-mailbox.h: Unified behaviour: all format checkers
-	  now don't count unread mail as new
-
-2003-10-02 10:57  jylefort
-
-	* src/mn-pop3-mailbox.c: POP3 replies are correctly formatted, and
-	  reported in the error messages
-
-2003-10-02 10:41  jylefort
-
-	* configure.ac: Requires GTK+ >= 2.2.2 (because of the
-	  gtk_dialog_run() bug present in older versions)
-
-2003-10-02 10:34  jylefort
-
-	* src/mn-check.c: Warns if there is already a check in progress
-	  when the user interactively requests a check
-
-2003-10-01 18:48  jylefort
-
-	* src/: glade-callbacks.c, mn-check.c, mn-check.h: Check error
-	  messages are now displayed in a dialog box if the check has been
-	  launched interactively (that is, from the popup menu)
-
-2003-10-01 18:47  jylefort
-
-	* src/: mn-unsupported-mailbox.c, mn-unsupported-mailbox.h:
-	  _has_new() now always fills err (it's the whole point of
-	  MNUnsupportedMailbox)
-
-2003-10-01 18:09  jylefort
-
-	* src/: Makefile.am, mail-notification.c, mn-check.c, mn-dialog.c,
-	  mn-dialog.h, mn-mailboxes.c, mn-pop3-mailbox.c, mn-settings.c,
-	  mn-settings.h: Added a --enable-debug option
-
-2003-10-01 17:39  jylefort
-
-	* art/Makefile.am, art/logo.png, ui/mail-notification.glade: Added
-	  a custom about logo
-
-2003-10-01 17:34  jylefort
-
-	* art/Makefile.am, art/about-icon.png, art/add-icon.png,
-	  art/mail-notification.png, art/preferences-icon.png,
-	  data/Makefile.am, data/mail-notification.png, src/Makefile.am,
-	  src/mail-notification.c, ui/mail-notification.glade: Added icons
-	  to windows
-
-2003-10-01 14:22  jylefort
-
-	* src/mn-check.c: Cleanup
-
-2003-09-30 19:03  jylefort
-
-	* configure.ac, src/Makefile.am, src/glade-callbacks.c,
-	  src/mail-notification.c, src/mail-notification.h, src/mn-check.c,
-	  src/mn-check.h, src/mn-conf.c: Check implementation moved to
-	  mn-check; uses threads to keep the UI responsive while a check is
-	  in progress (particularly relevant for POP3 checks)
-
-2003-09-29 18:21  jylefort
-
-	* src/mail-notification.c: Fix
-
-2003-09-29 17:49  jylefort
-
-	* src/: Makefile.am, mn-mailbox.c, mn-mailboxes.c,
-	  mn-unsupported-mailbox.c, mn-unsupported-mailbox.h: Handles
-	  unsupported mailboxes in the preferences
-
-2003-09-29 17:30  jylefort
-
-	* src/mn-preferences.c: Fixed removing a remote mailbox
-
-2003-09-29 17:30  jylefort
-
-	* ui/mail-notification.glade: UI fix
-
-2003-09-29 17:19  jylefort
-
-	* src/: mn-mailbox.c, mn-mailbox.h: Check for the existence of a
-	  local mailbox before detecting its format
-
-2003-09-29 17:15  jylefort
-
-	* src/: mn-conf.c, mn-mailbox.c, mn-mailboxes.c, mn-ui.c: Now uses
-	  GUI error messages, when relevant
-
-2003-09-29 17:05  jylefort
-
-	* src/mn-dialog.c, src/mn-dialog.h, ui/mail-notification.glade:
-	  Added an HIG-compliant modal dialog function
-
-2003-09-29 16:17  jylefort
-
-	* src/mn-conf.c: Performance fix
-
-2003-09-29 16:03  jylefort
-
-	* src/: mn-pop3-mailbox.c, mn-preferences.c: "Add remote mailbox"
-	  dialog is now functional
-
-2003-09-29 15:50  jylefort
-
-	* src/mn-preferences.c, ui/mail-notification.glade: UI fixes
-
-2003-09-29 15:44  jylefort
-
-	* src/glade-callbacks.c, src/glade-callbacks.h,
-	  src/mn-preferences.c, src/mn-preferences.h,
-	  ui/mail-notification.glade: Added a dialog to add a POP3 mailbox
-
-2003-09-29 14:47  jylefort
-
-	* data/mail-notification.schemas, src/glade-callbacks.c,
-	  src/mail-notification.c, src/mn-preferences.c,
-	  ui/mail-notification.glade: Added an UI and GConf keys for the
-	  remote checking
-
-2003-09-29 13:56  jylefort
-
-	* acinclude.m4: Changed error message of --enable-assertions
-
-2003-09-29 12:51  jylefort
-
-	* src/: mail-notification.c, mn-mailboxes.h, mn-mbox-mailbox.c,
-	  mn-preferences.c: Uses properties with gnome_program_init(), and
-	  fixes a few compile warnings
-
-2003-09-29 12:41  jylefort
-
-	* INSTALL: Better doc
-
-2003-09-29 12:37  jylefort
-
-	* configure.ac, src/Makefile.am, src/mail-notification.c,
-	  src/mn-mailbox.c, src/mn-sylpheed-mailbox.c,
-	  src/mn-sylpheed-mailbox.h: Added
-	  --enable-{mbox|mh|maildir|pop3|sylpheed} configure flags
-
-2003-09-29 11:51  jylefort
-
-	* src/: mn-mailbox.c, mn-mailbox.h, mn-maildir-mailbox.c,
-	  mn-maildir-mailbox.h, mn-mbox-mailbox.c, mn-mbox-mailbox.h,
-	  mn-mh-mailbox.c, mn-mh-mailbox.h, mn-pop3-mailbox.c,
-	  mn-pop3-mailbox.h, mn-sylpheed-mailbox.c, mn-sylpheed-mailbox.h:
-	  Now uses GError domains and codes
-
-2003-09-29 11:24  jylefort
-
-	* configure.ac, src/Makefile.am, src/mn-mailbox.c,
-	  src/mn-sylpheed-mailbox.c, src/mn-sylpheed-mailbox.h,
-	  src/mn-util.c, src/mn-util.h: Added HAVE_GNET and HAVE_MMAP
-	  conditionals
-
-2003-09-29 11:07  jylefort
-
-	* src/mn-preferences.c, ui/mail-notification.glade: Added a format
-	  column in the mailboxes list
-
-2003-09-29 10:56  jylefort
-
-	* src/: mn-mailbox.c, mn-pop3-mailbox.c: Added finalizers
-
-2003-09-29 10:48  jylefort
-
-	* src/mn-sylpheed-mailbox.c: More detailed error reporting
-
-2003-09-29 10:44  jylefort
-
-	* src/: Makefile.am, conf.c, conf.h, dialog.c, dialog.h,
-	  glade-callbacks.c, mail-notification.c, mail-notification.h,
-	  mailboxes.c, mailboxes.h, mn-conf.c, mn-conf.h, mn-dialog.c,
-	  mn-dialog.h, mn-mailbox.c, mn-mailboxes.c, mn-mailboxes.h,
-	  mn-preferences.c, mn-preferences.h, mn-ui.c, mn-ui.h, mn-util.c,
-	  mn-util.h, preferences.c, preferences.h, ui.c, ui.h, util.c,
-	  util.h: Now uses a namespace
-
-2003-09-27 16:12  jylefort
-
-	* src/: Makefile.am, conf.c, conf.h, mail-notification.c,
-	  mailbox.c, mailbox.h, mailboxes.c, mailboxes.h, mn-mailbox.c,
-	  mn-mailbox.h, mn-maildir-mailbox.c, mn-maildir-mailbox.h,
-	  mn-mbox-mailbox.c, mn-mbox-mailbox.h, mn-mh-mailbox.c,
-	  mn-mh-mailbox.h, mn-pop3-mailbox.c, mn-pop3-mailbox.h,
-	  mn-sylpheed-mailbox.c, mn-sylpheed-mailbox.h, preferences.c,
-	  ui.c, ui.h: Major internal cleanup: implemented a MNMailbox
-	  GObject-derived class, and a couple of MNMailbox-derived
-	  subclasses acting as format handlers
-
-2003-09-26 13:39  jylefort
-
-	* src/: mailbox.c, util.c, util.h: Added initial POP3 support
-	  (still need an UI for it)
-
-2003-09-26 12:49  jylefort
-
-	* configure.ac, src/Makefile.am, src/mail-notification.c,
-	  src/mailbox.c, src/mailbox.h, src/mailboxes.h: Structural
-	  modifications for future POP3 and IMAP support
-
-2003-09-26 10:33  jylefort
-
-	* src/: conf.c, mailbox.c, mailboxes.c: Style cleanups
-
-2003-09-26 10:14  jylefort
-
-	* src/mailboxes.c: Better messages
-
-2003-09-26 10:04  jylefort
-
-	* src/: mail-notification.c, mailbox.c, mailbox.h: Style cleanups
-
-2003-09-26 09:59  jylefort
-
-	* src/: conf.c, conf.h, mailboxes.c, preferences.c: Mailboxes of
-	  unknown format are immediately removed from GConf
-
-2003-09-25 20:45  jylefort
-
-	* src/: mailboxes.c, preferences.c: Cleanups
-
-2003-09-25 19:55  jylefort
-
-	* src/: Makefile.am, conf.c, mail-notification.c, mailbox.c,
-	  mailbox.h, mailboxes.c, mailboxes.h, preferences.c, util.h:
-	  Important redesign
-
-2003-09-25 18:53  jylefort
-
-	* configure.ac, src/mail-notification.c, src/mailbox.c: mmap()
-	  check, and check for some headers
-
-2003-09-25 18:41  jylefort
-
-	* src/: mail-notification.c, mailbox.c, mailbox.h: Better wording
-
-2003-09-25 18:27  jylefort
-
-	* src/preferences.c: The "add mailbox" dialog now remembers its
-	  last path
-
-2003-09-25 18:13  jylefort
-
-	* src/: mail-notification.c, mailbox.c, mailbox.h: Code cleanups
-
-2003-09-25 17:57  jylefort
-
-	* src/: mail-notification.c, mailbox.c: Code cleanups
-
-2003-09-25 17:18  jylefort
-
-	* src/: mail-notification.c, mailbox.c, mailbox.h: Reports the type
-	  of all mailboxes when application is started
-
-2003-09-25 17:00  jylefort
-
-	* src/mailbox.c: Implemented Sylpheed support
-
-2003-09-24 12:59  jylefort
-
-	* configure.ac: Version 0.2.0
-
-2003-09-24 12:55  jylefort
-
-	* README: Added a release notes section
-
-2003-09-24 12:29  jylefort
-
-	* README: Added some details
-
-2003-09-24 12:20  jylefort
-
-	* src/mailbox.c: Fixed one access-after-free() in
-	  mailbox_mh_has_new()
-
-2003-09-24 11:54  jylefort
-
-	* README, src/mailbox.c: Implemented MH support, and fixed a memory
-	  leak in mailbox_mbox_has_new()
-
-2003-09-24 10:42  jylefort
-
-	* data/mail-notification.desktop: Improved wording
-
-2003-09-23 09:43  jylefort
-
-	* src/: conf.c, conf.h, mail-notification.c, preferences.c, ui.c:
-	  All GConf calls are now checked for errors
-
-2003-09-23 08:55  jylefort
-
-	* README, src/mailbox.c: Added mbox support
-
-2003-09-23 07:44  jylefort
-
-	* INSTALL: Customized
-
-2003-09-18 04:17  jylefort
-
-	* configure.ac: Version 0.1.0
-
-2003-09-18 04:16  jylefort
-
-	* README: Added an usage section
-
-2003-09-18 04:09  jylefort
-
-	* ui/mail-notification.glade: HIG fixes
-
-2003-09-18 03:49  jylefort
-
-	* Makefile.am, configure.ac, data/Makefile.am,
-	  data/mail-notification.desktop, data/mail-notification.png: Added
-	  a .desktop and an icon; now installs schemas
-
-2003-09-18 03:22  jylefort
-
-	* Makefile.am, ui/Makefile.am: Add Glade resources to dist
-
-2003-09-17 11:09  jylefort
-
-	* Makefile.am, autogen.sh, config.guess, config.sub, configure.ac,
-	  src/Makefile.am: Switched to Autoconf 2.57, Automake 1.7, and
-	  some cleanups
-
-2003-09-09 12:31  jylefort
-
-	* configure.ac: Fixed a gettext problem
-
-2003-09-09 07:28  jylefort
-
-	* Makefile.am, m4/Makefile.am: Now distributes pkg.m4, as it might
-	  be useful to others
-
-2003-09-09 07:26  jylefort
-
-	* Makefile.am, autogen.sh, configure.ac, src/Makefile.am,
-	  src/eggtrayicon.c, src/mail-notification.c, src/preferences.c,
-	  src/ui.c, ui/mail-notification.gladep: Internationalized
-
-2003-07-30 21:07  jylefort
-
-	* src/ui.c: Added a tooltip
-
-2003-07-30 20:44  jylefort
-
-	* src/preferences.c: Can now remove multiple mailboxes in a single
-	  step
-
-2003-07-30 20:17  jylefort
-
-	* src/preferences.c: Can now add multiple mailboxes in a single
-	  step
-
-2003-07-27 10:52  jylefort
-
-	* data/mail-notification.schemas, src/glade-callbacks.c,
-	  src/glade-callbacks.h, src/preferences.c,
-	  ui/mail-notification.glade: Added a clicked command
-
-2003-07-27 07:16  jylefort
-
-	* src/glade-callbacks.c, src/glade-callbacks.h, src/preferences.c,
-	  ui/mail-notification.glade: Fixes
-
-2003-07-27 07:05  jylefort
-
-	* src/: conf.c, glade-callbacks.c, mail-notification.c,
-	  preferences.c, preferences.h: Fixes
-
-2003-07-27 06:55  jylefort
-
-	* src/: Makefile.am, dialog.c, dialog.h, mail-notification.c,
-	  preferences.c: Dialogs can now be closed
-
-2003-07-27 06:41  jylefort
-
-	* src/mail-notification.c: Added a quit menuitem
-
-2003-07-27 06:33  jylefort
-
-	* data/mail-notification.schemas, src/Makefile.am, src/conf.c,
-	  src/conf.h, src/glade-callbacks.c, src/mail-notification.c,
-	  src/mail-notification.h, src/preferences.c, src/preferences.h,
-	  ui/mail-notification.glade: Added initial GConf support
-
-2003-07-26 22:33  jylefort
-
-	* ui/mail-notification.glade: Nicer look
-
-2003-07-25 09:48  jylefort
-
-	* src/mail-notification.c: Added a comment to the about dialog
-
-2003-07-25 09:46  jylefort
-
-	* ui/mail-notification.glade: Some more HIG-ification
-
-2003-07-25 09:41  jylefort
-
-	* ui/mail-notification.glade: Cosmetical improvements
-
-2003-07-25 09:35  jylefort
-
-	* src/mail-notification.c, ui/mail-notification.glade: Uses a
-	  GtkSizeGroup, as mandated by the HIG
-
-2003-07-25 09:24  jylefort
-
-	* src/Makefile.am, src/mail-notification.c,
-	  ui/mail-notification.glade, ui/mail-notification.gladep: First
-	  version of a preferences window, using Glade
-
-2003-07-25 08:31  jylefort
-
-	* src/: eggtrayicon.c, eggtrayicon.h: Vendor import, 20030725
-
-2003-07-25 08:16  jylefort
-
-	* src/mail-notification.c: Added a "Check for mail" feature
-
-2003-07-25 08:02  jylefort
-
-	* src/mail-notification.c: Now calls gnome_program_init()
-
-2003-07-25 07:48  jylefort
-
-	* src/mail-notification.c: Added an about dialog
-
-2003-07-25 07:37  jylefort
-
-	* src/mail-notification.c: Is now a GNOME application, and has a
-	  primitive popup menu
-
-2003-07-25 07:37  jylefort
-
-	* src/Makefile.am: Is now a GNOME application, and uses WARN_CFLAGS
-
-2003-07-25 07:36  jylefort
-
-	* configure.ac: Is now a GNOME application
-
-2003-07-25 07:36  jylefort
-
-	* acinclude.m4: Added AC_ARG_COMPILE_WARNINGS
-
-2003-07-20 19:50  jylefort
-
-	* aclocal.m4: Removed
-
-2003-07-20 19:47  jylefort
-
-	* NEWS: Added
-
-2003-07-20 19:44  jylefort
-
-	* README: Added
-
-2003-07-20 19:37  jylefort
-
-	* INSTALL: Added
-
-2003-07-20 18:16  jylefort
-
-	* src/: mail-notification.c, mailbox.c, mailbox.h: Added copyright
-	  notices
-
-2003-07-20 18:12  jylefort
-
-	* AUTHORS, COPYING, Makefile.am, Makefile.in, TODO, acinclude.m4,
-	  aclocal.m4, autogen.sh, compile, config.guess, config.sub,
-	  configure, configure.ac, depcomp, install-sh, missing,
-	  mkinstalldirs, art/Makefile.am, art/Makefile.in, art/mail.png,
-	  art/no_mail.png, src/Makefile.am, src/Makefile.in,
-	  src/eggtrayicon.c, src/eggtrayicon.h, src/mail-notification.c,
-	  src/mailbox.c, src/mailbox.h: Imported sources
-
-2003-07-20 18:12  jylefort
-
-	* AUTHORS, COPYING, Makefile.am, Makefile.in, TODO, acinclude.m4,
-	  aclocal.m4, autogen.sh, compile, config.guess, config.sub,
-	  configure, configure.ac, depcomp, install-sh, missing,
-	  mkinstalldirs, art/Makefile.am, art/Makefile.in, art/mail.png,
-	  art/no_mail.png, src/Makefile.am, src/Makefile.in,
-	  src/eggtrayicon.c, src/eggtrayicon.h, src/mail-notification.c,
-	  src/mailbox.c, src/mailbox.h: Initial revision
-
diff --git a/INSTALL b/INSTALL
@@ -10,7 +10,7 @@ Index
 
 0. About this document
 
-	$Id: INSTALL,v 1.5 2004/06/29 15:02:04 jylefort Exp $
+	$Id: INSTALL,v 1.6 2004/07/21 18:52:06 jylefort Exp $
 
 	Copyright (c) 2003, 2004 Jean-Yves Lefort.
 
@@ -30,6 +30,9 @@ Index
 		* for POP3 support: GNet (version 2.0 or superior)
 		  http://www.gnetlibrary.org/
 
+		* for Gmail support: libsoup (version 1.99.28)
+		  ftp://ftp.gnome.org/pub/GNOME/sources/libsoup/1.99/
+
 2. Instructions
 
 	Mail Notification uses the well-known GNU build system. Hence,
@@ -44,13 +47,14 @@ Index
 	command-line options: type "./configure --help" for an
 	exhaustive list.
 
-	Five options are specific to Mail Notification:
+	Six options are specific to Mail Notification:
 
 		--enable-mbox
 		--enable-mh
 		--enable-maildir
 		--enable-pop3
 		--enable-sylpheed
+		--enable-gmail
 
 	They may be used to disable the compilation of some format
 	handlers. They are all enabled by default.
diff --git a/Makefile.am b/Makefile.am
@@ -1,3 +1,13 @@
 SUBDIRS = art data help m4 po src ui
 
-EXTRA_DIST = autogen.sh autotools.conf
+EXTRA_DIST = \
+	autogen.sh		\
+	autotools.conf		\
+	intltool-extract.in	\
+	intltool-merge.in	\
+	intltool-update.in
+
+DISTCLEANFILES = \
+	intltool-extract	\
+	intltool-merge		\
+	intltool-update
diff --git a/Makefile.in b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -36,9 +36,9 @@ POST_UNINSTALL = :
 subdir = .
 DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
 	$(srcdir)/Makefile.in $(srcdir)/config.h.in \
-	$(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \
-	TODO compile config.guess config.sub depcomp install-sh \
-	missing mkinstalldirs
+	$(top_srcdir)/configure AUTHORS COPYING INSTALL NEWS TODO \
+	compile config.guess config.sub depcomp install-sh missing \
+	mkinstalldirs
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/pkg.m4 \
 	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
@@ -110,12 +110,34 @@ GNOME_LIBS = @GNOME_LIBS@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
 G_ASSERTIONS = @G_ASSERTIONS@
+HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
+HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 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_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+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_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_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
@@ -141,10 +163,14 @@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
 PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOUP_CFLAGS = @SOUP_CFLAGS@
+SOUP_LIBS = @SOUP_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GMAIL_FALSE = @WITH_GMAIL_FALSE@
+WITH_GMAIL_TRUE = @WITH_GMAIL_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
@@ -184,7 +210,18 @@ sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 SUBDIRS = art data help m4 po src ui
-EXTRA_DIST = autogen.sh autotools.conf
+EXTRA_DIST = \
+	autogen.sh		\
+	autotools.conf		\
+	intltool-extract.in	\
+	intltool-merge.in	\
+	intltool-update.in
+
+DISTCLEANFILES = \
+	intltool-extract	\
+	intltool-merge		\
+	intltool-update
+
 all: config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-recursive
 
@@ -323,7 +360,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 	fi; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -f $$subdir/TAGS && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -334,7 +371,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -z "$$unique" && unique=$$empty_fix; \
+	  test -n "$$unique" || unique=$$empty_fix; \
 	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
 	    $$tags $$unique; \
 	fi
@@ -526,6 +563,7 @@ clean-generic:
 
 distclean-generic:
 	-rm -f $(CONFIG_CLEAN_FILES)
+	-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
 
 maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
diff --git a/NEWS b/NEWS
@@ -1,3 +1,17 @@
+0.5.0					21 July 2004
+
+	* Added Gmail support (requires libsoup)
+	* The user interface has been improved
+	* Now supports IPv6 POP3 servers even if given as an IPv6
+	  address rather than as a hostname
+	* Now uses intltool
+	* The manual has been improved
+	* Added russian translations for the .desktop file (submitted
+	  by Dan Korostelev)
+	* The output of ./configure has been cleaned up
+	* ChangeLog files were not being accurately maintained and are
+	  not shipped anymore
+
 0.4.0					29 June 2004
 
 	* Fixed a vulnerability in the POP3 code (a malicious POP3
diff --git a/README b/README
@@ -6,12 +6,11 @@ Index
 
 	0. About this document
 	1. About Mail Notification
-	2. Release notes
-	3. Documentation map
+	2. Installation instructions
 
 0. About this document
 
-	$Id: README,v 1.13 2004/06/29 16:33:36 jylefort Exp $
+	$Id: README,v 1.14 2004/07/21 17:56:33 jylefort Exp $
 
 	Copyright (c) 2003, 2004 Jean-Yves Lefort.
 
@@ -31,33 +30,11 @@ Index
 	Mail Notification features include:
 
 		- multiple mailbox support
-		- mbox, MH, Maildir, Sylpheed and POP3 support
+		- mbox, MH, Maildir, Sylpheed, POP3 and Gmail support
 		- automatic detection of mailbox format
 		- automatic notification
 		- HIG compliance
 
-2. Release notes
+2. Installation instructions
 
-	Some configuration keys have been obsoleted. For the sake of
-	cleanliness, you should remove them:
-
-		$ gconftool-2 --recursive-unset /apps/mail-notification/local /apps/mail-notification/remote
-
-3. Documentation map
-
-	The following documents are included in the distribution:
-
-		COPYING		licensing information
-
-		README		this document
-
-		INSTALL		installation instructions
-
-		NEWS		reverse chronology of changes,
-				manually edited
-
-		ChangeLog	reverse chronology of changes,
-				automatically generated from CVS
-				commit messages
-
-		TODO		to-do list, mostly useful for developers
+	See the INSTALL file.
diff --git a/TODO b/TODO
@@ -1 +1 @@
-- implement IMAP support
+- implement pop3s, imap and imaps support
diff --git a/aclocal.m4 b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.8.4 -*- Autoconf -*-
+# generated automatically by aclocal 1.8.5 -*- Autoconf -*-
 
 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
 # Free Software Foundation, Inc.
@@ -33,9 +33,7 @@ AC_DEFUN([AM_GCONF_SOURCE_2],
   AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
 
   if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
-    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas/'
-  else
-    GCONF_SCHEMA_FILE_DIR=$GCONF_SCHEMA_FILE_DIR
+    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
   fi
 
   AC_ARG_WITH(gconf-schema-file-dir, 
@@ -632,193 +630,146 @@ AC_DEFUN([AM_GLIB_GNU_GETTEXT],[GLIB_GNU_GETTEXT($@)])
 AC_DEFUN([AM_GLIB_DEFINE_LOCALEDIR],[GLIB_DEFINE_LOCALEDIR($@)])
 ])dnl
 
-# Configure paths for Gnet
-# A hacked up version of Owen Taylor's glib-2.0.m4 (Copyright 1997-2001)
-
-dnl AM_PATH_GNET_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
-dnl Test for GNET, and define GNET_CFLAGS and GNET_LIBS, if gmodule, gobject or 
-dnl gthread is specified in MODULES, pass to pkg-config
-dnl
-AC_DEFUN([AM_PATH_GNET_2_0],
-[dnl 
-dnl Get the cflags and libraries from pkg-config
-dnl
-AC_ARG_ENABLE(gnettest, [  --disable-gnettest      do not try to compile and run a test GNET program],
-		    , enable_gnettest=yes)
+ll## intltool.m4 - Configure intltool for the target system. -*-Shell-script-*-
 
-  pkg_config_args=gnet-2.0
+dnl AC_PROG_INTLTOOL([MINIMUM-VERSION], [no-xml])
+# serial 1 AC_PROG_INTLTOOL
+AC_DEFUN([AC_PROG_INTLTOOL],
+[
 
-  AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+if test -n "$1"; then
+    AC_MSG_CHECKING(for intltool >= $1)
 
-  no_gnet=""
+    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 x$PKG_CONFIG != xno ; then
-    if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
-      :
+    if test "$INTLTOOL_APPLIED_VERSION_AS_INT" -ge "$INTLTOOL_REQUIRED_VERSION_AS_INT"; then
+	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found])
     else
-      echo *** pkg-config too old; version 0.7 or better required.
-      no_gnet=yes
-      PKG_CONFIG=no
+	AC_MSG_RESULT([$INTLTOOL_APPLIED_VERSION found. Your intltool is too old.  You need intltool $1 or later.])
+	exit 1
     fi
-  else
-    no_gnet=yes
-  fi
+fi
 
-  min_gnet_version=ifelse([$1], , 2.0.0, $1)
-  AC_MSG_CHECKING(for GNET - version >= $min_gnet_version)
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< [$]@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< [$]@' 
+
+AC_SUBST(INTLTOOL_DESKTOP_RULE)
+AC_SUBST(INTLTOOL_DIRECTORY_RULE)
+AC_SUBST(INTLTOOL_KEYS_RULE)
+AC_SUBST(INTLTOOL_PROP_RULE)
+AC_SUBST(INTLTOOL_OAF_RULE)
+AC_SUBST(INTLTOOL_PONG_RULE)
+AC_SUBST(INTLTOOL_SERVER_RULE)
+AC_SUBST(INTLTOOL_SHEET_RULE)
+AC_SUBST(INTLTOOL_SOUNDLIST_RULE)
+AC_SUBST(INTLTOOL_UI_RULE)
+AC_SUBST(INTLTOOL_XAM_RULE)
+AC_SUBST(INTLTOOL_KBD_RULE)
+AC_SUBST(INTLTOOL_XML_RULE)
+AC_SUBST(INTLTOOL_CAVES_RULE)
+AC_SUBST(INTLTOOL_SCHEMAS_RULE)
+AC_SUBST(INTLTOOL_THEME_RULE)
+
+# Use the tools built into the package, not the ones that are installed.
+
+INTLTOOL_EXTRACT='$(top_builddir)/intltool-extract'
+INTLTOOL_MERGE='$(top_builddir)/intltool-merge'
+INTLTOOL_UPDATE='$(top_builddir)/intltool-update'
+
+AC_SUBST(INTLTOOL_EXTRACT)
+AC_SUBST(INTLTOOL_MERGE)
+AC_SUBST(INTLTOOL_UPDATE)
+
+AC_PATH_PROG(INTLTOOL_PERL, perl)
+if test -z "$INTLTOOL_PERL"; then
+   AC_MSG_ERROR([perl not found; required for intltool])
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+   AC_MSG_ERROR([perl 5.x required for intltool])
+fi
+if test "x$2" != "xno-xml"; then
+   AC_MSG_CHECKING([for XML::Parser])
+   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+       AC_MSG_RESULT([ok])
+   else
+       AC_MSG_ERROR([XML::Parser perl module is required for intltool])
+   fi
+fi
 
-  if test x$PKG_CONFIG != xno ; then
-    ## don't try to run the test against uninstalled libtool libs
-    if $PKG_CONFIG --uninstalled $pkg_config_args; then
-	  echo "Will use uninstalled version of GNet found in PKG_CONFIG_PATH"
-	  enable_gnettest=no
-    fi
+# Remove file type tags (using []) from po/POTFILES.
+
+ifdef([AC_DIVERSION_ICMDS],[
+  AC_DIVERT_PUSH(AC_DIVERSION_ICMDS)
+      changequote(,)
+      mv -f po/POTFILES po/POTFILES.tmp
+      sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
+      rm -f po/POTFILES.tmp
+      changequote([,])
+  AC_DIVERT_POP()
+],[
+  ifdef([AC_CONFIG_COMMANDS_PRE],[
+    AC_CONFIG_COMMANDS_PRE([
+        changequote(,)
+        mv -f po/POTFILES po/POTFILES.tmp
+        sed -e '/\[encoding.*\]/d' -e 's/\[.*\] *//' < po/POTFILES.tmp > po/POTFILES
+        rm -f po/POTFILES.tmp
+        changequote([,])
+    ])
+  ])
+])
 
-    if $PKG_CONFIG --atleast-version $min_gnet_version $pkg_config_args; then
-	  :
-    else
-	  no_gnet=yes
-    fi
-  fi
+# Manually sed perl in so people don't have to put the intltool scripts in AC_OUTPUT.
 
-  if test x"$no_gnet" = x ; then
-    GNET_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
-    GNET_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
-    gnet_config_major_version=`$PKG_CONFIG --modversion gnet-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
-    gnet_config_minor_version=`$PKG_CONFIG --modversion gnet-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
-    gnet_config_micro_version=`$PKG_CONFIG --modversion gnet-2.0 | \
-           sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
-    if test "x$enable_gnettest" = "xyes" ; then
-      ac_save_CFLAGS="$CFLAGS"
-      ac_save_LIBS="$LIBS"
-      CFLAGS="$CFLAGS $GNET_CFLAGS"
-      LIBS="$GNET_LIBS $LIBS"
-dnl
-dnl Now check if the installed GNET is sufficiently new. (Also sanity
-dnl checks the results of pkg-config to some extent)
-dnl
-      rm -f conf.gnettest
-      AC_TRY_RUN([
-#include <gnet.h>
-#include <stdio.h>
-#include <stdlib.h>
+AC_OUTPUT_COMMANDS([
 
-int 
-main ()
-{
-  int major, minor, micro;
-  char *tmp_version;
+sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-extract.in > intltool-extract.out
+if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
+  rm -f intltool-extract.out
+else
+  mv -f intltool-extract.out intltool-extract
+fi
+chmod ugo+x intltool-extract
+chmod u+w intltool-extract
 
-  system ("touch conf.gnettest");
+sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" \
+    < ${ac_aux_dir}/intltool-merge.in > intltool-merge.out
+if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
+  rm -f intltool-merge.out
+else
+  mv -f intltool-merge.out intltool-merge
+fi
+chmod ugo+x intltool-merge
+chmod u+w intltool-merge
 
-  /* HP/UX 9 (%@#!) writes to sscanf strings */
-  tmp_version = g_strdup("$min_gnet_version");
-  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_gnet_version");
-     exit(1);
-   }
+sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-update.in > intltool-update.out
+if cmp -s intltool-update intltool-update.out 2>/dev/null; then
+  rm -f intltool-update.out
+else
+  mv -f intltool-update.out intltool-update
+fi
+chmod ugo+x intltool-update
+chmod u+w intltool-update
+
+], INTLTOOL_PERL=${INTLTOOL_PERL} ac_aux_dir=${ac_aux_dir})
 
-  if ((gnet_major_version != $gnet_config_major_version) ||
-      (gnet_minor_version != $gnet_config_minor_version) ||
-      (gnet_micro_version != $gnet_config_micro_version))
-    {
-      printf("\n*** 'pkg-config --modversion gnet-2.0' returned %d.%d.%d, but GNET (%d.%d.%d)\n", 
-             $gnet_config_major_version, $gnet_config_minor_version, $gnet_config_micro_version,
-             gnet_major_version, gnet_minor_version, gnet_micro_version);
-      printf ("*** was found! If pkg-config was correct, then it is best\n");
-      printf ("*** to remove the old version of GNet. You may also be able to fix the error\n");
-      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
-      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
-      printf("*** required on your system.\n");
-      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
-      printf("*** to point to the correct configuration files\n");
-    } 
-  else if ((gnet_major_version != GNET_MAJOR_VERSION) ||
-	   (gnet_minor_version != GNET_MINOR_VERSION) ||
-           (gnet_micro_version != GNET_MICRO_VERSION))
-    {
-      printf("*** GNET header files (version %d.%d.%d) do not match\n",
-	     GNET_MAJOR_VERSION, GNET_MINOR_VERSION, GNET_MICRO_VERSION);
-      printf("*** library (version %d.%d.%d)\n",
-	     gnet_major_version, gnet_minor_version, gnet_micro_version);
-    }
-  else
-    {
-      if ((gnet_major_version > major) ||
-        ((gnet_major_version == major) && (gnet_minor_version > minor)) ||
-        ((gnet_major_version == major) && (gnet_minor_version == minor) && (gnet_micro_version >= micro)))
-      {
-        return 0;
-       }
-     else
-      {
-        printf("\n*** An old version of GNET (%d.%d.%d) was found.\n",
-               gnet_major_version, gnet_minor_version, gnet_micro_version);
-        printf("*** You need a version of GNET newer than %d.%d.%d. The latest version of\n",
-	       major, minor, micro);
-        printf("*** GNET is always available from ftp://ftp.gtk.org.\n");
-        printf("***\n");
-        printf("*** If you have already installed a sufficiently new version, this error\n");
-        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
-        printf("*** being found. The easiest way to fix this is to remove the old version\n");
-        printf("*** of GNET, but you can also set the PKG_CONFIG environment to point to the\n");
-        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
-        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
-        printf("*** so that the correct libraries are found at run-time))\n");
-      }
-    }
-  return 1;
-}
-],, no_gnet=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
-       CFLAGS="$ac_save_CFLAGS"
-       LIBS="$ac_save_LIBS"
-     fi
-  fi
-  if test "x$no_gnet" = x ; then
-     AC_MSG_RESULT(yes (version $gnet_config_major_version.$gnet_config_minor_version.$gnet_config_micro_version))
-     ifelse([$2], , :, [$2])     
-  else
-     AC_MSG_RESULT(no)
-     if test "$PKG_CONFIG" = "no" ; then
-       echo "*** A new enough version of pkg-config was not found."
-       echo "*** See http://www.freedesktop.org/software/pkgconfig/"
-     else
-       if test -f conf.gnettest ; then
-        :
-       else
-          echo "*** Could not run GNET test program, checking why..."
-          ac_save_CFLAGS="$CFLAGS"
-          ac_save_LIBS="$LIBS"
-          CFLAGS="$CFLAGS $GNET_CFLAGS"
-          LIBS="$LIBS $GNET_LIBS"
-          AC_TRY_LINK([
-#include <gnet.h>
-#include <stdio.h>
-],      [ return ((gnet_major_version) || (gnet_minor_version) || (gnet_micro_version)); ],
-        [ echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding GNET or finding the wrong"
-          echo "*** version of GNET. If it is not finding GNET, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-	  echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
-        [ echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means GNET is incorrectly installed."])
-          CFLAGS="$ac_save_CFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     GNET_CFLAGS=""
-     GNET_LIBS=""
-     ifelse([$3], , :, [$3])
-  fi
-  AC_SUBST(GNET_CFLAGS)
-  AC_SUBST(GNET_LIBS)
-  rm -f conf.gnettest
 ])
 
 #                                                        -*- Autoconf -*-
@@ -850,7 +801,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.8"])
 # Call AM_AUTOMAKE_VERSION so it can be traced.
 # This function is AC_REQUIREd by AC_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-	 [AM_AUTOMAKE_VERSION([1.8.4])])
+	 [AM_AUTOMAKE_VERSION([1.8.5])])
 
 # AM_AUX_DIR_EXPAND
 
diff --git a/art/Makefile.am b/art/Makefile.am
@@ -2,6 +2,7 @@ GNOME_IMAGES = mail-notification.png
 APP_IMAGES = \
 	about-icon.png		\
 	logo.png		\
+	gmail.png		\
 	mail-error.png		\
 	mail.png		\
 	no-mail-error.png	\
diff --git a/art/Makefile.in b/art/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -91,12 +91,34 @@ GNOME_LIBS = @GNOME_LIBS@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
 G_ASSERTIONS = @G_ASSERTIONS@
+HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
+HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 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_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+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_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_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
@@ -122,10 +144,14 @@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
 PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOUP_CFLAGS = @SOUP_CFLAGS@
+SOUP_LIBS = @SOUP_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GMAIL_FALSE = @WITH_GMAIL_FALSE@
+WITH_GMAIL_TRUE = @WITH_GMAIL_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
@@ -168,6 +194,7 @@ GNOME_IMAGES = mail-notification.png
 APP_IMAGES = \
 	about-icon.png		\
 	logo.png		\
+	gmail.png		\
 	mail-error.png		\
 	mail.png		\
 	no-mail-error.png	\
diff --git a/art/gmail.png b/art/gmail.png
Binary files differ.
diff --git a/config.h.in b/config.h.in
@@ -3,7 +3,7 @@
 /* always defined to indicate that i18n is enabled */
 #undef ENABLE_NLS
 
-/* gettext package name */
+/* Define to the gettext package name */
 #undef GETTEXT_PACKAGE
 
 /* log domain */
@@ -27,9 +27,6 @@
 /* Define if the GNU gettext() function is already present or preinstalled. */
 #undef HAVE_GETTEXT
 
-/* Define to 1 if the GNet library is available */
-#undef HAVE_GNET
-
 /* Define to 1 if you have the <inttypes.h> header file. */
 #undef HAVE_INTTYPES_H
 
@@ -108,6 +105,9 @@
 /* Version number of package */
 #undef VERSION
 
+/* Define to 1 if Gmail support is enabled */
+#undef WITH_GMAIL
+
 /* Define to 1 if Maildir support is enabled */
 #undef WITH_MAILDIR
 
diff --git a/configure b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for mail-notification 0.4.0.
+# Generated by GNU Autoconf 2.59 for mail-notification 0.5.0.
 #
 # Report bugs to <jylefort@brutele.be>.
 #
@@ -269,8 +269,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='mail-notification'
 PACKAGE_TARNAME='mail-notification'
-PACKAGE_VERSION='0.4.0'
-PACKAGE_STRING='mail-notification 0.4.0'
+PACKAGE_VERSION='0.5.0'
+PACKAGE_STRING='mail-notification 0.5.0'
 PACKAGE_BUGREPORT='jylefort@brutele.be'
 
 ac_unique_file="src/mn-main.c"
@@ -311,7 +311,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS G_ASSERTIONS WARN_CFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GETTEXT_PACKAGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS PKG_CONFIG GTK_CFLAGS GTK_LIBS GNOME_CFLAGS GNOME_LIBS GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE GCONFTOOL GNET_CFLAGS GNET_LIBS WITH_MBOX_TRUE WITH_MBOX_FALSE WITH_MH_TRUE WITH_MH_FALSE WITH_MAILDIR_TRUE WITH_MAILDIR_FALSE WITH_POP3_TRUE WITH_POP3_FALSE WITH_SYLPHEED_TRUE WITH_SYLPHEED_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 G_ASSERTIONS WARN_CFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GETTEXT_PACKAGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL PKG_CONFIG GTK_CFLAGS GTK_LIBS GNOME_CFLAGS GNOME_LIBS GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE GCONFTOOL GNET_CFLAGS GNET_LIBS SOUP_CFLAGS SOUP_LIBS WITH_MBOX_TRUE WITH_MBOX_FALSE WITH_MH_TRUE WITH_MH_FALSE WITH_MAILDIR_TRUE WITH_MAILDIR_FALSE WITH_POP3_TRUE WITH_POP3_FALSE WITH_SYLPHEED_TRUE WITH_SYLPHEED_FALSE WITH_GMAIL_TRUE WITH_GMAIL_FALSE HAVE_SOUP_TRUE HAVE_SOUP_FALSE LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -780,7 +780,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures mail-notification 0.4.0 to adapt to many kinds of systems.
+\`configure' configures mail-notification 0.5.0 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -842,7 +842,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of mail-notification 0.4.0:";;
+     short | recursive ) echo "Configuration of mail-notification 0.5.0:";;
    esac
   cat <<\_ACEOF
 
@@ -854,6 +854,7 @@ Optional Features:
   --disable-maildir       disable Maildir support
   --disable-pop3          disable POP3 support
   --disable-sylpheed      disable Sylpheed support
+  --disable-gmail         disable Gmail support
   --disable-assertions    disable GLib assertions (not recommended)
   --enable-compile-warnings=no|yes|error
                           enable compiler warnings [no]
@@ -864,7 +865,6 @@ Optional Features:
   --disable-largefile     omit support for large files
   --disable-gtktest       do not try to compile and run a test GTK+ program
   --disable-schemas-install	Disable the schemas installation
-  --disable-gnettest      do not try to compile and run a test GNET program
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -980,7 +980,7 @@ fi
 test -n "$ac_init_help" && exit 0
 if $ac_init_version; then
   cat <<\_ACEOF
-mail-notification configure 0.4.0
+mail-notification configure 0.5.0
 generated by GNU Autoconf 2.59
 
 Copyright (C) 2003 Free Software Foundation, Inc.
@@ -994,7 +994,7 @@ cat >&5 <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by mail-notification $as_me 0.4.0, which was
+It was created by mail-notification $as_me 0.5.0, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   $ $0 $@
@@ -1401,6 +1401,19 @@ else
   enable_sylpheed=yes
 fi;
 
+# Check whether --enable-gmail or --disable-gmail was given.
+if test "${enable_gmail+set}" = set; then
+  enableval="$enable_gmail"
+  case "$enableval" in
+	yes|no) enable_gmail=$enableval ;;
+	*) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-gmail" >&5
+echo "$as_me: error: bad value $enableval for --enable-gmail" >&2;}
+   { (exit 1); exit 1; }; } ;;
+esac
+else
+  enable_gmail=yes
+fi;
+
 # Check whether --enable-assertions or --disable-assertions was given.
 if test "${enable_assertions+set}" = set; then
   enableval="$enable_assertions"
@@ -1744,7 +1757,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='mail-notification'
- VERSION='0.4.0'
+ VERSION='0.5.0'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -1899,15 +1912,15 @@ fi
 
 ### i18n
 
+GETTEXT_PACKAGE=mail-notification
 
-cat >>confdefs.h <<\_ACEOF
-#define GETTEXT_PACKAGE "mail-notification"
+cat >>confdefs.h <<_ACEOF
+#define GETTEXT_PACKAGE "$GETTEXT_PACKAGE"
 _ACEOF
 
 
-GETTEXT_PACKAGE=mail-notification
 
-ALL_LINGUAS="fr"
+ALL_LINGUAS="fr ru"
 DEPDIR="${am__leading_dot}deps"
 
           ac_config_commands="$ac_config_commands depfiles"
@@ -4872,6 +4885,149 @@ echo "${ECHO_T}$LINGUAS" >&6
 	< $srcdir/po/POTFILES.in > po/POTFILES
 
 
+
+
+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`
+
+
+    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 "${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
+fi
+
+  INTLTOOL_DESKTOP_RULE='%.desktop:   %.desktop.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_DIRECTORY_RULE='%.directory: %.directory.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_KEYS_RULE='%.keys:      %.keys.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -k -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+     INTLTOOL_PROP_RULE='%.prop:      %.prop.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_OAF_RULE='%.oaf:       %.oaf.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -p $(top_srcdir)/po $< $@'
+     INTLTOOL_PONG_RULE='%.pong:      %.pong.in      $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+   INTLTOOL_SERVER_RULE='%.server:    %.server.in    $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -o -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_SHEET_RULE='%.sheet:     %.sheet.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+INTLTOOL_SOUNDLIST_RULE='%.soundlist: %.soundlist.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+       INTLTOOL_UI_RULE='%.ui:        %.ui.in        $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_XML_RULE='%.xml:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_XAM_RULE='%.xam:       %.xml.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+      INTLTOOL_KBD_RULE='%.kbd:       %.kbd.in       $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -x -u -m -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_CAVES_RULE='%.caves:     %.caves.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+  INTLTOOL_SCHEMAS_RULE='%.schemas:   %.schemas.in   $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -s -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+    INTLTOOL_THEME_RULE='%.theme:     %.theme.in     $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@'
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# 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'
+
+
+
+
+
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; 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_INTLTOOL_PERL+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+  case $INTLTOOL_PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_INTLTOOL_PERL="$INTLTOOL_PERL" # 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_INTLTOOL_PERL="$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
+INTLTOOL_PERL=$ac_cv_path_INTLTOOL_PERL
+
+if test -n "$INTLTOOL_PERL"; then
+  echo "$as_me:$LINENO: result: $INTLTOOL_PERL" >&5
+echo "${ECHO_T}$INTLTOOL_PERL" >&6
+else
+  echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+if test -z "$INTLTOOL_PERL"; then
+   { { echo "$as_me:$LINENO: error: perl not found; required for intltool" >&5
+echo "$as_me: error: perl not found; required for intltool" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "`$INTLTOOL_PERL -v | fgrep '5.' 2> /dev/null`"; then
+   { { echo "$as_me:$LINENO: error: perl 5.x required for intltool" >&5
+echo "$as_me: error: perl 5.x required for intltool" >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test "x" != "xno-xml"; then
+   echo "$as_me:$LINENO: checking for XML::Parser" >&5
+echo $ECHO_N "checking for XML::Parser... $ECHO_C" >&6
+   if `$INTLTOOL_PERL -e "require XML::Parser" 2>/dev/null`; then
+       echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6
+   else
+       { { echo "$as_me:$LINENO: error: XML::Parser perl module is required for intltool" >&5
+echo "$as_me: error: XML::Parser perl module is required for intltool" >&2;}
+   { (exit 1); exit 1; }; }
+   fi
+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 default-2"
+
+
+
+
 ### system features
 
 ac_ext=c
@@ -6763,9 +6919,7 @@ fi;
 echo "${ECHO_T}Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation" >&6
 
   if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
-    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas/'
-  else
-    GCONF_SCHEMA_FILE_DIR=$GCONF_SCHEMA_FILE_DIR
+    GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
   fi
 
 
@@ -6850,17 +7004,12 @@ echo "$as_me: error: unable to find the gconftool-2 program" >&2;}
 fi
 
 if test $enable_pop3 = yes; then
-	# Check whether --enable-gnettest or --disable-gnettest was given.
-if test "${enable_gnettest+set}" = set; then
-  enableval="$enable_gnettest"
+	found=no
+GNET_CFLAGS=""
+GNET_LIBS=""
 
-else
-  enable_gnettest=yes
-fi;
-
-  pkg_config_args=gnet-2.0
-
-  # Extract the first word of "pkg-config", so it can be a program name with args.
+if test -z "$PKG_CONFIG"; then
+	# Extract the first word of "pkg-config", so it can be a program name with args.
 set dummy pkg-config; ac_word=$2
 echo "$as_me:$LINENO: checking for $ac_word" >&5
 echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
@@ -6900,255 +7049,132 @@ else
 echo "${ECHO_T}no" >&6
 fi
 
+fi
 
-  no_gnet=""
+if test "x$PKG_CONFIG" = "xno" ; then
+	{ echo "$as_me:$LINENO: WARNING: the pkg-config script could not be found: make sure it is in your path, or set the PKG_CONFIG environment variable to the full path to pkg-config" >&5
+echo "$as_me: WARNING: the pkg-config script could not be found: make sure it is in your path, or set the PKG_CONFIG environment variable to the full path to pkg-config" >&2;}
+else
+	PKG_CONFIG_MIN_VERSION=0.9.0
 
-  if test x$PKG_CONFIG != xno ; then
-    if $PKG_CONFIG --atleast-pkgconfig-version 0.7 ; then
-      :
-    else
-      echo *** pkg-config too old; version 0.7 or better required.
-      no_gnet=yes
-      PKG_CONFIG=no
-    fi
-  else
-    no_gnet=yes
-  fi
+	if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+		echo "$as_me:$LINENO: checking for gnet-2.0" >&5
+echo $ECHO_N "checking for gnet-2.0... $ECHO_C" >&6
 
-  min_gnet_version=2.0.0
-  echo "$as_me:$LINENO: checking for GNET - version >= $min_gnet_version" >&5
-echo $ECHO_N "checking for GNET - version >= $min_gnet_version... $ECHO_C" >&6
+		if $PKG_CONFIG --exists "gnet-2.0"; then
+			found=yes
 
-  if test x$PKG_CONFIG != xno ; then
-    ## don't try to run the test against uninstalled libtool libs
-    if $PKG_CONFIG --uninstalled $pkg_config_args; then
-	  echo "Will use uninstalled version of GNet found in PKG_CONFIG_PATH"
-	  enable_gnettest=no
-    fi
+			GNET_CFLAGS=`$PKG_CONFIG --cflags "gnet-2.0"`
+			GNET_LIBS=`$PKG_CONFIG --libs "gnet-2.0"`
 
-    if $PKG_CONFIG --atleast-version $min_gnet_version $pkg_config_args; then
-	  :
-    else
-	  no_gnet=yes
-    fi
-  fi
+			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
+	else
+		{ echo "$as_me:$LINENO: WARNING: your version of pkg-config is too old, you need version $PKG_CONFIG_MIN_VERSION or newer" >&5
+echo "$as_me: WARNING: your version of pkg-config is too old, you need version $PKG_CONFIG_MIN_VERSION or newer" >&2;}
+	fi
+fi
 
-  if test x"$no_gnet" = x ; then
-    GNET_CFLAGS=`$PKG_CONFIG --cflags $pkg_config_args`
-    GNET_LIBS=`$PKG_CONFIG --libs $pkg_config_args`
-    gnet_config_major_version=`$PKG_CONFIG --modversion gnet-2.0 | \
-           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'`
-    gnet_config_minor_version=`$PKG_CONFIG --modversion gnet-2.0 | \
-           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\2/'`
-    gnet_config_micro_version=`$PKG_CONFIG --modversion gnet-2.0 | \
-           sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'`
-    if test "x$enable_gnettest" = "xyes" ; then
-      ac_save_CFLAGS="$CFLAGS"
-      ac_save_LIBS="$LIBS"
-      CFLAGS="$CFLAGS $GNET_CFLAGS"
-      LIBS="$GNET_LIBS $LIBS"
-      rm -f conf.gnettest
-      if test "$cross_compiling" = yes; then
-  echo $ac_n "cross compiling; assumed OK... $ac_c"
+if test $found = no; then
+	{ echo "$as_me:$LINENO: WARNING: unable to find the GNet library: forcing --disable-pop3" >&5
+echo "$as_me: WARNING: unable to find the GNet library: forcing --disable-pop3" >&2;}; enable_pop3=no; disable_pop3_reason="(GNet not found)"
 else
-  cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-#include <gnet.h>
-#include <stdio.h>
-#include <stdlib.h>
+	:
+fi
 
-int
-main ()
-{
-  int major, minor, micro;
-  char *tmp_version;
 
-  system ("touch conf.gnettest");
 
-  /* HP/UX 9 (%@#!) writes to sscanf strings */
-  tmp_version = g_strdup("$min_gnet_version");
-  if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, &micro) != 3) {
-     printf("%s, bad version string\n", "$min_gnet_version");
-     exit(1);
-   }
+fi
 
-  if ((gnet_major_version != $gnet_config_major_version) ||
-      (gnet_minor_version != $gnet_config_minor_version) ||
-      (gnet_micro_version != $gnet_config_micro_version))
-    {
-      printf("\n*** 'pkg-config --modversion gnet-2.0' returned %d.%d.%d, but GNET (%d.%d.%d)\n",
-             $gnet_config_major_version, $gnet_config_minor_version, $gnet_config_micro_version,
-             gnet_major_version, gnet_minor_version, gnet_micro_version);
-      printf ("*** was found! If pkg-config was correct, then it is best\n");
-      printf ("*** to remove the old version of GNet. You may also be able to fix the error\n");
-      printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
-      printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
-      printf("*** required on your system.\n");
-      printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
-      printf("*** to point to the correct configuration files\n");
-    }
-  else if ((gnet_major_version != GNET_MAJOR_VERSION) ||
-	   (gnet_minor_version != GNET_MINOR_VERSION) ||
-           (gnet_micro_version != GNET_MICRO_VERSION))
-    {
-      printf("*** GNET header files (version %d.%d.%d) do not match\n",
-	     GNET_MAJOR_VERSION, GNET_MINOR_VERSION, GNET_MICRO_VERSION);
-      printf("*** library (version %d.%d.%d)\n",
-	     gnet_major_version, gnet_minor_version, gnet_micro_version);
-    }
-  else
-    {
-      if ((gnet_major_version > major) ||
-        ((gnet_major_version == major) && (gnet_minor_version > minor)) ||
-        ((gnet_major_version == major) && (gnet_minor_version == minor) && (gnet_micro_version >= micro)))
-      {
-        return 0;
-       }
-     else
-      {
-        printf("\n*** An old version of GNET (%d.%d.%d) was found.\n",
-               gnet_major_version, gnet_minor_version, gnet_micro_version);
-        printf("*** You need a version of GNET newer than %d.%d.%d. The latest version of\n",
-	       major, minor, micro);
-        printf("*** GNET is always available from ftp://ftp.gtk.org.\n");
-        printf("***\n");
-        printf("*** If you have already installed a sufficiently new version, this error\n");
-        printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
-        printf("*** being found. The easiest way to fix this is to remove the old version\n");
-        printf("*** of GNET, but you can also set the PKG_CONFIG environment to point to the\n");
-        printf("*** correct copy of pkg-config. (In this case, you will have to\n");
-        printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
-        printf("*** so that the correct libraries are found at run-time))\n");
-      }
-    }
-  return 1;
-}
+have_soup=no
+if test $enable_gmail = yes; then
+	found=no
+SOUP_CFLAGS=""
+SOUP_LIBS=""
 
-_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
-  :
+if test -z "$PKG_CONFIG"; then
+	# Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+  echo $ECHO_N "(cached) $ECHO_C" >&6
 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 )
-no_gnet=yes
-fi
-rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
-fi
-       CFLAGS="$ac_save_CFLAGS"
-       LIBS="$ac_save_LIBS"
-     fi
+  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
-  if test "x$no_gnet" = x ; then
-     echo "$as_me:$LINENO: result: yes (version $gnet_config_major_version.$gnet_config_minor_version.$gnet_config_micro_version)" >&5
-echo "${ECHO_T}yes (version $gnet_config_major_version.$gnet_config_minor_version.$gnet_config_micro_version)" >&6
+done
+done
 
-cat >>confdefs.h <<\_ACEOF
-#define HAVE_GNET 1
-_ACEOF
+  test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
+  ;;
+esac
+fi
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
 
-  else
-     echo "$as_me:$LINENO: result: no" >&5
+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
-     if test "$PKG_CONFIG" = "no" ; then
-       echo "*** A new enough version of pkg-config was not found."
-       echo "*** See http://www.freedesktop.org/software/pkgconfig/"
-     else
-       if test -f conf.gnettest ; then
-        :
-       else
-          echo "*** Could not run GNET test program, checking why..."
-          ac_save_CFLAGS="$CFLAGS"
-          ac_save_LIBS="$LIBS"
-          CFLAGS="$CFLAGS $GNET_CFLAGS"
-          LIBS="$LIBS $GNET_LIBS"
-          cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
+fi
 
-#include <gnet.h>
-#include <stdio.h>
+fi
 
-int
-main ()
-{
- return ((gnet_major_version) || (gnet_minor_version) || (gnet_micro_version));
-  ;
-  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
-   echo "*** The test program compiled, but did not run. This usually means"
-          echo "*** that the run-time linker is not finding GNET or finding the wrong"
-          echo "*** version of GNET. If it is not finding GNET, you'll need to set your"
-          echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
-          echo "*** to the installed location  Also, make sure you have run ldconfig if that"
-          echo "*** is required on your system"
-	  echo "***"
-          echo "*** If you have an old version installed, it is best to remove it, although"
-          echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
+if test "x$PKG_CONFIG" = "xno" ; then
+	{ echo "$as_me:$LINENO: WARNING: the pkg-config script could not be found: make sure it is in your path, or set the PKG_CONFIG environment variable to the full path to pkg-config" >&5
+echo "$as_me: WARNING: the pkg-config script could not be found: make sure it is in your path, or set the PKG_CONFIG environment variable to the full path to pkg-config" >&2;}
 else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
+	PKG_CONFIG_MIN_VERSION=0.9.0
 
- echo "*** The test program failed to compile or link. See the file config.log for the"
-          echo "*** exact error that occured. This usually means GNET is incorrectly installed."
+	if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+		echo "$as_me:$LINENO: checking for soup-2.0" >&5
+echo $ECHO_N "checking for soup-2.0... $ECHO_C" >&6
+
+		if $PKG_CONFIG --exists "soup-2.0"; then
+			found=yes
+
+			SOUP_CFLAGS=`$PKG_CONFIG --cflags "soup-2.0"`
+			SOUP_LIBS=`$PKG_CONFIG --libs "soup-2.0"`
+
+			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
+	else
+		{ echo "$as_me:$LINENO: WARNING: your version of pkg-config is too old, you need version $PKG_CONFIG_MIN_VERSION or newer" >&5
+echo "$as_me: WARNING: your version of pkg-config is too old, you need version $PKG_CONFIG_MIN_VERSION or newer" >&2;}
+	fi
+fi
+
+if test $found = no; then
+	{ echo "$as_me:$LINENO: WARNING: unable to find the soup library: forcing --disable-gmail" >&5
+echo "$as_me: WARNING: unable to find the soup library: forcing --disable-gmail" >&2;}; enable_gmail=no; disable_gmail_reason="(libsoup not found)"
+else
+	have_soup=yes
 fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-          CFLAGS="$ac_save_CFLAGS"
-          LIBS="$ac_save_LIBS"
-       fi
-     fi
-     GNET_CFLAGS=""
-     GNET_LIBS=""
-     { echo "$as_me:$LINENO: WARNING: unable to find the GNet library: forcing --disable-pop3" >&5
-echo "$as_me: WARNING: unable to find the GNet library: forcing --disable-pop3" >&2;}; enable_pop3=no
-  fi
 
 
-  rm -f conf.gnettest
 
 fi
 
@@ -7205,6 +7231,26 @@ else
 fi
 
 
+
+if test $enable_gmail != no; then
+  WITH_GMAIL_TRUE=
+  WITH_GMAIL_FALSE='#'
+else
+  WITH_GMAIL_TRUE='#'
+  WITH_GMAIL_FALSE=
+fi
+
+
+
+if test $have_soup != no; then
+  HAVE_SOUP_TRUE=
+  HAVE_SOUP_FALSE='#'
+else
+  HAVE_SOUP_TRUE='#'
+  HAVE_SOUP_FALSE=
+fi
+
+
 ### config.h definitions
 
 
@@ -7248,6 +7294,13 @@ cat >>confdefs.h <<\_ACEOF
 _ACEOF
 
 fi
+if test $enable_gmail = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_GMAIL 1
+_ACEOF
+
+fi
 
 ### output
 
@@ -7365,6 +7418,13 @@ echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
 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
+
+
 if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
   { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
 Usually this means the macro was only invoked conditionally." >&5
@@ -7414,6 +7474,20 @@ echo "$as_me: error: conditional \"WITH_SYLPHEED\" was never defined.
 Usually this means the macro was only invoked conditionally." >&2;}
    { (exit 1); exit 1; }; }
 fi
+if test -z "${WITH_GMAIL_TRUE}" && test -z "${WITH_GMAIL_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"WITH_GMAIL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"WITH_GMAIL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_SOUP_TRUE}" && test -z "${HAVE_SOUP_FALSE}"; then
+  { { echo "$as_me:$LINENO: error: conditional \"HAVE_SOUP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_SOUP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+   { (exit 1); exit 1; }; }
+fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_clean_files_save=$ac_clean_files
@@ -7685,7 +7759,7 @@ _ASBOX
 } >&5
 cat >&5 <<_CSEOF
 
-This file was extended by mail-notification $as_me 0.4.0, which was
+This file was extended by mail-notification $as_me 0.5.0, which was
 generated by GNU Autoconf 2.59.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -7748,7 +7822,7 @@ _ACEOF
 
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-mail-notification config.status 0.4.0
+mail-notification config.status 0.5.0
 configured by $0, generated by GNU Autoconf 2.59,
   with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -7849,6 +7923,7 @@ cat >>$CONFIG_STATUS <<_ACEOF
 
 AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 
+INTLTOOL_PERL=${INTLTOOL_PERL} ac_aux_dir=${ac_aux_dir}
 
 _ACEOF
 
@@ -7870,6 +7945,7 @@ do
   "ui/Makefile" ) CONFIG_FILES="$CONFIG_FILES ui/Makefile" ;;
   "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
   "default-1" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+  "default-2" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default-2" ;;
   "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;}
@@ -8015,6 +8091,26 @@ s,@PO_IN_DATADIR_FALSE@,$PO_IN_DATADIR_FALSE,;t t
 s,@POFILES@,$POFILES,;t t
 s,@POSUB@,$POSUB,;t t
 s,@MKINSTALLDIRS@,$MKINSTALLDIRS,;t t
+s,@INTLTOOL_DESKTOP_RULE@,$INTLTOOL_DESKTOP_RULE,;t t
+s,@INTLTOOL_DIRECTORY_RULE@,$INTLTOOL_DIRECTORY_RULE,;t t
+s,@INTLTOOL_KEYS_RULE@,$INTLTOOL_KEYS_RULE,;t t
+s,@INTLTOOL_PROP_RULE@,$INTLTOOL_PROP_RULE,;t t
+s,@INTLTOOL_OAF_RULE@,$INTLTOOL_OAF_RULE,;t t
+s,@INTLTOOL_PONG_RULE@,$INTLTOOL_PONG_RULE,;t t
+s,@INTLTOOL_SERVER_RULE@,$INTLTOOL_SERVER_RULE,;t t
+s,@INTLTOOL_SHEET_RULE@,$INTLTOOL_SHEET_RULE,;t t
+s,@INTLTOOL_SOUNDLIST_RULE@,$INTLTOOL_SOUNDLIST_RULE,;t t
+s,@INTLTOOL_UI_RULE@,$INTLTOOL_UI_RULE,;t t
+s,@INTLTOOL_XAM_RULE@,$INTLTOOL_XAM_RULE,;t t
+s,@INTLTOOL_KBD_RULE@,$INTLTOOL_KBD_RULE,;t t
+s,@INTLTOOL_XML_RULE@,$INTLTOOL_XML_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_EXTRACT@,$INTLTOOL_EXTRACT,;t t
+s,@INTLTOOL_MERGE@,$INTLTOOL_MERGE,;t t
+s,@INTLTOOL_UPDATE@,$INTLTOOL_UPDATE,;t t
+s,@INTLTOOL_PERL@,$INTLTOOL_PERL,;t t
 s,@PKG_CONFIG@,$PKG_CONFIG,;t t
 s,@GTK_CFLAGS@,$GTK_CFLAGS,;t t
 s,@GTK_LIBS@,$GTK_LIBS,;t t
@@ -8027,6 +8123,8 @@ s,@GCONF_SCHEMAS_INSTALL_FALSE@,$GCONF_SCHEMAS_INSTALL_FALSE,;t t
 s,@GCONFTOOL@,$GCONFTOOL,;t t
 s,@GNET_CFLAGS@,$GNET_CFLAGS,;t t
 s,@GNET_LIBS@,$GNET_LIBS,;t t
+s,@SOUP_CFLAGS@,$SOUP_CFLAGS,;t t
+s,@SOUP_LIBS@,$SOUP_LIBS,;t t
 s,@WITH_MBOX_TRUE@,$WITH_MBOX_TRUE,;t t
 s,@WITH_MBOX_FALSE@,$WITH_MBOX_FALSE,;t t
 s,@WITH_MH_TRUE@,$WITH_MH_TRUE,;t t
@@ -8037,6 +8135,10 @@ s,@WITH_POP3_TRUE@,$WITH_POP3_TRUE,;t t
 s,@WITH_POP3_FALSE@,$WITH_POP3_FALSE,;t t
 s,@WITH_SYLPHEED_TRUE@,$WITH_SYLPHEED_TRUE,;t t
 s,@WITH_SYLPHEED_FALSE@,$WITH_SYLPHEED_FALSE,;t t
+s,@WITH_GMAIL_TRUE@,$WITH_GMAIL_TRUE,;t t
+s,@WITH_GMAIL_FALSE@,$WITH_GMAIL_FALSE,;t t
+s,@HAVE_SOUP_TRUE@,$HAVE_SOUP_TRUE,;t t
+s,@HAVE_SOUP_FALSE@,$HAVE_SOUP_FALSE,;t t
 s,@LIBOBJS@,$LIBOBJS,;t t
 s,@LTLIBOBJS@,$LTLIBOBJS,;t t
 CEOF
@@ -8730,6 +8832,37 @@ done
     default-1 ) case "$CONFIG_FILES" in *po/Makefile.in*)
         sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile
       esac ;;
+    default-2 )
+
+sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-extract.in > intltool-extract.out
+if cmp -s intltool-extract intltool-extract.out 2>/dev/null; then
+  rm -f intltool-extract.out
+else
+  mv -f intltool-extract.out intltool-extract
+fi
+chmod ugo+x intltool-extract
+chmod u+w intltool-extract
+
+sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" \
+    < ${ac_aux_dir}/intltool-merge.in > intltool-merge.out
+if cmp -s intltool-merge intltool-merge.out 2>/dev/null; then
+  rm -f intltool-merge.out
+else
+  mv -f intltool-merge.out intltool-merge
+fi
+chmod ugo+x intltool-merge
+chmod u+w intltool-merge
+
+sed -e "s:@INTLTOOL_PERL@:${INTLTOOL_PERL}:;" < ${ac_aux_dir}/intltool-update.in > intltool-update.out
+if cmp -s intltool-update intltool-update.out 2>/dev/null; then
+  rm -f intltool-update.out
+else
+  mv -f intltool-update.out intltool-update
+fi
+chmod ugo+x intltool-update
+chmod u+w intltool-update
+
+ ;;
   esac
 done
 _ACEOF
@@ -8778,16 +8911,13 @@ Installation prefixes
 Installation directories
   --bindir                      $bindir
   --datadir                     $datadir
-  --libdir                      $libdir
-  --includedir                  $includedir
-  --mandir                      $mandir
+  --sysconfdir                  $sysconfdir
 
 Features
   --enable-mbox                 $enable_mbox
   --enable-mh                   $enable_mh
   --enable-maildir              $enable_maildir
-  --enable-pop3                 $enable_pop3
+  --enable-pop3                 $enable_pop3 $disable_pop3_reason
   --enable-sylpheed             $enable_sylpheed
-  --enable-assertions           $enable_assertions
-  --enable-compile-warnings     $enable_compile_warnings
+  --enable-gmail                $enable_gmail $disable_gmail_reason
 EOF
diff --git a/configure.ac b/configure.ac
@@ -1,4 +1,4 @@
-AC_INIT(mail-notification, 0.4.0, jylefort@brutele.be)
+AC_INIT(mail-notification, 0.5.0, jylefort@brutele.be)
 AC_CONFIG_SRCDIR(src/mn-main.c)
 
 AC_PREREQ(2.59)
@@ -40,6 +40,13 @@ AC_HELP_STRING([--disable-sylpheed], [disable Sylpheed support]),
 	*) AC_MSG_ERROR([bad value $enableval for --enable-sylpheed]) ;;
 esac], [enable_sylpheed=yes])
 
+AC_ARG_ENABLE(gmail,
+AC_HELP_STRING([--disable-gmail], [disable Gmail support]),
+[case "$enableval" in
+	yes|no) enable_gmail=$enableval ;;
+	*) AC_MSG_ERROR([bad value $enableval for --enable-gmail]) ;;
+esac], [enable_gmail=yes])
+
 AC_ARG_G_ASSERTIONS
 AC_ARG_COMPILE_WARNINGS
 
@@ -51,13 +58,15 @@ AM_CONFIG_HEADER(config.h)
 
 ### i18n
 
-AC_DEFINE(GETTEXT_PACKAGE, ["AC_PACKAGE_NAME"], [gettext package name])
-AC_SUBST(GETTEXT_PACKAGE)
 GETTEXT_PACKAGE=AC_PACKAGE_NAME
+AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Define to the gettext package name])
+AC_SUBST(GETTEXT_PACKAGE)
 
-ALL_LINGUAS="fr"
+ALL_LINGUAS="fr ru"
 AM_GLIB_GNU_GETTEXT
 
+AC_PROG_INTLTOOL
+
 ### system features
 
 AC_PROG_CC
@@ -82,11 +91,14 @@ if test -z "$GCONFTOOL"; then
 fi
 
 if test $enable_pop3 = yes; then
-	AM_PATH_GNET_2_0(,
-		[AC_DEFINE(HAVE_GNET, 1, [Define to 1 if the GNet library is available])],
-		[AC_MSG_WARN([unable to find the GNet library: forcing --disable-pop3]); enable_pop3=no])
+	AM_PATH_PKG(GNET, gnet-2.0,, [AC_MSG_WARN([unable to find the GNet library: forcing --disable-pop3]); enable_pop3=no; disable_pop3_reason="(GNet not found)"])
 fi
 
+have_soup=no
+if test $enable_gmail = yes; then
+	AM_PATH_PKG(SOUP, soup-2.0, have_soup=yes, [AC_MSG_WARN([unable to find the soup library: forcing --disable-gmail]); enable_gmail=no; disable_gmail_reason="(libsoup not found)"])
+fi	
+
 ### Automake conditionals
 
 AM_CONDITIONAL(WITH_MBOX, [test $enable_mbox != no])
@@ -94,6 +106,8 @@ AM_CONDITIONAL(WITH_MH, [test $enable_mh != no])
 AM_CONDITIONAL(WITH_MAILDIR, [test $enable_maildir != no])
 AM_CONDITIONAL(WITH_POP3, [test $enable_pop3 != no])
 AM_CONDITIONAL(WITH_SYLPHEED, [test $enable_sylpheed != no])
+AM_CONDITIONAL(WITH_GMAIL, [test $enable_gmail != no])
+AM_CONDITIONAL(HAVE_SOUP, [test $have_soup != no])
 
 ### config.h definitions
 
@@ -114,6 +128,9 @@ fi
 if test $enable_sylpheed = yes; then
 	AC_DEFINE(WITH_SYLPHEED, 1, [Define to 1 if Sylpheed support is enabled])
 fi
+if test $enable_gmail = yes; then
+	AC_DEFINE(WITH_GMAIL, 1, [Define to 1 if Gmail support is enabled])
+fi
 
 ### output
 
@@ -142,16 +159,13 @@ Installation prefixes
 Installation directories
   --bindir                      $bindir
   --datadir                     $datadir
-  --libdir                      $libdir
-  --includedir                  $includedir
-  --mandir                      $mandir
+  --sysconfdir                  $sysconfdir
 
 Features
   --enable-mbox                 $enable_mbox
   --enable-mh                   $enable_mh
   --enable-maildir              $enable_maildir
-  --enable-pop3                 $enable_pop3
+  --enable-pop3                 $enable_pop3 $disable_pop3_reason
   --enable-sylpheed             $enable_sylpheed
-  --enable-assertions           $enable_assertions
-  --enable-compile-warnings     $enable_compile_warnings
+  --enable-gmail                $enable_gmail $disable_gmail_reason
 EOF
diff --git a/data/Makefile.am b/data/Makefile.am
@@ -1,28 +1,20 @@
 applicationsdir = $(datadir)/applications
+applications_in_files = mail-notification.desktop.in
+applications_DATA = mail-notification.desktop
+
 schemasdir = $(sysconfdir)/gconf/schemas
+schemas_in_files = mail-notification.schemas.in
+schemas_DATA = mail-notification.schemas
 
-dist_applications_DATA = mail-notification.desktop
-dist_schemas_DATA = mail-notification.schemas
+@INTLTOOL_DESKTOP_RULE@
+@INTLTOOL_SCHEMAS_RULE@
 
 if GCONF_SCHEMAS_INSTALL
 install-data-local: install-schemas
 install-schemas:
 	GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
 		$(GCONFTOOL) --makefile-install-rule mail-notification.schemas
-else
-#
-# From the Automake 1.7.5 Info documentation, "Conditionals" section:
-#
-#	"Automake conditionals will work with any make program."
-#
-# Using my FreeBSD make, with --disable-schemas-install in use:
-#
-#	$ make install
-#	[...]
-#	make: don't know how to make install-data-local. Stop
-#
-# Hence, we need the following kludge to stay compatible.
-# Thanks autofuck.
-#
-install-data-local:
 endif
+
+EXTRA_DIST = mail-notification.desktop.in mail-notification.schemas.in
+CLEANFILES = mail-notification.desktop mail-notification.schemas
diff --git a/data/Makefile.in b/data/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -35,8 +35,7 @@ NORMAL_UNINSTALL = :
 PRE_UNINSTALL = :
 POST_UNINSTALL = :
 subdir = data
-DIST_COMMON = $(dist_applications_DATA) $(dist_schemas_DATA) \
-	$(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/pkg.m4 \
 	$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
@@ -48,9 +47,9 @@ CONFIG_CLEAN_FILES =
 SOURCES =
 DIST_SOURCES =
 am__installdirs = "$(DESTDIR)$(applicationsdir)" "$(DESTDIR)$(schemasdir)"
-dist_applicationsDATA_INSTALL = $(INSTALL_DATA)
-dist_schemasDATA_INSTALL = $(INSTALL_DATA)
-DATA = $(dist_applications_DATA) $(dist_schemas_DATA)
+applicationsDATA_INSTALL = $(INSTALL_DATA)
+schemasDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(applications_DATA) $(schemas_DATA)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 ACLOCAL = @ACLOCAL@
 AMDEP_FALSE = @AMDEP_FALSE@
@@ -91,12 +90,34 @@ GNOME_LIBS = @GNOME_LIBS@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
 G_ASSERTIONS = @G_ASSERTIONS@
+HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
+HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 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_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+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_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_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
@@ -122,10 +143,14 @@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
 PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOUP_CFLAGS = @SOUP_CFLAGS@
+SOUP_LIBS = @SOUP_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GMAIL_FALSE = @WITH_GMAIL_FALSE@
+WITH_GMAIL_TRUE = @WITH_GMAIL_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
@@ -165,9 +190,13 @@ sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 applicationsdir = $(datadir)/applications
+applications_in_files = mail-notification.desktop.in
+applications_DATA = mail-notification.desktop
 schemasdir = $(sysconfdir)/gconf/schemas
-dist_applications_DATA = mail-notification.desktop
-dist_schemas_DATA = mail-notification.schemas
+schemas_in_files = mail-notification.schemas.in
+schemas_DATA = mail-notification.schemas
+EXTRA_DIST = mail-notification.desktop.in mail-notification.schemas.in
+CLEANFILES = mail-notification.desktop mail-notification.schemas
 all: all-am
 
 .SUFFIXES:
@@ -201,36 +230,36 @@ $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
 $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 uninstall-info-am:
-install-dist_applicationsDATA: $(dist_applications_DATA)
+install-applicationsDATA: $(applications_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(applicationsdir)" || $(mkdir_p) "$(DESTDIR)$(applicationsdir)"
-	@list='$(dist_applications_DATA)'; for p in $$list; do \
+	@list='$(applications_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " $(dist_applicationsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(applicationsdir)/$$f'"; \
-	  $(dist_applicationsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(applicationsdir)/$$f"; \
+	  echo " $(applicationsDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(applicationsdir)/$$f'"; \
+	  $(applicationsDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(applicationsdir)/$$f"; \
 	done
 
-uninstall-dist_applicationsDATA:
+uninstall-applicationsDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(dist_applications_DATA)'; for p in $$list; do \
+	@list='$(applications_DATA)'; for p in $$list; do \
 	  f="`echo $$p | sed -e 's|^.*/||'`"; \
 	  echo " rm -f '$(DESTDIR)$(applicationsdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(applicationsdir)/$$f"; \
 	done
-install-dist_schemasDATA: $(dist_schemas_DATA)
+install-schemasDATA: $(schemas_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(schemasdir)" || $(mkdir_p) "$(DESTDIR)$(schemasdir)"
-	@list='$(dist_schemas_DATA)'; for p in $$list; do \
+	@list='$(schemas_DATA)'; for p in $$list; do \
 	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
 	  f="`echo $$p | sed -e 's|^.*/||'`"; \
-	  echo " $(dist_schemasDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(schemasdir)/$$f'"; \
-	  $(dist_schemasDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(schemasdir)/$$f"; \
+	  echo " $(schemasDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(schemasdir)/$$f'"; \
+	  $(schemasDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(schemasdir)/$$f"; \
 	done
 
-uninstall-dist_schemasDATA:
+uninstall-schemasDATA:
 	@$(NORMAL_UNINSTALL)
-	@list='$(dist_schemas_DATA)'; for p in $$list; do \
+	@list='$(schemas_DATA)'; for p in $$list; do \
 	  f="`echo $$p | sed -e 's|^.*/||'`"; \
 	  echo " rm -f '$(DESTDIR)$(schemasdir)/$$f'"; \
 	  rm -f "$(DESTDIR)$(schemasdir)/$$f"; \
@@ -293,6 +322,7 @@ install-strip:
 mostlyclean-generic:
 
 clean-generic:
+	-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
 
 distclean-generic:
 	-rm -f $(CONFIG_CLEAN_FILES)
@@ -318,8 +348,8 @@ info: info-am
 
 info-am:
 
-install-data-am: install-data-local install-dist_applicationsDATA \
-	install-dist_schemasDATA
+install-data-am: install-applicationsDATA install-data-local \
+	install-schemasDATA
 
 install-exec-am:
 
@@ -345,41 +375,28 @@ ps: ps-am
 
 ps-am:
 
-uninstall-am: uninstall-dist_applicationsDATA \
-	uninstall-dist_schemasDATA uninstall-info-am
+uninstall-am: uninstall-applicationsDATA uninstall-info-am \
+	uninstall-schemasDATA
 
 .PHONY: all all-am check check-am clean clean-generic distclean \
 	distclean-generic distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am \
-	install-data-local install-dist_applicationsDATA \
-	install-dist_schemasDATA install-exec install-exec-am \
-	install-info install-info-am install-man install-strip \
-	installcheck installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-	pdf-am ps ps-am uninstall uninstall-am \
-	uninstall-dist_applicationsDATA uninstall-dist_schemasDATA \
-	uninstall-info-am
+	install install-am install-applicationsDATA install-data \
+	install-data-am install-data-local install-exec \
+	install-exec-am install-info install-info-am install-man \
+	install-schemasDATA install-strip installcheck installcheck-am \
+	installdirs maintainer-clean maintainer-clean-generic \
+	mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \
+	uninstall-am uninstall-applicationsDATA uninstall-info-am \
+	uninstall-schemasDATA
 
 
+@INTLTOOL_DESKTOP_RULE@
+@INTLTOOL_SCHEMAS_RULE@
+
 @GCONF_SCHEMAS_INSTALL_TRUE@install-data-local: install-schemas
 @GCONF_SCHEMAS_INSTALL_TRUE@install-schemas:
 @GCONF_SCHEMAS_INSTALL_TRUE@	GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) \
 @GCONF_SCHEMAS_INSTALL_TRUE@		$(GCONFTOOL) --makefile-install-rule mail-notification.schemas
-#
-# From the Automake 1.7.5 Info documentation, "Conditionals" section:
-#
-#	"Automake conditionals will work with any make program."
-#
-# Using my FreeBSD make, with --disable-schemas-install in use:
-#
-#	$ make install
-#	[...]
-#	make: don't know how to make install-data-local. Stop
-#
-# Hence, we need the following kludge to stay compatible.
-# Thanks autofuck.
-#
-@GCONF_SCHEMAS_INSTALL_FALSE@install-data-local:
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff --git a/data/mail-notification.desktop b/data/mail-notification.desktop
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=Mail Notification
-Name[fr]=Notification de Courrier
-Icon=mail-notification.png
-Comment=Get notified when new mail arrives
-Comment[fr]=Etre notifié quand du nouveau courrier arrive
-Type=Application
-Categories=Application;Network;
-TryExec=mail-notification
-Exec=mail-notification
-Terminal=0
diff --git a/data/mail-notification.desktop.in b/data/mail-notification.desktop.in
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Encoding=UTF-8
+_Name=Mail Notification
+Icon=mail-notification.png
+_Comment=Get notified when new mail arrives
+Type=Application
+Categories=GTK;Application;Network;
+Exec=mail-notification
+Terminal=false
diff --git a/data/mail-notification.schemas b/data/mail-notification.schemas.in
diff --git a/help/C/Makefile.am b/help/C/Makefile.am
@@ -7,3 +7,4 @@ entities = documentation-license.xml software-license.xml
 include $(top_srcdir)/help/xmldocs.make
 
 dist-hook: app-dist-hook
+	SGML_CATALOG_FILES=/usr/local/share/sgml/catalog xmllint --noout --valid --catalogs $(docname).xml
diff --git a/help/C/Makefile.in b/help/C/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -148,12 +148,34 @@ GNOME_LIBS = @GNOME_LIBS@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
 G_ASSERTIONS = @G_ASSERTIONS@
+HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
+HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 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_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+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_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_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
@@ -179,10 +201,14 @@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
 PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOUP_CFLAGS = @SOUP_CFLAGS@
+SOUP_LIBS = @SOUP_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GMAIL_FALSE = @WITH_GMAIL_FALSE@
+WITH_GMAIL_TRUE = @WITH_GMAIL_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
@@ -468,6 +494,7 @@ uninstall-local-doc:
 	-rmdir $(DESTDIR)$(docdir)
 
 dist-hook: app-dist-hook
+	SGML_CATALOG_FILES=/usr/local/share/sgml/catalog xmllint --noout --valid --catalogs $(docname).xml
 # 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/help/C/mail-notification-C.omf b/help/C/mail-notification-C.omf
@@ -12,9 +12,9 @@
       Mail Notification Manual
     </title>
     <date>
-      2004-06-29
+      2004-07-21
     </date>
-    <version identifier="2.0" date="2004-06-29" description="First release"/>
+    <version identifier="2.1" date="2004-07-21" description="Second release"/>
     <subject category="GNOME|Internet"/>
     <description>
       Mail Notification Manual
diff --git a/help/C/mail-notification.xml b/help/C/mail-notification.xml
@@ -2,9 +2,9 @@
 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" 
 "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
   <!ENTITY app "<application>Mail Notification</application>">
-  <!ENTITY appversion "0.4.0">
-  <!ENTITY manrevision "2.0">
-  <!ENTITY date "Tuesday, June 29, 2004">
+  <!ENTITY appversion "0.5.0">
+  <!ENTITY manrevision "2.1">
+  <!ENTITY date "Wednesday, July 21, 2004">
 
   <!ENTITY project "The Mail Notification Project">
 
@@ -12,9 +12,17 @@
   <!ENTITY software-license SYSTEM "software-license.xml">
 
   <!ENTITY aka "<acronym>aka</acronym>">
+  <!ENTITY uri "<link linkend=&#34;uri&#34;>URI</link>">
+  <!ENTITY maildir "<link linkend=&#34;maildir&#34;>Maildir</link>">
+  <!ENTITY mbox "<link linkend=&#34;mbox&#34;>mbox</link>">
+  <!ENTITY mh "<link linkend=&#34;mh&#34;>MH</link>">
+  <!ENTITY pop3 "<link linkend=&#34;pop3&#34;>POP3</link>">
+  <!ENTITY sylpheed "<link linkend=&#34;sylpheed&#34;>Sylpheed</link>">
+  <!ENTITY gmail "<link linkend=&#34;gmail&#34;>Gmail</link>">
+  <!ENTITY gnomevfs "<link linkend=&#34;gnomevfs&#34;>GnomeVFS</link>">
 ]>
 
-<!-- $Id: mail-notification.xml,v 1.5 2004/06/29 13:50:42 jylefort Exp $ -->
+<!-- $Id: mail-notification.xml,v 1.13 2004/07/21 16:00:41 jylefort Exp $ -->
 <!-- Mail Notification Manual -->
 
 <!-- Copyright (c) 2004 Jean-Yves Lefort -->
@@ -121,6 +129,17 @@
 	  <para role="publisher">&project;</para>
 	</revdescription>
       </revision>
+      <revision>
+	<revnumber>Mail Notification Manual V2.0</revnumber>
+	<date>Tuesday, June 29, 2004</date>
+	<revdescription>
+	  <para role="author">
+	    Jean-Yves Lefort
+	    <email>jylefort@brutele.be</email>
+	  </para>
+	  <para role="publisher">&project;</para>
+	</revdescription>
+      </revision>
     </revhistory>
 
     <releaseinfo>
@@ -156,7 +175,7 @@
     </para>
     <itemizedlist>
       <listitem><para>multiple mailbox support</para></listitem>
-      <listitem><para>mbox, MH, Maildir, Sylpheed and POP3 support</para></listitem>
+      <listitem><para>&mbox;, &mh;, &maildir;, &sylpheed;, &pop3; and &gmail; support</para></listitem>
       <listitem><para>automatic detection of mailbox format</para></listitem>
       <listitem><para><link linkend="automatic-notification">automatic notification</link></para></listitem>
       <listitem><para><ulink url="http://developer.gnome.org/projects/gup/hig">HIG</ulink> compliance</para></listitem>
@@ -264,7 +283,7 @@
     </para>
     <table frame="topbot" id="icons">
       <title>&app; Icons</title>
-      <tgroup>
+      <tgroup cols="2">
 	<thead>
 	  <row rowsep="1">
 	    <entry><para>Icon</para></entry>
@@ -392,6 +411,131 @@
     </variablelist>
   </sect1>
 
+  <sect1 id="mailbox-properties">
+    <title>Mailbox Properties</title>
+    <para>
+      The <guilabel>Mailbox Properties</guilabel> dialog is displayed
+      when you add a new mailbox or when you edit an existing one.
+      It contains the following global setting:
+    </para>
+
+    <variablelist>
+      <varlistentry>
+	<term><guilabel>Type</guilabel></term>
+	<listitem>
+	  <para>
+	    This is the type of the mailbox. If you select <guilabel>autodetect</guilabel>,
+	    the type will be autodetected using the mailbox &uri; and/or contents.
+	  </para>
+	</listitem>
+      </varlistentry>
+    </variablelist>
+
+    <para>
+      The rest of the window depends on the selected mailbox type:
+    </para>
+
+    <variablelist>
+      <varlistentry>
+	<term>When <guilabel>autodetect</guilabel> is selected:</term>
+	<listitem>
+	  <variablelist>
+	    <varlistentry>
+	      <term><guilabel>Location</guilabel></term>
+	      <listitem>
+		<para>
+		  This is the &uri; of the mailbox.
+		  <note>
+		    <para>
+		      &app; abstracts file operations by using &gnomevfs;.
+		      All the schemes (http, ftp, ...) supported by &gnomevfs;
+		      are therefore supported by &app;.
+		    </para>
+		  </note>
+		</para>
+	      </listitem>
+	    </varlistentry>
+	  </variablelist>
+	</listitem>
+      </varlistentry>
+
+      <varlistentry>
+	<term>When <guilabel>POP3</guilabel> is selected:</term>
+	<listitem>
+	  <variablelist>
+	    <varlistentry>
+	      <term><guilabel>Hostname</guilabel></term>
+	      <listitem>
+		<para>
+		  This is the hostname or IP address of the &pop3; server.
+		  <note>
+		    <para>
+		      Symbolic names aswell as IPv4 and IPv6 addresses
+		      are supported.
+		    </para>
+		  </note>
+		</para>
+	      </listitem>
+	    </varlistentry>
+	    <varlistentry>
+	      <term><guilabel>Port</guilabel></term>
+	      <listitem>
+		<para>
+		  This is the port number of the &pop3; server.
+		  <tip>
+		    <para>
+		      &pop3; servers usually listen on port 110.
+		    </para>
+		  </tip>
+		</para>
+	      </listitem>
+	    </varlistentry>
+	    <varlistentry>
+	      <term><guilabel>Username</guilabel></term>
+	      <listitem>
+		<para>
+		  This is your username on the &pop3; server.
+		</para>
+	      </listitem>
+	    </varlistentry>
+	    <varlistentry>
+	      <term><guilabel>Password</guilabel></term>
+	      <listitem>
+		<para>
+		  This is your password on the &pop3; server.
+		</para>
+	      </listitem>
+	    </varlistentry>
+	  </variablelist>
+	</listitem>
+      </varlistentry>
+      
+      <varlistentry>
+	<term>When <guilabel>Gmail</guilabel> is selected:</term>
+	<listitem>
+	  <variablelist>
+	    <varlistentry>
+	      <term><guilabel>Username</guilabel></term>
+	      <listitem>
+		<para>
+		  This is your username on &gmail;.
+		</para>
+	      </listitem>
+	    </varlistentry>
+	    <varlistentry>
+	      <term><guilabel>Password</guilabel></term>
+	      <listitem>
+		<para>
+		  This is your password on &gmail;.
+		</para>
+	      </listitem>
+	    </varlistentry>
+	  </variablelist>
+	</listitem>
+      </varlistentry>
+    </variablelist>
+  </sect1>
+
   <sect1 id="automatic-notification">
     <title>Automatic Notification</title>
     <para>
@@ -401,7 +545,7 @@
       receives new mail.
     </para>
     <para>
-      For automatic notification to be supported, GnomeVFS must be compiled
+      For automatic notification to be supported, &gnomevfs; must be compiled
       with <ulink url="http://oss.sgi.com/projects/fam">FAM</ulink> support,
       and FAM must be configured properly.
     </para>
@@ -436,9 +580,124 @@
       </para>
     </sect2>
 
+    <sect2 id="acknowledgements">
+      <title>Acknowledgements</title>
+      <itemizedlist>
+	<!-- We don't use <firstname> and <surname> because we can't -->
+	<!-- unambiguously split some names. -->
+	<listitem><para>Dan Korostelev</para></listitem>
+      </itemizedlist>
+    </sect2>
+
     <sect2 id="licensing-terms">
       <title>Licensing Terms</title>
       &software-license;
     </sect2>
   </sect1>
+
+  <glossary id="glossary">
+    <title>Glossary</title>
+
+    <glossdiv><title>G</title>
+      <glossentry id="gmail">
+	<glossterm>Gmail</glossterm>
+	<glossdef>
+	  <para>
+	    A free webmail service operated by <ulink url="http://www.google.com">Google</ulink>.
+	    More information can be found on the <ulink url="http://gmail.google.com">Gmail web page</ulink>.
+	  </para>
+	</glossdef>
+      </glossentry>
+
+      <glossentry id="gnomevfs">
+	<glossterm>GnomeVFS</glossterm>
+	<glossdef>
+	  <para>
+	    A filesystem abstraction library allowing applications to access
+	    local, remote and virtual resources in a transparent fashion.
+	    <ulink url="http://developer.gnome.org/doc/API/2.0/gnome-vfs-2.0">GnomeVFS</ulink>
+	    is part of the <ulink url="http://www.gnome.org">GNOME Desktop Environment</ulink>.
+	  </para>
+	</glossdef>
+      </glossentry>
+    </glossdiv>
+
+    <glossdiv><title>M</title>
+      <glossentry id="maildir">
+	<glossterm>Maildir</glossterm>
+	<glossdef>
+	  <para>
+	    A mailbox format popularized by the <ulink url="http://www.qmail.org">qmail</ulink> mail transfer agent.
+	    Messages are stored in a structure of directories for reliability.
+	  </para>
+	</glossdef>
+      </glossentry>
+
+      <glossentry id="mbox">
+	<glossterm>mbox</glossterm>
+	<glossdef>
+	  <para>
+	    The traditional UNIX mailbox format. Messages are
+	    stored in a single file.
+	  </para>
+	</glossdef>
+      </glossentry>
+
+      <glossentry id="mh">
+	<glossterm>MH</glossterm>
+	<glossdef>
+	  <para>
+	    A mailbox format popularized by the
+	    <ulink url="http://www.ics.uci.edu/~mh">MH</ulink> mail user agent.
+	    Messages are stored as separate files for flexibility and performance.
+	  </para>
+	</glossdef>
+      </glossentry>
+    </glossdiv>
+
+    <glossdiv><title>P</title>
+      <glossentry id="pop3">
+	<glossterm>POP3</glossterm>
+	<glossdef>
+	  <para>
+	    A protocol allowing a workstation to dynamically access
+	    a maildrop on a server host, as defined by
+	    <ulink url="http://www.ietf.org/rfc/rfc1939.txt" type="http">RFC 1939</ulink>.
+	  </para>
+	</glossdef>
+      </glossentry>
+    </glossdiv>
+
+    <glossdiv><title>S</title>
+      <glossentry id="sylpheed">
+	<glossterm>Sylpheed</glossterm>
+	<glossdef>
+	  <para>
+	    The mailbox format used by the <ulink url="http://sylpheed.good-day.net">Sylpheed</ulink>
+	    mail user agent. The Sylpheed format adds a binary cache to MH folders
+	    for faster indexing.
+	  </para>
+	</glossdef>
+      </glossentry>
+    </glossdiv>
+
+    <glossdiv><title>U</title>
+      <glossentry>
+	<glossterm>URI</glossterm>
+	<glosssee otherterm="uri"/>
+      </glossentry>
+
+      <glossentry id="uri">
+	<glossterm>Uniform Resource Identifier</glossterm>
+	<acronym>URI</acronym>
+	<glossdef>
+	  <para>
+	    A <quote>compact string of characters for identifying an
+	      abtract or physical resource</quote>, as defined
+	    by <ulink url="http://www.ietf.org/rfc/rfc2396.txt" type="http">RFC 2396</ulink>.
+	  </para>
+	</glossdef>
+      </glossentry>
+    </glossdiv>
+  </glossary>
 </article>
diff --git a/help/Makefile.in b/help/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -94,12 +94,34 @@ GNOME_LIBS = @GNOME_LIBS@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
 G_ASSERTIONS = @G_ASSERTIONS@
+HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
+HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 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_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+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_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_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
@@ -125,10 +147,14 @@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
 PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOUP_CFLAGS = @SOUP_CFLAGS@
+SOUP_LIBS = @SOUP_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GMAIL_FALSE = @WITH_GMAIL_FALSE@
+WITH_GMAIL_TRUE = @WITH_GMAIL_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
@@ -284,7 +310,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	fi; \
 	list='$(SUBDIRS)'; for subdir in $$list; do \
 	  if test "$$subdir" = .; then :; else \
-	    test -f $$subdir/TAGS && \
+	    test ! -f $$subdir/TAGS || \
 	      tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
 	  fi; \
 	done; \
@@ -295,7 +321,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -z "$$unique" && unique=$$empty_fix; \
+	  test -n "$$unique" || unique=$$empty_fix; \
 	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
 	    $$tags $$unique; \
 	fi
diff --git a/intltool-extract.in b/intltool-extract.in
@@ -0,0 +1,472 @@
+#!@INTLTOOL_PERL@ -w 
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4  -*-
+
+#
+#  The Intltool Message Extractor
+#
+#  Copyright (C) 2000-2001, 2003 Free Software Foundation.
+#
+#  Intltool 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.
+#
+#  Intltool 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., 675 Mass Ave, Cambridge, MA 02139, 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.
+#
+#  Authors: Kenneth Christiansen <kenneth@gnu.org>
+#           Darin Adler <darin@bentspoon.com>
+#
+
+## Release information
+my $PROGRAM      = "intltool-extract";
+my $PACKAGE      = "intltool";
+my $VERSION      = "0.31";
+
+## Loaded modules
+use strict; 
+use File::Basename;
+use Getopt::Long;
+
+## Scalars used by the option stuff
+my $TYPE_ARG	= "0";
+my $LOCAL_ARG	= "0";
+my $HELP_ARG 	= "0";
+my $VERSION_ARG = "0";
+my $UPDATE_ARG  = "0";
+my $QUIET_ARG   = "0";
+my $SRCDIR_ARG	= ".";
+
+my $FILE;
+my $OUTFILE;
+
+my $gettext_type = "";
+my $input;
+my %messages = ();
+my %loc = ();
+my %count = ();
+my %comments = ();
+my $strcount = 0;
+
+## Use this instead of \w for XML files to handle more possible characters.
+my $w = "[-A-Za-z0-9._:]";
+
+## Always print first
+$| = 1;
+
+## Handle options
+GetOptions (
+	    "type=s"     => \$TYPE_ARG,
+            "local|l"    => \$LOCAL_ARG,
+            "help|h"     => \$HELP_ARG,
+            "version|v"  => \$VERSION_ARG,
+            "update"     => \$UPDATE_ARG,
+	    "quiet|q"    => \$QUIET_ARG,
+	    "srcdir=s"	 => \$SRCDIR_ARG,
+            ) or &error;
+
+&split_on_argument;
+
+
+## Check for options. 
+## This section will check for the different options.
+
+sub split_on_argument {
+
+    if ($VERSION_ARG) {
+        &version;
+
+    } elsif ($HELP_ARG) {
+	&help;
+        
+    } elsif ($LOCAL_ARG) {
+        &place_local;
+        &extract;
+
+    } elsif ($UPDATE_ARG) {
+	&place_normal;
+	&extract;
+
+    } elsif (@ARGV > 0) {
+	&place_normal;
+	&message;
+	&extract;
+
+    } else {
+	&help;
+
+    }  
+}    
+
+sub place_normal {
+    $FILE	 = $ARGV[0];
+    $OUTFILE     = "$FILE.h";
+}   
+
+sub place_local {
+    $OUTFILE     = fileparse($FILE, ());
+    if (!-e "tmp/") { 
+        system("mkdir tmp/"); 
+    }
+    $OUTFILE     = "./tmp/$OUTFILE.h"
+}
+
+sub determine_type {
+   if ($TYPE_ARG =~ /^gettext\/(.*)/) {
+	$gettext_type=$1
+   }
+}
+
+## Sub for printing release information
+sub version{
+    print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Copyright (C) 2000, 2003 Free Software Foundation, Inc.
+Written by Kenneth Christiansen, 2000.
+
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+    exit;
+}
+
+## Sub for printing usage information
+sub help {
+    print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... [FILENAME]
+Generates a header file from an XML source file.
+
+It grabs all strings between <_translatable_node> and its end tag in
+XML files. Read manpage (man ${PROGRAM}) for more info.
+
+      --type=TYPE   Specify the file type of FILENAME. Currently supports:
+                    "gettext/glade", "gettext/ini", "gettext/keys"
+                    "gettext/rfc822deb", "gettext/schemas",
+                    "gettext/scheme", "gettext/xml"
+  -l, --local       Writes output into current working directory
+                    (conflicts with --update)
+      --update      Writes output into the same directory the source file 
+                    reside (conflicts with --local)
+      --srcdir      Root of the source tree
+  -v, --version     Output version information and exit
+  -h, --help        Display this help and exit
+  -q, --quiet       Quiet mode
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+    exit;
+}
+
+## Sub for printing error messages
+sub error{
+    print STDERR "Try `${PROGRAM} --help' for more information.\n";
+    exit;
+}
+
+sub message {
+    print "Generating C format header file for translation.\n" unless $QUIET_ARG;
+}
+
+sub extract {
+    &determine_type;
+
+    &convert;
+
+    open OUT, ">$OUTFILE";
+    &msg_write;
+    close OUT;
+
+    print "Wrote $OUTFILE\n" unless $QUIET_ARG;
+}
+
+sub convert {
+
+    ## Reading the file
+    {
+	local (*IN);
+	local $/; #slurp mode
+	open (IN, "<$SRCDIR_ARG/$FILE") || die "can't open $SRCDIR_ARG/$FILE: $!";
+	$input = <IN>;
+    }
+
+    &type_ini if $gettext_type eq "ini";
+    &type_keys if $gettext_type eq "keys";
+    &type_xml if $gettext_type eq "xml";
+    &type_glade if $gettext_type eq "glade";
+    &type_scheme if $gettext_type eq "scheme";
+    &type_schemas  if $gettext_type eq "schemas";
+    &type_rfc822deb  if $gettext_type eq "rfc822deb";
+}
+
+sub entity_decode_minimal
+{
+    local ($_) = @_;
+
+    s/&apos;/'/g; # '
+    s/&quot;/"/g; # "
+    s/&amp;/&/g;
+
+    return $_;
+}
+
+sub entity_decode
+{
+    local ($_) = @_;
+
+    s/&apos;/'/g; # '
+    s/&quot;/"/g; # "
+    s/&amp;/&/g;
+    s/&lt;/</g;
+    s/&gt;/>/g;
+
+    return $_;
+}
+
+sub escape_char
+{
+    return '\"' if $_ eq '"';
+    return '\n' if $_ eq "\n";
+    return '\\' if $_ eq '\\';
+
+    return $_;
+}
+
+sub escape
+{
+    my ($string) = @_;
+    return join "", map &escape_char, split //, $string;
+}
+
+sub type_ini {
+    ### For generic translatable desktop files ###
+    while ($input =~ /^_.*=(.*)$/mg) {
+        $messages{$1} = [];
+    }
+}
+
+sub type_keys {
+    ### For generic translatable mime/keys files ###
+    while ($input =~ /^\s*_\w+=(.*)$/mg) {
+        $messages{$1} = [];
+    }
+}
+
+sub type_xml {
+    ### For generic translatable XML files ###
+        
+    while ($input =~ /\s_$w+\s*=\s*\"([^"]+)\"/sg) { # "
+        $messages{entity_decode_minimal($1)} = [];
+    }
+
+    while ($input =~ /(?:<!--([^>]*?)-->\s*)?<_($w+)(?: xml:space="($w+)")?>(.+?)<\/_\2>/sg) {
+        $_ = $4;
+        if (!defined($3) || $3 ne "preserve") {
+            s/\s+/ /g;
+            s/^ //;
+            s/ $//;
+        }
+        $messages{$_} = [];
+        $comments{$_} = $1 if (defined($1));
+    }
+}
+
+sub type_schemas {
+    ### For schemas XML files ###
+         
+    # FIXME: We should handle escaped < (less than)
+    while ($input =~ /
+                      <locale\ name="C">\s*
+                          (<default>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/default>\s*)?
+                          (<short>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/short>\s*)?
+                          (<long>\s*(?:<!--([^>]*?)-->\s*)?(.*?)\s*<\/long>\s*)?
+                      <\/locale>
+                     /sgx) {
+        my @totranslate = ($3,$6,$9);
+        my @eachcomment = ($2,$5,$8);
+        foreach (@totranslate) {
+            my $currentcomment = shift @eachcomment;
+            next if !$_;
+            s/\s+/ /g;
+            $messages{entity_decode_minimal($_)} = [];
+            $comments{entity_decode_minimal($_)} = $currentcomment if (defined($currentcomment));
+        }
+    }
+}
+
+sub type_rfc822deb {
+    ### For rfc822-style Debian configuration files ###
+
+    my $lineno = 1;
+    my $type = '';
+    while ($input =~ /\G(.*?)(^|\n)(_+)([^:]+):[ \t]*(.*?)(?=\n\S|$)/sg)
+    {
+        my ($pre, $newline, $underscore, $tag, $text) = ($1, $2, $3, $4, $5);
+        while ($pre =~ m/\n/g)
+        {
+            $lineno ++;
+        }
+        $lineno += length($newline);
+        my @str_list = rfc822deb_split(length($underscore), $text);
+        for my $str (@str_list)
+        {
+            $strcount++;
+            $messages{$str} = [];
+            $loc{$str} = $lineno;
+            $count{$str} = $strcount;
+            my $usercomment = '';
+            while($pre =~ s/(^|\n)#([^\n]*)$//s)
+            {
+                $usercomment = "\n" . $2 . $usercomment;
+            }
+            $comments{$str} = $tag . $usercomment;
+        }
+        $lineno += ($text =~ s/\n//g);
+    }
+}
+
+sub rfc822deb_split {
+    # Debian defines a special way to deal with rfc822-style files:
+    # when a value contain newlines, it consists of
+    #   1.  a short form (first line)
+    #   2.  a long description, all lines begin with a space,
+    #       and paragraphs are separated by a single dot on a line
+    # This routine returns an array of all paragraphs, and reformat
+    # them.
+    # When first argument is 2, the string is a comma separated list of
+    # values.
+    my $type = shift;
+    my $text = shift;
+    $text =~ s/^[ \t]//mg;
+    return (split(/, */, $text, 0)) if $type ne 1;
+    return ($text) if $text !~ /\n/;
+
+    $text =~ s/([^\n]*)\n//;
+    my @list = ($1);
+    my $str = '';
+    for my $line (split (/\n/, $text))
+    {
+        chomp $line;
+        if ($line =~ /^\.\s*$/)
+        {
+            #  New paragraph
+            $str =~ s/\s*$//;
+            push(@list, $str);
+            $str = '';
+        }
+        elsif ($line =~ /^\s/)
+        {
+            #  Line which must not be reformatted
+            $str .= "\n" if length ($str) && $str !~ /\n$/;
+            $line =~ s/\s+$//;
+            $str .= $line."\n";
+        }
+        else
+        {
+            #  Continuation line, remove newline
+            $str .= " " if length ($str) && $str !~ /\n$/;
+            $str .= $line;
+        }
+    }
+    $str =~ s/\s*$//;
+    push(@list, $str) if length ($str);
+    return @list;
+}
+
+sub type_glade {
+    ### For translatable Glade XML files ###
+
+    my $tags = "label|title|text|format|copyright|comments|preview_text|tooltip|message";
+
+    while ($input =~ /<($tags)>([^<]+)<\/($tags)>/sg) {
+	# Glade sometimes uses tags that normally mark translatable things for
+        # little bits of non-translatable content. We work around this by not
+        # translating strings that only includes something like label4 or window1.
+	$messages{entity_decode($2)} = [] unless $2 =~ /^(window|label)[0-9]+$/;
+    }
+    
+    while ($input =~ /<items>(..[^<]*)<\/items>/sg) {
+	for my $item (split (/\n/, $1)) {
+	    $messages{entity_decode($item)} = [];
+	}
+    }
+
+    ## handle new glade files
+    while ($input =~ /<(property|atkproperty)\s+[^>]*translatable\s*=\s*"yes"[^>]*>([^<]+)<\/\1>/sg) {
+	$messages{entity_decode($2)} = [] unless $2 =~ /^(window|label)[0-9]+$/;
+    }
+    while ($input =~ /<atkaction\s+action_name="([^>]*)"\s+description="([^>]+)"\/>/sg) {
+        $messages{entity_decode_minimal($2)} = [];
+    }
+}
+
+sub type_scheme {
+    while ($input =~ /_\w*\(?"((?:[^"\\]+|\\.)*)"\)?/sg) {
+	$messages{$1} = [];
+    }
+}
+
+sub msg_write {
+    my @msgids;
+    if (%count)
+    {
+        @msgids = sort { $count{$a} <=> $count{$b} } keys %count;
+    }
+    else
+    {
+        @msgids = sort keys %messages;
+    }
+    for my $message (@msgids)
+    {
+	my $offsetlines = 1;
+	$offsetlines++ if $message =~ /%/;
+	if (defined ($comments{$message}))
+	{
+		while ($comments{$message} =~ m/\n/g)
+		{
+		    $offsetlines++;
+		}
+	}
+	print OUT "# ".($loc{$message} - $offsetlines).  " \"$FILE\"\n"
+	        if defined $loc{$message};
+   	print OUT "/* ".$comments{$message}." */\n"
+                if defined $comments{$message};
+   	print OUT "/* xgettext:no-c-format */\n" if $message =~ /%/;
+        
+    	my @lines = split (/\n/, $message, -1);
+    	for (my $n = 0; $n < @lines; $n++)
+	{
+            if ($n == 0)
+            {
+ 		print OUT "char *s = N_(\""; 
+            }
+            else
+            {  
+                print OUT "             \""; 
+            }
+
+            print OUT escape($lines[$n]);
+
+            if ($n < @lines - 1)
+            {
+                print OUT "\\n\"\n"; 
+            }
+            else
+            {
+                print OUT "\");\n";  
+	    }
+        }
+    }
+}
+
diff --git a/intltool-merge.in b/intltool-merge.in
@@ -0,0 +1,1255 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4  -*-
+
+#
+#  The Intltool Message Merger
+#
+#  Copyright (C) 2000, 2003 Free Software Foundation.
+#  Copyright (C) 2000, 2001 Eazel, Inc
+#
+#  Intltool is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License 
+#  version 2 published by the Free Software Foundation.
+#
+#  Intltool 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., 675 Mass Ave, Cambridge, MA 02139, 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.
+#
+#  Authors:  Maciej Stachowiak <mjs@noisehavoc.org>
+#            Kenneth Christiansen <kenneth@gnu.org>
+#            Darin Adler <darin@bentspoon.com>
+#
+#  Proper XML UTF-8'ification written by Cyrille Chepelov <chepelov@calixo.net>
+#
+
+## Release information
+my $PROGRAM = "intltool-merge";
+my $PACKAGE = "intltool";
+my $VERSION = "0.31";
+
+## Loaded modules
+use strict; 
+use Getopt::Long;
+use Text::Wrap;
+use File::Basename;
+
+my $must_end_tag      = -1;
+my $last_depth        = -1;
+my $translation_depth = -1;
+my @tag_stack = ();
+my @entered_tag = ();
+my @translation_strings = ();
+my $leading_space = "";
+
+## Scalars used by the option stuff
+my $HELP_ARG = 0;
+my $VERSION_ARG = 0;
+my $BA_STYLE_ARG = 0;
+my $XML_STYLE_ARG = 0;
+my $KEYS_STYLE_ARG = 0;
+my $DESKTOP_STYLE_ARG = 0;
+my $SCHEMAS_STYLE_ARG = 0;
+my $RFC822DEB_STYLE_ARG = 0;
+my $QUIET_ARG = 0;
+my $PASS_THROUGH_ARG = 0;
+my $UTF8_ARG = 0;
+my $MULTIPLE_OUTPUT = 0;
+my $cache_file;
+
+## Handle options
+GetOptions 
+(
+ "help" => \$HELP_ARG,
+ "version" => \$VERSION_ARG,
+ "quiet|q" => \$QUIET_ARG,
+ "oaf-style|o" => \$BA_STYLE_ARG, ## for compatibility
+ "ba-style|b" => \$BA_STYLE_ARG,
+ "xml-style|x" => \$XML_STYLE_ARG,
+ "keys-style|k" => \$KEYS_STYLE_ARG,
+ "desktop-style|d" => \$DESKTOP_STYLE_ARG,
+ "schemas-style|s" => \$SCHEMAS_STYLE_ARG,
+ "rfc822deb-style|r" => \$RFC822DEB_STYLE_ARG,
+ "pass-through|p" => \$PASS_THROUGH_ARG,
+ "utf8|u" => \$UTF8_ARG,
+ "multiple-output|m" => \$MULTIPLE_OUTPUT,
+ "cache|c=s" => \$cache_file
+ ) or &error;
+
+my $PO_DIR;
+my $FILE;
+my $OUTFILE;
+
+my %po_files_by_lang = ();
+my %translations = ();
+my $iconv = $ENV{"INTLTOOL_ICONV"} || "iconv";
+
+# Use this instead of \w for XML files to handle more possible characters.
+my $w = "[-A-Za-z0-9._:]";
+
+# XML quoted string contents
+my $q = "[^\\\"]*";
+
+## Check for options. 
+
+if ($VERSION_ARG) 
+{
+	&print_version;
+} 
+elsif ($HELP_ARG) 
+{
+	&print_help;
+} 
+elsif ($BA_STYLE_ARG && @ARGV > 2) 
+{
+	&preparation;
+	&print_message;
+	&ba_merge_translations;
+	&finalize;
+} 
+elsif ($XML_STYLE_ARG && @ARGV > 2) 
+{
+        &utf8_sanity_check;
+	&preparation;
+	&print_message;
+	
+    &xml_merge_output;
+
+	&finalize;
+} 
+elsif ($KEYS_STYLE_ARG && @ARGV > 2) 
+{
+        &utf8_sanity_check;
+        &preparation;
+        &print_message;
+        &keys_merge_translations;
+	&finalize;
+} 
+elsif ($DESKTOP_STYLE_ARG && @ARGV > 2) 
+{
+        &preparation;
+        &print_message;
+        &desktop_merge_translations;
+	&finalize;
+} 
+elsif ($SCHEMAS_STYLE_ARG && @ARGV > 2) 
+{
+        &preparation;
+        &print_message;
+        &schemas_merge_translations;
+	&finalize;
+} 
+elsif ($RFC822DEB_STYLE_ARG && @ARGV > 2) 
+{
+        &preparation;
+        &print_message;
+        &rfc822deb_merge_translations;
+	&finalize;
+} 
+else 
+{
+	&print_help;
+}
+
+exit;
+
+## Sub for printing release information
+sub print_version
+{
+    print <<_EOF_;
+${PROGRAM} (${PACKAGE}) ${VERSION}
+Written by Maciej Stachowiak, Darin Adler and Kenneth Christiansen.
+
+Copyright (C) 2000-2003 Free Software Foundation, Inc.
+Copyright (C) 2000-2001 Eazel, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+    exit;
+}
+
+## Sub for printing usage information
+sub print_help
+{
+    print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... PO_DIRECTORY FILENAME OUTPUT_FILE
+Generates an output file that includes some localized attributes from an
+untranslated source file.
+
+Mandatory options: (exactly one must be specified)
+  -b, --ba-style         includes translations in the bonobo-activation style
+  -d, --desktop-style    includes translations in the desktop style
+  -k, --keys-style       includes translations in the keys style
+  -s, --schemas-style    includes translations in the schemas style
+  -r, --rfc822deb-style  includes translations in the RFC822 style
+  -x, --xml-style        includes translations in the standard xml style
+
+Other options:
+  -u, --utf8             convert all strings to UTF-8 before merging
+  -p, --pass-through     use strings as found in .po files, without
+                         conversion (STRONGLY unrecommended with -x)
+  -m, --multiple-output  output one localized file per locale, instead of 
+	                 a single file containing all localized elements
+  -c, --cache=FILE       specify cache file name
+                         (usually \$top_builddir/po/.intltool-merge-cache)
+  -q, --quiet            suppress most messages
+      --help             display this help and exit
+      --version          output version information and exit
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+    exit;
+}
+
+
+## Sub for printing error messages
+sub print_error
+{
+    print STDERR "Try `${PROGRAM} --help' for more information.\n";
+    exit;
+}
+
+
+sub print_message 
+{
+    print "Merging translations into $OUTFILE.\n" unless $QUIET_ARG;
+}
+
+
+sub preparation 
+{
+    $PO_DIR = $ARGV[0];
+    $FILE = $ARGV[1];
+    $OUTFILE = $ARGV[2];
+
+    &gather_po_files;
+    &get_translation_database;
+}
+
+# General-purpose code for looking up translations in .po files
+
+sub po_file2lang
+{
+    my ($tmp) = @_; 
+    $tmp =~ s/^.*\/(.*)\.po$/$1/; 
+    return $tmp; 
+}
+
+sub gather_po_files
+{
+    for my $po_file (glob "$PO_DIR/*.po") {
+	$po_files_by_lang{po_file2lang($po_file)} = $po_file;
+    }
+}
+
+sub get_local_charset
+{
+    my ($encoding) = @_;
+    my $alias_file = $ENV{"G_CHARSET_ALIAS"} || "/usr/local/libdata/charset.alias";
+
+    # seek character encoding aliases in charset.alias (glib)
+
+    if (open CHARSET_ALIAS, $alias_file) 
+    {
+	while (<CHARSET_ALIAS>) 
+        {
+            next if /^\#/;
+            return $1 if (/^\s*([-._a-zA-Z0-9]+)\s+$encoding\b/i)
+        }
+
+        close CHARSET_ALIAS;
+    }
+
+    # if not found, return input string
+
+    return $encoding;
+}
+
+sub get_po_encoding
+{
+    my ($in_po_file) = @_;
+    my $encoding = "";
+
+    open IN_PO_FILE, $in_po_file or die;
+    while (<IN_PO_FILE>) 
+    {
+        ## example: "Content-Type: text/plain; charset=ISO-8859-1\n"
+        if (/Content-Type\:.*charset=([-a-zA-Z0-9]+)\\n/) 
+        {
+            $encoding = $1; 
+            last;
+        }
+    }
+    close IN_PO_FILE;
+
+    if (!$encoding) 
+    {
+        print STDERR "Warning: no encoding found in $in_po_file. Assuming ISO-8859-1\n" unless $QUIET_ARG;
+        $encoding = "ISO-8859-1";
+    }
+
+    system ("$iconv -f $encoding -t UTF-8 </dev/null 2>/dev/null");
+    if ($?) {
+	$encoding = get_local_charset($encoding);
+    }
+
+    return $encoding
+}
+
+sub utf8_sanity_check 
+{
+    if (!$UTF8_ARG) 
+    {
+        if (!$PASS_THROUGH_ARG) 
+        {
+            $PASS_THROUGH_ARG="1";
+        }
+    }
+}
+
+sub get_translation_database
+{
+    if ($cache_file) {
+	&get_cached_translation_database;
+    } else {
+        &create_translation_database;
+    }
+}
+
+sub get_newest_po_age
+{
+    my $newest_age;
+
+    foreach my $file (values %po_files_by_lang) 
+    {
+	my $file_age = -M $file;
+	$newest_age = $file_age if !$newest_age || $file_age < $newest_age;
+    }
+
+    $newest_age = 0 if !$newest_age;
+
+    return $newest_age;
+}
+
+sub create_cache
+{
+    print "Generating and caching the translation database\n" unless $QUIET_ARG;
+
+    &create_translation_database;
+
+    open CACHE, ">$cache_file" || die;
+    print CACHE join "\x01", %translations;
+    close CACHE;
+}
+
+sub load_cache 
+{
+    print "Found cached translation database\n" unless $QUIET_ARG;
+
+    my $contents;
+    open CACHE, "<$cache_file" || die;
+    {
+        local $/;
+        $contents = <CACHE>;
+    }
+    close CACHE;
+    %translations = split "\x01", $contents;
+}
+
+sub get_cached_translation_database
+{
+    my $cache_file_age = -M $cache_file;
+    if (defined $cache_file_age) 
+    {
+        if ($cache_file_age <= &get_newest_po_age) 
+        {
+            &load_cache;
+            return;
+        }
+        print "Found too-old cached translation database\n" unless $QUIET_ARG;
+    }
+
+    &create_cache;
+}
+
+sub create_translation_database
+{
+    for my $lang (keys %po_files_by_lang) 
+    {
+    	my $po_file = $po_files_by_lang{$lang};
+
+        if ($UTF8_ARG) 
+        {
+            my $encoding = get_po_encoding ($po_file);
+
+            if (lc $encoding eq "utf-8") 
+            {
+                open PO_FILE, "<$po_file";	
+            } 
+            else 
+            {
+		print STDERR "WARNING: $po_file is not in UTF-8 but $encoding, converting...\n" unless $QUIET_ARG;;
+
+                open PO_FILE, "$iconv -f $encoding -t UTF-8 $po_file|";	
+            }
+        } 
+        else 
+        {
+            open PO_FILE, "<$po_file";	
+        }
+
+	my $nextfuzzy = 0;
+	my $inmsgid = 0;
+	my $inmsgstr = 0;
+	my $msgid = "";
+	my $msgstr = "";
+
+        while (<PO_FILE>) 
+        {
+	    $nextfuzzy = 1 if /^#, fuzzy/;
+       
+	    if (/^msgid "((\\.|[^\\])*)"/ ) 
+            {
+		$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+		$msgid = "";
+		$msgstr = "";
+
+		if ($nextfuzzy) {
+		    $inmsgid = 0;
+		} else {
+		    $msgid = unescape_po_string($1);
+		    $inmsgid = 1;
+		}
+		$inmsgstr = 0;
+		$nextfuzzy = 0;
+	    }
+
+	    if (/^msgstr "((\\.|[^\\])*)"/) 
+            {
+	        $msgstr = unescape_po_string($1);
+		$inmsgstr = 1;
+		$inmsgid = 0;
+	    }
+
+	    if (/^"((\\.|[^\\])*)"/) 
+            {
+	        $msgid .= unescape_po_string($1) if $inmsgid;
+	        $msgstr .= unescape_po_string($1) if $inmsgstr;
+	    }
+	}
+	$translations{$lang, $msgid} = $msgstr if $inmsgstr && $msgid && $msgstr;
+    }
+}
+
+sub finalize
+{
+}
+
+sub unescape_one_sequence
+{
+    my ($sequence) = @_;
+
+    return "\\" if $sequence eq "\\\\";
+    return "\"" if $sequence eq "\\\"";
+    return "\n" if $sequence eq "\\n";
+
+    # gettext also handles \n, \t, \b, \r, \f, \v, \a, \xxx (octal),
+    # \xXX (hex) and has a comment saying they want to handle \u and \U.
+
+    return $sequence;
+}
+
+sub unescape_po_string
+{
+    my ($string) = @_;
+
+    $string =~ s/(\\.)/unescape_one_sequence($1)/eg;
+
+    return $string;
+}
+
+## NOTE: deal with < - &lt; but not > - &gt;  because it seems its ok to have 
+## > in the entity. For further info please look at #84738.
+sub entity_decode
+{
+    local ($_) = @_;
+
+    s/&apos;/'/g; # '
+    s/&quot;/"/g; # "
+    s/&amp;/&/g;
+    s/&lt;/</g;
+
+    return $_;
+}
+ 
+# entity_encode: (string)
+#
+# Encode the given string to XML format (encode '<' etc). It also 
+# encodes high bit if not in UTF-8 mode.
+
+sub entity_encode
+{
+    my ($pre_encoded) = @_;
+
+    my @list_of_chars = unpack ('C*', $pre_encoded);
+
+    if ($PASS_THROUGH_ARG) 
+    {
+        return join ('', map (&entity_encode_int_even_high_bit, @list_of_chars));
+    } 
+    else 
+    {
+	# with UTF-8 we only encode minimalistic
+        return join ('', map (&entity_encode_int_minimalist, @list_of_chars));
+    }
+}
+
+sub entity_encode_int_minimalist
+{
+    return "&quot;" if $_ == 34;
+    return "&amp;" if $_ == 38;
+    return "&apos;" if $_ == 39;
+    return "&lt;" if $_ == 60;
+    return chr $_;
+}
+
+sub entity_encode_int_even_high_bit
+{
+    if ($_ > 127 || $_ == 34 || $_ == 38 || $_ == 39 || $_ == 60) 
+    {
+        # the ($_ > 127) should probably be removed
+	return "&#" . $_ . ";"; 
+    } 
+    else 
+    {
+	return chr $_;
+    }
+}
+
+sub entity_encoded_translation
+{
+    my ($lang, $string) = @_;
+
+    my $translation = $translations{$lang, $string};
+    return $string if !$translation;
+    return entity_encode ($translation);
+}
+
+## XML (bonobo-activation specific) merge code
+
+sub ba_merge_translations
+{
+    my $source;
+
+    {
+       local $/; # slurp mode
+       open INPUT, "<$FILE" or die "can't open $FILE: $!";
+       $source = <INPUT>;
+       close INPUT;
+    }
+
+    open OUTPUT, ">$OUTFILE" or die "can't open $OUTFILE: $!";
+
+    while ($source =~ s|^(.*?)([ \t]*<\s*$w+\s+($w+\s*=\s*"$q"\s*)+/?>)([ \t]*\n)?||s) 
+    {
+        print OUTPUT $1;
+
+        my $node = $2 . "\n";
+
+        my @strings = ();
+        $_ = $node;
+	while (s/(\s)_($w+\s*=\s*"($q)")/$1$2/s) {
+             push @strings, entity_decode($3);
+        }
+	print OUTPUT;
+
+	my %langs;
+	for my $string (@strings) 
+        {
+	    for my $lang (keys %po_files_by_lang) 
+            {
+                $langs{$lang} = 1 if $translations{$lang, $string};
+	    }
+	}
+	
+	for my $lang (sort keys %langs) 
+        {
+	    $_ = $node;
+	    s/(\sname\s*=\s*)"($q)"/$1"$2-$lang"/s;
+	    s/(\s)_($w+\s*=\s*")($q)"/$1 . $2 . entity_encoded_translation($lang, $3) . '"'/seg;
+	    print OUTPUT;
+        }
+    }
+
+    print OUTPUT $source;
+
+    close OUTPUT;
+}
+
+
+## XML (non-bonobo-activation) merge code
+
+
+# Process tag attributes
+#   Only parameter is a HASH containing attributes -> values mapping
+sub getAttributeString
+{
+    my $sub = shift;
+    my $do_translate = shift || 0;
+    my $language = shift || "";
+    my $result = "";
+    foreach my $e (reverse(sort(keys %{ $sub }))) {
+	my $key    = $e;
+	my $string = $sub->{$e};
+	my $quote = '"';
+	
+	$string =~ s/^[\s]+//;
+	$string =~ s/[\s]+$//;
+	
+	if ($string =~ /^'.*'$/)
+	{
+	    $quote = "'";
+	}
+	$string =~ s/^['"]//g;
+	$string =~ s/['"]$//g;
+
+	if ($do_translate && $key =~ /^_/) {
+	    $key =~ s|^_||g;
+	    if ($language) {
+		
+		# Handle translation
+		#
+		my $decode_string = entity_decode($string);
+		my $translation = $translations{$language, $decode_string};
+		if ($translation) {
+		    $translation = entity_encode($translation);
+		    $string = $translation;
+		}
+	    }
+	}
+	
+	$result .= " $key=$quote$string$quote";
+    }
+    return $result;
+}
+
+# Returns a translatable string from XML node, it works on contents of every node in XML::Parser tree
+#   doesn't support nesting of translatable tags (i.e. <_blah>this <_doh>doesn't</_doh> work</_blah> -- besides
+#   can you define the correct semantics for this?)
+#
+
+sub getXMLstring
+{
+    my $ref = shift;
+    my @list = @{ $ref };
+    my $result = "";
+
+    my $count = scalar(@list);
+    my $attrs = $list[0];
+    my $index = 1;
+    while ($index < $count) {
+	my $type = $list[$index];
+	my $content = $list[$index+1];
+        if (! $type ) {
+	    # We've got CDATA
+	    if ($content) {
+		# lets strip the whitespace here, and *ONLY* here
+		$content =~ s/\s+/ /gs;
+		$result .= ($content);
+	    } else {
+		#print "no cdata content when expected it\n"; # is this possible, is this ok?
+		# what to do if this happens?
+		# Did I mention that I hate XML::Parser tree style?
+	    }
+	} else {
+	    # We've got another element
+	    $result .= "<$type";
+	    $result .= getAttributeString($attrs, 0); # no nested translatable elements
+	    if ($content) {
+		my $subresult = getXMLstring($content);
+		if ($subresult) {
+		    $result .= ">".$subresult . "</$type>";
+		} else {
+		    $result .= "/>";
+		}
+	    } else {
+		$result .= "/>";
+	    }
+	}
+	$index += 2;
+    }
+    return $result;
+}
+
+sub traverse
+{
+    my $fh = shift; 
+    my $nodename = shift;
+    my $content = shift;
+    my $language = shift || "";
+
+    if (!$nodename) {
+	if ($content =~ /^[\s]*$/) {
+	    $leading_space .= $content;
+	}
+	print $fh $content;
+    } else {
+	# element
+	my @all = @{ $content };
+	my $attrs = shift @all;
+	my $outattr = getAttributeString($attrs, 1, $language);
+	my $translate = 0;
+
+	if ($nodename =~ /^_/) {
+	    $translate = 1;
+	    $nodename =~ s/^_//;
+	}
+	my $lookup = '';
+	print $fh "<$nodename$outattr";
+	if ($translate) {
+	    $lookup = getXMLstring($content);
+	    $lookup =~ s/^\s+//s;
+	    $lookup =~ s/\s+$//s;
+
+	    if ($lookup) {
+                my $translation = $translations{$language, $lookup};
+                if ($MULTIPLE_OUTPUT && $translation) {
+                    print $fh " xml:lang=\"", $language, "\"";
+                    print $fh ">", $translation, "</$nodename>";
+                    return; # this means there will be no same translation with xml:lang="$language"...
+                            # if we want them both, just remove this "return"
+                } else {
+                    print $fh ">$lookup</$nodename>";
+                }
+	    } else {
+		print $fh "/>";
+	    }
+	    
+ 
+	    for my $lang (sort keys %po_files_by_lang) {
+                    if ($MULTIPLE_OUTPUT && $lang ne "$language") {
+                        next;
+                    }
+		    if ($lang) {
+
+                        # Handle translation
+                        #
+			my $localattrs = getAttributeString($attrs, 1, $lang);
+                        my $decode_string = ($lookup); #entity_decode($lookup);
+                        my $translation = $translations{$lang, $decode_string};
+                        if ($translation) {
+                            $translation = ($translation);
+			    print $fh "\n";
+			    $leading_space =~ s/.*\n//g;
+			    print $fh $leading_space;
+ 			    print $fh "<", $nodename, " xml:lang=\"", $lang, "\"", $localattrs;
+			    print $fh ">", $translation , "</$nodename>";
+			}
+                    }
+	    }
+
+	} else {
+	    my $count = scalar(@all);
+	    if ($count > 0) {
+		print $fh ">";
+	    } else {
+		print $fh "/>";
+	    }
+	    my $index = 0;
+	    while ($index < $count) {
+		my $type = $all[$index];
+		my $rest = $all[$index+1];
+		traverse($fh, $type, $rest, $language);
+		$index += 2;
+	    }
+	    if ($count > 0) {
+		print $fh "</$nodename>";
+	    }
+	}
+    }
+}
+
+sub intltool_tree_char
+{
+    my $expat = shift;
+    my $text  = shift;
+    my $clist = $expat->{Curlist};
+    my $pos   = $#$clist;
+
+    # Use original_string so that we retain escaped entities
+    # in CDATA sections.
+    #
+    if ($pos > 0 and $clist->[$pos - 1] eq '0') {
+        $clist->[$pos] .= $expat->original_string();
+    } else {
+        push @$clist, 0 => $expat->original_string();
+    }
+}
+
+sub intltool_tree_start
+{
+    my $expat    = shift;
+    my $tag      = shift;
+    my @origlist = ();
+
+    # Use original_string so that we retain escaped entities
+    # in attribute values.  We must convert the string to an
+    # @origlist array to conform to the structure of the Tree
+    # Style.
+    #
+    my @original_array = split /\x/, $expat->original_string();
+    my $source         = $expat->original_string();
+
+    # Remove leading tag.
+    #
+    $source =~ s|^\s*<\s*(\S+)||s;
+
+    # Grab attribute key/value pairs and push onto @origlist array.
+    #
+    while ($source)
+    {
+       if ($source =~ /^\s*([\w:-]+)\s*[=]\s*["]/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*["]([^"]*)["]||s;
+           push @origlist, $1;
+           push @origlist, '"' . $2 . '"';
+       }
+       elsif ($source =~ /^\s*([\w:-]+)\s*[=]\s*[']/)
+       {
+           $source =~ s|^\s*([\w:-]+)\s*[=]\s*[']([^']*)[']||s;
+           push @origlist, $1;
+           push @origlist, "'" . $2 . "'";
+       }
+       else
+       {
+           last;
+       }
+    }
+
+    my $ol = [ { @origlist } ];
+
+    push @{ $expat->{Lists} }, $expat->{Curlist};
+    push @{ $expat->{Curlist} }, $tag => $ol;
+    $expat->{Curlist} = $ol;
+}
+
+sub readXml
+{
+    my $filename = shift || return;
+    if(!-f $filename) {
+        die "ERROR Cannot find filename: $filename\n";
+    }
+
+    my $ret = eval 'require XML::Parser';
+    if(!$ret) {
+        die "You must have XML::Parser installed to run $0\n\n";
+    } 
+    my $xp = new XML::Parser(Style => 'Tree');
+    $xp->setHandlers(Char => \&intltool_tree_char);
+    $xp->setHandlers(Start => \&intltool_tree_start);
+    my $tree = $xp->parsefile($filename);
+
+# <foo><head id="a">Hello <em>there</em></head><bar>Howdy<ref/></bar>do</foo>
+# would be:
+# [foo, [{}, head, [{id => "a"}, 0, "Hello ",  em, [{}, 0, "there"]], bar, [{},
+# 0, "Howdy",  ref, [{}]], 0, "do" ] ]
+
+    return $tree;
+}
+
+sub print_header
+{
+    my $infile = shift;
+    my $fh = shift;
+    my $source;
+
+    if(!-f $infile) {
+        die "ERROR Cannot find filename: $infile\n";
+    }
+
+    print $fh qq{<?xml version="1.0" encoding="UTF-8"?>\n};
+    {
+        local $/;
+        open DOCINPUT, "<${FILE}" or die;
+        $source = <DOCINPUT>;
+        close DOCINPUT;
+    }
+    if ($source =~ /(<!DOCTYPE.*\[.*\]\s*>)/s)
+    {
+        print $fh "$1\n";
+    }
+    elsif ($source =~ /(<!DOCTYPE[^>]*>)/s)
+    {
+        print $fh "$1\n";
+    }
+}
+
+sub parseTree
+{
+    my $fh        = shift;
+    my $ref       = shift;
+    my $language  = shift || "";
+
+    my $name = shift @{ $ref };
+    my $cont = shift @{ $ref };
+    traverse($fh, $name, $cont, $language);
+}
+
+sub xml_merge_output
+{
+    my $source;
+
+    if ($MULTIPLE_OUTPUT) {
+        for my $lang (sort keys %po_files_by_lang) {
+	    if ( ! -e $lang ) {
+	        mkdir $lang, 0777 or die "Cannot create subdirectory $lang: $!\n";
+            }
+            open OUTPUT, ">$lang/$OUTFILE" or die "Cannot open $lang/$OUTFILE: $!\n";
+            my $tree = readXml($FILE);
+            print_header($FILE, \*OUTPUT);
+            parseTree(\*OUTPUT, $tree, $lang);
+            close OUTPUT;
+            print "CREATED $lang/$OUTFILE\n" unless $QUIET_ARG;
+        }
+    } 
+    open OUTPUT, ">$OUTFILE" or die "Cannot open $OUTFILE: $!\n";
+    my $tree = readXml($FILE);
+    print_header($FILE, \*OUTPUT);
+    parseTree(\*OUTPUT, $tree);
+    close OUTPUT;
+    print "CREATED $OUTFILE\n" unless $QUIET_ARG;
+}
+
+sub keys_merge_translations
+{
+    open INPUT, "<${FILE}" or die;
+    open OUTPUT, ">${OUTFILE}" or die;
+
+    while (<INPUT>) 
+    {
+        if (s/^(\s*)_(\w+=(.*))/$1$2/)  
+        {
+	    my $string = $3;
+
+            print OUTPUT;
+
+	    my $non_translated_line = $_;
+
+            for my $lang (sort keys %po_files_by_lang) 
+            {
+		my $translation = $translations{$lang, $string};
+                next if !$translation;
+
+                $_ = $non_translated_line;
+		s/(\w+)=.*/[$lang]$1=$translation/;
+                print OUTPUT;
+            }
+	} 
+        else 
+        {
+            print OUTPUT;
+        }
+    }
+
+    close OUTPUT;
+    close INPUT;
+}
+
+sub desktop_merge_translations
+{
+    open INPUT, "<${FILE}" or die;
+    open OUTPUT, ">${OUTFILE}" or die;
+
+    while (<INPUT>) 
+    {
+        if (s/^(\s*)_(\w+=(.*))/$1$2/)  
+        {
+	    my $string = $3;
+
+            print OUTPUT;
+
+	    my $non_translated_line = $_;
+
+            for my $lang (sort keys %po_files_by_lang) 
+            {
+                my $translation = $translations{$lang, $string};
+                next if !$translation;
+
+                $_ = $non_translated_line;
+                s/(\w+)=.*/${1}[$lang]=$translation/;
+                print OUTPUT;
+            }
+	} 
+        else 
+        {
+            print OUTPUT;
+        }
+    }
+
+    close OUTPUT;
+    close INPUT;
+}
+
+sub schemas_merge_translations
+{
+    my $source;
+
+    {
+       local $/; # slurp mode
+       open INPUT, "<$FILE" or die "can't open $FILE: $!";
+       $source = <INPUT>;
+       close INPUT;
+    }
+
+    open OUTPUT, ">$OUTFILE" or die;
+
+    # FIXME: support attribute translations
+
+    # Empty nodes never need translation, so unmark all of them.
+    # For example, <_foo/> is just replaced by <foo/>.
+    $source =~ s|<\s*_($w+)\s*/>|<$1/>|g;
+
+    while ($source =~ s/
+                        (.*?)
+                        (\s+)(<locale\ name="C">(\s*)
+                            (<default>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/default>)?(\s*)
+                            (<short>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/short>)?(\s*)
+                            (<long>\s*(?:<!--[^>]*?-->\s*)?(.*?)\s*<\/long>)?(\s*)
+                        <\/locale>)
+                       //sx) 
+    {
+        print OUTPUT $1;
+
+	my $locale_start_spaces = $2 ? $2 : '';
+	my $default_spaces = $4 ? $4 : '';
+	my $short_spaces = $7 ? $7 : '';
+	my $long_spaces = $10 ? $10 : '';
+	my $locale_end_spaces = $13 ? $13 : '';
+	my $c_default_block = $3 ? $3 : '';
+	my $default_string = $6 ? $6 : '';
+	my $short_string = $9 ? $9 : '';
+	my $long_string = $12 ? $12 : '';
+
+	print OUTPUT "$locale_start_spaces$c_default_block";
+
+        $default_string =~ s/\s+/ /g;
+        $default_string = entity_decode($default_string);
+	$short_string =~ s/\s+/ /g;
+	$short_string = entity_decode($short_string);
+	$long_string =~ s/\s+/ /g;
+	$long_string = entity_decode($long_string);
+
+	for my $lang (sort keys %po_files_by_lang) 
+        {
+	    my $default_translation = $translations{$lang, $default_string};
+	    my $short_translation = $translations{$lang, $short_string};
+	    my $long_translation  = $translations{$lang, $long_string};
+
+	    next if (!$default_translation && !$short_translation && 
+                     !$long_translation);
+
+	    print OUTPUT "\n$locale_start_spaces<locale name=\"$lang\">";
+
+        print OUTPUT "$default_spaces";    
+
+        if ($default_translation)
+        {
+            $default_translation = entity_encode($default_translation);
+            print OUTPUT "<default>$default_translation</default>";
+        }
+
+	    print OUTPUT "$short_spaces";
+
+	    if ($short_translation)
+	    {
+			$short_translation = entity_encode($short_translation);
+			print OUTPUT "<short>$short_translation</short>";
+	    }
+
+	    print OUTPUT "$long_spaces";
+
+	    if ($long_translation)
+	    {
+			$long_translation = entity_encode($long_translation);
+			print OUTPUT "<long>$long_translation</long>";
+	    }	    
+
+	    print OUTPUT "$locale_end_spaces</locale>";
+        }
+    }
+
+    print OUTPUT $source;
+
+    close OUTPUT;
+}
+
+sub rfc822deb_merge_translations
+{
+    my %encodings = ();
+    for my $lang (keys %po_files_by_lang) {
+        $encodings{$lang} = ($UTF8_ARG ? 'UTF-8' : get_po_encoding($po_files_by_lang{$lang}));
+    }
+
+    my $source;
+
+    $Text::Wrap::huge = 'overflow';
+    $Text::Wrap::break = qr/\n|\s(?=\S)/;
+
+    {
+       local $/; # slurp mode
+       open INPUT, "<$FILE" or die "can't open $FILE: $!";
+       $source = <INPUT>;
+       close INPUT;
+    }
+
+    open OUTPUT, ">${OUTFILE}" or die;
+
+    while ($source =~ /(^|\n+)(_*)([^:\s]+)(:[ \t]*)(.*?)(?=\n[\S\n]|$)/sg)
+    {
+	    my $sep = $1;
+	    my $non_translated_line = $3.$4;
+	    my $string = $5;
+	    my $underscore = length($2);
+	    next if $underscore eq 0 && $non_translated_line =~ /^#/;
+	    #  Remove [] dummy strings
+	    my $stripped = $string;
+	    $stripped =~ s/\[\s[^\[\]]*\],/,/g if $underscore eq 2;
+	    $stripped =~ s/\[\s[^\[\]]*\]$//;
+	    $non_translated_line .= $stripped;
+
+	    print OUTPUT $sep.$non_translated_line;
+    
+	    if ($underscore) 
+	    {
+	        my @str_list = rfc822deb_split($underscore, $string);
+
+	        for my $lang (sort keys %po_files_by_lang) 
+                {
+                    my $is_translated = 1;
+                    my $str_translated = '';
+                    my $first = 1;
+                
+                    for my $str (@str_list) 
+                    {
+                        my $translation = $translations{$lang, $str};
+                    
+                        if (!$translation) 
+                        {
+                            $is_translated = 0;
+                            last;
+                        }
+
+	                #  $translation may also contain [] dummy
+                        #  strings, mostly to indicate an empty string
+	                $translation =~ s/\[\s[^\[\]]*\]$//;
+                        
+                        if ($first) 
+                        {
+                            if ($underscore eq 2)
+                            {
+                                $str_translated .= $translation;
+                            }
+                            else
+                            {
+                                $str_translated .=
+                                    Text::Tabs::expand($translation) .
+                                    "\n";
+                            }
+                        } 
+                        else 
+                        {
+                            if ($underscore eq 2)
+                            {
+                                $str_translated .= ', ' . $translation;
+                            }
+                            else
+                            {
+                                $str_translated .= Text::Tabs::expand(
+                                    Text::Wrap::wrap(' ', ' ', $translation)) .
+                                    "\n .\n";
+                            }
+                        }
+                        $first = 0;
+
+                        #  To fix some problems with Text::Wrap::wrap
+                        $str_translated =~ s/(\n )+\n/\n .\n/g;
+                    }
+                    next unless $is_translated;
+
+                    $str_translated =~ s/\n \.\n$//;
+                    $str_translated =~ s/\s+$//;
+
+                    $_ = $non_translated_line;
+                    s/^(\w+):\s*.*/$sep${1}-$lang.$encodings{$lang}: $str_translated/s;
+                    print OUTPUT;
+                }
+	    }
+    }
+    print OUTPUT "\n";
+
+    close OUTPUT;
+    close INPUT;
+}
+
+sub rfc822deb_split 
+{
+    # Debian defines a special way to deal with rfc822-style files:
+    # when a value contain newlines, it consists of
+    #   1.  a short form (first line)
+    #   2.  a long description, all lines begin with a space,
+    #       and paragraphs are separated by a single dot on a line
+    # This routine returns an array of all paragraphs, and reformat
+    # them.
+    # When first argument is 2, the string is a comma separated list of
+    # values.
+    my $type = shift;
+    my $text = shift;
+    $text =~ s/^[ \t]//mg;
+    return (split(/, */, $text, 0)) if $type ne 1;
+    return ($text) if $text !~ /\n/;
+
+    $text =~ s/([^\n]*)\n//;
+    my @list = ($1);
+    my $str = '';
+
+    for my $line (split (/\n/, $text)) 
+    {
+        chomp $line;
+        if ($line =~ /^\.\s*$/)
+        {
+            #  New paragraph
+            $str =~ s/\s*$//;
+            push(@list, $str);
+            $str = '';
+        } 
+        elsif ($line =~ /^\s/) 
+        {
+            #  Line which must not be reformatted
+            $str .= "\n" if length ($str) && $str !~ /\n$/;
+            $line =~ s/\s+$//;
+            $str .= $line."\n";
+        } 
+        else 
+        {
+            #  Continuation line, remove newline
+            $str .= " " if length ($str) && $str !~ /\n$/;
+            $str .= $line;
+        }
+    }
+
+    $str =~ s/\s*$//;
+    push(@list, $str) if length ($str);
+
+    return @list;
+}
+
diff --git a/intltool-update.in b/intltool-update.in
@@ -0,0 +1,1026 @@
+#!@INTLTOOL_PERL@ -w
+# -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4  -*-
+
+#
+#  The Intltool Message Updater
+#
+#  Copyright (C) 2000-2003 Free Software Foundation.
+#
+#  Intltool is free software; you can redistribute it and/or
+#  modify it under the terms of the GNU General Public License 
+#  version 2 published by the Free Software Foundation.
+#
+#  Intltool 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., 675 Mass Ave, Cambridge, MA 02139, 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.
+#
+#  Authors: Kenneth Christiansen <kenneth@gnu.org>
+#           Maciej Stachowiak
+#           Darin Adler <darin@bentspoon.com>
+
+## Release information
+my $PROGRAM = "intltool-update";
+my $VERSION = "0.31";
+my $PACKAGE = "intltool";
+
+## Loaded modules
+use strict;
+use Getopt::Long;
+use Cwd;
+use File::Copy;
+use File::Find;
+
+## Scalars used by the option stuff
+my $HELP_ARG 	   = 0;
+my $VERSION_ARG    = 0;
+my $DIST_ARG	   = 0;
+my $POT_ARG	   = 0;
+my $HEADERS_ARG    = 0;
+my $MAINTAIN_ARG   = 0;
+my $REPORT_ARG     = 0;
+my $VERBOSE	   = 0;
+my $GETTEXT_PACKAGE = "";
+my $OUTPUT_FILE    = "";
+
+my @languages;
+my %varhash = ();
+my %po_files_by_lang = ();
+
+# Regular expressions to categorize file types.
+# FIXME: Please check if the following is correct
+
+my $xml_support =
+"xml(?:\\.in)*|".	# http://www.w3.org/XML/ (Note: .in is not required)
+"ui|".			# Bonobo specific - User Interface desc. files
+"lang|".		# ?
+"glade2?(?:\\.in)*|".	# Glade specific - User Interface desc. files (Note: .in is not required)
+"scm(?:\\.in)*|".	# ? (Note: .in is not required)
+"oaf(?:\\.in)+|".	# DEPRECATED: Replaces by Bonobo .server files 
+"etspec|".		# ?
+"server(?:\\.in)+|".	# Bonobo specific
+"sheet(?:\\.in)+|".	# ?
+"schemas(?:\\.in)+|".	# GConf specific
+"pong(?:\\.in)+|".	# DEPRECATED: PONG is not used [by GNOME] any longer.
+"kbd(?:\\.in)+";	# GOK specific. 
+
+my $ini_support =
+"desktop(?:\\.in)+|".	# http://www.freedesktop.org/Standards/menu-spec
+"caves(?:\\.in)+|".	# GNOME Games specific
+"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
+
+my $buildin_gettext_support = 
+"c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py";
+
+## Always flush buffer when printing
+$| = 1;
+
+## Sometimes the source tree will be rooted somewhere else.
+my $SRCDIR = ".";
+my $POTFILES_in;
+
+$SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"};
+$POTFILES_in = "<$SRCDIR/POTFILES.in";
+
+## Handle options
+GetOptions 
+(
+ "help" 	       => \$HELP_ARG,
+ "version" 	       => \$VERSION_ARG,
+ "dist|d"	       => \$DIST_ARG,
+ "pot|p"	       => \$POT_ARG,
+ "headers|s"	       => \$HEADERS_ARG,
+ "maintain|m"	       => \$MAINTAIN_ARG,
+ "report|r"	       => \$REPORT_ARG,
+ "verbose|x"	       => \$VERBOSE,
+ "gettext-package|g=s" => \$GETTEXT_PACKAGE,
+ "output-file|o=s"     => \$OUTPUT_FILE,
+ ) or &Console_WriteError_InvalidOption;
+
+&Console_Write_IntltoolHelp if $HELP_ARG;
+&Console_Write_IntltoolVersion if $VERSION_ARG;
+
+my $arg_count = ($DIST_ARG > 0)
+    + ($POT_ARG > 0)
+    + ($HEADERS_ARG > 0)
+    + ($MAINTAIN_ARG > 0)
+    + ($REPORT_ARG > 0);
+
+&Console_Write_IntltoolHelp if $arg_count > 1;
+
+# --version and --help don't require a module name
+my $MODULE = $GETTEXT_PACKAGE || &FindPackageName;
+
+if ($POT_ARG)
+{
+    &GenerateHeaders;
+    &GeneratePOTemplate;
+}
+elsif ($HEADERS_ARG)
+{
+    &GenerateHeaders;
+}
+elsif ($MAINTAIN_ARG)
+{
+    &FindLeftoutFiles;
+}
+elsif ($REPORT_ARG)
+{
+    &GenerateHeaders;
+    &GeneratePOTemplate;
+    &Console_Write_CoverageReport;
+}
+elsif ((defined $ARGV[0]) && $ARGV[0] =~ /^[a-z]/)
+{
+    my $lang = $ARGV[0];
+
+    ## Report error if the language file supplied
+    ## to the command line is non-existent
+    &Console_WriteError_NotExisting("$lang.po") if ! -s "$lang.po";
+
+    if (!$DIST_ARG)
+    {
+	print "Working, please wait..." if $VERBOSE;
+	&GenerateHeaders;
+	&GeneratePOTemplate;
+    }
+    &POFile_Update ($lang, $OUTPUT_FILE);
+    &Console_Write_TranslationStatus ($lang, $OUTPUT_FILE);
+} 
+else 
+{
+    &Console_Write_IntltoolHelp;
+}
+
+exit;
+
+#########
+
+sub Console_Write_IntltoolVersion
+{
+    print <<_EOF_;
+${PROGRAM} (${PACKAGE}) $VERSION
+Written by Kenneth Christiansen, Maciej Stachowiak, and Darin Adler.
+
+Copyright (C) 2000-2003 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions.  There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+_EOF_
+    exit;
+}
+
+sub Console_Write_IntltoolHelp
+{
+    print <<_EOF_;
+Usage: ${PROGRAM} [OPTION]... LANGCODE
+Updates PO template files and merge them with the translations.
+
+Mode of operation (only one is allowed):
+  -p, --pot                   generate the PO template only
+  -s, --headers               generate the header files in POTFILES.in
+  -m, --maintain              search for left out files from POTFILES.in
+  -r, --report                display a status report for the module
+  -d, --dist                  merge LANGCODE.po with existing PO template
+
+Extra options:
+  -g, --gettext-package=NAME  override PO template name, useful with --pot
+  -o, --output-file=FILE      write merged translation to FILE
+  -x, --verbose               display lots of feedback
+      --help                  display this help and exit
+      --version               output version information and exit
+
+Examples of use:
+${PROGRAM} --pot    just create a new PO template
+${PROGRAM} xy       create new PO template and merge xy.po with it
+
+Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE")
+or send email to <xml-i18n-tools\@gnome.org>.
+_EOF_
+    exit;
+}
+
+sub POFile_DetermineType ($) 
+{
+   my $type = $_;
+   my $gettext_type;
+
+   my $xml_regex     = "(?:" . $xml_support . ")";
+   my $ini_regex     = "(?:" . $ini_support . ")";
+   my $buildin_regex = "(?:" . $buildin_gettext_support . ")";
+
+   if ($type =~ /\[type: gettext\/([^\]].*)]/) 
+   {
+	$gettext_type=$1;
+   }
+   elsif ($type =~ /schemas(\.in)+$/) 
+   {
+	$gettext_type="schemas";
+   }
+   elsif ($type =~ /glade2?(\.in)*$/) 
+   {
+       $gettext_type="glade";
+   }
+   elsif ($type =~ /scm(\.in)*$/) 
+   {
+       $gettext_type="scheme";
+   }
+   elsif ($type =~ /keys(\.in)+$/) 
+   {
+       $gettext_type="keys";
+   }
+
+   # bucket types
+
+   elsif ($type =~ /$xml_regex$/) 
+   {
+       $gettext_type="xml";
+   }
+   elsif ($type =~ /$ini_regex$/) 
+   { 
+       $gettext_type="ini";
+   }
+   elsif ($type =~ /$buildin_regex$/) 
+   {
+       $gettext_type="buildin";
+   }
+   else
+   { 
+       $gettext_type="unknown"; 
+   }
+
+   return "gettext\/$gettext_type";
+}
+
+sub TextFile_DetermineEncoding ($) 
+{
+    my $gettext_code="ASCII"; # All files are ASCII by default
+    my $filetype=`file $_ | cut -d ' ' -f 2`;
+
+    if ($? eq "0")
+    {
+	if ($filetype =~ /^(ISO|UTF)/)
+	{
+	    chomp ($gettext_code = $filetype);
+	}
+	elsif ($filetype =~ /^XML/)
+	{
+	    $gettext_code="UTF-8"; # We asume that .glade and other .xml files are UTF-8
+	}
+    }
+
+    return $gettext_code;
+}
+
+
+sub FindLeftoutFiles
+{
+    my (@buf_i18n_plain,
+	@buf_i18n_xml,
+	@buf_i18n_xml_unmarked,
+	@buf_i18n_ini,
+	@buf_potfiles,
+	@buf_potfiles_ignore,
+	@buf_allfiles,
+	@buf_allfiles_sorted,
+	@buf_potfiles_sorted
+    );
+
+    ## Search and find all translatable files
+    find sub { 
+	push @buf_i18n_plain,        "$File::Find::name" if /\.($buildin_gettext_support)$/;
+	push @buf_i18n_xml,          "$File::Find::name" if /\.($xml_support)$/;
+	push @buf_i18n_ini,          "$File::Find::name" if /\.($ini_support)$/;
+	push @buf_i18n_xml_unmarked, "$File::Find::name" if /\.(schemas(\.in)+)$/;
+	}, "..";
+
+
+    open POTFILES, $POTFILES_in or die "$PROGRAM:  there's no POTFILES.in!\n";
+    @buf_potfiles = grep !/^(#|\s*$)/, <POTFILES>;
+    close POTFILES;
+
+    foreach (@buf_potfiles) {
+	s/^\[.*]\s*//;
+    }
+
+    print "Searching for missing translatable files...\n" if $VERBOSE;
+
+    ## Check if we should ignore some found files, when
+    ## comparing with POTFILES.in
+    foreach my $ignore ("POTFILES.skip", "POTFILES.ignore")
+    {
+	(-s $ignore) or next;
+
+	if ("$ignore" eq "POTFILES.ignore")
+	{
+	    print "The usage of POTFILES.ignore is deprecated. Please consider moving the\n".
+		  "content of this file to POTFILES.skip.\n";
+	}
+
+	print "Found $ignore: Ignoring files...\n" if $VERBOSE;
+	open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n";
+	    
+	while (<FILE>)
+	{
+	    push @buf_potfiles_ignore, $_ unless /^(#|\s*$)/;
+	}
+	close FILE;
+
+	@buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles);
+    }
+
+    foreach my $file (@buf_i18n_plain)
+    {
+	my $in_comment = 0;
+	my $in_macro = 0;
+
+	open FILE, "<$file";
+	while (<FILE>)
+	{
+	    # Handle continued multi-line comment.
+	    if ($in_comment)
+	    {
+		next unless s-.*\*/--;
+		$in_comment = 0;
+	    }
+
+	    # Handle continued macro.
+	    if ($in_macro)
+	    {
+		$in_macro = 0 unless /\\$/;
+		next;
+	    }
+
+	    # Handle start of macro (or any preprocessor directive).
+	    if (/^\s*\#/)
+	    {
+		$in_macro = 1 if /^([^\\]|\\.)*\\$/;
+		next;
+	    }
+
+	    # Handle comments and quoted text.
+	    while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy
+	    {
+		my $match = $1;
+		if ($match eq "/*")
+		{
+		    if (!s-/\*.*?\*/--)
+		    {
+			s-/\*.*--;
+			$in_comment = 1;
+		    }
+		}
+		elsif ($match eq "//")
+		{
+		    s-//.*--;
+		}
+		else # ' or "
+		{
+		    if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-)
+		    {
+			warn "mismatched quotes at line $. in $file\n";
+			s-$match.*--;
+		    }
+		}
+	    }	    
+
+	    if (/\.GetString ?\(QUOTEDTEXT/)
+	    {
+		## Remove the first 3 chars and add newline
+		push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+		last;
+	    }
+
+	    if (/_\(QUOTEDTEXT/)
+	    {
+		## Remove the first 3 chars and add newline
+		push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+		last;
+	    }
+	}
+	close FILE;
+    }
+
+    foreach my $file (@buf_i18n_xml) 
+    {
+	open FILE, "<$file";
+	
+	while (<FILE>) 
+	{
+	    # FIXME: share the pattern matching code with intltool-extract
+	    if (/\s_(.*)=\"/ || /<_[^>]+>/ || /translatable=\"yes\"/)
+	    {
+		push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+		last;
+	    }
+	}
+	close FILE;
+    }
+
+    foreach my $file (@buf_i18n_ini)
+    {
+	open FILE, "<$file";
+	while (<FILE>) 
+	{
+	    if (/_(.*)=/)
+	    {
+		push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+		last;
+	    }
+	}
+	close FILE;
+    }
+
+    foreach my $file (@buf_i18n_xml_unmarked)
+    {
+	push @buf_allfiles, unpack("x3 A*", $file) . "\n";
+    }
+
+
+    @buf_allfiles_sorted = sort (@buf_allfiles);
+    @buf_potfiles_sorted = sort (@buf_potfiles);
+
+    my %in2;
+    foreach (@buf_potfiles_sorted) 
+    {
+	$in2{$_} = 1;
+    }
+
+    my @result;
+
+    foreach (@buf_allfiles_sorted)
+    {
+	if (!exists($in2{$_}))
+	{
+	    push @result, $_
+	}
+    }
+
+    my @buf_potfiles_notexist;
+
+    foreach (@buf_potfiles_sorted)
+    {
+	chomp (my $dummy = $_);
+	if ("$dummy" ne "" and ! -f "../$dummy")
+	{
+	    push @buf_potfiles_notexist, $_;
+	}
+    }
+
+    ## Save file with information about the files missing
+    ## if any, and give information about this procedure.
+    if (@result + @buf_potfiles_notexist > 0)
+    {
+	if (@result) 
+	{
+	    print "\n" if $VERBOSE;
+	    unlink "missing";
+	    open OUT, ">missing";
+	    print OUT @result;
+	    close OUT;
+	    warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n".
+	         "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n";
+	    print STDERR @result, "\n";
+	    warn "If some of these files are left out on purpose then please add them to\n".
+		 "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n".
+		 "of left out files has been written in the current directory.\n";
+	}
+	if (@buf_potfiles_notexist)
+	{
+	    unlink "notexist";
+	    open OUT, ">notexist";
+	    print OUT @buf_potfiles_notexist;
+	    close OUT;
+	    warn "\n" if ($VERBOSE or @result);
+	    warn "\e[1mThe following files do not exist anymore:\e[0m\n\n";
+	    warn @buf_potfiles_notexist, "\n";
+	    warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n".
+		 "containing this list of absent files has been written in the current directory.\n";
+	}
+    }
+
+    ## If there is nothing to complain about, notify the user
+    else {
+	print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE;
+    }
+}
+
+sub Console_WriteError_InvalidOption
+{
+    ## Handle invalid arguments
+    print STDERR "Try `${PROGRAM} --help' for more information.\n";
+    exit 1;
+}
+
+sub GenerateHeaders
+{
+    my $EXTRACT = `which intltool-extract 2>/dev/null`;
+    chomp $EXTRACT;
+
+    $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"};
+
+    ## Generate the .h header files, so we can allow glade and
+    ## xml translation support
+    if (! -x "$EXTRACT")
+    {
+	print STDERR "\n *** The intltool-extract script wasn't found!"
+	     ."\n *** Without it, intltool-update can not generate files.\n";
+	exit;
+    }
+    else
+    {
+	open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n";
+	
+	while (<FILE>) 
+	{
+	   chomp;
+	   next if /^\[\s*encoding/;
+
+	   ## Find xml files in POTFILES.in and generate the
+	   ## files with help from the extract script
+
+	   my $gettext_type= &POFile_DetermineType ($1);
+
+	   if (/\.($xml_support|$ini_support)$/ || /^\[/)
+	   {
+	       s/^\[[^\[].*]\s*//;
+
+	       my $filename = "../$_";
+
+	       if ($VERBOSE)
+	       {
+		   system ($EXTRACT, "--update", "--srcdir=$SRCDIR",
+			   "--type=$gettext_type", $filename);
+	       } 
+	       else 
+	       {
+	 	   system ($EXTRACT, "--update", "--type=$gettext_type", 
+			   "--srcdir=$SRCDIR", "--quiet", $filename);
+	       }
+	   }
+       }
+       close FILE;
+   }
+}
+
+#
+# Generate .pot file from POTFILES.in
+#
+sub GeneratePOTemplate
+{
+    my $XGETTEXT = `which xgettext 2>/dev/null`;
+    my $XGETTEXT_ARGS = '';
+    chomp $XGETTEXT;
+
+    $XGETTEXT = $ENV{"XGETTEXT"} if $ENV{"XGETTEXT"};
+    $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} if $ENV{"XGETTEXT_ARGS"};
+
+    if (! -x $XGETTEXT)
+    {
+	print STDERR " *** xgettext is not found on this system!\n".
+		     " *** Without it, intltool-update can not extract strings.\n";
+	exit;
+    }
+
+    print "Building $MODULE.pot...\n" if $VERBOSE;
+
+    open INFILE, $POTFILES_in;
+    unlink "POTFILES.in.temp";
+    open OUTFILE, ">POTFILES.in.temp";
+
+    my $gettext_support_nonascii = 0;
+
+    # checks for GNU gettext >= 0.12
+    my $dummy = `$XGETTEXT --version --from-code=UTF-8 >/dev/null 2>/dev/null`;
+    if ($? == 0)
+    {
+	$gettext_support_nonascii = 1;
+    }
+    else
+    {
+	# urge everybody to upgrade gettext
+	print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n".
+		     "         strings. That means you should install a version of gettext\n".
+		     "         that supports non-ASCII strings (such as GNU gettext >= 0.12),\n".
+		     "         or have to let non-ASCII strings untranslated. (If there is any)\n";
+    }
+
+    my $encoding = "ASCII";
+    my $forced_gettext_code;
+    my @temp_headers;
+    my $encoding_problem_is_reported = 0;
+
+    while (<INFILE>) 
+    {
+	next if (/^#/ or /^\s*$/);
+
+	chomp;
+
+	my $gettext_code;
+
+	if (/^\[\s*encoding:\s*(.*)\s*\]/)
+	{
+	    $forced_gettext_code=$1;
+	}
+	elsif (/\.($xml_support|$ini_support)$/ || /^\[/)
+	{
+	    s/^\[.*]\s*//;
+	    print OUTFILE "$_.h\n";
+	    push @temp_headers, "../$_.h";
+	    $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+	} 
+	else 
+	{
+	    if ($SRCDIR eq ".") {
+	        print OUTFILE "$_\n";
+	    } else {
+	        print OUTFILE "$SRCDIR/../$_\n";
+	    }
+	    $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code);
+	}
+
+	next if (! $gettext_support_nonascii);
+
+	if (defined $forced_gettext_code)
+	{
+	    $encoding=$forced_gettext_code;
+	}
+	elsif (defined $gettext_code and "$encoding" ne "$gettext_code")
+	{
+	    if ($encoding eq "ASCII")
+	    {
+		$encoding=$gettext_code;
+	    }
+	    elsif ($gettext_code ne "ASCII")
+	    {
+		# Only report once because the message is quite long
+		if (! $encoding_problem_is_reported)
+		{
+		    print STDERR "WARNING: You should use the same file encoding for all your project files,\n".
+				 "         but $PROGRAM thinks that most of the source files are in\n".
+				 "         $encoding encoding, while \"$_\" is (likely) in\n".
+		       		 "         $gettext_code encoding. If you are sure that all translatable strings\n".
+				 "         are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n".
+				 "         line to POTFILES.in:\n\n".
+				 "                 [encoding: UTF-8]\n\n".
+				 "         and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n".
+				 "(such warning message will only be reported once.)\n";
+		    $encoding_problem_is_reported = 1;
+		}
+	    }
+	}
+    }
+
+    close OUTFILE;
+    close INFILE;
+
+    unlink "$MODULE.pot";
+    my @xgettext_argument=("$XGETTEXT",
+			   "--add-comments",
+			   "--directory\=\.\.",
+			   "--output\=$MODULE\.pot",
+			   "--files-from\=\.\/POTFILES\.in\.temp");
+    my $XGETTEXT_KEYWORDS = &FindPOTKeywords;
+    push @xgettext_argument, $XGETTEXT_KEYWORDS;
+    push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii);
+    push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS;
+    my $xgettext_command = join ' ', @xgettext_argument;
+
+    # intercept xgettext error message
+    print "Running $xgettext_command\n" if $VERBOSE;
+    my $xgettext_error_msg = `$xgettext_command 2>\&1`;
+    my $command_failed = $?;
+
+    unlink "POTFILES.in.temp";
+
+    print "Removing generated header (.h) files..." if $VERBOSE;
+    unlink foreach (@temp_headers);
+    print "done.\n" if $VERBOSE;
+
+    if (! $command_failed)
+    {
+	if (! -e "$MODULE.pot")
+	{
+	    print "None of the files in POTFILES.in contain strings marked for translation.\n" if $VERBOSE;
+	}
+	else
+	{
+	    print "Wrote $MODULE.pot\n" if $VERBOSE;
+	}
+    }
+    else
+    {
+	if ($xgettext_error_msg =~ /--from-code/)
+	{
+	    # replace non-ASCII error message with a more useful one.
+	    print STDERR "ERROR: xgettext failed to generate PO template file because there is non-ASCII\n".
+			 "       string marked for translation. Please make sure that all strings marked\n".
+			 "       for translation are in uniform encoding (say UTF-8), then \e[1m*prepend*\e[0m the\n".
+			 "       following line to POTFILES.in and rerun $PROGRAM:\n\n".
+			 "           [encoding: UTF-8]\n\n";
+	}
+	else
+	{
+	    print STDERR "$xgettext_error_msg";
+	    if (-e "$MODULE.pot")
+	    {
+		# is this possible?
+		print STDERR "ERROR: xgettext failed but still managed to generate PO template file.\n".
+			     "       Please consult error message above if there is any.\n";
+	    }
+	    else
+	    {
+		print STDERR "ERROR: xgettext failed to generate PO template file. Please consult\n".
+			     "       error message above if there is any.\n";
+	    }
+	}
+	exit (1);
+    }
+}
+
+sub POFile_Update
+{
+    -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n";
+
+    my ($lang, $outfile) = @_;
+
+    print "Merging $lang.po with $MODULE.pot..." if $VERBOSE;
+
+    my $infile = "$lang.po";
+    $outfile = "$lang.po" if ($outfile eq "");
+
+    # I think msgmerge won't overwrite old file if merge is not successful
+    system ("msgmerge", "-o", $outfile, $infile, "$MODULE.pot");
+}
+
+sub Console_WriteError_NotExisting
+{
+    my ($file) = @_;
+
+    ## Report error if supplied language file is non-existing
+    print STDERR "$PROGRAM: $file does not exist!\n";
+    print STDERR "Try '$PROGRAM --help' for more information.\n";
+    exit;
+}
+
+sub GatherPOFiles
+{
+    my @po_files = glob ("./*.po");
+
+    @languages = map (&POFile_GetLanguage, @po_files);
+
+    foreach my $lang (@languages) 
+    {
+	$po_files_by_lang{$lang} = shift (@po_files);
+    }
+}
+
+sub POFile_GetLanguage ($)
+{
+    s/^(.*\/)?(.+)\.po$/$2/;
+    return $_;
+}
+
+sub Console_Write_TranslationStatus
+{
+    my ($lang, $output_file) = @_;
+
+    $output_file = "$lang.po" if ($output_file eq "");
+
+    system ("msgfmt", "-o", "/dev/null", "--statistics", $output_file);
+}
+
+sub Console_Write_CoverageReport
+{
+    &GatherPOFiles;
+
+    foreach my $lang (@languages) 
+    {
+	print "$lang: ";
+	&POFile_Update ($lang, "");
+    }
+
+    print "\n\n * Current translation support in $MODULE \n\n";
+
+    foreach my $lang (@languages)
+    {
+	print "$lang: ";
+	system ("msgfmt", "-o", "/dev/null", "--statistics", "$lang.po");
+    }
+}
+
+sub SubstituteVariable
+{
+    my ($str) = @_;
+    
+    # always need to rewind file whenever it has been accessed
+    seek (CONF, 0, 0);
+
+    # cache each variable. varhash is global to we can add
+    # variables elsewhere.
+    while (<CONF>)
+    {
+	if (/^(\w+)=(.*)$/)
+	{
+	    ($varhash{$1} = $2) =~  s/^["'](.*)["']$/$1)/;
+	}
+    }
+    
+    if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/)
+    {
+	my $rest = $3;
+	my $untouched = $1;
+	my $sub = $varhash{$2};
+	
+	return SubstituteVariable ("$untouched$sub$rest");
+    }
+    return $str;
+}
+
+sub CONF_Handle_Open
+{
+    my $base_dirname = getcwd();
+    $base_dirname =~ s@.*/@@;
+
+    my ($conf_in, $src_dir);
+
+    if ($base_dirname =~ /^po(-.+)?$/) 
+    {
+	if (-f "Makevars") 
+	{
+	    my $makefile_source;
+
+	    local (*IN);
+	    open (IN, "<Makevars") || die "can't open Makevars: $!";
+
+	    while (<IN>) 
+	    {
+		if (/^top_builddir[ \t]*=/) 
+		{
+		    $src_dir = $_;
+		    $src_dir =~ s/^top_builddir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+		    chomp $src_dir;
+                    if (-f "$src_dir" . "/configure.ac") {
+                        $conf_in = "$src_dir" . "/configure.ac" . "\n";
+                    } else {
+                        $conf_in = "$src_dir" . "/configure.in" . "\n";
+                    }
+		    last;
+		}
+	    }
+	    close IN;
+
+	    $conf_in || die "Cannot find top_builddir in Makevars.";
+	}
+	elsif (-f "../configure.ac") 
+	{
+	    $conf_in = "../configure.ac";
+	} 
+	elsif (-f "../configure.in") 
+	{
+	    $conf_in = "../configure.in";
+	} 
+	else 
+	{
+	    my $makefile_source;
+
+	    local (*IN);
+	    open (IN, "<Makefile") || return;
+
+	    while (<IN>) 
+	    {
+		if (/^top_srcdir[ \t]*=/) 
+		{
+		    $src_dir = $_;		    
+		    $src_dir =~ s/^top_srcdir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/;
+
+		    chomp $src_dir;
+		    $conf_in = "$src_dir" . "/configure.in" . "\n";
+
+		    last;
+		}
+	    }
+	    close IN;
+
+	    $conf_in || die "Cannot find top_srcdir in Makefile.";
+	}
+
+	open (CONF, "<$conf_in");
+    }
+    else
+    {
+	print STDERR "$PROGRAM: Unable to proceed.\n" .
+		     "Make sure to run this script inside the po directory.\n";
+	exit;
+    }
+}
+
+sub FindPackageName
+{
+    my $version;
+    my $domain = &FindMakevarsDomain;
+    my $name = $domain || "untitled";
+
+    &CONF_Handle_Open;
+
+    my $conf_source; {
+	local (*IN);
+	open (IN, "<&CONF") || return $name;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$conf_source = <IN>;
+	close IN;
+    }
+
+    # priority for getting package name:
+    # 1. GETTEXT_PACKAGE
+    # 2. first argument of AC_INIT (with >= 2 arguments)
+    # 3. first argument of AM_INIT_AUTOMAKE (with >= 2 argument)
+
+    # /^AM_INIT_AUTOMAKE\([\s\[]*([^,\)\s\]]+)/m 
+    # the \s makes this not work, why?
+    if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m)
+    {
+	($name, $version) = ($1, $2);
+	($varhash{"AC_PACKAGE_NAME"} = $name) =~ s/[\[\]\s]//g;
+	($varhash{"PACKAGE"} = $name) =~ s/[\[\]\s]//g;
+	($varhash{"AC_PACKAGE_VERSION"} = $version) =~ s/[\[\]\s]//g;
+ 	($varhash{"VERSION"} = $version) =~ s/[\[\]\s]//g;
+   }
+    
+    if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m) 
+    {
+	($name, $version) = ($1, $2);
+	($varhash{"AC_PACKAGE_NAME"} = $name) =~ s/[\[\]\s]//g;
+	($varhash{"PACKAGE"} = $name) =~ s/[\[\]\s]//g;
+	($varhash{"AC_PACKAGE_VERSION"} = $version) =~ s/[\[\]\s]//g;
+ 	($varhash{"VERSION"} = $version) =~ s/[\[\]\s]//g;
+    }
+
+    # \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;
+
+    $name = $domain if $domain;
+
+    $name = SubstituteVariable ($name);
+    $name =~ s/^["'](.*)["']$/$1/;
+
+    return $name if $name;
+}
+
+
+sub FindPOTKeywords
+{
+
+    my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_";
+    my $varname = "XGETTEXT_OPTIONS";
+    my $make_source; {
+	local (*IN);
+	open (IN, "<Makevars") || (open(IN, "<Makefile.in.in") && ($varname = "XGETTEXT_KEYWORDS")) || return $keywords;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$make_source = <IN>;
+	close IN;
+    }
+
+    $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m;
+    
+    return $keywords;
+}
+
+sub FindMakevarsDomain
+{
+
+    my $domain = "";
+    my $makevars_source; { 
+	local (*IN);
+	open (IN, "<Makevars") || return $domain;
+	seek (IN, 0, 0);
+	local $/; # slurp mode
+	$makevars_source = <IN>;
+	close IN;
+    }
+
+    $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]]+)/m;
+    $domain =~ s/^\s+//;
+    $domain =~ s/\s+$//;
+    
+    return $domain;
+}
diff --git a/m4/Makefile.in b/m4/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -85,12 +85,34 @@ GNOME_LIBS = @GNOME_LIBS@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
 G_ASSERTIONS = @G_ASSERTIONS@
+HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
+HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 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_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+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_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_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
@@ -116,10 +138,14 @@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
 PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOUP_CFLAGS = @SOUP_CFLAGS@
+SOUP_LIBS = @SOUP_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GMAIL_FALSE = @WITH_GMAIL_FALSE@
+WITH_GMAIL_TRUE = @WITH_GMAIL_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
diff --git a/po/ChangeLog b/po/ChangeLog
@@ -1,106 +0,0 @@
-2004-06-29 18:36  jylefort
-
-	* fr.po: Version 0.4.0
-
-2004-06-29 17:46  jylefort
-
-	* POTFILES.in, fr.po: Updated
-
-2004-05-28 14:12  jylefort
-
-	* POTFILES.in: The add mailbox dialogs have been unified; GTK+
-	  2.4.0 is now required
-
-2004-03-19 14:20  jylefort
-
-	* fr.po: Version 0.3.4
-
-2004-03-19 14:17  jylefort
-
-	* fr.po: Updated
-
-2004-03-12 13:57  jylefort
-
-	* fr.po: Version 0.3.3
-
-2004-03-12 13:42  jylefort
-
-	* fr.po: Updated
-
-2003-12-24 15:22  jylefort
-
-	* fr.po: Version 0.3.2
-
-2003-12-06 15:03  jylefort
-
-	* fr.po: Images are not inlined anymore; cleanups
-
-2003-12-06 13:51  jylefort
-
-	* POTFILES.in, fr.po: Now uses libglade instead of code generation
-
-2003-11-27 10:21  jylefort
-
-	* POTFILES.in, fr.po: Update to new design
-
-2003-10-20 17:24  jylefort
-
-	* fr.po: Version 0.3.1
-
-2003-10-20 17:18  jylefort
-
-	* fr.po: Added some new translations
-
-2003-10-02 17:26  jylefort
-
-	* POTFILES.in, fr.po: Updated
-
-2003-09-25 19:55  jylefort
-
-	* POTFILES.in: Important redesign
-
-2003-09-25 18:56  jylefort
-
-	* fr.po: Added one entry
-
-2003-09-25 18:41  jylefort
-
-	* fr.po: Better wording
-
-2003-09-25 18:15  jylefort
-
-	* fr.po: Added some entries
-
-2003-09-25 17:00  jylefort
-
-	* fr.po: Implemented Sylpheed support
-
-2003-09-25 17:00  jylefort
-
-	* POTFILES.in: Fixed an oblivion
-
-2003-09-23 09:54  jylefort
-
-	* fr.po: Added some translations
-
-2003-09-23 09:43  jylefort
-
-	* POTFILES.in: All GConf calls are now checked for errors
-
-2003-09-18 04:09  jylefort
-
-	* fr.po: HIG fixes
-
-2003-09-17 11:09  jylefort
-
-	* Makefile.in.in: Switched to Autoconf 2.57, Automake 1.7, and some
-	  cleanups
-
-2003-09-09 12:31  jylefort
-
-	* POTFILES.in, fr.po: Completed the french translation
-
-2003-09-09 07:26  jylefort
-
-	* Makefile.in.in, POTFILES.in, fr.po: Internationalized
-
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
@@ -11,9 +11,6 @@
 #
 # - Modified by jacob berkman <jacob@ximian.com> to install
 #   Makefile.in.in and po2tbl.sed.in for use with glib-gettextize
-#
-# - Modified by Jean-Yves Lefort <jylefort@brutele.be> to not require
-#   GNU make, and to not use the xgettext --add-comments flag
 
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 PACKAGE = @PACKAGE@
@@ -24,14 +21,15 @@ SHELL = /bin/sh
 
 srcdir = @srcdir@
 top_srcdir = @top_srcdir@
+top_builddir = ..
 VPATH = @srcdir@
 
 prefix = @prefix@
 exec_prefix = @exec_prefix@
 datadir = @datadir@
 libdir = @libdir@
-localedir = $(prefix)/share/locale
-gnulocaledir = $(prefix)/share/locale
+localedir = $(libdir)/locale
+gnulocaledir = $(datadir)/locale
 gettextsrcdir = $(datadir)/glib-2.0/gettext/po
 subdir = po
 
@@ -44,7 +42,10 @@ GENCAT = @GENCAT@
 GMSGFMT = @GMSGFMT@
 MSGFMT = @MSGFMT@
 XGETTEXT = @XGETTEXT@
-MSGMERGE = msgmerge
+INTLTOOL_UPDATE = @INTLTOOL_UPDATE@
+INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist
+GENPOT   = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot
 
 DEFS = @DEFS@
 CFLAGS = @CFLAGS@
@@ -57,7 +58,7 @@ COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
 SOURCES = 
 POFILES = @POFILES@
 GMOFILES = @GMOFILES@
-DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \
+DISTFILES = Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \
 $(POFILES) $(GMOFILES) $(SOURCES)
 
 POTFILES = \
@@ -74,7 +75,7 @@ INSTOBJEXT = @INSTOBJEXT@
 
 .po.pox:
 	$(MAKE) $(GETTEXT_PACKAGE).pot
-	$(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*.pox
+	$(MSGMERGE) $< $(srcdir)/$(GETTEXT_PACKAGE).pot -o $*pox
 
 .po.mo:
 	$(MSGFMT) -o $@ $<
@@ -93,13 +94,8 @@ all: all-@USE_NLS@
 all-yes: $(CATALOGS)
 all-no:
 
-$(GETTEXT_PACKAGE).pot: $(POTFILES)
-	$(XGETTEXT) --default-domain=$(GETTEXT_PACKAGE) --directory=$(top_srcdir) \
-	  --keyword=_ --keyword=N_ \
-	  --files-from=$(srcdir)/POTFILES.in \
-	&& test ! -f $(GETTEXT_PACKAGE).po \
-	   || ( rm -f $(srcdir)/$(GETTEXT_PACKAGE).pot \
-		&& mv $(GETTEXT_PACKAGE).po $(srcdir)/$(GETTEXT_PACKAGE).pot )
+$(srcdir)/$(GETTEXT_PACKAGE).pot: $(POTFILES)
+	$(GENPOT)
 
 install: install-exec install-data
 install-exec:
@@ -172,7 +168,9 @@ uninstall:
 	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT); \
 	  rm -f $(DESTDIR)$(gnulocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE)$(INSTOBJEXT).m; \
 	done
-	rm -f $(DESTDIR)$(gettextsrcdir)/po-Makefile.in.in
+	if test "$(PACKAGE)" = "glib"; then \
+	  rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
+	fi
 
 check: all
 
@@ -181,6 +179,7 @@ dvi info tags TAGS ID:
 mostlyclean:
 	rm -f core core.* *.pox $(GETTEXT_PACKAGE).po *.old.po cat-id-tbl.tmp
 	rm -fr *.o
+	rm -f .intltool-merge-cache
 
 clean: mostlyclean
 
@@ -202,19 +201,28 @@ dist distdir: update-po $(DISTFILES)
 
 update-po: Makefile
 	$(MAKE) $(GETTEXT_PACKAGE).pot
+	tmpdir=`pwd`; \
 	cd $(srcdir); \
 	catalogs='$(CATALOGS)'; \
 	for cat in $$catalogs; do \
 	  cat=`basename $$cat`; \
 	  lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-	  mv $$lang.po $$lang.old.po; \
 	  echo "$$lang:"; \
-	  if $(MSGMERGE) $$lang.old.po $(GETTEXT_PACKAGE).pot -o $$lang.po; then \
-	    rm -f $$lang.old.po; \
+	  if $$tmpdir/$(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist -o $$tmpdir/$$lang.new.po $$lang; then \
+	    if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \
+	      rm -f $$tmpdir/$$lang.new.po; \
+            else \
+	      if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \
+	        :; \
+	      else \
+	        echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \
+	        rm -f $$tmpdir/$$lang.new.po; \
+	        exit 1; \
+	      fi; \
+	    fi; \
 	  else \
 	    echo "msgmerge for $$cat failed!"; \
-	    rm -f $$lang.po; \
-	    mv $$lang.old.po $$lang.po; \
+	    rm -f $$tmpdir/$$lang.new.po; \
 	  fi; \
 	done
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
@@ -1,6 +1,7 @@
+data/mail-notification.desktop.in
+data/mail-notification.schemas.in
 src/eggtrayicon.c
-src/mn-conf.c
-src/mn-dialog.c
+src/mn-gmail-mailbox.c
 src/mn-mail-icon.c
 src/mn-mailbox-properties-dialog.c
 src/mn-mailbox.c
@@ -12,15 +13,11 @@ src/mn-mh-mailbox.c
 src/mn-pending-mailbox.c
 src/mn-pop3-mailbox.c
 src/mn-preferences.c
-src/mn-stock.c
 src/mn-sylpheed-mailbox.c
 src/mn-ui.c
 src/mn-unsupported-mailbox.c
-src/mn-uri.c
 src/mn-util.c
-src/mn-vfs.c
-src/old/mn-preferences.c
-ui/dialog-strings.c
-ui/mailbox-properties-strings.c
-ui/menu-strings.c
-ui/preferences-strings.c
+ui/dialog.glade
+ui/mailbox-properties.glade
+ui/menu.glade
+ui/preferences.glade
diff --git a/po/fr.gmo b/po/fr.gmo
Binary files differ.
diff --git a/po/fr.po b/po/fr.po
@@ -1,13 +1,17 @@
-# French translation of mail-notification.
+# French translations for mail-notification.
 # Copyright (c) 2003, 2004 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
 # Jean-Yves Lefort <jylefort@brutele.be>, 2004.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: mail-notification 0.4.0\n"
+"Project-Id-Version: mail-notification 0.5.0\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-06-29 20:10+0200\n"
-"PO-Revision-Date: 2004-06-29 18:36+0200\n"
+"POT-Creation-Date: 2004-07-21 18:10+0200\n"
+"PO-Revision-Date: 2004-07-21 21:58+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"
@@ -15,6 +19,89 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n>1;\n"
 
+#: data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Etre notifié lorsque du nouveau courrier arrive"
+
+#: data/mail-notification.desktop.in.h:2 src/mn-main.c:112 src/mn-ui.c:262
+msgid "Mail Notification"
+msgstr "Notification de Courrier"
+
+#: data/mail-notification.schemas.in.h:1
+msgid "Clicked command"
+msgstr "Commande du click sur l'îcone"
+
+#: data/mail-notification.schemas.in.h:2
+msgid "Delay between mail checks (minutes part)."
+msgstr "Délai entre les vérifications de courrier (partie minutes)."
+
+#: data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (seconds part)."
+msgstr "Délai entre les vérifications de courrier (partie secondes)."
+
+#: data/mail-notification.schemas.in.h:4
+msgid "Height of preferences dialog"
+msgstr "Hauteur de la boîte de dialogue contenant les préférences"
+
+#: data/mail-notification.schemas.in.h:5
+msgid "Mailboxes list"
+msgstr "Liste des boîtes aux lettres"
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Minutes between mail checks"
+msgstr "Minutes entre les vérifications de courrier"
+
+#: data/mail-notification.schemas.in.h:7
+msgid "New mail command"
+msgstr "Commande de nouveau message"
+
+#: data/mail-notification.schemas.in.h:8
+msgid "Run a command when new mail arrives"
+msgstr "Exécuter une commande lorsque du nouveau courrier arrive"
+
+#: data/mail-notification.schemas.in.h:9
+msgid "Run a command when the icon is clicked"
+msgstr "Exécuter une commande lorsque l'îcone est cliquée"
+
+#: data/mail-notification.schemas.in.h:10
+msgid "Seconds between mail checks"
+msgstr "Secondes entre les vérifications de courrier"
+
+#: data/mail-notification.schemas.in.h:11
+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:12
+msgid "The command to run when the icon is clicked."
+msgstr "La commande à exécuter lorsque l'îcone est cliquée."
+
+#: data/mail-notification.schemas.in.h:13
+msgid "The height of the preferences dialog in pixels."
+msgstr ""
+"La hauteur de la boîte de dialogue contenant les préférences en pixels."
+
+#: data/mail-notification.schemas.in.h:14
+msgid "The list of mailboxes to monitor."
+msgstr "La liste des boîtes aux lettres à surveiller."
+
+#: data/mail-notification.schemas.in.h:15
+msgid "The width of the preferences dialog in pixels."
+msgstr ""
+"La largeur de la boîte de dialogue contenant les préférences en pixels."
+
+#: data/mail-notification.schemas.in.h:16
+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:17
+msgid "Whether to run a command when the icon is clicked or not."
+msgstr "Si une commande doit être exécutée lorsque l'îcone est cliquée ou pas."
+
+#: data/mail-notification.schemas.in.h:18
+msgid "Width of preferences dialog"
+msgstr "Largeur de la boîte de dialogue contenant les préférences"
+
 #: src/eggtrayicon.c:109
 msgid "Orientation"
 msgstr "Orientation"
@@ -23,82 +110,118 @@ msgstr "Orientation"
 msgid "The orientation of the tray."
 msgstr "L'orientation du plateau."
 
+#: src/mn-gmail-mailbox.c:165
+msgid "unable to parse Gmail URI"
+msgstr "impossible d'interpréter l'URI Gmail"
+
+#: src/mn-gmail-mailbox.c:261
+#, c-format
+msgid "logging into Gmail as user %s"
+msgstr "ouverture de la session Gmail en tant que %s"
+
+#: src/mn-gmail-mailbox.c:277 src/mn-gmail-mailbox.c:356
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr "impossible de transférer des données: %s"
+
+#: src/mn-gmail-mailbox.c:283
+#, c-format
+msgid "successfully logged into Gmail as user %s"
+msgstr "ouverture de la session Gmail en tant que %s effectuée avec succès"
+
+#: src/mn-gmail-mailbox.c:288
+msgid "login failed"
+msgstr "l'ouverture de session a échoué"
+
+#: src/mn-gmail-mailbox.c:341
+#, c-format
+msgid "searching for unread mail in %s"
+msgstr "recherche du courrier non lu dans %s"
+
+#: src/mn-gmail-mailbox.c:363
+msgid "unable to parse Gmail data"
+msgstr "impossible d'interpréter les données Gmail"
+
 #: src/mn-mail-icon.c:130
 msgid "You have no new mail"
 msgstr "Vous n'avez pas de courrier"
 
-#: src/mn-mailbox-properties-dialog.c:117
+#: src/mn-mailbox-properties-dialog.c:155
 msgid "Add a Mailbox"
 msgstr "Ajouter une Boîte aux Lettres"
 
-#: src/mn-mailbox-properties-dialog.c:250
+#: src/mn-mailbox-properties-dialog.c:182
+msgid "autodetect"
+msgstr "détecter automatiquement"
+
+#: src/mn-mailbox-properties-dialog.c:394
 #, c-format
 msgid "%s Properties"
 msgstr "Propriétés de %s"
 
-#: src/mn-mailbox-properties-dialog.c:393
+#: src/mn-mailbox-properties-dialog.c:580
 msgid "Select a File or Folder"
 msgstr "Sélectionnez un Fichier ou Dossier"
 
-#: src/mn-mailbox.c:193
+#: src/mn-mailbox.c:199
 msgid "URI"
 msgstr "URI"
 
-#: src/mn-mailbox.c:194
+#: src/mn-mailbox.c:200
 msgid "The mailbox URI"
 msgstr "L'URI de la boîte aux lettres"
 
-#: src/mn-mailbox.c:200
+#: src/mn-mailbox.c:206
 msgid "Name"
 msgstr "Nom"
 
-#: src/mn-mailbox.c:201
+#: src/mn-mailbox.c:207
 msgid "The mailbox human-readable name"
 msgstr "Le nom, lisible par un humain, de la boîte aux lettres"
 
-#: src/mn-mailbox.c:207
+#: src/mn-mailbox.c:213
 msgid "Automatic"
 msgstr "Automatique"
 
-#: src/mn-mailbox.c:208
+#: src/mn-mailbox.c:214
 msgid "Whether the mailbox has to be manually checked or not"
 msgstr "Si la boîte aux lettres doit être vérifiée manuellement ou pas"
 
-#: src/mn-mailbox.c:214
+#: src/mn-mailbox.c:220
 msgid "Has new"
 msgstr "A du nouveau"
 
-#: src/mn-mailbox.c:215
+#: src/mn-mailbox.c:221
 msgid "Whether the mailbox has new mail or not"
 msgstr "Si la boîte aux lettres a du nouveau courrier ou pas"
 
-#: src/mn-mailbox.c:221
+#: src/mn-mailbox.c:227
 msgid "Error"
 msgstr "Erreur"
 
-#: src/mn-mailbox.c:222
+#: src/mn-mailbox.c:228
 msgid "The mailbox error if any"
 msgstr "L'erreur de la boîte aux lettres si il y en a une"
 
-#: src/mn-mailbox.c:248
+#: src/mn-mailbox.c:254
 #, c-format
 msgid "unable to cancel monitoring of %s: %s"
 msgstr "impossible d'annuler la surveillance de %s: %s"
 
-#: src/mn-mailbox.c:437
+#: src/mn-mailbox.c:443
 msgid "does not exist"
 msgstr "n'existe pas"
 
-#: src/mn-mailbox.c:454
+#: src/mn-mailbox.c:460
 msgid "unknown format"
 msgstr "format inconnu"
 
-#: src/mn-mailbox.c:547
+#: src/mn-mailbox.c:553
 #, c-format
 msgid "unable to monitor %s: %s"
 msgstr "impossible de surveiller %s: %s"
 
-#: src/mn-mailbox.c:561
+#: src/mn-mailbox.c:567
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -113,7 +236,7 @@ msgstr[1] ""
 "Comme solution de secours, elles seront vérifiées toutes les %i secondes (ce "
 "délai est configurable depuis les Préférences)."
 
-#: src/mn-mailbox.c:572
+#: src/mn-mailbox.c:578
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -128,7 +251,7 @@ msgstr[1] ""
 "Comme solution de secours, elles seront vérifiées toutes les %i minutes (ce "
 "délai est configurable depuis les Préférences)."
 
-#: src/mn-mailbox.c:583
+#: src/mn-mailbox.c:589
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -143,11 +266,11 @@ msgstr[1] ""
 "Comme solution de secours, elles seront vérifiées approximativement toutes "
 "les %i minutes (ce délai est configurable depuis les Préférences)."
 
-#: src/mn-mailbox.c:597
+#: src/mn-mailbox.c:603
 msgid "A monitoring error has occurred."
 msgstr "Une erreur de surveillance s'est produite."
 
-#: src/mn-mailbox.c:598
+#: src/mn-mailbox.c:604
 #, c-format
 msgid ""
 "Mail Notification was unable to enable automatic notification for one or "
@@ -188,10 +311,6 @@ msgstr "Activer la sortie informationelle"
 msgid "List compiled-in handlers and exit"
 msgstr "Afficher les prises en charge disponibles et quitter"
 
-#: src/mn-main.c:112 src/mn-ui.c:249
-msgid "Mail Notification"
-msgstr "Notification de Courrier"
-
 #: src/mn-main.c:124
 msgid "unable to initialize GnomeVFS"
 msgstr "impossible d'initialiser GnomeVFS"
@@ -235,57 +354,66 @@ msgstr "impossible de fermer .mh_sequences: %s"
 msgid "detecting..."
 msgstr "en cours de détection..."
 
-#: src/mn-pop3-mailbox.c:161
-msgid "unable to parse URI"
-msgstr "impossible d'interpréter l'URI"
+#: src/mn-pop3-mailbox.c:164
+msgid "unable to parse POP3 URI"
+msgstr "impossible d'interpréter l'URI POP3"
 
-#: src/mn-pop3-mailbox.c:187
+#: src/mn-pop3-mailbox.c:190
 #, c-format
-msgid "connecting to POP3 server %s:%i"
-msgstr "connection au server POP3 %s:%i en cours"
+msgid "connecting to POP3 server %s"
+msgstr "connection au server POP3 %s en cours"
 
-#: src/mn-pop3-mailbox.c:224
+#: src/mn-pop3-mailbox.c:227
 #, c-format
-msgid "successfully connected to %s:%i"
-msgstr "connecté à %s:%i"
+msgid "successfully connected to %s"
+msgstr "connecté à %s"
 
-#: src/mn-pop3-mailbox.c:230
+#: src/mn-pop3-mailbox.c:233
 msgid "unable to connect to server"
 msgstr "impossible de se connecter au serveur"
 
-#: src/mn-pop3-mailbox.c:235
+#: src/mn-pop3-mailbox.c:238
 msgid "connection to server unexpectedly closed"
 msgstr "la connection au serveur s'est close de manière inattendue"
 
-#: src/mn-pop3-mailbox.c:274
+#: src/mn-pop3-mailbox.c:277
 #, c-format
 msgid "invalid STAT reply \"%s\""
 msgstr "réponse STAT \"%s\" invalide"
 
-#: src/mn-preferences.c:195 src/old/mn-preferences.c:157
+#: src/mn-pop3-mailbox.c:296
+msgid "unknown error"
+msgstr "erreur inconnue"
+
+#: src/mn-pop3-mailbox.c:317
+#, c-format
+msgid "invalid reply \"%s\""
+msgstr "réponse \"%s\" invalide"
+
+#: src/mn-preferences.c:195
 msgid "Mailbox"
 msgstr "Boîte aux lettres"
 
-#: src/mn-preferences.c:209 src/old/mn-preferences.c:171
+#: src/mn-preferences.c:209
 msgid "Format"
 msgstr "Format"
 
-#: src/mn-preferences.c:361 src/old/mn-preferences.c:258
+#: src/mn-preferences.c:361
 msgid "No mailbox selected."
 msgstr "Pas de boîte aux lettres sélectionnée."
 
-#: src/mn-preferences.c:366 src/old/mn-preferences.c:263
+#: src/mn-preferences.c:366
 #, 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-preferences.c:423 src/old/mn-preferences.c:318
+#: src/mn-preferences.c:429
 msgid "Unable to add mailbox."
 msgstr "Impossible d'ajouter la boîte aux lettres."
 
-#: src/mn-preferences.c:423 src/old/mn-preferences.c:318
+#: src/mn-preferences.c:429
 msgid "The mailbox is already in the list."
 msgstr "La boîte aux lettres est déjà dans la liste."
 
@@ -298,32 +426,40 @@ msgstr "Une erreur de commande s'est produite."
 msgid "Unable to execute clicked command: %s."
 msgstr "Impossible d'exécuter la commande associée au click sur l'icône: %s."
 
-#: src/mn-ui.c:179
+#: src/mn-ui.c:184
 msgid "The following mailbox has new mail:\n"
 msgid_plural "The following mailboxes have new mail:\n"
 msgstr[0] "La boîte aux lettres suivante a du nouveau courrier:\n"
 msgstr[1] "Les boîtes aux lettres suivantes ont du nouveau courrier:\n"
 
-#: src/mn-ui.c:186
+#: src/mn-ui.c:191
 msgid "You have no new mail."
 msgstr "Vous n'avez pas de nouveau courrier."
 
-#: src/mn-ui.c:190
+#: src/mn-ui.c:195
 msgid "The following mailbox reported an error:\n"
 msgid_plural "The following mailboxes reported an error:\n"
 msgstr[0] "La boîte aux lettres suivante a indiqué une erreur:\n"
 msgstr[1] "Les boîtes aux lettres suivantes ont indiqué une erreur:\n"
 
-#: src/mn-ui.c:195
+#: src/mn-ui.c:200
 msgid "The following mailbox is unsupported:\n"
 msgid_plural "The following mailboxes are unsupported:\n"
 msgstr[0] "La boîte aux lettres suivante n'est pas prise en charge:\n"
 msgstr[1] "Les boîtes aux lettres suivantes ne sont pas prises en charge:\n"
 
-#: src/mn-ui.c:252
+#: src/mn-ui.c:217
+msgid "No mailboxes are being monitored."
+msgstr "Aucune boîte aux lettres n'est surveillée."
+
+#: src/mn-ui.c:265
 msgid "A Mail Notification Icon"
 msgstr "Une Icône de Notification de Courrier"
 
+#: src/mn-ui.c:268
+msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+msgstr "Jean-Yves Lefort <jylefort@brutele.be>"
+
 #: src/mn-unsupported-mailbox.c:98
 msgid "unsupported"
 msgstr "non pris en charge"
@@ -336,168 +472,176 @@ msgstr "Raison"
 msgid "The reason why the mailbox is unsupported"
 msgstr "La raison pour laquelle la boîte aux lettres n'est pas prise en charge"
 
-#: src/mn-util.c:110
+#: src/mn-util.c:113
 #, c-format
 msgid "error loading image: %s"
 msgstr "erreur de chargement d'image: %s"
 
-#: src/mn-util.c:148
+#: src/mn-util.c:151
 #, c-format
 msgid "widget %s not found in interface %s"
 msgstr "élément %s non trouvé dans interface %s"
 
-#: src/mn-util.c:255
+#: src/mn-util.c:258
 msgid "received an invalid URI list"
 msgstr "une liste d'URI invalide a été reçue"
 
-#: src/mn-util.c:291
+#: src/mn-util.c:294
 msgid "received an invalid Mozilla URL"
 msgstr "une URL Mozilla invalide a été reçue"
 
-#: src/mn-util.c:383
+#: src/mn-util.c:386
 msgid "Unable to display help."
 msgstr "Impossible d'afficher l'aide."
 
-#: ui/mailbox-properties-strings.c:7
-msgid "_File or folder"
-msgstr "_Fichier ou dossier"
-
-#: ui/mailbox-properties-strings.c:8 ui/mailbox-properties-strings.c:14
-#: ui/preferences-strings.c:9 ui/preferences-strings.c:16
-#: ui/preferences-strings.c:18
-msgid "    "
-msgstr "    "
-
-#: ui/mailbox-properties-strings.c:9
-msgid "_Location:"
-msgstr "_Emplacement:"
-
-#: ui/mailbox-properties-strings.c:10
-msgid "The URI of the file or folder"
-msgstr "L'URI du fichier ou dossier"
-
-#: ui/mailbox-properties-strings.c:11 ui/mailbox-properties-strings.c:17
-#: ui/mailbox-properties-strings.c:22 ui/mailbox-properties-strings.c:25
-#: ui/preferences-strings.c:22 ui/preferences-strings.c:26
+#: ui/mailbox-properties.glade.h:1 ui/preferences.glade.h:2
 msgid "*"
 msgstr "*"
 
-#: ui/mailbox-properties-strings.c:12
-msgid "_Browse..."
-msgstr "_Parcourir..."
-
-#: ui/mailbox-properties-strings.c:13
-msgid "_POP3 mailbox"
-msgstr "Boîte aux lettres _POP3"
+#: ui/mailbox-properties.glade.h:2
+msgid "P_ort:"
+msgstr "P_ort:"
 
-#: ui/mailbox-properties-strings.c:15
-msgid "_Hostname:"
-msgstr "Nom d'_hôte:"
+#: ui/mailbox-properties.glade.h:3
+msgid "The URI of the mailbox"
+msgstr "L'URI de la boîte aux lettres"
 
-#: ui/mailbox-properties-strings.c:16
+#: ui/mailbox-properties.glade.h:4
 msgid "The hostname or IP address of the POP3 server"
 msgstr "Le nom d'hôte ou adresse IP du serveur POP3"
 
-#: ui/mailbox-properties-strings.c:18
-msgid "P_ort:"
-msgstr "P_ort:"
-
-#: ui/mailbox-properties-strings.c:19
+#: ui/mailbox-properties.glade.h:5
 msgid "The port number of the POP3 server"
 msgstr "Le numéro de port du serveur POP3"
 
-#: ui/mailbox-properties-strings.c:20
-msgid "Us_ername:"
-msgstr "Nom d'utilisat_eur:"
+#: ui/mailbox-properties.glade.h:6
+msgid ""
+"This mailbox type has not been compiled in and is therefore unsupported."
+msgstr ""
+"Ce type de boîte aux lettres n'a pas été inclus lors de la compilation et "
+"n'est donc pas pris en charge."
 
-#: ui/mailbox-properties-strings.c:21
-msgid "Your username on the POP3 server"
-msgstr "Votre nom d'utilisateur sur le serveur POP3"
+#: ui/mailbox-properties.glade.h:7
+msgid "Your Gmail password"
+msgstr "Votre mot de passe Gmail"
 
-#: ui/mailbox-properties-strings.c:23
-msgid "P_assword:"
-msgstr "Mot de p_asse:"
+#: ui/mailbox-properties.glade.h:8
+msgid "Your Gmail username"
+msgstr "Votre nom d'utilisateur Gmail"
 
-#: ui/mailbox-properties-strings.c:24
+#: ui/mailbox-properties.glade.h:9
 msgid "Your password on the POP3 server"
 msgstr "Votre mot de passe sur le serveur POP3"
 
-#: ui/menu-strings.c:7
-msgid "Update the icon"
-msgstr "Mettre l'icône à jour"
+#: ui/mailbox-properties.glade.h:10
+msgid "Your username on the POP3 server"
+msgstr "Votre nom d'utilisateur sur le serveur POP3"
 
-#: ui/menu-strings.c:8
-msgid "_Update"
-msgstr "_Mettre à jour"
+#: ui/mailbox-properties.glade.h:11
+msgid "_Browse..."
+msgstr "_Parcourir..."
 
-#: ui/menu-strings.c:9
+#: ui/mailbox-properties.glade.h:12
+msgid "_Hostname:"
+msgstr "Nom d'_hôte:"
+
+#: ui/mailbox-properties.glade.h:13
+msgid "_Location:"
+msgstr "_Emplacement:"
+
+#: ui/mailbox-properties.glade.h:14
+msgid "_Password:"
+msgstr "_Mot de passe:"
+
+#: ui/mailbox-properties.glade.h:15
+msgid "_Type:"
+msgstr "_Type:"
+
+#: ui/mailbox-properties.glade.h:16
+msgid "_Username:"
+msgstr "_Nom d'utilisateur:"
+
+#: ui/menu.glade.h:1
 msgid "Show help"
 msgstr "Afficher l'aide"
 
-#: ui/menu-strings.c:10
+#: ui/menu.glade.h:2
+msgid "Update the icon"
+msgstr "Mettre l'icône à jour"
+
+#: ui/menu.glade.h:3
 msgid "_Help"
 msgstr "_Aide"
 
-#: ui/preferences-strings.c:7
-msgid "Mail Notification Preferences"
-msgstr "Préférences de la Notification de Courrier"
+#: ui/menu.glade.h:4
+msgid "_Update"
+msgstr "_Mettre à jour"
+
+#: ui/preferences.glade.h:1
+msgid "    "
+msgstr "    "
 
-#: ui/preferences-strings.c:8
+#: ui/preferences.glade.h:3
+msgid "<span weight=\"bold\">Commands</span>"
+msgstr "<span weight=\"bold\">Commandes</span>"
+
+#: ui/preferences.glade.h:4
 msgid "<span weight=\"bold\">General</span>"
 msgstr "<span weight=\"bold\">Général</span>"
 
-#: ui/preferences-strings.c:10
-msgid "_Delay between mail checks:"
-msgstr "_Délai entre les vérifications de courrier:"
+#: ui/preferences.glade.h:5
+msgid "<span weight=\"bold\">Mailboxes</span>"
+msgstr "<span weight=\"bold\">Boîtes aux lettres</span>"
 
-#: ui/preferences-strings.c:11 ui/preferences-strings.c:13
+#: ui/preferences.glade.h:6
+msgid "Mail Notification Preferences"
+msgstr "Préférences de la Notification de Courrier"
+
+#: ui/preferences.glade.h:7
 msgid "The amount of time to wait between mail checks"
 msgstr "La quantité de temps à attendre entre les vérifications de courrier"
 
-#: ui/preferences-strings.c:12
-msgid "minutes"
-msgstr "minutes"
+#: ui/preferences.glade.h:8
+msgid "The command to run when new mail arrives"
+msgstr "La commande à exécuter lorsque du nouveau courrier arrive"
 
-#: ui/preferences-strings.c:14
-msgid "seconds"
-msgstr "secondes"
+#: ui/preferences.glade.h:9
+msgid "The command to run when the icon is clicked"
+msgstr "La commande à exécuter lorsque l'îcone est cliquée"
 
-#: ui/preferences-strings.c:15
-msgid "<span weight=\"bold\">Mailboxes</span>"
-msgstr "<span weight=\"bold\">Boîtes aux lettres</span>"
+#: ui/preferences.glade.h:10
+msgid "When _new mail arrives:"
+msgstr "Lorsque du _nouveau courrier arrive:"
 
-#: ui/preferences-strings.c:17
-msgid "<span weight=\"bold\">Commands</span>"
-msgstr "<span weight=\"bold\">Commandes</span>"
+#: ui/preferences.glade.h:11
+msgid "When click_ed:"
+msgstr "Lorsque l'îcone est cliqué_e:"
 
-#: ui/preferences-strings.c:19
+#: ui/preferences.glade.h:12
 msgid "Whether to run a command when new mail arrives or not"
-msgstr "Exécuter une commande quand du nouveau courrier arrive"
-
-#: ui/preferences-strings.c:20
-msgid "When _new mail arrives:"
-msgstr "Quand du _nouveau courrier arrive:"
-
-#: ui/preferences-strings.c:21
-msgid "The command to run when new mail arrives"
-msgstr "La commande à exécuter quand du nouveau courrier arrive"
+msgstr ""
+"Si une commande doit être exécutée lorsque du nouveau courrier arrive ou pas"
 
-#: ui/preferences-strings.c:23
+#: ui/preferences.glade.h:13
 msgid "Whether to run a command when the icon is clicked or not"
-msgstr "Exécuter une commande quand l'îcone est cliquée"
-
-#: ui/preferences-strings.c:24
-msgid "When click_ed:"
-msgstr "Quand l'îcone est cliqué_e:"
-
-#: ui/preferences-strings.c:25
-msgid "The command to run when the icon is clicked"
-msgstr "La commande à exécuter quand l'îcone est cliquée"
+msgstr "Si une commande doit être exécutée lorsque l'îcone est cliquée ou pas"
 
-#: ui/preferences-strings.c:27
+#: ui/preferences.glade.h:14
 msgid "_Add"
 msgstr "_Ajouter"
 
-#: ui/preferences-strings.c:28
+#: ui/preferences.glade.h:15
+msgid "_Delay between mail checks:"
+msgstr "_Délai entre les vérifications de courrier:"
+
+#: ui/preferences.glade.h:16
 msgid "_Remove"
 msgstr "_Enlever"
+
+#: ui/preferences.glade.h:17
+msgid "minutes"
+msgstr "minutes"
+
+#: ui/preferences.glade.h:18
+msgid "seconds"
+msgstr "secondes"
diff --git a/po/mail-notification.pot b/po/mail-notification.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-06-29 20:10+0200\n"
+"POT-Creation-Date: 2004-07-21 18:10+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,6 +17,86 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
+#: data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr ""
+
+#: data/mail-notification.desktop.in.h:2 src/mn-main.c:112 src/mn-ui.c:262
+msgid "Mail Notification"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:1
+msgid "Clicked command"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:2
+msgid "Delay between mail checks (minutes part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (seconds part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:4
+msgid "Height of preferences dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:5
+msgid "Mailboxes list"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Minutes between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "New mail command"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:8
+msgid "Run a command when new mail arrives"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:9
+msgid "Run a command when the icon is clicked"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:10
+msgid "Seconds between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:11
+msgid "The command to run when new mail arrives."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "The command to run when the icon is clicked."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "The height of the preferences dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+msgid "The list of mailboxes to monitor."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:15
+msgid "The width of the preferences dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:16
+msgid "Whether to run a command when new mail arrives or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
+msgid "Whether to run a command when the icon is clicked or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:18
+msgid "Width of preferences dialog"
+msgstr ""
+
 #: src/eggtrayicon.c:109
 msgid "Orientation"
 msgstr ""
@@ -25,82 +105,118 @@ msgstr ""
 msgid "The orientation of the tray."
 msgstr ""
 
+#: src/mn-gmail-mailbox.c:165
+msgid "unable to parse Gmail URI"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:261
+#, c-format
+msgid "logging into Gmail as user %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:277 src/mn-gmail-mailbox.c:356
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:283
+#, c-format
+msgid "successfully logged into Gmail as user %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:288
+msgid "login failed"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:341
+#, c-format
+msgid "searching for unread mail in %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:363
+msgid "unable to parse Gmail data"
+msgstr ""
+
 #: src/mn-mail-icon.c:130
 msgid "You have no new mail"
 msgstr ""
 
-#: src/mn-mailbox-properties-dialog.c:117
+#: src/mn-mailbox-properties-dialog.c:155
 msgid "Add a Mailbox"
 msgstr ""
 
-#: src/mn-mailbox-properties-dialog.c:250
+#: src/mn-mailbox-properties-dialog.c:182
+msgid "autodetect"
+msgstr ""
+
+#: src/mn-mailbox-properties-dialog.c:394
 #, c-format
 msgid "%s Properties"
 msgstr ""
 
-#: src/mn-mailbox-properties-dialog.c:393
+#: src/mn-mailbox-properties-dialog.c:580
 msgid "Select a File or Folder"
 msgstr ""
 
-#: src/mn-mailbox.c:193
+#: src/mn-mailbox.c:199
 msgid "URI"
 msgstr ""
 
-#: src/mn-mailbox.c:194
+#: src/mn-mailbox.c:200
 msgid "The mailbox URI"
 msgstr ""
 
-#: src/mn-mailbox.c:200
+#: src/mn-mailbox.c:206
 msgid "Name"
 msgstr ""
 
-#: src/mn-mailbox.c:201
+#: src/mn-mailbox.c:207
 msgid "The mailbox human-readable name"
 msgstr ""
 
-#: src/mn-mailbox.c:207
+#: src/mn-mailbox.c:213
 msgid "Automatic"
 msgstr ""
 
-#: src/mn-mailbox.c:208
+#: src/mn-mailbox.c:214
 msgid "Whether the mailbox has to be manually checked or not"
 msgstr ""
 
-#: src/mn-mailbox.c:214
+#: src/mn-mailbox.c:220
 msgid "Has new"
 msgstr ""
 
-#: src/mn-mailbox.c:215
+#: src/mn-mailbox.c:221
 msgid "Whether the mailbox has new mail or not"
 msgstr ""
 
-#: src/mn-mailbox.c:221
+#: src/mn-mailbox.c:227
 msgid "Error"
 msgstr ""
 
-#: src/mn-mailbox.c:222
+#: src/mn-mailbox.c:228
 msgid "The mailbox error if any"
 msgstr ""
 
-#: src/mn-mailbox.c:248
+#: src/mn-mailbox.c:254
 #, c-format
 msgid "unable to cancel monitoring of %s: %s"
 msgstr ""
 
-#: src/mn-mailbox.c:437
+#: src/mn-mailbox.c:443
 msgid "does not exist"
 msgstr ""
 
-#: src/mn-mailbox.c:454
+#: src/mn-mailbox.c:460
 msgid "unknown format"
 msgstr ""
 
-#: src/mn-mailbox.c:547
+#: src/mn-mailbox.c:553
 #, c-format
 msgid "unable to monitor %s: %s"
 msgstr ""
 
-#: src/mn-mailbox.c:561
+#: src/mn-mailbox.c:567
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i second (this delay is "
@@ -111,7 +227,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.c:572
+#: src/mn-mailbox.c:578
 #, c-format
 msgid ""
 "As a fallback, they will be checked every %i minute (this delay is "
@@ -122,7 +238,7 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.c:583
+#: src/mn-mailbox.c:589
 #, c-format
 msgid ""
 "As a fallback, they will be checked approximately every %i minute (this "
@@ -133,11 +249,11 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-mailbox.c:597
+#: src/mn-mailbox.c:603
 msgid "A monitoring error has occurred."
 msgstr ""
 
-#: src/mn-mailbox.c:598
+#: src/mn-mailbox.c:604
 #, c-format
 msgid ""
 "Mail Notification was unable to enable automatic notification for one or "
@@ -176,10 +292,6 @@ msgstr ""
 msgid "List compiled-in handlers and exit"
 msgstr ""
 
-#: src/mn-main.c:112 src/mn-ui.c:249
-msgid "Mail Notification"
-msgstr ""
-
 #: src/mn-main.c:124
 msgid "unable to initialize GnomeVFS"
 msgstr ""
@@ -223,57 +335,66 @@ msgstr ""
 msgid "detecting..."
 msgstr ""
 
-#: src/mn-pop3-mailbox.c:161
-msgid "unable to parse URI"
+#: src/mn-pop3-mailbox.c:164
+msgid "unable to parse POP3 URI"
 msgstr ""
 
-#: src/mn-pop3-mailbox.c:187
+#: src/mn-pop3-mailbox.c:190
 #, c-format
-msgid "connecting to POP3 server %s:%i"
+msgid "connecting to POP3 server %s"
 msgstr ""
 
-#: src/mn-pop3-mailbox.c:224
+#: src/mn-pop3-mailbox.c:227
 #, c-format
-msgid "successfully connected to %s:%i"
+msgid "successfully connected to %s"
 msgstr ""
 
-#: src/mn-pop3-mailbox.c:230
+#: src/mn-pop3-mailbox.c:233
 msgid "unable to connect to server"
 msgstr ""
 
-#: src/mn-pop3-mailbox.c:235
+#: src/mn-pop3-mailbox.c:238
 msgid "connection to server unexpectedly closed"
 msgstr ""
 
-#: src/mn-pop3-mailbox.c:274
+#: src/mn-pop3-mailbox.c:277
 #, c-format
 msgid "invalid STAT reply \"%s\""
 msgstr ""
 
-#: src/mn-preferences.c:195 src/old/mn-preferences.c:157
+#: src/mn-pop3-mailbox.c:296
+msgid "unknown error"
+msgstr ""
+
+#: src/mn-pop3-mailbox.c:317
+#, c-format
+msgid "invalid reply \"%s\""
+msgstr ""
+
+#: src/mn-preferences.c:195
 msgid "Mailbox"
 msgstr ""
 
-#: src/mn-preferences.c:209 src/old/mn-preferences.c:171
+#: src/mn-preferences.c:209
 msgid "Format"
 msgstr ""
 
-#: src/mn-preferences.c:361 src/old/mn-preferences.c:258
+#: src/mn-preferences.c:361
 msgid "No mailbox selected."
 msgstr ""
 
-#: src/mn-preferences.c:366 src/old/mn-preferences.c:263
+#: src/mn-preferences.c:366
 #, c-format
 msgid "%i mailbox selected."
 msgid_plural "%i mailboxes selected."
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-preferences.c:423 src/old/mn-preferences.c:318
+#: src/mn-preferences.c:429
 msgid "Unable to add mailbox."
 msgstr ""
 
-#: src/mn-preferences.c:423 src/old/mn-preferences.c:318
+#: src/mn-preferences.c:429
 msgid "The mailbox is already in the list."
 msgstr ""
 
@@ -286,32 +407,40 @@ msgstr ""
 msgid "Unable to execute clicked command: %s."
 msgstr ""
 
-#: src/mn-ui.c:179
+#: src/mn-ui.c:184
 msgid "The following mailbox has new mail:\n"
 msgid_plural "The following mailboxes have new mail:\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-ui.c:186
+#: src/mn-ui.c:191
 msgid "You have no new mail."
 msgstr ""
 
-#: src/mn-ui.c:190
+#: src/mn-ui.c:195
 msgid "The following mailbox reported an error:\n"
 msgid_plural "The following mailboxes reported an error:\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-ui.c:195
+#: src/mn-ui.c:200
 msgid "The following mailbox is unsupported:\n"
 msgid_plural "The following mailboxes are unsupported:\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: src/mn-ui.c:252
+#: src/mn-ui.c:217
+msgid "No mailboxes are being monitored."
+msgstr ""
+
+#: src/mn-ui.c:265
 msgid "A Mail Notification Icon"
 msgstr ""
 
+#: src/mn-ui.c:268
+msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+msgstr ""
+
 #: src/mn-unsupported-mailbox.c:98
 msgid "unsupported"
 msgstr ""
@@ -324,168 +453,173 @@ msgstr ""
 msgid "The reason why the mailbox is unsupported"
 msgstr ""
 
-#: src/mn-util.c:110
+#: src/mn-util.c:113
 #, c-format
 msgid "error loading image: %s"
 msgstr ""
 
-#: src/mn-util.c:148
+#: src/mn-util.c:151
 #, c-format
 msgid "widget %s not found in interface %s"
 msgstr ""
 
-#: src/mn-util.c:255
+#: src/mn-util.c:258
 msgid "received an invalid URI list"
 msgstr ""
 
-#: src/mn-util.c:291
+#: src/mn-util.c:294
 msgid "received an invalid Mozilla URL"
 msgstr ""
 
-#: src/mn-util.c:383
+#: src/mn-util.c:386
 msgid "Unable to display help."
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:7
-msgid "_File or folder"
+#: ui/mailbox-properties.glade.h:1 ui/preferences.glade.h:2
+msgid "*"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:8 ui/mailbox-properties-strings.c:14
-#: ui/preferences-strings.c:9 ui/preferences-strings.c:16
-#: ui/preferences-strings.c:18
-msgid "    "
+#: ui/mailbox-properties.glade.h:2
+msgid "P_ort:"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:9
-msgid "_Location:"
+#: ui/mailbox-properties.glade.h:3
+msgid "The URI of the mailbox"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:10
-msgid "The URI of the file or folder"
+#: ui/mailbox-properties.glade.h:4
+msgid "The hostname or IP address of the POP3 server"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:11 ui/mailbox-properties-strings.c:17
-#: ui/mailbox-properties-strings.c:22 ui/mailbox-properties-strings.c:25
-#: ui/preferences-strings.c:22 ui/preferences-strings.c:26
-msgid "*"
+#: ui/mailbox-properties.glade.h:5
+msgid "The port number of the POP3 server"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:12
-msgid "_Browse..."
+#: ui/mailbox-properties.glade.h:6
+msgid ""
+"This mailbox type has not been compiled in and is therefore unsupported."
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:13
-msgid "_POP3 mailbox"
+#: ui/mailbox-properties.glade.h:7
+msgid "Your Gmail password"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:15
-msgid "_Hostname:"
+#: ui/mailbox-properties.glade.h:8
+msgid "Your Gmail username"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:16
-msgid "The hostname or IP address of the POP3 server"
+#: ui/mailbox-properties.glade.h:9
+msgid "Your password on the POP3 server"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:18
-msgid "P_ort:"
+#: ui/mailbox-properties.glade.h:10
+msgid "Your username on the POP3 server"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:19
-msgid "The port number of the POP3 server"
+#: ui/mailbox-properties.glade.h:11
+msgid "_Browse..."
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:20
-msgid "Us_ername:"
+#: ui/mailbox-properties.glade.h:12
+msgid "_Hostname:"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:21
-msgid "Your username on the POP3 server"
+#: ui/mailbox-properties.glade.h:13
+msgid "_Location:"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:23
-msgid "P_assword:"
+#: ui/mailbox-properties.glade.h:14
+msgid "_Password:"
 msgstr ""
 
-#: ui/mailbox-properties-strings.c:24
-msgid "Your password on the POP3 server"
+#: ui/mailbox-properties.glade.h:15
+msgid "_Type:"
 msgstr ""
 
-#: ui/menu-strings.c:7
-msgid "Update the icon"
+#: ui/mailbox-properties.glade.h:16
+msgid "_Username:"
 msgstr ""
 
-#: ui/menu-strings.c:8
-msgid "_Update"
+#: ui/menu.glade.h:1
+msgid "Show help"
 msgstr ""
 
-#: ui/menu-strings.c:9
-msgid "Show help"
+#: ui/menu.glade.h:2
+msgid "Update the icon"
 msgstr ""
 
-#: ui/menu-strings.c:10
+#: ui/menu.glade.h:3
 msgid "_Help"
 msgstr ""
 
-#: ui/preferences-strings.c:7
-msgid "Mail Notification Preferences"
+#: ui/menu.glade.h:4
+msgid "_Update"
 msgstr ""
 
-#: ui/preferences-strings.c:8
-msgid "<span weight=\"bold\">General</span>"
+#: ui/preferences.glade.h:1
+msgid "    "
 msgstr ""
 
-#: ui/preferences-strings.c:10
-msgid "_Delay between mail checks:"
+#: ui/preferences.glade.h:3
+msgid "<span weight=\"bold\">Commands</span>"
 msgstr ""
 
-#: ui/preferences-strings.c:11 ui/preferences-strings.c:13
-msgid "The amount of time to wait between mail checks"
+#: ui/preferences.glade.h:4
+msgid "<span weight=\"bold\">General</span>"
 msgstr ""
 
-#: ui/preferences-strings.c:12
-msgid "minutes"
+#: ui/preferences.glade.h:5
+msgid "<span weight=\"bold\">Mailboxes</span>"
 msgstr ""
 
-#: ui/preferences-strings.c:14
-msgid "seconds"
+#: ui/preferences.glade.h:6
+msgid "Mail Notification Preferences"
 msgstr ""
 
-#: ui/preferences-strings.c:15
-msgid "<span weight=\"bold\">Mailboxes</span>"
+#: ui/preferences.glade.h:7
+msgid "The amount of time to wait between mail checks"
 msgstr ""
 
-#: ui/preferences-strings.c:17
-msgid "<span weight=\"bold\">Commands</span>"
+#: ui/preferences.glade.h:8
+msgid "The command to run when new mail arrives"
 msgstr ""
 
-#: ui/preferences-strings.c:19
-msgid "Whether to run a command when new mail arrives or not"
+#: ui/preferences.glade.h:9
+msgid "The command to run when the icon is clicked"
 msgstr ""
 
-#: ui/preferences-strings.c:20
+#: ui/preferences.glade.h:10
 msgid "When _new mail arrives:"
 msgstr ""
 
-#: ui/preferences-strings.c:21
-msgid "The command to run when new mail arrives"
+#: ui/preferences.glade.h:11
+msgid "When click_ed:"
 msgstr ""
 
-#: ui/preferences-strings.c:23
-msgid "Whether to run a command when the icon is clicked or not"
+#: ui/preferences.glade.h:12
+msgid "Whether to run a command when new mail arrives or not"
 msgstr ""
 
-#: ui/preferences-strings.c:24
-msgid "When click_ed:"
+#: ui/preferences.glade.h:13
+msgid "Whether to run a command when the icon is clicked or not"
 msgstr ""
 
-#: ui/preferences-strings.c:25
-msgid "The command to run when the icon is clicked"
+#: ui/preferences.glade.h:14
+msgid "_Add"
 msgstr ""
 
-#: ui/preferences-strings.c:27
-msgid "_Add"
+#: ui/preferences.glade.h:15
+msgid "_Delay between mail checks:"
 msgstr ""
 
-#: ui/preferences-strings.c:28
+#: ui/preferences.glade.h:16
 msgid "_Remove"
 msgstr ""
+
+#: ui/preferences.glade.h:17
+msgid "minutes"
+msgstr ""
+
+#: ui/preferences.glade.h:18
+msgid "seconds"
+msgstr ""
diff --git a/po/ru.gmo b/po/ru.gmo
Binary files differ.
diff --git a/po/ru.po b/po/ru.po
@@ -0,0 +1,635 @@
+# Russian translations for mail-notification.
+# Copyright (c) 2003, 2004 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Dan Korostelev <dan@ats.energo.ru>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 0.5.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-07-21 18:10+0200\n"
+"PO-Revision-Date: 2004-07-21 21:58+0200\n"
+"Last-Translator: Dan Korostelev <dan@ats.energo.ru>\n"
+"Language-Team: Russian\n"
+"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/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr ""
+"Иконка в облаÑти ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸, уведомлÑÑŽÑ‰Ð°Ñ Ð¾ приходе новой почты."
+
+#: data/mail-notification.desktop.in.h:2 src/mn-main.c:112 src/mn-ui.c:262
+msgid "Mail Notification"
+msgstr "Иконка входÑщих Ñообщений"
+
+#: data/mail-notification.schemas.in.h:1
+msgid "Clicked command"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:2
+msgid "Delay between mail checks (minutes part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (seconds part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:4
+msgid "Height of preferences dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:5
+msgid "Mailboxes list"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Minutes between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "New mail command"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:8
+#, fuzzy
+msgid "Run a command when new mail arrives"
+msgstr ""
+"Иконка в облаÑти ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸, уведомлÑÑŽÑ‰Ð°Ñ Ð¾ приходе новой почты."
+
+#: data/mail-notification.schemas.in.h:9
+msgid "Run a command when the icon is clicked"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:10
+msgid "Seconds between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:11
+#, fuzzy
+msgid "The command to run when new mail arrives."
+msgstr ""
+"Иконка в облаÑти ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸, уведомлÑÑŽÑ‰Ð°Ñ Ð¾ приходе новой почты."
+
+#: data/mail-notification.schemas.in.h:12
+msgid "The command to run when the icon is clicked."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "The height of the preferences dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+msgid "The list of mailboxes to monitor."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:15
+msgid "The width of the preferences dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:16
+#, fuzzy
+msgid "Whether to run a command when new mail arrives or not."
+msgstr ""
+"Иконка в облаÑти ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð¸, уведомлÑÑŽÑ‰Ð°Ñ Ð¾ приходе новой почты."
+
+#: data/mail-notification.schemas.in.h:17
+msgid "Whether to run a command when the icon is clicked or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:18
+msgid "Width of preferences dialog"
+msgstr ""
+
+#: src/eggtrayicon.c:109
+msgid "Orientation"
+msgstr ""
+
+#: src/eggtrayicon.c:110
+msgid "The orientation of the tray."
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:165
+msgid "unable to parse Gmail URI"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:261
+#, c-format
+msgid "logging into Gmail as user %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:277 src/mn-gmail-mailbox.c:356
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:283
+#, c-format
+msgid "successfully logged into Gmail as user %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:288
+msgid "login failed"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:341
+#, c-format
+msgid "searching for unread mail in %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.c:363
+msgid "unable to parse Gmail data"
+msgstr ""
+
+#: src/mn-mail-icon.c:130
+msgid "You have no new mail"
+msgstr ""
+
+#: src/mn-mailbox-properties-dialog.c:155
+msgid "Add a Mailbox"
+msgstr ""
+
+#: src/mn-mailbox-properties-dialog.c:182
+msgid "autodetect"
+msgstr ""
+
+#: src/mn-mailbox-properties-dialog.c:394
+#, c-format
+msgid "%s Properties"
+msgstr ""
+
+#: src/mn-mailbox-properties-dialog.c:580
+msgid "Select a File or Folder"
+msgstr ""
+
+#: src/mn-mailbox.c:199
+msgid "URI"
+msgstr ""
+
+#: src/mn-mailbox.c:200
+msgid "The mailbox URI"
+msgstr ""
+
+#: src/mn-mailbox.c:206
+msgid "Name"
+msgstr ""
+
+#: src/mn-mailbox.c:207
+msgid "The mailbox human-readable name"
+msgstr ""
+
+#: src/mn-mailbox.c:213
+msgid "Automatic"
+msgstr ""
+
+#: src/mn-mailbox.c:214
+msgid "Whether the mailbox has to be manually checked or not"
+msgstr ""
+
+#: src/mn-mailbox.c:220
+msgid "Has new"
+msgstr ""
+
+#: src/mn-mailbox.c:221
+msgid "Whether the mailbox has new mail or not"
+msgstr ""
+
+#: src/mn-mailbox.c:227
+msgid "Error"
+msgstr ""
+
+#: src/mn-mailbox.c:228
+msgid "The mailbox error if any"
+msgstr ""
+
+#: src/mn-mailbox.c:254
+#, c-format
+msgid "unable to cancel monitoring of %s: %s"
+msgstr ""
+
+#: src/mn-mailbox.c:443
+msgid "does not exist"
+msgstr ""
+
+#: src/mn-mailbox.c:460
+msgid "unknown format"
+msgstr ""
+
+#: src/mn-mailbox.c:553
+#, c-format
+msgid "unable to monitor %s: %s"
+msgstr ""
+
+#: src/mn-mailbox.c:567
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i second (this delay is "
+"configurable from the Preferences Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i seconds (this delay is "
+"configurable from the Preferences Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.c:578
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i minute (this delay is "
+"configurable from the Preferences Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i minutes (this delay is "
+"configurable from the Preferences Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.c:589
+#, c-format
+msgid ""
+"As a fallback, they will be checked approximately every %i minute (this "
+"delay is configurable from the Preferences Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked approximately every %i minutes (this "
+"delay is configurable from the Preferences Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.c:603
+msgid "A monitoring error has occurred."
+msgstr ""
+
+#: src/mn-mailbox.c:604
+#, c-format
+msgid ""
+"Mail Notification was unable to enable automatic notification for one or "
+"more mailboxes. %s"
+msgstr ""
+
+#: src/mn-mailboxes.c:133
+#, c-format
+msgid "%s has new mail"
+msgstr ""
+
+#: src/mn-mailboxes.c:133
+#, c-format
+msgid "%s has no new mail"
+msgstr ""
+
+#: src/mn-mailboxes.c:143
+#, c-format
+msgid "%s reported an error: %s"
+msgstr ""
+
+#: src/mn-maildir-mailbox.c:226 src/mn-sylpheed-mailbox.c:209
+#, c-format
+msgid "error while reading folder: %s"
+msgstr ""
+
+#: src/mn-main.c:49
+msgid "Compiled in handlers:\n"
+msgstr ""
+
+#: src/mn-main.c:83
+msgid "Enable informational output"
+msgstr ""
+
+#: src/mn-main.c:92
+msgid "List compiled-in handlers and exit"
+msgstr ""
+
+#: src/mn-main.c:124
+msgid "unable to initialize GnomeVFS"
+msgstr ""
+
+#: src/mn-mbox-mailbox.c:339
+#, c-format
+msgid "unable to get mailbox information: %s"
+msgstr ""
+
+#: src/mn-mbox-mailbox.c:364
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr ""
+
+#: src/mn-mbox-mailbox.c:401
+#, c-format
+msgid "error while reading mailbox: %s"
+msgstr ""
+
+#: src/mn-mbox-mailbox.c:417
+#, c-format
+msgid "unable to close mailbox: %s"
+msgstr ""
+
+#: src/mn-mh-mailbox.c:185
+#, c-format
+msgid "unable to open .mh_sequences: %s"
+msgstr ""
+
+#: src/mn-mh-mailbox.c:215
+#, c-format
+msgid "error while reading .mh_sequences: %s"
+msgstr ""
+
+#: src/mn-mh-mailbox.c:231
+#, c-format
+msgid "unable to close .mh_sequences: %s"
+msgstr ""
+
+#: src/mn-pending-mailbox.c:64
+msgid "detecting..."
+msgstr ""
+
+#: src/mn-pop3-mailbox.c:164
+msgid "unable to parse POP3 URI"
+msgstr ""
+
+#: src/mn-pop3-mailbox.c:190
+#, c-format
+msgid "connecting to POP3 server %s"
+msgstr ""
+
+#: src/mn-pop3-mailbox.c:227
+#, c-format
+msgid "successfully connected to %s"
+msgstr ""
+
+#: src/mn-pop3-mailbox.c:233
+msgid "unable to connect to server"
+msgstr ""
+
+#: src/mn-pop3-mailbox.c:238
+msgid "connection to server unexpectedly closed"
+msgstr ""
+
+#: src/mn-pop3-mailbox.c:277
+#, c-format
+msgid "invalid STAT reply \"%s\""
+msgstr ""
+
+#: src/mn-pop3-mailbox.c:296
+msgid "unknown error"
+msgstr ""
+
+#: src/mn-pop3-mailbox.c:317
+#, c-format
+msgid "invalid reply \"%s\""
+msgstr ""
+
+#: src/mn-preferences.c:195
+msgid "Mailbox"
+msgstr ""
+
+#: src/mn-preferences.c:209
+msgid "Format"
+msgstr ""
+
+#: src/mn-preferences.c:361
+msgid "No mailbox selected."
+msgstr ""
+
+#: src/mn-preferences.c:366
+#, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-preferences.c:429
+msgid "Unable to add mailbox."
+msgstr ""
+
+#: src/mn-preferences.c:429
+msgid "The mailbox is already in the list."
+msgstr ""
+
+#: src/mn-ui.c:87
+msgid "A command error has occurred."
+msgstr ""
+
+#: src/mn-ui.c:88
+#, c-format
+msgid "Unable to execute clicked command: %s."
+msgstr ""
+
+#: src/mn-ui.c:184
+msgid "The following mailbox has new mail:\n"
+msgid_plural "The following mailboxes have new mail:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-ui.c:191
+msgid "You have no new mail."
+msgstr ""
+
+#: src/mn-ui.c:195
+msgid "The following mailbox reported an error:\n"
+msgid_plural "The following mailboxes reported an error:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-ui.c:200
+msgid "The following mailbox is unsupported:\n"
+msgid_plural "The following mailboxes are unsupported:\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-ui.c:217
+msgid "No mailboxes are being monitored."
+msgstr ""
+
+#: src/mn-ui.c:265
+msgid "A Mail Notification Icon"
+msgstr ""
+
+#: src/mn-ui.c:268
+msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+msgstr "Dan Korostelev <dan@ats.energo.ru>"
+
+#: src/mn-unsupported-mailbox.c:98
+msgid "unsupported"
+msgstr ""
+
+#: src/mn-unsupported-mailbox.c:103
+msgid "Reason"
+msgstr ""
+
+#: src/mn-unsupported-mailbox.c:104
+msgid "The reason why the mailbox is unsupported"
+msgstr ""
+
+#: src/mn-util.c:113
+#, c-format
+msgid "error loading image: %s"
+msgstr ""
+
+#: src/mn-util.c:151
+#, c-format
+msgid "widget %s not found in interface %s"
+msgstr ""
+
+#: src/mn-util.c:258
+msgid "received an invalid URI list"
+msgstr ""
+
+#: src/mn-util.c:294
+msgid "received an invalid Mozilla URL"
+msgstr ""
+
+#: src/mn-util.c:386
+msgid "Unable to display help."
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:1 ui/preferences.glade.h:2
+msgid "*"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:2
+msgid "P_ort:"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:3
+msgid "The URI of the mailbox"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:4
+msgid "The hostname or IP address of the POP3 server"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:5
+msgid "The port number of the POP3 server"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:6
+msgid ""
+"This mailbox type has not been compiled in and is therefore unsupported."
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:7
+msgid "Your Gmail password"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:8
+msgid "Your Gmail username"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:9
+msgid "Your password on the POP3 server"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:10
+msgid "Your username on the POP3 server"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:11
+msgid "_Browse..."
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:12
+msgid "_Hostname:"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:13
+msgid "_Location:"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:14
+msgid "_Password:"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:15
+msgid "_Type:"
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:16
+msgid "_Username:"
+msgstr ""
+
+#: ui/menu.glade.h:1
+msgid "Show help"
+msgstr ""
+
+#: ui/menu.glade.h:2
+msgid "Update the icon"
+msgstr ""
+
+#: ui/menu.glade.h:3
+msgid "_Help"
+msgstr ""
+
+#: ui/menu.glade.h:4
+msgid "_Update"
+msgstr ""
+
+#: ui/preferences.glade.h:1
+msgid "    "
+msgstr ""
+
+#: ui/preferences.glade.h:3
+msgid "<span weight=\"bold\">Commands</span>"
+msgstr ""
+
+#: ui/preferences.glade.h:4
+msgid "<span weight=\"bold\">General</span>"
+msgstr ""
+
+#: ui/preferences.glade.h:5
+msgid "<span weight=\"bold\">Mailboxes</span>"
+msgstr ""
+
+#: ui/preferences.glade.h:6
+msgid "Mail Notification Preferences"
+msgstr ""
+
+#: ui/preferences.glade.h:7
+msgid "The amount of time to wait between mail checks"
+msgstr ""
+
+#: ui/preferences.glade.h:8
+msgid "The command to run when new mail arrives"
+msgstr ""
+
+#: ui/preferences.glade.h:9
+msgid "The command to run when the icon is clicked"
+msgstr ""
+
+#: ui/preferences.glade.h:10
+msgid "When _new mail arrives:"
+msgstr ""
+
+#: ui/preferences.glade.h:11
+msgid "When click_ed:"
+msgstr ""
+
+#: ui/preferences.glade.h:12
+msgid "Whether to run a command when new mail arrives or not"
+msgstr ""
+
+#: ui/preferences.glade.h:13
+msgid "Whether to run a command when the icon is clicked or not"
+msgstr ""
+
+#: ui/preferences.glade.h:14
+msgid "_Add"
+msgstr ""
+
+#: ui/preferences.glade.h:15
+msgid "_Delay between mail checks:"
+msgstr ""
+
+#: ui/preferences.glade.h:16
+msgid "_Remove"
+msgstr ""
+
+#: ui/preferences.glade.h:17
+msgid "minutes"
+msgstr ""
+
+#: ui/preferences.glade.h:18
+msgid "seconds"
+msgstr ""
diff --git a/src/Makefile.am b/src/Makefile.am
@@ -15,6 +15,12 @@ endif
 if WITH_SYLPHEED
 sylpheed_sources = mn-sylpheed-mailbox.c mn-sylpheed-mailbox.h
 endif
+if WITH_GMAIL
+gmail_sources = mn-gmail-mailbox.c mn-gmail-mailbox.h
+endif
+if HAVE_SOUP
+soup_sources = mn-soup.c mn-soup.h
+endif
 
 mail_notification_SOURCES = \
 	eggtrayicon.c			\
@@ -36,6 +42,8 @@ mail_notification_SOURCES = \
 	$(maildir_sources)		\
 	$(pop3_sources)			\
 	$(sylpheed_sources)		\
+	$(gmail_sources)		\
+	$(soup_sources)			\
 	mn-main.c			\
 	mn-pending-mailbox.c		\
 	mn-pending-mailbox.h		\
@@ -54,11 +62,11 @@ mail_notification_SOURCES = \
 	mn-vfs.c			\
 	mn-vfs.h
 
-mail_notification_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GNET_LIBS)
+mail_notification_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GNET_LIBS) $(SOUP_LIBS)
 
 gnomelocaledir = $(datadir)/locale
 
-AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(GNET_CFLAGS) \
+AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(GNET_CFLAGS) $(SOUP_CFLAGS) \
 	-I$(top_srcdir) \
 	-DPREFIX="\"$(prefix)\"" \
 	-DSYSCONFDIR="\"$(sysconfdir)\"" \
diff --git a/src/Makefile.in b/src/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -58,6 +58,7 @@ am__mail_notification_SOURCES_DIST = eggtrayicon.c eggtrayicon.h \
 	mn-mbox-mailbox.h mn-mh-mailbox.c mn-mh-mailbox.h \
 	mn-maildir-mailbox.c mn-maildir-mailbox.h mn-pop3-mailbox.c \
 	mn-pop3-mailbox.h mn-sylpheed-mailbox.c mn-sylpheed-mailbox.h \
+	mn-gmail-mailbox.c mn-gmail-mailbox.h mn-soup.c mn-soup.h \
 	mn-main.c mn-pending-mailbox.c mn-pending-mailbox.h \
 	mn-preferences.c mn-preferences.h mn-stock.c mn-stock.h \
 	mn-ui.c mn-ui.h mn-unsupported-mailbox.c \
@@ -68,13 +69,16 @@ am__mail_notification_SOURCES_DIST = eggtrayicon.c eggtrayicon.h \
 @WITH_MAILDIR_TRUE@am__objects_3 = mn-maildir-mailbox.$(OBJEXT)
 @WITH_POP3_TRUE@am__objects_4 = mn-pop3-mailbox.$(OBJEXT)
 @WITH_SYLPHEED_TRUE@am__objects_5 = mn-sylpheed-mailbox.$(OBJEXT)
+@WITH_GMAIL_TRUE@am__objects_6 = mn-gmail-mailbox.$(OBJEXT)
+@HAVE_SOUP_TRUE@am__objects_7 = mn-soup.$(OBJEXT)
 am_mail_notification_OBJECTS = eggtrayicon.$(OBJEXT) mn-conf.$(OBJEXT) \
 	mn-dialog.$(OBJEXT) mn-mail-icon.$(OBJEXT) \
 	mn-mailbox-properties-dialog.$(OBJEXT) mn-mailbox.$(OBJEXT) \
 	mn-mailboxes.$(OBJEXT) $(am__objects_1) $(am__objects_2) \
 	$(am__objects_3) $(am__objects_4) $(am__objects_5) \
-	mn-main.$(OBJEXT) mn-pending-mailbox.$(OBJEXT) \
-	mn-preferences.$(OBJEXT) mn-stock.$(OBJEXT) mn-ui.$(OBJEXT) \
+	$(am__objects_6) $(am__objects_7) mn-main.$(OBJEXT) \
+	mn-pending-mailbox.$(OBJEXT) mn-preferences.$(OBJEXT) \
+	mn-stock.$(OBJEXT) mn-ui.$(OBJEXT) \
 	mn-unsupported-mailbox.$(OBJEXT) mn-uri.$(OBJEXT) \
 	mn-util.$(OBJEXT) mn-vfs.$(OBJEXT)
 mail_notification_OBJECTS = $(am_mail_notification_OBJECTS)
@@ -84,6 +88,7 @@ depcomp = $(SHELL) $(top_srcdir)/depcomp
 am__depfiles_maybe = depfiles
 @AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/eggtrayicon.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mn-conf.Po ./$(DEPDIR)/mn-dialog.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/mn-gmail-mailbox.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mn-mail-icon.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mn-mailbox-properties-dialog.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mn-mailbox.Po \
@@ -95,7 +100,7 @@ am__depfiles_maybe = depfiles
 @AMDEP_TRUE@	./$(DEPDIR)/mn-pending-mailbox.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mn-pop3-mailbox.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mn-preferences.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/mn-stock.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/mn-soup.Po ./$(DEPDIR)/mn-stock.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mn-sylpheed-mailbox.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mn-ui.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/mn-unsupported-mailbox.Po \
@@ -149,12 +154,34 @@ GNOME_LIBS = @GNOME_LIBS@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
 G_ASSERTIONS = @G_ASSERTIONS@
+HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
+HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 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_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+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_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_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
@@ -180,10 +207,14 @@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
 PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOUP_CFLAGS = @SOUP_CFLAGS@
+SOUP_LIBS = @SOUP_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GMAIL_FALSE = @WITH_GMAIL_FALSE@
+WITH_GMAIL_TRUE = @WITH_GMAIL_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
@@ -227,6 +258,8 @@ target_alias = @target_alias@
 @WITH_MAILDIR_TRUE@maildir_sources = mn-maildir-mailbox.c mn-maildir-mailbox.h
 @WITH_POP3_TRUE@pop3_sources = mn-pop3-mailbox.c mn-pop3-mailbox.h
 @WITH_SYLPHEED_TRUE@sylpheed_sources = mn-sylpheed-mailbox.c mn-sylpheed-mailbox.h
+@WITH_GMAIL_TRUE@gmail_sources = mn-gmail-mailbox.c mn-gmail-mailbox.h
+@HAVE_SOUP_TRUE@soup_sources = mn-soup.c mn-soup.h
 mail_notification_SOURCES = \
 	eggtrayicon.c			\
 	eggtrayicon.h			\
@@ -247,6 +280,8 @@ mail_notification_SOURCES = \
 	$(maildir_sources)		\
 	$(pop3_sources)			\
 	$(sylpheed_sources)		\
+	$(gmail_sources)		\
+	$(soup_sources)			\
 	mn-main.c			\
 	mn-pending-mailbox.c		\
 	mn-pending-mailbox.h		\
@@ -265,9 +300,9 @@ mail_notification_SOURCES = \
 	mn-vfs.c			\
 	mn-vfs.h
 
-mail_notification_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GNET_LIBS)
+mail_notification_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GNET_LIBS) $(SOUP_LIBS)
 gnomelocaledir = $(datadir)/locale
-AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(GNET_CFLAGS) \
+AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(GNET_CFLAGS) $(SOUP_CFLAGS) \
 	-I$(top_srcdir) \
 	-DPREFIX="\"$(prefix)\"" \
 	-DSYSCONFDIR="\"$(sysconfdir)\"" \
@@ -345,6 +380,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eggtrayicon.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-conf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-dialog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-gmail-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-mail-icon.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-mailbox-properties-dialog.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-mailbox.Po@am__quote@
@@ -356,6 +392,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-pending-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-pop3-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-preferences.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-soup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-stock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-sylpheed-mailbox.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-ui.Po@am__quote@
@@ -402,7 +439,7 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
 	  $(AWK) '    { files[$$0] = 1; } \
 	       END { for (i in files) print i; }'`; \
 	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
-	  test -z "$$unique" && unique=$$empty_fix; \
+	  test -n "$$unique" || unique=$$empty_fix; \
 	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
 	    $$tags $$unique; \
 	fi
diff --git a/src/mn-gmail-mailbox.c b/src/mn-gmail-mailbox.c
@@ -0,0 +1,399 @@
+/* 
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+#include <string.h>
+#include <stdlib.h>
+#include <glib/gi18n-lib.h>
+#include <libgnomevfs/gnome-vfs-utils.h>
+#include <libsoup/soup.h>
+#include "mn-gmail-mailbox.h"
+#include "mn-uri.h"
+#include "mn-util.h"
+#include "mn-stock.h"
+#include "mn-soup.h"
+
+/*** types *******************************************************************/
+
+struct _MNGmailMailboxPrivate
+{
+  char		*username;
+  char		*password;
+  char		*cookie;
+};
+
+/*** variables ***************************************************************/
+
+static GObjectClass *parent_class = NULL;
+
+/*** functions ***************************************************************/
+
+static void mn_gmail_mailbox_class_init (MNGmailMailboxClass *class);
+static void mn_gmail_mailbox_init (MNGmailMailbox *mailbox);
+static void mn_gmail_mailbox_finalize (GObject *object);
+
+static GObject *mn_gmail_mailbox_constructor (GType type,
+					      guint n_construct_properties,
+					      GObjectConstructParam *construct_params);
+
+static void mn_gmail_mailbox_is (const char *uri,
+				 MNMailboxIsCallback *callback,
+				 gpointer user_data);
+static void mn_gmail_mailbox_check (MNMailbox *mailbox);
+
+static SoupMessage *mn_gmail_mailbox_soup_message_new (const char *uri,
+						       const char *method);
+
+static char *mn_gmail_mailbox_get_token (const char *str,
+					 const char *pre,
+					 const char *post,
+					 gboolean include_pre,
+					 gboolean include_post);
+
+static void mn_gmail_mailbox_login (MNGmailMailbox *mailbox);
+static void mn_gmail_mailbox_login_cb (SoupMessage *message, gpointer user_data);
+
+static char *mn_gmail_mailbox_get_cookie (SoupMessage *message);
+
+static void mn_gmail_mailbox_check_internal (MNGmailMailbox *mailbox);
+static void mn_gmail_mailbox_check_internal_cb (SoupMessage *message,
+						gpointer user_data);
+
+static int mn_gmail_mailbox_get_unread_count (SoupMessage *message);
+
+/*** implementation **********************************************************/
+
+GType
+mn_gmail_mailbox_get_type (void)
+{
+  static GType gmail_mailbox_type = 0;
+  
+  if (! gmail_mailbox_type)
+    {
+      static const GTypeInfo gmail_mailbox_info = {
+	sizeof(MNGmailMailboxClass),
+	NULL,
+	NULL,
+	(GClassInitFunc) mn_gmail_mailbox_class_init,
+	NULL,
+	NULL,
+	sizeof(MNGmailMailbox),
+	0,
+	(GInstanceInitFunc) mn_gmail_mailbox_init,
+      };
+      
+      gmail_mailbox_type = g_type_register_static(MN_TYPE_MAILBOX,
+						  "MNGmailMailbox",
+						  &gmail_mailbox_info,
+						  0);
+    }
+  
+  return gmail_mailbox_type;
+}
+
+static void
+mn_gmail_mailbox_class_init (MNGmailMailboxClass *class)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS(class);
+  MNMailboxClass *mailbox_class = MN_MAILBOX_CLASS(class);
+
+  parent_class = g_type_class_peek_parent(class);
+
+  object_class->constructor = mn_gmail_mailbox_constructor;
+  object_class->finalize = mn_gmail_mailbox_finalize;
+
+  mailbox_class->stock_id = MN_STOCK_GMAIL;
+  mailbox_class->format = "Gmail";
+  mailbox_class->is = mn_gmail_mailbox_is;
+  mailbox_class->check = mn_gmail_mailbox_check;
+}
+
+static void
+mn_gmail_mailbox_init (MNGmailMailbox *mailbox)
+{
+  mn_soup_use();
+  mailbox->priv = g_new0(MNGmailMailboxPrivate, 1);
+}
+
+static void
+mn_gmail_mailbox_finalize (GObject *object)
+{
+  MNGmailMailbox *gmail_mailbox = MN_GMAIL_MAILBOX(object);
+
+  g_free(gmail_mailbox->priv->username);
+  g_free(gmail_mailbox->priv->password);
+  g_free(gmail_mailbox->priv->cookie);
+  g_free(gmail_mailbox->priv);
+  mn_soup_unuse();
+
+  G_OBJECT_CLASS(parent_class)->finalize(object);
+}
+
+static GObject *
+mn_gmail_mailbox_constructor (GType type,
+			      guint n_construct_properties,
+			      GObjectConstructParam *construct_params)
+{
+  GObject *object;
+  MNMailbox *mailbox;
+  MNGmailMailbox *gmail_mailbox;
+
+  object = G_OBJECT_CLASS(parent_class)->constructor(type,
+						     n_construct_properties,
+						     construct_params);
+  mailbox = MN_MAILBOX(object);
+  gmail_mailbox = MN_GMAIL_MAILBOX(object);
+
+  if (! mn_uri_parse_gmail(mn_mailbox_get_uri(mailbox),
+			   &gmail_mailbox->priv->username,
+			   &gmail_mailbox->priv->password))
+    mn_mailbox_set_init_error(mailbox, _("unable to parse Gmail URI"));
+  
+  return object;
+}
+
+static void
+mn_gmail_mailbox_is (const char *uri,
+		     MNMailboxIsCallback *callback,
+		     gpointer user_data)
+{
+  char *scheme;
+  gboolean is;
+
+  scheme = gnome_vfs_get_uri_scheme(uri);
+  is = scheme && ! strcmp(scheme, "gmail");
+  g_free(scheme);
+
+  callback(is, user_data);
+}
+
+static void
+mn_gmail_mailbox_check (MNMailbox *mailbox)
+{
+  MNGmailMailbox *gmail_mailbox = MN_GMAIL_MAILBOX(mailbox);
+  
+  if (gmail_mailbox->priv->cookie)
+    mn_gmail_mailbox_check_internal(gmail_mailbox);
+  else
+    mn_gmail_mailbox_login(gmail_mailbox);
+}
+
+static SoupMessage *
+mn_gmail_mailbox_soup_message_new (const char *uri, const char *method)
+{
+  SoupContext *context;
+  SoupMessage *message;
+
+  context = soup_context_get(uri);
+  message = soup_message_new(context, method);
+  soup_context_unref(context);
+
+  soup_message_add_header(message->request_headers, "User-Agent", "Mail Notification");
+
+  return message;
+}
+
+/*
+ * Gets the token of STR included between the first occurrence of PRE
+ * and the last occurrence of POST.
+ *
+ * If INCLUDE_PRE is true, include PRE in the result.
+ * If INCLUDE_POST is true, include POST in the result.
+ */
+static char *
+mn_gmail_mailbox_get_token (const char *str,
+			    const char *pre,
+			    const char *post,
+			    gboolean include_pre,
+			    gboolean include_post)
+{
+  char *token = NULL;
+  char *pre_loc;
+
+  g_return_val_if_fail(str != NULL, NULL);
+  g_return_val_if_fail(pre != NULL, NULL);
+  g_return_val_if_fail(post != NULL, NULL);
+
+  pre_loc = strstr(str, pre);
+  if (pre_loc)
+    {
+      char *after_pre_loc;
+      char *post_loc;
+
+      after_pre_loc = pre_loc + strlen(pre);
+      post_loc = strstr(after_pre_loc, post);
+      if (post_loc)
+	{
+	  char *start = include_pre ? pre_loc : after_pre_loc;
+	  char *end = include_post ? post_loc + strlen(post) : post_loc;
+
+	  token = g_strndup(start, end - start);
+	}
+    }
+
+  return token;
+}
+
+static void
+mn_gmail_mailbox_login (MNGmailMailbox *mailbox)
+{
+  char *uri;
+  SoupMessage *message;
+
+  g_return_if_fail(MN_IS_GMAIL_MAILBOX(mailbox));
+  g_return_if_fail(mailbox->priv->cookie == NULL);
+
+  mn_info(_("logging into Gmail as user %s"), mailbox->priv->username);
+
+  uri = g_strdup_printf("https://gmail.google.com/accounts/ServiceLoginBoxAuth?Email=%s&Passwd=%s&null=Sign%%20in&service=mail", mailbox->priv->username, mailbox->priv->password);
+  message = mn_gmail_mailbox_soup_message_new(uri, SOUP_METHOD_GET);
+  g_free(uri);
+
+  soup_message_queue(message, mn_gmail_mailbox_login_cb, mailbox);
+  /* message will be freed by libsoup after invoking the callback */
+}
+
+static void
+mn_gmail_mailbox_login_cb (SoupMessage *message, gpointer user_data)
+{
+  MNGmailMailbox *mailbox = user_data;
+
+  if (SOUP_MESSAGE_IS_ERROR(message))
+    mn_mailbox_set_error(MN_MAILBOX(mailbox), _("unable to transfer data: %s"), message->errorphrase);
+  else
+    {
+      mailbox->priv->cookie = mn_gmail_mailbox_get_cookie(message);
+      if (mailbox->priv->cookie)
+	{
+	  mn_info(_("successfully logged into Gmail as user %s"), mailbox->priv->username);
+	  mn_gmail_mailbox_check_internal(mailbox);
+	  return;
+	}
+      else
+	mn_mailbox_set_error(MN_MAILBOX(mailbox), _("login failed"));
+    }
+
+  /* if this point is reached, an error occurred */
+  mn_mailbox_end_check(MN_MAILBOX(mailbox));
+}
+
+static char *
+mn_gmail_mailbox_get_cookie (SoupMessage *message)
+{
+  char *cookie = NULL;
+  const GSList *set_cookie_headers;
+  const GSList *l;
+  char *sid = NULL;
+  
+  set_cookie_headers = soup_message_get_header_list(message->response_headers, "Set-Cookie");
+  MN_LIST_FOREACH(l, set_cookie_headers)
+    {
+      const char *value = l->data;
+
+      sid = mn_gmail_mailbox_get_token(value, "SID=", "=", TRUE, TRUE);
+      if (sid)
+	break;
+    }
+  
+  if (sid)
+    {
+      char *body;
+      char *cookie_val;
+
+      body = g_strndup(message->response.body, message->response.length);
+      cookie_val = mn_gmail_mailbox_get_token(body, "var cookieVal= \"", "\"", FALSE, FALSE);
+      g_free(body);
+
+      if (cookie_val)
+	{
+	  cookie = g_strdup_printf("%s; GV=%s", sid, cookie_val);
+	  g_free(cookie_val);
+	}
+      
+      g_free(sid);
+    }
+
+  return cookie;
+}
+
+static void
+mn_gmail_mailbox_check_internal (MNGmailMailbox *mailbox)
+{
+  SoupMessage *message;
+  
+  g_return_if_fail(MN_IS_GMAIL_MAILBOX(mailbox));
+
+  mn_info(_("searching for unread mail in %s"), mn_mailbox_get_name(MN_MAILBOX(mailbox)));
+
+  message = mn_gmail_mailbox_soup_message_new("https://gmail.google.com/gmail?search=adv&as_subset=unread&view=tl&start=0", SOUP_METHOD_GET);
+  soup_message_add_header(message->request_headers, "Cookie", mailbox->priv->cookie);
+
+  soup_message_queue(message, mn_gmail_mailbox_check_internal_cb, mailbox);
+  /* message will be freed by libsoup after invoking the callback */
+}
+
+static void
+mn_gmail_mailbox_check_internal_cb (SoupMessage *message, gpointer user_data)
+{
+  MNGmailMailbox *mailbox = user_data;
+
+  if (SOUP_MESSAGE_IS_ERROR(message))
+    mn_mailbox_set_error(MN_MAILBOX(mailbox), _("unable to transfer data: %s"), message->errorphrase);
+  else
+    {
+      int count;
+
+      count = mn_gmail_mailbox_get_unread_count(message);
+      if (count == -1)
+	mn_mailbox_set_error(MN_MAILBOX(mailbox), _("unable to parse Gmail data"));
+      else
+	mn_mailbox_set_has_new(MN_MAILBOX(mailbox), count != 0);
+    }
+
+  mn_mailbox_end_check(MN_MAILBOX(mailbox));
+}
+
+static int
+mn_gmail_mailbox_get_unread_count (SoupMessage *message)
+{
+  int count = -1;
+  char *body;
+  char *results;
+  
+  g_return_val_if_fail(message != NULL, -1);
+
+  body = g_strndup(message->response.body, message->response.length);
+
+  results = strstr(body, "Search results for: is:unread\",\"");
+  if (results)
+    {
+      char *count_str;
+
+      count_str = mn_gmail_mailbox_get_token(results + 32, "\",", "]", FALSE, FALSE);
+      if (count_str)
+	{
+	  if (mn_str_isnumeric(count_str))
+	    count = atoi(count_str);
+	  g_free(count_str);
+	}
+    }
+  
+  g_free(body);
+
+  return count;
+}
diff --git a/src/mn-gmail-mailbox.h b/src/mn-gmail-mailbox.h
@@ -0,0 +1,48 @@
+/* 
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _MN_GMAIL_MAILBOX_H
+#define _MN_GMAIL_MAILBOX_H
+
+#include <glib-object.h>
+#include "mn-mailbox.h"
+
+#define MN_TYPE_GMAIL_MAILBOX			(mn_gmail_mailbox_get_type())
+#define MN_GMAIL_MAILBOX(obj)			(G_TYPE_CHECK_INSTANCE_CAST((obj), MN_TYPE_GMAIL_MAILBOX, MNGmailMailbox))
+#define MN_GMAIL_MAILBOX_CLASS(klass)		(G_TYPE_CHECK_CLASS_CAST((klass), MN_TYPE_GMAIL_MAILBOX, MNGmailMailboxClass))
+#define MN_IS_GMAIL_MAILBOX(obj)		(G_TYPE_CHECK_INSTANCE_TYPE((obj), MN_TYPE_GMAIL_MAILBOX))
+#define MN_IS_GMAIL_MAILBOX_CLASS(klass)	(G_TYPE_CHECK_CLASS_TYPE((klass), MN_TYPE_GMAIL_MAILBOX))
+#define MN_GMAIL_MAILBOX_GET_CLASS(obj)		(G_TYPE_INSTANCE_GET_CLASS((obj), MN_TYPE_GMAIL_MAILBOX, MNGmailMailboxClass))
+
+typedef struct _MNGmailMailboxPrivate MNGmailMailboxPrivate;
+
+typedef struct
+{
+  MNMailbox		mailbox;
+  
+  MNGmailMailboxPrivate	*priv;
+} MNGmailMailbox;
+
+typedef struct
+{
+  MNMailboxClass	mailbox_class;
+} MNGmailMailboxClass;
+
+GType mn_gmail_mailbox_get_type (void);
+
+#endif /* _MN_GMAIL_MAILBOX_H */
diff --git a/src/mn-mailbox-properties-dialog.c b/src/mn-mailbox-properties-dialog.c
@@ -27,41 +27,64 @@
 
 typedef struct
 {
-  GtkWidget		*file_radio;
+  GtkWidget		*type_label;
+  GtkWidget		*type_combo;
+
+  GtkWidget		*autodetect_vbox;
   GtkWidget		*location_label;
   GtkWidget		*location_entry;
-  GtkWidget		*browse;
-  GtkWidget		*pop3_radio;
-  GtkWidget		*hostname_label;
-  GtkWidget		*hostname_entry;
-  GtkWidget		*port_label;
-  GtkWidget		*port_spin;
-  GtkWidget		*username_label;
-  GtkWidget		*username_entry;
-  GtkWidget		*password_label;
-  GtkWidget		*password_entry;
+  GtkWidget		*browse_button;
+
+  GtkWidget		*pop3_vbox;
+  GtkWidget		*pop3_hostname_label;
+  GtkWidget		*pop3_hostname_entry;
+  GtkWidget		*pop3_port_label;
+  GtkWidget		*pop3_port_spin;
+  GtkWidget		*pop3_username_label;
+  GtkWidget		*pop3_username_entry;
+  GtkWidget		*pop3_password_label;
+  GtkWidget		*pop3_password_entry;
+
+  GtkWidget		*gmail_vbox;
+  GtkWidget		*gmail_username_label;
+  GtkWidget		*gmail_username_entry;
+  GtkWidget		*gmail_password_label;
+  GtkWidget		*gmail_password_entry;
+
+  GtkWidget		*unsupported_label;
 
   MNMailboxPropertiesDialogMode		mode;
   char					*uri;
   GtkWidget				*apply_button;
   GtkWidget				*accept_button;
+  GtkListStore				*store;
 } Private;
 
-typedef enum
-{
-  RADIO_FILE,
-  RADIO_POP3
-} Radio;
-
+typedef enum {
+  TYPE_AUTODETECT,
+  TYPE_POP3,
+  TYPE_GMAIL
+} Type;
+    
+enum {
+  COLUMN_TYPE,
+  COLUMN_TEXT,
+  COLUMN_STYLE,
+  N_COLUMNS
+};
+    
 /*** variables ***************************************************************/
 
-static Radio selected_radio = RADIO_FILE;
 static char *current_folder_uri = NULL;
+static Type selected_type = TYPE_AUTODETECT;
 
 /*** functions ***************************************************************/
 
 static void mn_mailbox_properties_dialog_private_free (Private *private);
 static gboolean mn_mailbox_properties_dialog_is_complete (MNMailboxPropertiesDialog *dialog);
+static Type mn_mailbox_properties_dialog_get_active_type (MNMailboxPropertiesDialog *dialog);
+static void mn_mailbox_properties_dialog_set_active_type (MNMailboxPropertiesDialog *dialog,
+							  Type type);
 static void mn_mailbox_properties_dialog_update_sensitivity (MNMailboxPropertiesDialog *dialog);
 static void mn_mailbox_properties_dialog_set_uri_internal (MNMailboxPropertiesDialog *dialog,
 							   const char *uri);
@@ -78,23 +101,33 @@ mn_mailbox_properties_dialog_new (GtkWindow *parent,
   MNMailboxPropertiesDialog *dialog;
   Private *private;
   GtkSizeGroup *size_group;
+  GtkTreeIter iter;
+  GtkCellRenderer *renderer;
 
   private = g_new0(Private, 1);
   mn_create_interface("mailbox-properties",
 		      "dialog", (GtkWidget **) &dialog,
-		      "file_radio", &private->file_radio,
+		      "type_label", &private->type_label,
+		      "type_combo", &private->type_combo,
+		      "autodetect_vbox", &private->autodetect_vbox,
 		      "location_label", &private->location_label,
 		      "location_entry", &private->location_entry,
-		      "browse", &private->browse,
-		      "pop3_radio", &private->pop3_radio,
-		      "hostname_label", &private->hostname_label,
-		      "hostname_entry", &private->hostname_entry,
-		      "port_label", &private->port_label,
-		      "port_spin", &private->port_spin,
-		      "username_label", &private->username_label,
-		      "username_entry", &private->username_entry,
-		      "password_label", &private->password_label,
-		      "password_entry", &private->password_entry,
+		      "browse_button", &private->browse_button,
+		      "pop3_vbox", &private->pop3_vbox,
+		      "pop3_hostname_label", &private->pop3_hostname_label,
+		      "pop3_hostname_entry", &private->pop3_hostname_entry,
+		      "pop3_port_label", &private->pop3_port_label,
+		      "pop3_port_spin", &private->pop3_port_spin,
+		      "pop3_username_label", &private->pop3_username_label,
+		      "pop3_username_entry", &private->pop3_username_entry,
+		      "pop3_password_label", &private->pop3_password_label,
+		      "pop3_password_entry", &private->pop3_password_entry,
+		      "gmail_vbox", &private->gmail_vbox,
+		      "gmail_username_label", &private->gmail_username_label,
+		      "gmail_username_entry", &private->gmail_username_entry,
+		      "gmail_password_label", &private->gmail_password_label,
+		      "gmail_password_entry", &private->gmail_password_entry,
+		      "unsupported_label", &private->unsupported_label,
 		      NULL);
   private->mode = mode;
 
@@ -104,14 +137,19 @@ mn_mailbox_properties_dialog_new (GtkWindow *parent,
 			 (GDestroyNotify) mn_mailbox_properties_dialog_private_free);
 
   size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
+  gtk_size_group_add_widget(size_group, private->type_label);
   gtk_size_group_add_widget(size_group, private->location_label);
-  gtk_size_group_add_widget(size_group, private->hostname_label);
-  gtk_size_group_add_widget(size_group, private->username_label);
+  gtk_size_group_add_widget(size_group, private->pop3_hostname_label);
+  gtk_size_group_add_widget(size_group, private->pop3_username_label);
+  gtk_size_group_add_widget(size_group, private->pop3_password_label);
+  gtk_size_group_add_widget(size_group, private->gmail_username_label);
+  gtk_size_group_add_widget(size_group, private->gmail_password_label);
   g_object_unref(size_group);
 
   if (parent)
     gtk_window_set_transient_for(GTK_WINDOW(dialog), parent);
 
+  gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
   if (mode == MN_MAILBOX_PROPERTIES_DIALOG_MODE_ADD)
     {
       gtk_window_set_title(GTK_WINDOW(dialog), _("Add a Mailbox"));
@@ -131,29 +169,44 @@ mn_mailbox_properties_dialog_new (GtkWindow *parent,
     g_return_val_if_reached(NULL);
   gtk_widget_grab_default(private->accept_button);
       
-#ifndef WITH_POP3
-  gtk_widget_set_sensitive(private->pop3_radio, FALSE);
-#endif
+  /* finish the combo box */
+
+  private->store = gtk_list_store_new(N_COLUMNS,
+				      G_TYPE_INT,
+				      G_TYPE_STRING,
+				      PANGO_TYPE_STYLE);
+
+  gtk_list_store_append(private->store, &iter);
+  gtk_list_store_set(private->store, &iter,
+		     COLUMN_TYPE, TYPE_AUTODETECT,
+		     COLUMN_TEXT, _("autodetect"),
+		     COLUMN_STYLE, PANGO_STYLE_ITALIC,
+		     -1);
+
+  gtk_list_store_append(private->store, &iter);
+  gtk_list_store_set(private->store, &iter,
+		     COLUMN_TYPE, TYPE_POP3,
+		     COLUMN_TEXT, "POP3",
+		     -1);
+
+  gtk_list_store_append(private->store, &iter);
+  gtk_list_store_set(private->store, &iter,
+		     COLUMN_TYPE, TYPE_GMAIL,
+		     COLUMN_TEXT, "Gmail",
+		     -1);
+
+  renderer = gtk_cell_renderer_text_new();
+  gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(private->type_combo), renderer, TRUE);
+  gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(private->type_combo), renderer,
+				 "text", COLUMN_TEXT,
+				 "style", COLUMN_STYLE,
+				 NULL);
+
+  gtk_combo_box_set_model(GTK_COMBO_BOX(private->type_combo), GTK_TREE_MODEL(private->store));
 
   if (mode == MN_MAILBOX_PROPERTIES_DIALOG_MODE_ADD)
-    {
-      GtkWidget *default_radio;
-      
-      switch (selected_radio)
-	{
-	case RADIO_FILE:	default_radio = private->file_radio; break;
-	case RADIO_POP3:	default_radio = private->pop3_radio; break;
-	default:		g_return_val_if_reached(NULL);
-	}
-
-      if (! GTK_WIDGET_IS_SENSITIVE(default_radio))
-	default_radio = private->file_radio;
-
-      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(default_radio), TRUE);
-    }
+    mn_mailbox_properties_dialog_set_active_type(dialog, selected_type);
     
-  mn_mailbox_properties_dialog_update_sensitivity(dialog);
-
   return GTK_WIDGET(dialog);
 }
 
@@ -163,6 +216,7 @@ mn_mailbox_properties_dialog_private_free (Private *private)
   g_return_if_fail(private != NULL);
 
   g_free(private->uri);
+  g_object_unref(private->store);
   g_free(private);
 }
 
@@ -175,56 +229,146 @@ mn_mailbox_properties_dialog_is_complete (MNMailboxPropertiesDialog *dialog)
   g_return_val_if_fail(MN_IS_MAILBOX_PROPERTIES_DIALOG(dialog), FALSE);
   private = MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE(dialog);
 
-  if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(private->file_radio)))
+  switch (mn_mailbox_properties_dialog_get_active_type(dialog))
     {
-      const char *location;
-
-      location = gtk_entry_get_text(GTK_ENTRY(private->location_entry));
-      is_complete = *location != 0;
-    }
-  else if (GTK_WIDGET_IS_SENSITIVE(private->pop3_radio))
-    {
-      const char *hostname;
-      const char *username;
-      const char *password;
+    case TYPE_AUTODETECT:
+      {
+	const char *location;
+	
+	location = gtk_entry_get_text(GTK_ENTRY(private->location_entry));
+	is_complete = *location != 0;
+      }
+      break;
+
+    case TYPE_POP3:
+#ifdef WITH_POP3
+      {
+	const char *hostname;
+	const char *username;
+	const char *password;
+      
+	hostname = gtk_entry_get_text(GTK_ENTRY(private->pop3_hostname_entry));
+	username = gtk_entry_get_text(GTK_ENTRY(private->pop3_username_entry));
+	password = gtk_entry_get_text(GTK_ENTRY(private->pop3_password_entry));
+
+	is_complete = *hostname != 0 && *username != 0 && *password != 0;
+      }
+#endif /* WITH_POP3 */
+      break;
+
+    case TYPE_GMAIL:
+#ifdef WITH_GMAIL
+      {
+	const char *username;
+	const char *password;
+	
+	username = gtk_entry_get_text(GTK_ENTRY(private->gmail_username_entry));
+	password = gtk_entry_get_text(GTK_ENTRY(private->gmail_password_entry));
       
-      hostname = gtk_entry_get_text(GTK_ENTRY(private->hostname_entry));
-      username = gtk_entry_get_text(GTK_ENTRY(private->username_entry));
-      password = gtk_entry_get_text(GTK_ENTRY(private->password_entry));
+	is_complete = *username != 0 && *password != 0;
+      }
+#endif /* WITH_GMAIL */
+      break;
 
-      is_complete = *hostname != 0 && *username != 0 && *password != 0;
+    default:
+      g_return_val_if_reached(FALSE);
     }
-
+  
   return is_complete;
 }
 
+static Type
+mn_mailbox_properties_dialog_get_active_type (MNMailboxPropertiesDialog *dialog)
+{
+  Private *private;
+  GtkTreeIter iter;
+  Type type = TYPE_AUTODETECT;
+
+  g_return_val_if_fail(MN_IS_MAILBOX_PROPERTIES_DIALOG(dialog), 0);
+  private = MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE(dialog);
+
+  if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(private->type_combo), &iter))
+    gtk_tree_model_get(GTK_TREE_MODEL(private->store), &iter, COLUMN_TYPE, &type, -1);
+
+  return type;
+}
+
 static void
-mn_mailbox_properties_dialog_update_sensitivity (MNMailboxPropertiesDialog *dialog)
+mn_mailbox_properties_dialog_set_active_type (MNMailboxPropertiesDialog *dialog,
+					      Type type)
 {
   Private *private;
-  gboolean file_selected;
-  gboolean pop3_selected;
-  gboolean is_complete;
+  gboolean valid;
+  GtkTreeIter iter;
 
   g_return_if_fail(MN_IS_MAILBOX_PROPERTIES_DIALOG(dialog));
   private = MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE(dialog);
 
-  file_selected = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(private->file_radio));
-  pop3_selected = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(private->pop3_radio)) && GTK_WIDGET_IS_SENSITIVE(private->pop3_radio);
+  valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(private->store), &iter);
+  while (valid)
+    {
+      Type this_type;
+
+      gtk_tree_model_get(GTK_TREE_MODEL(private->store), &iter, COLUMN_TYPE, &this_type, -1);
+      if (this_type == type)
+	{
+	  gtk_combo_box_set_active_iter(GTK_COMBO_BOX(private->type_combo), &iter);
+	  break;
+	}
+
+      valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(private->store), &iter);
+    }
+}
 
-  gtk_widget_set_sensitive(private->location_label, file_selected);
-  gtk_widget_set_sensitive(private->location_entry, file_selected);
-  gtk_widget_set_sensitive(private->browse, file_selected);
+static void
+mn_mailbox_properties_dialog_update_sensitivity (MNMailboxPropertiesDialog *dialog)
+{
+  Private *private;
+  Type type;
+  gboolean is_complete;
 
-  gtk_widget_set_sensitive(private->hostname_label, pop3_selected);
-  gtk_widget_set_sensitive(private->hostname_entry, pop3_selected);
-  gtk_widget_set_sensitive(private->port_label, pop3_selected);
-  gtk_widget_set_sensitive(private->port_spin, pop3_selected);
-  gtk_widget_set_sensitive(private->username_label, pop3_selected);
-  gtk_widget_set_sensitive(private->username_entry, pop3_selected);
-  gtk_widget_set_sensitive(private->password_label, pop3_selected);
-  gtk_widget_set_sensitive(private->password_entry, pop3_selected);
+  g_return_if_fail(MN_IS_MAILBOX_PROPERTIES_DIALOG(dialog));
+  private = MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE(dialog);
 
+  type = mn_mailbox_properties_dialog_get_active_type(dialog);
+  
+  switch (mn_mailbox_properties_dialog_get_active_type(dialog))
+    {
+    case TYPE_AUTODETECT:
+      gtk_widget_show(private->autodetect_vbox);
+      gtk_widget_hide(private->unsupported_label);
+      gtk_widget_hide(private->pop3_vbox);
+      gtk_widget_hide(private->gmail_vbox);
+      break;
+
+    case TYPE_POP3:
+#ifdef WITH_POP3
+      gtk_widget_show(private->pop3_vbox);
+      gtk_widget_hide(private->unsupported_label);
+#else
+      gtk_widget_show(private->unsupported_label);
+      gtk_widget_hide(private->pop3_vbox);
+#endif /* WITH_POP3 */
+      gtk_widget_hide(private->autodetect_vbox);
+      gtk_widget_hide(private->gmail_vbox);
+      break;
+
+    case TYPE_GMAIL:
+#ifdef WITH_GMAIL
+      gtk_widget_show(private->gmail_vbox);
+      gtk_widget_hide(private->unsupported_label);
+#else
+      gtk_widget_show(private->unsupported_label);
+      gtk_widget_hide(private->gmail_vbox);
+#endif /* WITH_GMAIL */
+      gtk_widget_hide(private->autodetect_vbox);
+      gtk_widget_hide(private->pop3_vbox);
+      break;
+      
+    default:
+      g_return_if_reached();
+    }
+  
   is_complete = mn_mailbox_properties_dialog_is_complete(dialog);
   if (private->apply_button)
     gtk_widget_set_sensitive(private->apply_button, is_complete);
@@ -258,6 +402,7 @@ static void
 mn_mailbox_properties_dialog_fill (MNMailboxPropertiesDialog *dialog)
 {
   Private *private;
+  Type type;
   char *hostname;
   int port;
   char *username;
@@ -269,22 +414,39 @@ mn_mailbox_properties_dialog_fill (MNMailboxPropertiesDialog *dialog)
 
   if (mn_uri_parse_pop(private->uri, &username, &password, &hostname, &port))
     {
-      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(private->pop3_radio), TRUE);
+      type = TYPE_POP3;
 
-      gtk_entry_set_text(GTK_ENTRY(private->hostname_entry), hostname);
-      gtk_spin_button_set_value(GTK_SPIN_BUTTON(private->port_spin), port);
-      gtk_entry_set_text(GTK_ENTRY(private->username_entry), username);
-      gtk_entry_set_text(GTK_ENTRY(private->password_entry), password);
+#ifdef WITH_POP3
+      gtk_entry_set_text(GTK_ENTRY(private->pop3_hostname_entry), hostname);
+      gtk_spin_button_set_value(GTK_SPIN_BUTTON(private->pop3_port_spin), port);
+      gtk_entry_set_text(GTK_ENTRY(private->pop3_username_entry), username);
+      gtk_entry_set_text(GTK_ENTRY(private->pop3_password_entry), password);
+#endif /* WITH_POP3 */
 
       g_free(hostname);
       g_free(username);
       g_free(password);
     }
+  else if (mn_uri_parse_gmail(private->uri, &username, &password))
+    {
+      type = TYPE_GMAIL;
+
+#ifdef WITH_GMAIL
+      gtk_entry_set_text(GTK_ENTRY(private->gmail_username_entry), username);
+      gtk_entry_set_text(GTK_ENTRY(private->gmail_password_entry), password);
+#endif /* WITH_GMAIL */
+
+      g_free(username);
+      g_free(password);
+    }
   else
     {
-      gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(private->file_radio), TRUE);
+      type = TYPE_AUTODETECT;
+
       gtk_entry_set_text(GTK_ENTRY(private->location_entry), private->uri);
     }
+
+  mn_mailbox_properties_dialog_set_active_type(dialog, type);
 }
 
 void
@@ -310,28 +472,53 @@ mn_mailbox_properties_dialog_get_uri (MNMailboxPropertiesDialog *dialog)
   g_return_val_if_fail(MN_IS_MAILBOX_PROPERTIES_DIALOG(dialog), NULL);
   private = MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE(dialog);
 
-  if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(private->file_radio)))
+  switch (mn_mailbox_properties_dialog_get_active_type(dialog))
     {
-      const char *location;
-
-      location = gtk_entry_get_text(GTK_ENTRY(private->location_entry));
-      uri = g_strdup(location);
-    }
-  else
-    {
-      const char *hostname;
-      int port;
-      const char *username;
-      const char *password;
-
-      hostname = gtk_entry_get_text(GTK_ENTRY(private->hostname_entry));
-      port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(private->port_spin));
-      username = gtk_entry_get_text(GTK_ENTRY(private->username_entry));
-      password = gtk_entry_get_text(GTK_ENTRY(private->password_entry));
-
-      uri = mn_uri_build_pop(username, password, hostname, port);
+    case TYPE_AUTODETECT:
+      {
+	const char *location;
+	
+	location = gtk_entry_get_text(GTK_ENTRY(private->location_entry));
+	uri = g_strdup(location);
+      }
+      break;
+
+#ifdef WITH_POP3
+    case TYPE_POP3:
+      {
+	const char *hostname;
+	int port;
+	const char *username;
+	const char *password;
+	
+	hostname = gtk_entry_get_text(GTK_ENTRY(private->pop3_hostname_entry));
+	port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(private->pop3_port_spin));
+	username = gtk_entry_get_text(GTK_ENTRY(private->pop3_username_entry));
+	password = gtk_entry_get_text(GTK_ENTRY(private->pop3_password_entry));
+	
+	uri = mn_uri_build_pop(username, password, hostname, port);
+      }
+      break;
+#endif /* WITH_POP3 */
+
+#ifdef WITH_GMAIL
+    case TYPE_GMAIL:
+      {
+	const char *username;
+	const char *password;
+
+	username = gtk_entry_get_text(GTK_ENTRY(private->gmail_username_entry));
+	password = gtk_entry_get_text(GTK_ENTRY(private->gmail_password_entry));
+	
+	uri = mn_uri_build_gmail(username, password);
+      }
+      break;
+#endif /* TYPE_GMAIL */
+      
+    default:
+      g_return_val_if_reached(NULL);
     }
-
+  
   return uri;
 }
 
@@ -425,34 +612,27 @@ mn_mailbox_properties_dialog_browse_clicked_h (gpointer user_data,
 }
 
 void
-mn_mailbox_properties_dialog_radio_toggled_h (gpointer user_data,
-					      GtkWidget *widget)
+mn_mailbox_properties_dialog_type_changed_h (gpointer user_data,
+					     GtkComboBox *combobox)
 {
   MNMailboxPropertiesDialog *dialog = user_data;
   Private *private;
 
   private = MN_MAILBOX_PROPERTIES_DIALOG_PRIVATE(dialog);
   if (private->mode == MN_MAILBOX_PROPERTIES_DIALOG_MODE_ADD)
-    {
-      if (widget == private->file_radio)
-	selected_radio = RADIO_FILE;
-      else if (widget == private->pop3_radio)
-	selected_radio = RADIO_POP3;
-      else
-	g_return_if_reached();
-    }
-  
+    selected_type = mn_mailbox_properties_dialog_get_active_type(dialog);
+
   mn_mailbox_properties_dialog_update_sensitivity(dialog);
 }
 
 void
-mn_mailbox_properties_dialog_pop3_entry_activate_h (gpointer user_data,
-						    GtkWidget *widget)
+mn_mailbox_properties_dialog_entry_activate_h (gpointer user_data,
+					       GtkEntry *entry)
 {
   GtkWidget *next = user_data;
   GtkWidget *toplevel;
 
-  toplevel = gtk_widget_get_toplevel(widget);
+  toplevel = gtk_widget_get_toplevel(GTK_WIDGET(entry));
   if (GTK_WIDGET_TOPLEVEL(toplevel)
       && GTK_WINDOW(toplevel)->default_widget
       && GTK_WIDGET_IS_SENSITIVE(GTK_WINDOW(toplevel)->default_widget))
@@ -463,7 +643,7 @@ mn_mailbox_properties_dialog_pop3_entry_activate_h (gpointer user_data,
 
 void
 mn_mailbox_properties_dialog_entry_changed_h (gpointer user_data,
-					      GtkWidget *widget)
+					      GtkEditable *editable)
 {
   MNMailboxPropertiesDialog *dialog = user_data;
 
diff --git a/src/mn-mailbox.c b/src/mn-mailbox.c
@@ -36,6 +36,9 @@
 #ifdef WITH_SYLPHEED
 #include "mn-sylpheed-mailbox.h"
 #endif
+#ifdef WITH_GMAIL
+#include "mn-gmail-mailbox.h"
+#endif
 #include "mn-unsupported-mailbox.h"
 #include "mn-util.h"
 #include "mn-uri.h"
@@ -119,7 +122,7 @@ mn_mailbox_get_types (void)
 
   if (! types)
     {
-      GType tmp_types[5];
+      GType tmp_types[6];
       int n_types = 0;
       int i;
 
@@ -138,6 +141,9 @@ mn_mailbox_get_types (void)
 #ifdef WITH_SYLPHEED
       tmp_types[n_types++] = MN_TYPE_SYLPHEED_MAILBOX;
 #endif
+#ifdef WITH_GMAIL
+      tmp_types[n_types++] = MN_TYPE_GMAIL_MAILBOX;
+#endif
 
       types = g_new(GType, n_types + 1);
       for (i = 0; i < n_types; i++)
diff --git a/src/mn-pop3-mailbox.c b/src/mn-pop3-mailbox.c
@@ -1,4 +1,7 @@
 /* 
+ * mn-pop3-mailbox.c - POP3 support for Mail Notification
+ * Fully complies with RFC 1939
+ *
  * Copyright (c) 2003, 2004 Jean-Yves Lefort <jylefort@brutele.be>
  *
  * This program is free software; you can redistribute it and/or modify
@@ -158,7 +161,7 @@ mn_pop3_mailbox_constructor (GType type,
 			 &pop3_mailbox->priv->password,
 			 &pop3_mailbox->priv->hostname,
 			 &pop3_mailbox->priv->port))
-    mn_mailbox_set_init_error(mailbox, _("unable to parse URI"));
+    mn_mailbox_set_init_error(mailbox, _("unable to parse POP3 URI"));
   
   return object;
 }
@@ -184,7 +187,7 @@ mn_pop3_mailbox_check (MNMailbox *mailbox)
   MNPOP3Mailbox *pop3_mailbox = MN_POP3_MAILBOX(mailbox);
   GConn *conn;
 
-  mn_info(_("connecting to POP3 server %s:%i"), pop3_mailbox->priv->hostname, pop3_mailbox->priv->port);
+  mn_info(_("connecting to POP3 server %s"), pop3_mailbox->priv->hostname);
 
   pop3_mailbox->priv->state = STATE_CONNECT;
   conn = gnet_conn_new(pop3_mailbox->priv->hostname, pop3_mailbox->priv->port, mn_pop3_mailbox_conn_cb, mailbox);
@@ -221,7 +224,7 @@ mn_pop3_mailbox_conn_cb (GConn *conn, GConnEvent *event, gpointer user_data)
   switch (event->type)
     {
     case GNET_CONN_CONNECT:
-      mn_info(_("successfully connected to %s:%i"), mailbox->priv->hostname, mailbox->priv->port);
+      mn_info(_("successfully connected to %s"), mailbox->priv->hostname);
       mailbox->priv->state = STATE_ACK;
       gnet_conn_readline(conn);
       break;
@@ -285,10 +288,12 @@ mn_pop3_mailbox_conn_cb (GConn *conn, GConnEvent *event, gpointer user_data)
 	    default:
 	      g_return_if_reached();
 	    }
-	else			/* error reply */
+	else if (! strcmp(event->buffer, "-ERR") || ! strncmp(event->buffer, "-ERR ", 5))
 	  {
-	    if (! mn_mailbox_get_error(MN_MAILBOX(mailbox)))
-	      mn_mailbox_set_error(MN_MAILBOX(mailbox), "%s", event->buffer);
+	    if (event->buffer[4])
+	      mn_mailbox_set_error(MN_MAILBOX(mailbox), "\"%s\"", event->buffer + 5);
+	    else
+	      mn_mailbox_set_error(MN_MAILBOX(mailbox), _("unknown error"));
 
 	    switch (mailbox->priv->state)
 	      {
@@ -307,6 +312,12 @@ mn_pop3_mailbox_conn_cb (GConn *conn, GConnEvent *event, gpointer user_data)
 		g_return_if_reached();
 	      }
 	  }
+	else
+	  {
+	    mn_mailbox_set_error(MN_MAILBOX(mailbox), _("invalid reply \"%s\""), event->buffer);
+	    /* the server is uncompliant, we do not send a QUIT */
+	    goto unref;
+	  }
       }
       break;
 
diff --git a/src/mn-preferences.c b/src/mn-preferences.c
@@ -402,28 +402,36 @@ mn_preferences_add_mailbox (void)
   add_mailbox = mn_mailbox_properties_dialog_new(GTK_WINDOW(preferences.dialog), MN_MAILBOX_PROPERTIES_DIALOG_MODE_ADD);
 
  run:
-  if (gtk_dialog_run(GTK_DIALOG(add_mailbox)) == GTK_RESPONSE_ACCEPT)
+  switch (gtk_dialog_run(GTK_DIALOG(add_mailbox)))
     {
-      char *uri;
-
-      uri = mn_mailbox_properties_dialog_get_uri(MN_MAILBOX_PROPERTIES_DIALOG(add_mailbox));
-      g_return_if_fail(uri != NULL);
+    case GTK_RESPONSE_HELP:
+      mn_display_help("mailbox-properties");
+      goto run;
+
+    case GTK_RESPONSE_ACCEPT:
+      {
+	char *uri;
+	
+	uri = mn_mailbox_properties_dialog_get_uri(MN_MAILBOX_PROPERTIES_DIALOG(add_mailbox));
+	g_return_if_fail(uri != NULL);
       
-      if (! mn_mailboxes_find(uri))
-	{
-	  GSList *gconf_mailboxes;
-
-	  gconf_mailboxes = eel_gconf_get_string_list(MN_CONF_MAILBOXES);
-	  gconf_mailboxes = g_slist_append(gconf_mailboxes, uri);
-	  eel_gconf_set_string_list(MN_CONF_MAILBOXES, gconf_mailboxes);
-	  mn_slist_free(gconf_mailboxes);
-	}
-      else
-	{
-	  mn_error_dialog(NULL, _("Unable to add mailbox."), _("The mailbox is already in the list."));
-	  g_free(uri);
-	  goto run;
-	}
+	if (! mn_mailboxes_find(uri))
+	  {
+	    GSList *gconf_mailboxes;
+	    
+	    gconf_mailboxes = eel_gconf_get_string_list(MN_CONF_MAILBOXES);
+	    gconf_mailboxes = g_slist_append(gconf_mailboxes, uri);
+	    eel_gconf_set_string_list(MN_CONF_MAILBOXES, gconf_mailboxes);
+	    mn_slist_free(gconf_mailboxes);
+	  }
+	else
+	  {
+	    mn_error_dialog(NULL, _("Unable to add mailbox."), _("The mailbox is already in the list."));
+	    g_free(uri);
+	    goto run;
+	  }
+      }
+      break;
     }
 
   gtk_widget_destroy(add_mailbox);
@@ -632,10 +640,15 @@ mn_preferences_mailbox_properties_response_h (GtkDialog *dialog,
 					      int response,
 					      gpointer user_data)
 {
-  if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
-    mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog));
-  if (response == GTK_RESPONSE_CANCEL || response == GTK_RESPONSE_OK)
-    gtk_widget_destroy(GTK_WIDGET(dialog));
+  if (response == GTK_RESPONSE_HELP)
+    mn_display_help("mailbox-properties");
+  else
+    {
+      if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
+	mn_mailbox_properties_dialog_apply(MN_MAILBOX_PROPERTIES_DIALOG(dialog));
+      if (response == GTK_RESPONSE_CANCEL || response == GTK_RESPONSE_OK)
+	gtk_widget_destroy(GTK_WIDGET(dialog));
+    }
 }
 
 static void
diff --git a/src/mn-soup.c b/src/mn-soup.c
@@ -0,0 +1,182 @@
+/* 
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <eel/eel.h>
+#include <libsoup/soup.h>
+
+/*** cpp *********************************************************************/
+
+#define CONF_HTTP_PROXY_NAMESPACE		"/system/http_proxy"
+#define CONF_HTTP_PROXY_USE_HTTP_PROXY		CONF_HTTP_PROXY_NAMESPACE "/use_http_proxy"
+#define CONF_HTTP_PROXY_HOST			CONF_HTTP_PROXY_NAMESPACE "/host"
+#define CONF_HTTP_PROXY_PORT			CONF_HTTP_PROXY_NAMESPACE "/port"
+#define CONF_HTTP_PROXY_USE_AUTHENTICATION	CONF_HTTP_PROXY_NAMESPACE "/use_authentication"
+#define CONF_HTTP_PROXY_AUTHENTICATION_USER	CONF_HTTP_PROXY_NAMESPACE "/authentication_user"
+#define CONF_HTTP_PROXY_AUTHENTICATION_PASSWORD	CONF_HTTP_PROXY_NAMESPACE "/authentication_password"
+#define CONF_PROXY_NAMESPACE			"/system/proxy"
+#define CONF_PROXY_MODE				CONF_PROXY_NAMESPACE "/mode"
+#define CONF_PROXY_SOCKS_HOST			CONF_PROXY_NAMESPACE "/socks_host"
+#define CONF_PROXY_SOCKS_PORT			CONF_PROXY_NAMESPACE "/socks_port"
+
+/*** variables ***************************************************************/
+
+static int use_count = 0;
+static unsigned int http_proxy_notification_id;
+static unsigned int proxy_notification_id;
+
+/*** functions ***************************************************************/
+
+static void mn_soup_notify_proxy_cb (GConfClient *client,
+				     unsigned int cnxn_id,
+				     GConfEntry *entry,
+				     gpointer user_data);
+static void mn_soup_update_proxy (void);
+
+/*** implementation **********************************************************/
+
+void
+mn_soup_use (void)
+{
+  if (++use_count == 1)
+    {
+      eel_gconf_monitor_add(CONF_HTTP_PROXY_NAMESPACE);
+      eel_gconf_monitor_add(CONF_PROXY_NAMESPACE);
+
+      mn_soup_update_proxy();
+
+      http_proxy_notification_id = eel_gconf_notification_add(CONF_HTTP_PROXY_NAMESPACE, mn_soup_notify_proxy_cb, NULL);
+      proxy_notification_id = eel_gconf_notification_add(CONF_PROXY_NAMESPACE, mn_soup_notify_proxy_cb, NULL);
+    }
+}
+
+void
+mn_soup_unuse (void)
+{
+  g_return_if_fail(use_count > 0);
+
+  if (--use_count == 0)
+    {
+      eel_gconf_notification_remove(http_proxy_notification_id);
+      eel_gconf_notification_remove(proxy_notification_id);
+      eel_gconf_monitor_remove(CONF_HTTP_PROXY_NAMESPACE);
+      eel_gconf_monitor_remove(CONF_PROXY_NAMESPACE);
+
+      soup_shutdown();
+    }
+}
+
+static void
+mn_soup_notify_proxy_cb (GConfClient *client,
+			 unsigned int cnxn_id,
+			 GConfEntry *entry,
+			 gpointer user_data)
+{
+  mn_soup_update_proxy();
+}
+ 
+static void
+mn_soup_update_proxy (void)
+{
+  SoupContext *context = NULL;
+  char *mode;
+
+  mode = eel_gconf_get_string(CONF_PROXY_MODE);
+  if (mode)
+    {
+      if (! strcmp(mode, "manual"))
+	{
+	  char *socks_host;
+
+	  socks_host = eel_gconf_get_string(CONF_PROXY_SOCKS_HOST);
+	  if (socks_host)
+	    {
+	      if (*socks_host)
+		{
+		  int socks_port;
+		  char *uri;
+
+		  socks_port = eel_gconf_get_integer(CONF_PROXY_SOCKS_PORT);
+		  if (socks_port <= 0 || socks_port > 65535)
+		    socks_port = 1080;
+
+		  /* we assume it's a Socks 5 proxy, since it is not specified */
+		  uri = g_strdup_printf("socks5://%s:%i", socks_host, socks_port);
+		  context = soup_context_get(uri);
+		  
+		  g_free(uri);
+		}
+
+	      g_free(socks_host);
+	    }
+	}
+      g_free(mode);
+    }
+  
+  if (! context)
+    {
+      if (eel_gconf_get_boolean(CONF_HTTP_PROXY_USE_HTTP_PROXY))
+	{
+	  char *host;
+
+	  /* FIXME: also honour /system/http_proxy/ignore_hosts */
+
+	  host = eel_gconf_get_string(CONF_HTTP_PROXY_HOST);
+	  if (host)
+	    {
+	      if (*host)
+		{
+		  GString *uri;
+		  int port;
+	      
+		  uri = g_string_new("http://");
+		  
+		  port = eel_gconf_get_integer(CONF_HTTP_PROXY_PORT);
+		  if (port <= 0 || port > 65535)
+		    port = 8080; /* default as recommended by http-method.c of GnomeVFS */
+		  
+		  if (eel_gconf_get_boolean(CONF_HTTP_PROXY_USE_AUTHENTICATION))
+		    {
+		      char *authentication_user;
+		      char *authentication_password;
+		      
+		      authentication_user = eel_gconf_get_string(CONF_HTTP_PROXY_AUTHENTICATION_USER);
+		      authentication_password = eel_gconf_get_string(CONF_HTTP_PROXY_AUTHENTICATION_PASSWORD);
+		      
+		      if (authentication_user && authentication_password
+			  && *authentication_user && *authentication_password)
+			g_string_append_printf(uri, "%s:%s@", authentication_user, authentication_password);
+		      
+		      g_free(authentication_user);
+		      g_free(authentication_password);
+		    }
+	      
+		  g_string_append_printf(uri, "%s:%i", host, port);
+	      
+		  context = soup_context_get(uri->str);
+		  g_string_free(uri, TRUE);
+		}
+
+	      g_free(host);
+	    }
+	}
+    }
+
+  soup_set_proxy(context);
+  if (context)
+    soup_context_unref(context);
+}
diff --git a/src/mn-soup.h b/src/mn-soup.h
@@ -0,0 +1,25 @@
+/* 
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _MN_SOUP_H
+#define _MN_SOUP_H
+
+void mn_soup_use (void);
+void mn_soup_unuse (void);
+
+#endif /* _MN_SOUP_H */
diff --git a/src/mn-stock.c b/src/mn-stock.c
@@ -38,7 +38,10 @@ mn_stock_init (void)
     { MN_STOCK_NO_MAIL_ERROR,	"no-mail-error.png", NULL	},
     { MN_STOCK_LOCAL,		NULL, "stock_folder"		},
     { MN_STOCK_REMOTE,		NULL, "stock_internet"		},
-    { MN_STOCK_UNSUPPORTED,	"unsupported.png", NULL		}
+    { MN_STOCK_UNSUPPORTED,	"unsupported.png", NULL		},
+#ifdef WITH_GMAIL
+    { MN_STOCK_GMAIL,		"gmail.png", NULL		},
+#endif
   };
   GtkIconFactory *factory;
   GtkIconTheme *icon_theme;
diff --git a/src/mn-stock.h b/src/mn-stock.h
@@ -26,6 +26,7 @@
 #define MN_STOCK_LOCAL			"mail-notification-local"
 #define MN_STOCK_REMOTE			"mail-notification-remote"
 #define MN_STOCK_UNSUPPORTED		"mail-notification-unsupported"
+#define MN_STOCK_GMAIL			"mail-notification-gmail"
 
 void mn_stock_init (void);
 
diff --git a/src/mn-ui.c b/src/mn-ui.c
@@ -125,90 +125,102 @@ mn_ui_update_sensitivity (void)
 void
 mn_ui_update_icon (void)
 {
-  GSList *l;
-  int n_new = 0;
-  int n_error = 0;
-  int n_unsupported = 0;
-  GString *new_string;
-  GString *error_string;
-  GString *unsupported_string;
+  GSList *mailboxes;
   const char *stock_id;
   GString *tooltip;
 
-  new_string = g_string_new(NULL);
-  error_string = g_string_new(NULL);
-  unsupported_string = g_string_new(NULL);
-
-  MN_LIST_FOREACH(l, mn_mailboxes_get())
+  mailboxes = mn_mailboxes_get();
+  if (mailboxes)
     {
-      MNMailbox *mailbox = l->data;
-      const char *name;
-      const char *error;
-
-      name = mn_mailbox_get_name(mailbox);
-      error = mn_mailbox_get_error(mailbox);
-
-      if (mn_mailbox_get_has_new(mailbox))
-	{
-	  n_new++;
-	  if (*new_string->str)
-	    g_string_append_c(new_string, '\n');
-	  g_string_append_printf(new_string, "    %s", name);
+      GSList *l;
+      int n_new = 0;
+      int n_error = 0;
+      int n_unsupported = 0;
+      GString *new_string;
+      GString *error_string;
+      GString *unsupported_string;
+
+      new_string = g_string_new(NULL);
+      error_string = g_string_new(NULL);
+      unsupported_string = g_string_new(NULL);
+
+      MN_LIST_FOREACH(l, mn_mailboxes_get())
+        {
+	  MNMailbox *mailbox = l->data;
+	  const char *name;
+	  const char *error;
+
+	  name = mn_mailbox_get_name(mailbox);
+	  error = mn_mailbox_get_error(mailbox);
+
+	  if (mn_mailbox_get_has_new(mailbox))
+	    {
+	      n_new++;
+	      if (*new_string->str)
+		g_string_append_c(new_string, '\n');
+	      g_string_append_printf(new_string, "    %s", name);
+	    }
+	  
+	  if (error)
+	    {
+	      n_error++;
+	      if (*error_string->str)
+		g_string_append_c(error_string, '\n');
+	      g_string_append_printf(error_string, "    %s (%s)", name, error);
+	    }
+	  
+	  if (MN_IS_UNSUPPORTED_MAILBOX(mailbox))
+	    {
+	      n_unsupported++;
+	      if (*unsupported_string->str)
+		g_string_append_c(unsupported_string, '\n');
+	      g_string_append_printf(unsupported_string, "    %s (%s)", name, mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
+	    }
 	}
 
-      if (error)
+      if (n_new > 0)
 	{
-	  n_error++;
-	  if (*error_string->str)
-	    g_string_append_c(error_string, '\n');
-	  g_string_append_printf(error_string, "    %s (%s)", name, error);
+	  stock_id = n_error > 0 ? MN_STOCK_MAIL_ERROR : MN_STOCK_MAIL;
+	  g_string_prepend(new_string, ngettext("The following mailbox has new mail:\n",
+						"The following mailboxes have new mail:\n",
+						n_new));
 	}
-
-      if (MN_IS_UNSUPPORTED_MAILBOX(mailbox))
+      else
 	{
-	  n_unsupported++;
-	  if (*unsupported_string->str)
-	    g_string_append_c(unsupported_string, '\n');
-	  g_string_append_printf(unsupported_string, "    %s (%s)", name, mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
+	  stock_id = n_error > 0 ? MN_STOCK_NO_MAIL_ERROR : MN_STOCK_NO_MAIL;
+	  g_string_prepend(new_string, _("You have no new mail."));
 	}
-    }
-
-  if (n_new > 0)
-    {
-      stock_id = n_error > 0 ? MN_STOCK_MAIL_ERROR : MN_STOCK_MAIL;
-      g_string_prepend(new_string, ngettext("The following mailbox has new mail:\n",
-					    "The following mailboxes have new mail:\n",
-					    n_new));
+      
+      if (n_error > 0)
+	g_string_prepend(error_string, ngettext("The following mailbox reported an error:\n",
+						"The following mailboxes reported an error:\n",
+						n_error));
+      
+      if (n_unsupported > 0)
+	g_string_prepend(unsupported_string, ngettext("The following mailbox is unsupported:\n",
+						      "The following mailboxes are unsupported:\n",
+						      n_unsupported));
+
+      tooltip = g_string_new(new_string->str);
+      if (n_error > 0)
+	g_string_append_printf(tooltip, "\n\n%s", error_string->str);
+      if (n_unsupported > 0)
+	g_string_append_printf(tooltip, "\n\n%s", unsupported_string->str);
+
+      g_string_free(new_string, TRUE);
+      g_string_free(error_string, TRUE);
+      g_string_free(unsupported_string, TRUE);
     }
   else
     {
-      stock_id = n_error > 0 ? MN_STOCK_NO_MAIL_ERROR : MN_STOCK_NO_MAIL;
-      g_string_prepend(new_string, _("You have no new mail."));
+      stock_id = MN_STOCK_NO_MAIL;
+      tooltip = g_string_new(_("No mailboxes are being monitored."));
     }
-
-  if (n_error > 0)
-    g_string_prepend(error_string, ngettext("The following mailbox reported an error:\n",
-					    "The following mailboxes reported an error:\n",
-					    n_error));
-
-  if (n_unsupported > 0)
-    g_string_prepend(unsupported_string, ngettext("The following mailbox is unsupported:\n",
-						  "The following mailboxes are unsupported:\n",
-						  n_unsupported));
-
-  tooltip = g_string_new(new_string->str);
-  if (n_error > 0)
-    g_string_append_printf(tooltip, "\n\n%s", error_string->str);
-  if (n_unsupported > 0)
-    g_string_append_printf(tooltip, "\n\n%s", unsupported_string->str);
-
+  
   mn_mail_icon_set_from_stock(mail_icon, stock_id);
   mn_mail_icon_set_tooltip(mail_icon, tooltip->str);
 
   g_string_free(tooltip, TRUE);
-  g_string_free(new_string, TRUE);
-  g_string_free(error_string, TRUE);
-  g_string_free(unsupported_string, TRUE);
 }
 
 /* libglade callbacks */
@@ -235,6 +247,7 @@ void
 mn_ui_about_activate_h (GtkMenuItem *menuitem, gpointer user_data)
 {
   static const char *authors[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
+  static const char *documenters[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
   GdkPixbuf *logo;
   GdkPixbuf *icon;
   static GtkWidget *about = NULL;
@@ -251,8 +264,8 @@ mn_ui_about_activate_h (GtkMenuItem *menuitem, gpointer user_data)
 			  "Copyright \302\251 2003, 2004 Jean-Yves Lefort",
 			  _("A Mail Notification Icon"),
 			  authors,
-			  NULL,
-			  NULL,
+			  documenters,
+			  _("Jean-Yves Lefort <jylefort@brutele.be>"),
 			  logo);
   g_object_unref(logo);
 
diff --git a/src/mn-uri.c b/src/mn-uri.c
@@ -19,13 +19,31 @@
 #include "config.h"
 #include <stdlib.h>
 #include <string.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
 #include <glib/gi18n-lib.h>
 #include <libgnomevfs/gnome-vfs-utils.h>
 #include "mn-uri.h"
 #include "mn-util.h"
 
+/*** functions ***************************************************************/
+
+static gboolean mn_uri_is_ipv6_address (const char *hostname);
+
 /*** implementation **********************************************************/
 
+static gboolean
+mn_uri_is_ipv6_address (const char *hostname)
+{
+  char dummy[16];		/* sizeof(struct in6_addr) */
+
+  g_return_val_if_fail(hostname != NULL, FALSE);
+
+  return inet_pton(AF_INET6, hostname, dummy) == 1;
+}
+
 char *
 mn_uri_build_pop (const char *username,
 		  const char *password,
@@ -36,9 +54,14 @@ mn_uri_build_pop (const char *username,
   g_return_val_if_fail(password != NULL, NULL);
   g_return_val_if_fail(hostname != NULL, NULL);
 
-  return port == 110
-    ? g_strdup_printf("pop://%s:%s@%s", username, password, hostname)
-    : g_strdup_printf("pop://%s:%s@%s:%i", username, password, hostname, port);
+  if (mn_uri_is_ipv6_address(hostname))
+    return port == 110
+      ? g_strdup_printf("pop://%s:%s@[%s]", username, password, hostname)
+      : g_strdup_printf("pop://%s:%s@[%s]:%i", username, password, hostname, port);
+  else
+    return port == 110
+      ? g_strdup_printf("pop://%s:%s@%s", username, password, hostname)
+      : g_strdup_printf("pop://%s:%s@%s:%i", username, password, hostname, port);
 }
 
 /*
@@ -49,6 +72,8 @@ mn_uri_build_pop (const char *username,
  * We comply with RFC 1738, but for obvious reasons we require <user>
  * and <password>. We do not comply with RFC 2384 because it forbids
  * <password>.
+ *
+ * For IPv6 addresses, we comply with RFC 2732.
  */
 gboolean
 mn_uri_parse_pop (const char *uri,
@@ -57,46 +82,112 @@ mn_uri_parse_pop (const char *uri,
 		  char **hostname,
 		  int *port)
 {
-  const char *_username;
-  char *_password;
-  char *_hostname;
-  char *_port = NULL;
+  char *username_start;
+  char *username_end;
+  char *password_start;
+  char *password_end;
+  char *hostname_start;
+  char *hostname_end;
+  char *port_start = NULL;
 
   g_return_val_if_fail(uri != NULL, FALSE);
 
   if (strncmp(uri, "pop://", 6))
     return FALSE;
 
-  _username = uri + 6;
-  if (strlen(uri) < 6)
+  username_start = (char *) uri + 6;
+  username_end = strchr(username_start, ':');
+  if (! username_end)
     return FALSE;
 
-  _password = strchr(_username, ':');
-  if (! _password++)		/* ++ to skip the colon */
+  password_start = username_end + 1;
+  password_end = strchr(password_start, '@');
+  if (! password_end)
     return FALSE;
 
-  _hostname = strchr(_password, '@');
-  if (! _hostname++)		/* ++ to skip the arobas */
-    return FALSE;
+  hostname_start = password_end + 1;
+  if (*hostname_start == '[')
+    {
+      hostname_end = strchr(++hostname_start, ']');
+      if (hostname_end)
+	{
+	  if (hostname_end[1])
+	    {
+	      if (hostname_end[1] != ':')
+		return FALSE;
+	      port_start = hostname_end + 2;
+	    }
+	}
+      else
+	return FALSE;
+    }
+  else
+    {
+      hostname_end = strchr(hostname_start, ':');
+      if (hostname_end)
+	port_start = hostname_end + 1;
+      else
+	{
+	  hostname_end = strchr(hostname_start, 0);
+	  g_return_val_if_fail(hostname_end != NULL, FALSE);
+	}
+    }
 
-  _port = strchr(_hostname, ':');
-  /* port is optional */
-  if (_port && ! mn_str_isnumeric(++_port))	/* ++ to skip the colon */
-    return FALSE;
-  
-  if ((_password - _username - 1 <= 0)
-      || (_hostname - _password - 1 <= 0)
-      || (_port && _port - _hostname - 1 <= 0))
+  if ((username_end - username_start <= 0)
+      || (password_end - password_start <= 0)
+      || (hostname_end - hostname_start <= 0)
+      || (port_start && ! mn_str_isnumeric(port_start)))
     return FALSE;
 
   if (username)
-    *username = g_strndup(_username, _password - _username - 1);
+    *username = g_strndup(username_start, username_end - username_start);
   if (password)
-    *password = g_strndup(_password, _hostname - _password - 1);
+    *password = g_strndup(password_start, password_end - password_start);
   if (hostname)
-    *hostname = _port ? g_strndup(_hostname, _port - _hostname - 1) : g_strdup(_hostname);
+    *hostname = g_strndup(hostname_start, hostname_end - hostname_start);
   if (port)
-    *port = _port ? atoi(_port) : 110;
+    *port = port_start ? atoi(port_start) : 110;
+
+  return TRUE;
+}
+
+char *
+mn_uri_build_gmail (const char *username, const char *password)
+{
+  g_return_val_if_fail(username != NULL, NULL);
+  g_return_val_if_fail(password != NULL, NULL);
+
+  return g_strdup_printf("gmail://%s:%s", username, password);
+}
+
+gboolean
+mn_uri_parse_gmail (const char *uri, char **username, char **password)
+{
+  char *username_start;
+  char *username_end;
+  char *password_start;
+
+  g_return_val_if_fail(uri != NULL, FALSE);
+
+  if (strncmp(uri, "gmail://", 8))
+    return FALSE;
+
+  username_start = (char *) uri + 8;
+  username_end = strchr(username_start, ':');
+  if (! username_end)
+    return FALSE;
+
+  password_start = username_end + 1;
+  if (! password_start[0])
+    return FALSE;
+
+  if (username_end - username_start <= 0)
+    return FALSE;
+
+  if (username)
+    *username = g_strndup(username_start, username_end - username_start);
+  if (password)
+    *password = g_strdup(password_start);
 
   return TRUE;
 }
@@ -119,6 +210,12 @@ mn_uri_canonicalize (const char *uri)
       g_free(password);
       g_free(hostname);
     }
+  else if (mn_uri_parse_gmail(uri, &username, &password))
+    {
+      canonical_uri = mn_uri_build_gmail(username, password);
+      g_free(username);
+      g_free(password);
+    }
   else
     canonical_uri = gnome_vfs_make_uri_canonical(uri);
 
@@ -182,10 +279,20 @@ mn_uri_format_for_display (const char *uri)
 	  g_free(username);
 	  g_free(hostname);
 	}
-      else
-	name = g_strdup(uri); /* fallback to the URI */
     }
+  if (! name)
+    {
+      char *username;
 
+      if (mn_uri_parse_gmail(uri, &username, NULL))
+	{
+	  name = g_strdup_printf("%s@gmail.com", username);
+	  g_free(username);
+	}
+    }
+  if (! name)
+    name = g_strdup(uri);	/* fallback to the URI */
+  
   return name;
 }
 
diff --git a/src/mn-uri.h b/src/mn-uri.h
@@ -31,6 +31,11 @@ gboolean mn_uri_parse_pop (const char *uri,
 			   char **hostname,
 			   int *port);
 
+char *mn_uri_build_gmail (const char *username, const char *password);
+gboolean mn_uri_parse_gmail (const char *uri,
+			     char **username,
+			     char **password);
+
 char *mn_uri_canonicalize (const char *uri);
 int mn_uri_cmp (const char *uri1, const char *uri2);
 
diff --git a/src/mn-util.c b/src/mn-util.c
@@ -85,6 +85,9 @@ mn_str_isnumeric (const char *str)
 
   g_return_val_if_fail(str != NULL, FALSE);
 
+  if (! *str)
+    return FALSE;
+
   for (i = 0; str[i]; i++)
     if (! g_ascii_isdigit(str[i]))
       return FALSE;
diff --git a/ui/Makefile.am b/ui/Makefile.am
@@ -12,12 +12,6 @@ projects =					\
 	menu.gladep				\
 	preferences.gladep
 
-strings =					\
-	dialog-strings.c			\
-	mailbox-properties-strings.c		\
-	menu-strings.c				\
-	preferences-strings.c
-
 dist_ui_DATA = $(interfaces)
 
-EXTRA_DIST = $(projects) $(strings)
+EXTRA_DIST = $(projects)
diff --git a/ui/Makefile.in b/ui/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.8.4 from Makefile.am.
+# Makefile.in generated by automake 1.8.5 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -90,12 +90,34 @@ GNOME_LIBS = @GNOME_LIBS@
 GTK_CFLAGS = @GTK_CFLAGS@
 GTK_LIBS = @GTK_LIBS@
 G_ASSERTIONS = @G_ASSERTIONS@
+HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
+HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
 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_KBD_RULE = @INTLTOOL_KBD_RULE@
+INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
+INTLTOOL_MERGE = @INTLTOOL_MERGE@
+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_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_XML_RULE = @INTLTOOL_XML_RULE@
 LDFLAGS = @LDFLAGS@
 LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
@@ -121,10 +143,14 @@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@
 PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
+SOUP_CFLAGS = @SOUP_CFLAGS@
+SOUP_LIBS = @SOUP_LIBS@
 STRIP = @STRIP@
 USE_NLS = @USE_NLS@
 VERSION = @VERSION@
 WARN_CFLAGS = @WARN_CFLAGS@
+WITH_GMAIL_FALSE = @WITH_GMAIL_FALSE@
+WITH_GMAIL_TRUE = @WITH_GMAIL_TRUE@
 WITH_MAILDIR_FALSE = @WITH_MAILDIR_FALSE@
 WITH_MAILDIR_TRUE = @WITH_MAILDIR_TRUE@
 WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
@@ -176,14 +202,8 @@ projects = \
 	menu.gladep				\
 	preferences.gladep
 
-strings = \
-	dialog-strings.c			\
-	mailbox-properties-strings.c		\
-	menu-strings.c				\
-	preferences-strings.c
-
 dist_ui_DATA = $(interfaces)
-EXTRA_DIST = $(projects) $(strings)
+EXTRA_DIST = $(projects)
 all: all-am
 
 .SUFFIXES:
diff --git a/ui/dialog-strings.c b/ui/dialog-strings.c
@@ -1,6 +0,0 @@
-/*
- * Translatable strings file generated by Glade.
- * Add this file to your project's POTFILES.in.
- * DO NOT compile it as part of your application.
- */
-
diff --git a/ui/dialog.gladep b/ui/dialog.gladep
@@ -10,6 +10,5 @@
   <output_main_file>FALSE</output_main_file>
   <output_support_files>FALSE</output_support_files>
   <output_build_files>FALSE</output_build_files>
-  <output_translatable_strings>TRUE</output_translatable_strings>
   <translatable_strings_file>dialog-strings.c</translatable_strings_file>
 </glade-project>
diff --git a/ui/mailbox-properties-strings.c b/ui/mailbox-properties-strings.c
@@ -1,25 +0,0 @@
-/*
- * Translatable strings file generated by Glade.
- * Add this file to your project's POTFILES.in.
- * DO NOT compile it as part of your application.
- */
-
-gchar *s = N_("_File or folder");
-gchar *s = N_("    ");
-gchar *s = N_("_Location:");
-gchar *s = N_("The URI of the file or folder");
-gchar *s = N_("*");
-gchar *s = N_("_Browse...");
-gchar *s = N_("_POP3 mailbox");
-gchar *s = N_("    ");
-gchar *s = N_("_Hostname:");
-gchar *s = N_("The hostname or IP address of the POP3 server");
-gchar *s = N_("*");
-gchar *s = N_("P_ort:");
-gchar *s = N_("The port number of the POP3 server");
-gchar *s = N_("Us_ername:");
-gchar *s = N_("Your username on the POP3 server");
-gchar *s = N_("*");
-gchar *s = N_("P_assword:");
-gchar *s = N_("Your password on the POP3 server");
-gchar *s = N_("*");
diff --git a/ui/mailbox-properties.glade b/ui/mailbox-properties.glade
@@ -43,26 +43,28 @@
 	  <property name="border_width">5</property>
 	  <property name="visible">True</property>
 	  <property name="homogeneous">False</property>
-	  <property name="spacing">12</property>
+	  <property name="spacing">6</property>
 
 	  <child>
-	    <widget class="GtkVBox" id="vbox2">
+	    <widget class="GtkHBox" id="hbox16">
 	      <property name="visible">True</property>
 	      <property name="homogeneous">False</property>
-	      <property name="spacing">6</property>
+	      <property name="spacing">12</property>
 
 	      <child>
-		<widget class="GtkRadioButton" id="file_radio">
+		<widget class="GtkLabel" id="type_label">
 		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label" translatable="yes">_File or folder</property>
+		  <property name="label" translatable="yes">_Type:</property>
 		  <property name="use_underline">True</property>
-		  <property name="relief">GTK_RELIEF_NORMAL</property>
-		  <property name="focus_on_click">True</property>
-		  <property name="active">False</property>
-		  <property name="inconsistent">False</property>
-		  <property name="draw_indicator">True</property>
-		  <signal name="toggled" handler="mn_mailbox_properties_dialog_radio_toggled_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 16:45:29 GMT"/>
+		  <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">type_combo</property>
 		</widget>
 		<packing>
 		  <property name="padding">0</property>
@@ -72,24 +74,50 @@
 	      </child>
 
 	      <child>
-		<widget class="GtkHBox" id="hbox2">
+		<widget class="GtkComboBox" id="type_combo">
+		  <property name="visible">True</property>
+		  <signal name="changed" handler="mn_mailbox_properties_dialog_type_changed_h" object="dialog" last_modification_time="Tue, 20 Jul 2004 21:55:29 GMT"/>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="autodetect_vbox">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">0</property>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox17">
 		  <property name="visible">True</property>
 		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
+		  <property name="spacing">12</property>
 
 		  <child>
-		    <widget class="GtkLabel" id="label2">
+		    <widget class="GtkLabel" id="location_label">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">    </property>
-		      <property name="use_underline">False</property>
+		      <property name="label" translatable="yes">_Location:</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="xalign">0</property>
 		      <property name="yalign">0.5</property>
 		      <property name="xpad">0</property>
 		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">location_entry</property>
 		    </widget>
 		    <packing>
 		      <property name="padding">0</property>
@@ -99,89 +127,24 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkVBox" id="vbox5">
+		    <widget class="GtkHBox" id="hbox18">
 		      <property name="visible">True</property>
 		      <property name="homogeneous">False</property>
 		      <property name="spacing">6</property>
 
 		      <child>
-			<widget class="GtkHBox" id="hbox12">
+			<widget class="GtkEntry" id="location_entry">
 			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">12</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="location_label">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">_Location:</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">location_entry</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="hbox13">
-			      <property name="visible">True</property>
-			      <property name="homogeneous">False</property>
-			      <property name="spacing">6</property>
-
-			      <child>
-				<widget class="GtkEntry" id="location_entry">
-				  <property name="visible">True</property>
-				  <property name="tooltip" translatable="yes">The URI of the file or folder</property>
-				  <property name="can_focus">True</property>
-				  <property name="editable">True</property>
-				  <property name="visibility">True</property>
-				  <property name="max_length">0</property>
-				  <property name="text" translatable="yes"></property>
-				  <property name="has_frame">True</property>
-				  <property name="invisible_char" translatable="yes">*</property>
-				  <property name="activates_default">True</property>
-				  <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 16:44:58 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="browse">
-				  <property name="visible">True</property>
-				  <property name="can_focus">True</property>
-				  <property name="label" translatable="yes">_Browse...</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="mn_mailbox_properties_dialog_browse_clicked_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 13:05:17 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>
+			  <property name="tooltip" translatable="yes">The URI of the mailbox</property>
+			  <property name="can_focus">True</property>
+			  <property name="editable">True</property>
+			  <property name="visibility">True</property>
+			  <property name="max_length">0</property>
+			  <property name="text" translatable="yes"></property>
+			  <property name="has_frame">True</property>
+			  <property name="invisible_char" translatable="yes">*</property>
+			  <property name="activates_default">True</property>
+			  <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 16:44:58 GMT"/>
 			</widget>
 			<packing>
 			  <property name="padding">0</property>
@@ -189,6 +152,23 @@
 			  <property name="fill">True</property>
 			</packing>
 		      </child>
+
+		      <child>
+			<widget class="GtkButton" id="browse_button">
+			  <property name="visible">True</property>
+			  <property name="can_focus">True</property>
+			  <property name="label" translatable="yes">_Browse...</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="mn_mailbox_properties_dialog_browse_clicked_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 13:05:17 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>
@@ -206,57 +186,137 @@
 	    </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="GtkVBox" id="vbox3">
+	    <widget class="GtkVBox" id="pop3_vbox">
 	      <property name="visible">True</property>
 	      <property name="homogeneous">False</property>
 	      <property name="spacing">6</property>
 
 	      <child>
-		<widget class="GtkRadioButton" id="pop3_radio">
+		<widget class="GtkHBox" id="hbox19">
 		  <property name="visible">True</property>
-		  <property name="can_focus">True</property>
-		  <property name="label" translatable="yes">_POP3 mailbox</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">file_radio</property>
-		  <signal name="toggled" handler="mn_mailbox_properties_dialog_radio_toggled_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 16:45:44 GMT"/>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">12</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="pop3_hostname_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Hostname:</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">pop3_hostname_entry</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkEntry" id="pop3_hostname_entry">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">The hostname or IP address of the POP3 server</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char" translatable="yes">*</property>
+		      <property name="activates_default">False</property>
+		      <signal name="activate" handler="mn_mailbox_properties_dialog_entry_activate_h" object="pop3_port_spin" last_modification_time="Fri, 16 Jul 2004 22:55:26 GMT"/>
+		      <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 13:26:45 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkLabel" id="pop3_port_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">P_ort:</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">pop3_port_spin</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="pop3_port_spin">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">The port number of the POP3 server</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">110 0 65535 1 10 10</property>
+		      <signal name="activate" handler="mn_mailbox_properties_dialog_entry_activate_h" object="pop3_username_entry" last_modification_time="Fri, 16 Jul 2004 22:55:40 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
 		</widget>
 		<packing>
 		  <property name="padding">0</property>
-		  <property name="expand">False</property>
-		  <property name="fill">False</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
 		</packing>
 	      </child>
 
 	      <child>
-		<widget class="GtkHBox" id="hbox3">
+		<widget class="GtkHBox" id="hbox20">
 		  <property name="visible">True</property>
 		  <property name="homogeneous">False</property>
-		  <property name="spacing">0</property>
+		  <property name="spacing">12</property>
 
 		  <child>
-		    <widget class="GtkLabel" id="label3">
+		    <widget class="GtkLabel" id="pop3_username_label">
 		      <property name="visible">True</property>
-		      <property name="label" translatable="yes">    </property>
-		      <property name="use_underline">False</property>
+		      <property name="label" translatable="yes">_Username:</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="xalign">0</property>
 		      <property name="yalign">0.5</property>
 		      <property name="xpad">0</property>
 		      <property name="ypad">0</property>
+		      <property name="mnemonic_widget">pop3_username_entry</property>
 		    </widget>
 		    <packing>
 		      <property name="padding">0</property>
@@ -266,211 +326,76 @@
 		  </child>
 
 		  <child>
-		    <widget class="GtkVBox" id="vbox4">
+		    <widget class="GtkEntry" id="pop3_username_entry">
 		      <property name="visible">True</property>
-		      <property name="homogeneous">False</property>
-		      <property name="spacing">6</property>
+		      <property name="tooltip" translatable="yes">Your username on the POP3 server</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char" translatable="yes">*</property>
+		      <property name="activates_default">False</property>
+		      <signal name="activate" handler="mn_mailbox_properties_dialog_entry_activate_h" object="pop3_password_entry" last_modification_time="Fri, 16 Jul 2004 22:55:46 GMT"/>
+		      <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 13:29:30 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
 
-		      <child>
-			<widget class="GtkHBox" id="hbox10">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">12</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="hostname_label">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">_Hostname:</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">hostname_entry</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkEntry" id="hostname_entry">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">The hostname or IP address of the POP3 server</property>
-			      <property name="can_focus">True</property>
-			      <property name="editable">True</property>
-			      <property name="visibility">True</property>
-			      <property name="max_length">0</property>
-			      <property name="text" translatable="yes"></property>
-			      <property name="has_frame">True</property>
-			      <property name="invisible_char" translatable="yes">*</property>
-			      <property name="activates_default">False</property>
-			      <signal name="activate" handler="mn_mailbox_properties_dialog_pop3_entry_activate_h" object="port_spin" last_modification_time="Mon, 07 Jun 2004 16:45:55 GMT"/>
-			      <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 13:26:45 GMT"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkLabel" id="port_label">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">P_ort:</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">port_spin</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="port_spin">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">The port number of the POP3 server</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">110 0 65535 1 10 10</property>
-			      <signal name="activate" handler="mn_mailbox_properties_dialog_pop3_entry_activate_h" object="username_entry" last_modification_time="Mon, 07 Jun 2004 16:46:04 GMT"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">True</property>
-			  <property name="fill">True</property>
-			</packing>
-		      </child>
+	      <child>
+		<widget class="GtkHBox" id="hbox22">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">12</property>
 
-		      <child>
-			<widget class="GtkHBox" id="hbox11">
-			  <property name="visible">True</property>
-			  <property name="homogeneous">False</property>
-			  <property name="spacing">12</property>
-
-			  <child>
-			    <widget class="GtkLabel" id="username_label">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">Us_ername:</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">username_entry</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkEntry" id="username_entry">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Your username on the POP3 server</property>
-			      <property name="can_focus">True</property>
-			      <property name="editable">True</property>
-			      <property name="visibility">True</property>
-			      <property name="max_length">0</property>
-			      <property name="text" translatable="yes"></property>
-			      <property name="has_frame">True</property>
-			      <property name="invisible_char" translatable="yes">*</property>
-			      <property name="activates_default">False</property>
-			      <signal name="activate" handler="mn_mailbox_properties_dialog_pop3_entry_activate_h" object="password_entry" last_modification_time="Mon, 07 Jun 2004 16:46:10 GMT"/>
-			      <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 13:29:30 GMT"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkLabel" id="password_label">
-			      <property name="visible">True</property>
-			      <property name="label" translatable="yes">P_assword:</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">password_entry</property>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">False</property>
-			      <property name="fill">False</property>
-			    </packing>
-			  </child>
-
-			  <child>
-			    <widget class="GtkEntry" id="password_entry">
-			      <property name="visible">True</property>
-			      <property name="tooltip" translatable="yes">Your password on the POP3 server</property>
-			      <property name="can_focus">True</property>
-			      <property name="editable">True</property>
-			      <property name="visibility">False</property>
-			      <property name="max_length">0</property>
-			      <property name="text" translatable="yes"></property>
-			      <property name="has_frame">True</property>
-			      <property name="invisible_char" translatable="yes">*</property>
-			      <property name="activates_default">False</property>
-			      <signal name="activate" handler="mn_mailbox_properties_dialog_pop3_entry_activate_h" object="hostname_entry" last_modification_time="Mon, 07 Jun 2004 16:46:16 GMT"/>
-			      <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 13:29:45 GMT"/>
-			    </widget>
-			    <packing>
-			      <property name="padding">0</property>
-			      <property name="expand">True</property>
-			      <property name="fill">True</property>
-			    </packing>
-			  </child>
-			</widget>
-			<packing>
-			  <property name="padding">0</property>
-			  <property name="expand">True</property>
-			  <property name="fill">True</property>
-			</packing>
-		      </child>
+		  <child>
+		    <widget class="GtkLabel" id="pop3_password_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Password:</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">pop3_password_entry</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkEntry" id="pop3_password_entry">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Your password on the POP3 server</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">False</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char" translatable="yes">*</property>
+		      <property name="activates_default">False</property>
+		      <signal name="activate" handler="mn_mailbox_properties_dialog_entry_activate_h" object="pop3_hostname_entry" last_modification_time="Fri, 16 Jul 2004 22:55:55 GMT"/>
+		      <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Mon, 07 Jun 2004 13:29:45 GMT"/>
 		    </widget>
 		    <packing>
 		      <property name="padding">0</property>
@@ -488,6 +413,154 @@
 	    </widget>
 	    <packing>
 	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkVBox" id="gmail_vbox">
+	      <property name="visible">True</property>
+	      <property name="homogeneous">False</property>
+	      <property name="spacing">6</property>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox21">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">12</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="gmail_username_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Username:</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">gmail_username_entry</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkEntry" id="gmail_username_entry">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Your Gmail username</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">True</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char" translatable="yes">*</property>
+		      <property name="activates_default">False</property>
+		      <signal name="activate" handler="mn_mailbox_properties_dialog_entry_activate_h" object="gmail_password_entry" last_modification_time="Fri, 16 Jul 2004 22:56:20 GMT"/>
+		      <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Fri, 16 Jul 2004 23:00:28 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+
+	      <child>
+		<widget class="GtkHBox" id="hbox23">
+		  <property name="visible">True</property>
+		  <property name="homogeneous">False</property>
+		  <property name="spacing">12</property>
+
+		  <child>
+		    <widget class="GtkLabel" id="gmail_password_label">
+		      <property name="visible">True</property>
+		      <property name="label" translatable="yes">_Password:</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">gmail_password_entry</property>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">False</property>
+		      <property name="fill">False</property>
+		    </packing>
+		  </child>
+
+		  <child>
+		    <widget class="GtkEntry" id="gmail_password_entry">
+		      <property name="visible">True</property>
+		      <property name="tooltip" translatable="yes">Your Gmail password</property>
+		      <property name="can_focus">True</property>
+		      <property name="editable">True</property>
+		      <property name="visibility">False</property>
+		      <property name="max_length">0</property>
+		      <property name="text" translatable="yes"></property>
+		      <property name="has_frame">True</property>
+		      <property name="invisible_char" translatable="yes">*</property>
+		      <property name="activates_default">False</property>
+		      <signal name="activate" handler="mn_mailbox_properties_dialog_entry_activate_h" object="gmail_username_entry" last_modification_time="Fri, 16 Jul 2004 22:57:42 GMT"/>
+		      <signal name="changed" handler="mn_mailbox_properties_dialog_entry_changed_h" object="dialog" last_modification_time="Fri, 16 Jul 2004 22:57:55 GMT"/>
+		    </widget>
+		    <packing>
+		      <property name="padding">0</property>
+		      <property name="expand">True</property>
+		      <property name="fill">True</property>
+		    </packing>
+		  </child>
+		</widget>
+		<packing>
+		  <property name="padding">0</property>
+		  <property name="expand">True</property>
+		  <property name="fill">True</property>
+		</packing>
+	      </child>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
+	      <property name="expand">True</property>
+	      <property name="fill">True</property>
+	    </packing>
+	  </child>
+
+	  <child>
+	    <widget class="GtkLabel" id="unsupported_label">
+	      <property name="visible">True</property>
+	      <property name="label" translatable="yes">This mailbox type has not been compiled in and is therefore unsupported.</property>
+	      <property name="use_underline">False</property>
+	      <property name="use_markup">False</property>
+	      <property name="justify">GTK_JUSTIFY_LEFT</property>
+	      <property name="wrap">True</property>
+	      <property name="selectable">False</property>
+	      <property name="xalign">0</property>
+	      <property name="yalign">0.5</property>
+	      <property name="xpad">0</property>
+	      <property name="ypad">0</property>
+	    </widget>
+	    <packing>
+	      <property name="padding">0</property>
 	      <property name="expand">False</property>
 	      <property name="fill">False</property>
 	    </packing>
@@ -495,8 +568,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>
diff --git a/ui/mailbox-properties.gladep b/ui/mailbox-properties.gladep
@@ -10,6 +10,5 @@
   <output_main_file>FALSE</output_main_file>
   <output_support_files>FALSE</output_support_files>
   <output_build_files>FALSE</output_build_files>
-  <output_translatable_strings>TRUE</output_translatable_strings>
   <translatable_strings_file>mailbox-properties-strings.c</translatable_strings_file>
 </glade-project>
diff --git a/ui/menu-strings.c b/ui/menu-strings.c
@@ -1,10 +0,0 @@
-/*
- * Translatable strings file generated by Glade.
- * Add this file to your project's POTFILES.in.
- * DO NOT compile it as part of your application.
- */
-
-gchar *s = N_("Update the icon");
-gchar *s = N_("_Update");
-gchar *s = N_("Show help");
-gchar *s = N_("_Help");
diff --git a/ui/menu.gladep b/ui/menu.gladep
@@ -10,6 +10,5 @@
   <output_main_file>FALSE</output_main_file>
   <output_support_files>FALSE</output_support_files>
   <output_build_files>FALSE</output_build_files>
-  <output_translatable_strings>TRUE</output_translatable_strings>
   <translatable_strings_file>menu-strings.c</translatable_strings_file>
 </glade-project>
diff --git a/ui/preferences-strings.c b/ui/preferences-strings.c
@@ -1,28 +0,0 @@
-/*
- * Translatable strings file generated by Glade.
- * Add this file to your project's POTFILES.in.
- * DO NOT compile it as part of your application.
- */
-
-gchar *s = N_("Mail Notification Preferences");
-gchar *s = N_("<span weight=\"bold\">General</span>");
-gchar *s = N_("    ");
-gchar *s = N_("_Delay between mail checks:");
-gchar *s = N_("The amount of time to wait between mail checks");
-gchar *s = N_("minutes");
-gchar *s = N_("The amount of time to wait between mail checks");
-gchar *s = N_("seconds");
-gchar *s = N_("<span weight=\"bold\">Mailboxes</span>");
-gchar *s = N_("    ");
-gchar *s = N_("<span weight=\"bold\">Commands</span>");
-gchar *s = N_("    ");
-gchar *s = N_("Whether to run a command when new mail arrives or not");
-gchar *s = N_("When _new mail arrives:");
-gchar *s = N_("The command to run when new mail arrives");
-gchar *s = N_("*");
-gchar *s = N_("Whether to run a command when the icon is clicked or not");
-gchar *s = N_("When click_ed:");
-gchar *s = N_("The command to run when the icon is clicked");
-gchar *s = N_("*");
-gchar *s = N_("_Add");
-gchar *s = N_("_Remove");
diff --git a/ui/preferences.gladep b/ui/preferences.gladep
@@ -10,6 +10,5 @@
   <output_main_file>FALSE</output_main_file>
   <output_support_files>FALSE</output_support_files>
   <output_build_files>FALSE</output_build_files>
-  <output_translatable_strings>TRUE</output_translatable_strings>
   <translatable_strings_file>preferences-strings.c</translatable_strings_file>
 </glade-project>