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:
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, µ) != 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, µ) != 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="uri">URI</link>">
+ <!ENTITY maildir "<link linkend="maildir">Maildir</link>">
+ <!ENTITY mbox "<link linkend="mbox">mbox</link>">
+ <!ENTITY mh "<link linkend="mh">MH</link>">
+ <!ENTITY pop3 "<link linkend="pop3">POP3</link>">
+ <!ENTITY sylpheed "<link linkend="sylpheed">Sylpheed</link>">
+ <!ENTITY gmail "<link linkend="gmail">Gmail</link>">
+ <!ENTITY gnomevfs "<link linkend="gnomevfs">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/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+
+ return $_;
+}
+
+sub entity_decode
+{
+ local ($_) = @_;
+
+ s/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+ s/</</g;
+ s/>/>/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 < - < but not > - > because it seems its ok to have
+## > in the entity. For further info please look at #84738.
+sub entity_decode
+{
+ local ($_) = @_;
+
+ s/'/'/g; # '
+ s/"/"/g; # "
+ s/&/&/g;
+ s/</</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 """ if $_ == 34;
+ return "&" if $_ == 38;
+ return "'" if $_ == 39;
+ return "<" 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>